30 lines
1.3 KiB
Solidity
30 lines
1.3 KiB
Solidity
|
// SPDX-License-Identifier: CC0-1.0
|
||
|
|
||
|
pragma solidity ^0.8.0;
|
||
|
|
||
|
interface IERC4907 {
|
||
|
// Logged when the user of a token assigns a new user or updates expires
|
||
|
/// @notice Emitted when the `user` of an NFT or the `expires` of the `user` is changed
|
||
|
/// The zero address for user indicates that there is no user address
|
||
|
event UpdateUser(uint256 indexed tokenId, address indexed user, uint64 expires);
|
||
|
|
||
|
/// @notice set the user and expires of a NFT
|
||
|
/// @dev The zero address indicates there is no user
|
||
|
/// Throws if `tokenId` is not valid NFT
|
||
|
/// @param user The new user of the NFT
|
||
|
/// @param expires UNIX timestamp, The new user could use the NFT before expires
|
||
|
function setUser(uint256 tokenId, address user, uint64 expires) external ;
|
||
|
|
||
|
/// @notice Get the user address of an NFT
|
||
|
/// @dev The zero address indicates that there is no user or the user is expired
|
||
|
/// @param tokenId The NFT to get the user address for
|
||
|
/// @return The user address for this NFT
|
||
|
function userOf(uint256 tokenId) external view returns(address);
|
||
|
|
||
|
/// @notice Get the user expires of an NFT
|
||
|
/// @dev The zero value indicates that there is no user
|
||
|
/// @param tokenId The NFT to get the user expires for
|
||
|
/// @return The user expires for this NFT
|
||
|
function userExpires(uint256 tokenId) external view returns(uint256);
|
||
|
}
|