/// @title EIP-721 Consumer Role extension
/// @title EIP-721 消费者角色扩展
/// Note: the EIP-165 identifier for this interface is 0x953c8dfa
interfaceIEIP721Consumable/* is EIP721 */{/// @notice Emitted when `owner` changes the `consumer` of an NFT
/// @notice 当 `owner` 更改 NFT 的 `consumer` 时发出
/// The zero address for consumer indicates that there is no consumer address
/// consumer 的零地址表示没有 consumer 地址
/// When a Transfer event emits, this also indicates that the consumer address
/// 当发出 Transfer 事件时,这也表明该 NFT 的 consumer 地址(如果有)设置为 none
eventConsumerChanged(addressindexedowner,addressindexedconsumer,uint256indexedtokenId);/// @notice Get the consumer address of an NFT
/// @notice 获取 NFT 的 consumer 地址
/// @dev The zero address indicates that there is no consumer
/// @dev 零地址表示没有 consumer
/// Throws if `_tokenId` is not a valid NFT
/// 如果 `_tokenId` 不是有效的 NFT,则抛出异常
/// @param _tokenId The NFT to get the consumer address for
/// @param _tokenId 要获取 consumer 地址的 NFT
/// @return The consumer address for this NFT, or the zero address if there is none
/// @return 此 NFT 的 consumer 地址,如果没有,则返回零地址
functionconsumerOf(uint256_tokenId)viewexternalreturns(address);/// @notice Change or reaffirm the consumer address for an NFT
/// @notice 更改或重申 NFT 的 consumer 地址
/// @dev The zero address indicates there is no consumer address
/// @dev 零地址表示没有 consumer 地址
/// Throws unless `msg.sender` is the current NFT owner, an authorised
/// 除非 `msg.sender` 是当前 NFT 所有者、授权
/// operator of the current owner or approved address
/// 当前所有者的 operator 或批准的地址,否则抛出
/// Throws if `_tokenId` is not valid NFT
/// 如果 `_tokenId` 不是有效的 NFT,则抛出异常
/// @param _consumer The new consumer of the NFT
/// @param _consumer NFT 的新 consumer
functionchangeConsumer(address_consumer,uint256_tokenId)external;}