pragmasolidity^0.8.0;/// Note: the ERC-165 identifier for this interface is 0x6938e358.
interfaceIRental/* is IERC165,IERC1155 */{/**
* @notice This emits when user rent NFT
* - `id` The id of the current token
* - `user` The address to rent the NFT usage rights
* - `amount` The amount of usage rights
* - `expire` The specified period of time to rent
**/eventRented(uint256indexedid,addressindexeduser,uint256amount,uint256expire);/**
* MUST trigger on any successful call to `renew(address user,uint256 id)`
* - `id` The id of the current token
* - `user` The user of the NFT
* - `expire` The new specified period of time to rent
**/eventRenew(uint256indexedid,addressindexeduser,uint256expire);/**
* MUST trigger on any successful call to `renew(address user,uint256 id,uint256 expire)`
* - `id` The id of the current token
* - `from` The current user of the NFT
* - `to` The new user
**/eventSublet(uint256indexedid,addressindexedfrom,addressto);/**
* @notice This emits when the NFT owner takes back the usage rights from the tenant (the `user`)
* - id The id of the current token
* - user The address to rent the NFT's usage rights
* - amount Amount of usage rights
**/eventTakeBack(uint256indexedid,addressindexeduser,uint256amount);/**
* @notice Function to rent out usage rights
* - from The address to approve
* - to The address to rent the NFT usage rights
* - id The id of the current token
* - amount The amount of usage rights
* - expire The specified period of time to rent
**/functionsafeRent(addressfrom,addressto,uint256id,uint256amount,uint256expire)external;/**
* @notice Function to take back usage rights after the end of the tenancy
* - user The address to rent the NFT's usage rights
* - tokenId The id of the current token
**/functiontakeBack(addressuser,uint256tokenId)external;/**
* @notice Return the NFT to the address of the NFT property right owner.
**/functionpropertyRightOf(uint256id)externalviewreturns(address);/**
* @notice Return the total supply amount of the current token
**/functiontotalSupply(uint256id)externalviewreturns(uint256);/**
* @notice Return expire The specified period of time to rent
**/functionexpireAt(uint256id,addressuser)externalviewreturns(uint256);/**
* extended rental period
* - `id` The id of the current token
* - `user` The user of the NFT
* - `expire` The new specified period of time to rent
**/functionrenew(addressuser,uint256id,uint256expire)external;/**
* transfer of usage right
* - `id` The id of the current token
* - `user` The user of the NFT
* - `expire` The new specified period of time to rent
**/functionsublet(addressto,uint256id)external;}