interface IToken {
    function ownerOf(uint id) external view returns (address);
    function transferFrom(address from, address to, uint tokenId) external;
    function safeTransferFrom(address from, address to, uint tokenId) external; // ERC721
    function safeTransferFrom(address from, address to, uint tokenId, uint amount) external; // ERC1155
    function isApprovedForAll(address owner, address operator) external returns(bool);
    function setApprovalForAll(address operator, bool approved) external;
}
function isApprovedForAll(address owner, address operator) external returns(bool);

// ERC1155