DCIPs/assets/eip-4987/IERC721Holder.sol

62 lines
1.5 KiB
Solidity

/*
IERC721Holder
SPDX-License-Identifier: CC0-1.0
*/
import "@openzeppelin/contracts/interfaces/IERC165.sol";
pragma solidity ^0.8.0;
/**
* @notice the ERC721 holder standard provides a common interface to query
* token ownership and balance information
*/
interface IERC721Holder is IERC165 {
/**
* @notice emitted when the token is transferred to the contract
* @param owner functional token owner
* @param tokenAddress held token address
* @param tokenId held token ID
*/
event Hold(
address indexed owner,
address indexed tokenAddress,
uint256 indexed tokenId
);
/**
* @notice emitted when the token is released back to the user
* @param owner functional token owner
* @param tokenAddress held token address
* @param tokenId held token ID
*/
event Release(
address indexed owner,
address indexed tokenAddress,
uint256 indexed tokenId
);
/**
* @notice get the functional owner of a held token
* @param tokenAddress held token address
* @param tokenId held token ID
* @return functional token owner
*/
function heldOwnerOf(address tokenAddress, uint256 tokenId)
external
view
returns (address);
/**
* @notice get the held balance of the token owner
* @param tokenAddress held token address
* @param owner functional token owner
* @return held token balance
*/
function heldBalanceOf(address tokenAddress, address owner)
external
view
returns (uint256);
}