You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.4 KiB
Solidity
80 lines
2.4 KiB
Solidity
2 years ago
|
// SPDX-License-Identifier: MIT
|
||
|
// ERC721A Contracts v4.2.3
|
||
|
// Creator: Chiru Labs
|
||
|
|
||
|
pragma solidity ^0.8.4;
|
||
|
|
||
|
import '../IERC721A.sol';
|
||
|
|
||
|
/**
|
||
|
* @dev Interface of ERC721AQueryable.
|
||
|
*/
|
||
|
interface IERC721AQueryable is IERC721A {
|
||
|
/**
|
||
|
* Invalid query range (`start` >= `stop`).
|
||
|
*/
|
||
|
error InvalidQueryRange();
|
||
|
|
||
|
/**
|
||
|
* @dev Returns the `TokenOwnership` struct at `tokenId` without reverting.
|
||
|
*
|
||
|
* If the `tokenId` is out of bounds:
|
||
|
*
|
||
|
* - `addr = address(0)`
|
||
|
* - `startTimestamp = 0`
|
||
|
* - `burned = false`
|
||
|
* - `extraData = 0`
|
||
|
*
|
||
|
* If the `tokenId` is burned:
|
||
|
*
|
||
|
* - `addr = <Address of owner before token was burned>`
|
||
|
* - `startTimestamp = <Timestamp when token was burned>`
|
||
|
* - `burned = true`
|
||
|
* - `extraData = <Extra data when token was burned>`
|
||
|
*
|
||
|
* Otherwise:
|
||
|
*
|
||
|
* - `addr = <Address of owner>`
|
||
|
* - `startTimestamp = <Timestamp of start of ownership>`
|
||
|
* - `burned = false`
|
||
|
* - `extraData = <Extra data at start of ownership>`
|
||
|
*/
|
||
|
function explicitOwnershipOf(uint256 tokenId) external view returns (TokenOwnership memory);
|
||
|
|
||
|
/**
|
||
|
* @dev Returns an array of `TokenOwnership` structs at `tokenIds` in order.
|
||
|
* See {ERC721AQueryable-explicitOwnershipOf}
|
||
|
*/
|
||
|
function explicitOwnershipsOf(uint256[] memory tokenIds) external view returns (TokenOwnership[] memory);
|
||
|
|
||
|
/**
|
||
|
* @dev Returns an array of token IDs owned by `owner`,
|
||
|
* in the range [`start`, `stop`)
|
||
|
* (i.e. `start <= tokenId < stop`).
|
||
|
*
|
||
|
* This function allows for tokens to be queried if the collection
|
||
|
* grows too big for a single call of {ERC721AQueryable-tokensOfOwner}.
|
||
|
*
|
||
|
* Requirements:
|
||
|
*
|
||
|
* - `start < stop`
|
||
|
*/
|
||
|
function tokensOfOwnerIn(
|
||
|
address owner,
|
||
|
uint256 start,
|
||
|
uint256 stop
|
||
|
) external view returns (uint256[] memory);
|
||
|
|
||
|
/**
|
||
|
* @dev Returns an array of token IDs owned by `owner`.
|
||
|
*
|
||
|
* This function scans the ownership mapping and is O(`totalSupply`) in complexity.
|
||
|
* It is meant to be called off-chain.
|
||
|
*
|
||
|
* See {ERC721AQueryable-tokensOfOwnerIn} for splitting the scan into
|
||
|
* multiple smaller scans if the collection is large enough to cause
|
||
|
* an out-of-gas error (10K collections should be fine).
|
||
|
*/
|
||
|
function tokensOfOwner(address owner) external view returns (uint256[] memory);
|
||
|
}
|