DCIPs/assets/eip-6150/contracts/interfaces/IERC6150Enumerable.sol

43 lines
1.6 KiB
Solidity
Raw Normal View History

// SPDX-License-Identifier: CC0-1.0
pragma solidity ^0.8.0;
import "./IERC6150.sol";
import "IERC721Enumerable.sol";
/**
* @title ERC-6150 Hierarchical NFTs Token Standard, optional extension for enumerable
* @dev See https://eips.ethereum.org/EIPS/eip-6150
* Note: the ERC-165 identifier for this interface is 0xba541a2e.
*/
interface IERC6150Enumerable is IERC6150, IERC721Enumerable {
/**
* @notice Get total amount of children tokens under `parentId` token.
* @dev If `parentId` is zero, it means get total amount of root tokens.
* @return The total amount of children tokens under `parentId` token.
*/
function childrenCountOf(uint256 parentId) external view returns (uint256);
/**
* @notice Get the token at the specified index of all children tokens under `parentId` token.
* @dev If `parentId` is zero, it means get root token.
* @return The token ID at `index` of all chlidren tokens under `parentId` token.
*/
function childOfParentByIndex(
uint256 parentId,
uint256 index
) external view returns (uint256);
/**
* @notice Get the index position of specified token in the children enumeration under specified parent token.
* @dev Throws if the `tokenId` is not found in the children enumeration.
* If `parentId` is zero, means get root token index.
* @param parentId The parent token
* @param tokenId The specified token to be found
* @return The index position of `tokenId` found in the children enumeration
*/
function indexInChildrenEnumeration(
uint256 parentId,
uint256 tokenId
) external view returns (uint256);
}