RMRKEquipRenderUtils
RMRK team
RMRKEquipRenderUtils
Smart contract of the RMRK Equip render utils module.
Extra utility functions for composing RMRK extended assets.
Methods
checkExpectedParent
function checkExpectedParent(address childAddress, uint256 childId, address expectedParent, uint256 expectedParentId) external view
Check if the child is owned by the expected parent.
Reverts if child token is not owned by an NFT.Reverts if child token is not owned by the expected parent.
Parameters
Name | Type | Description |
---|---|---|
childAddress | address | Address of the child contract |
childId | uint256 | ID of the child token |
expectedParent | address | Address of the expected parent contract |
expectedParentId | uint256 | ID of the expected parent token |
composeEquippables
function composeEquippables(address target, uint256 tokenId, uint64 assetId) external view returns (string metadataURI, uint64 equippableGroupId, address catalogAddress, struct RMRKEquipRenderUtils.FixedPart[] fixedParts, struct RMRKEquipRenderUtils.EquippedSlotPart[] slotParts)
Used to compose the given equippables.
The full FixedPart
struct looks like this: [ partId, z, metadataURI ]The full EquippedSlotPart
struct looks like this: [ partId, childAssetId, z, childAddress, childId, childAssetMetadata, partMetadata ]
Parameters
Name | Type | Description |
---|---|---|
target | address | Address of the smart contract of the given token |
tokenId | uint256 | ID of the token to compose the equipped items in the asset for |
assetId | uint64 | ID of the asset being queried for equipped parts |
Returns
Name | Type | Description |
---|---|---|
metadataURI | string | Metadata URI of the asset |
equippableGroupId | uint64 | Equippable group ID of the asset |
catalogAddress | address | Address of the catalog to which the asset belongs to |
fixedParts | RMRKEquipRenderUtils.FixedPart[] | An array of fixed parts respresented by the FixedPart structs present on the asset |
slotParts | RMRKEquipRenderUtils.EquippedSlotPart[] | An array of slot parts represented by the EquippedSlotPart structs present on the asset |
directOwnerOfWithParentsPerspective
function directOwnerOfWithParentsPerspective(address collection, uint256 tokenId) external view returns (address directOwner, uint256 ownerId, bool isNFT, bool inParentsActiveChildren, bool inParentsPendingChildren)
Used to retrieve the immediate owner of the given token, and whether it is on the parent's active or pending children list.
If the immediate owner is not an NFT, the function returns false for both inParentsActiveChildren
and inParentsPendingChildren
.
Parameters
Name | Type | Description |
---|---|---|
collection | address | Address of the token's collection smart contract |
tokenId | uint256 | ID of the token |
Returns
Name | Type | Description |
---|---|---|
directOwner | address | Address of the given token's owner |
ownerId | uint256 | The ID of the parent token. Should be 0 if the owner is an externally owned account |
isNFT | bool | The boolean value signifying whether the owner is an NFT or not |
inParentsActiveChildren | bool | A boolean value signifying whether the token is in the parent's active children list |
inParentsPendingChildren | bool | A boolean value signifying whether the token is in the parent's pending children list |
equippedChildrenOf
function equippedChildrenOf(address parentAddress, uint256 parentId, uint64 parentAssetId) external view returns (struct IERC6220.Equipment[] equippedChildren)
Used to get information about the current children equipped into a specific parent and asset.
The full IERC6220.Equipment
struct looks like this: [ assetId childAssetId childId childEquippableAddress ]
Parameters
Name | Type | Description |
---|---|---|
parentAddress | address | Address of the parent token's smart contract |
parentId | uint256 | ID of the parent token |
parentAssetId | uint64 | ID of the target parent asset to use to equip the child |
Returns
Name | Type | Description |
---|---|---|
equippedChildren | IERC6220.Equipment[] | An array of IERC6220.Equipment structs containing the info about the equipped children |
getAllEquippableSlotsFromParent
function getAllEquippableSlotsFromParent(address targetChild, uint256 childId, bool onlyEquipped) external view returns (uint256 childIndex, struct RMRKEquipRenderUtils.EquippableData[] equippableData)
Used to get the child's assets and slot parts pairs, identifying parts the said assets can be equipped into, for all of parent's assets.
Reverts if child token is not owned by an NFT.The full EquippableData
struct looks like this: [ slotPartId, childAssetId, parentAssetId, priority, parentCatalogAddress, isEquipped, partMetadata ]
Parameters
Name | Type | Description |
---|---|---|
targetChild | address | Address of the smart contract of the given token |
childId | uint256 | ID of the child token whose assets will be matched against parent's slot parts |
onlyEquipped | bool | Boolean value signifying whether to only return the assets that are currently equipped (true ) or to include the non-equipped ones as well (false ) |
Returns
Name | Type | Description |
---|---|---|
childIndex | uint256 | Index of the child in the parent's list of active children |
equippableData | RMRKEquipRenderUtils.EquippableData[] | An array of EquippableData structs containing info about the equippable child assets and their corresponding slot parts |
getAssetIdWithTopPriority
function getAssetIdWithTopPriority(address target, uint256 tokenId) external view returns (uint64 maxPriorityAssetId, uint64 maxPriority)
Used to retrieve the ID of the specified token's asset with the highest priority.
Parameters
Name | Type | Description |
---|---|---|
target | address | Address of the smart contract of the given token |
tokenId | uint256 | ID of the token for which to retrieve the ID of the asset with the highest priority |
Returns
Name | Type | Description |
---|---|---|
maxPriorityAssetId | uint64 | The ID of the asset with the highest priority |
maxPriority | uint64 | The priority value of the asset with the highest priority |
getAssetsById
function getAssetsById(address target, uint256 tokenId, uint64[] assetIds) external view returns (string[] assets)
Used to retrieve the metadata URI of specified assets in the specified token.
Requirements: - assetIds
must exist.
Parameters
Name | Type | Description |
---|---|---|
target | address | Address of the smart contract of the given token |
tokenId | uint256 | ID of the token to retrieve the specified assets for |
assetIds | uint64[] | [] An array of asset IDs for which to retrieve the metadata URIs |
Returns
Name | Type | Description |
---|---|---|
assets | string[] | An array of metadata URIs belonging to specified assets |
getChildIndex
function getChildIndex(address parentAddress, uint256 parentId, address childAddress, uint256 childId) external view returns (uint256 index)
Used to retrieve the given child's index in its parent's child tokens array.
Parameters
Name | Type | Description |
---|---|---|
parentAddress | address | Address of the parent token's collection smart contract |
parentId | uint256 | ID of the parent token |
childAddress | address | Address of the child token's colection smart contract |
childId | uint256 | ID of the child token |
Returns
Name | Type | Description |
---|---|---|
index | uint256 | The index of the child token in the parent token's child tokens array |
getChildrenWithTopMetadata
function getChildrenWithTopMetadata(address parentAddress, uint256 parentId) external view returns (struct RMRKEquipRenderUtils.ChildWithTopAssetMetadata[] childrenWithMetadata)
The full ChildWithTopAssetMetadata
struct looks like this: [ contractAddress, tokenId, metadata ]
Parameters
Name | Type | Description |
---|---|---|
parentAddress | address | Address of the collection smart contract of the parent token |
parentId | uint256 | ID of the parent token |
Returns
Name | Type | Description |
---|---|---|
childrenWithMetadata | RMRKEquipRenderUtils.ChildWithTopAssetMetadata[] | An array of ChildWithTopAssetMetadata structs representing the children with their top asset metadata |
getEquippableSlotsFromParent
function getEquippableSlotsFromParent(address childAddress, uint256 childId, address parentAddress, uint256 parentId, uint64 parentAssetId) external view returns (struct RMRKEquipRenderUtils.EquippableData[] equippableData)
Used to get the child's assets and slot parts pairs, identifying parts the said assets can be equipped into.
Reverts if child token is not owned by an NFT.The full EquippableData
struct looks like this: [ slotPartId childAssetId parentAssetId priority parentCatalogAddress isEquipped partMetadata, childAssetMetadata, parentAssetMetadata ]
Parameters
Name | Type | Description |
---|---|---|
childAddress | address | Address of the smart contract of the given token |
childId | uint256 | ID of the child token whose assets will be matched against parent's slot parts |
parentAddress | address | Address of the parent token's smart contract |
parentId | uint256 | ID of the parent token |
parentAssetId | uint64 | ID of the target parent asset to use to equip the child |
Returns
Name | Type | Description |
---|---|---|
equippableData | RMRKEquipRenderUtils.EquippableData[] | An array of EquippableData structs containing info about the equippable child assets and their corresponding slot parts |
getEquippableSlotsFromParent
function getEquippableSlotsFromParent(address targetChild, uint256 childId, uint64 parentAssetId) external view returns (uint256 childIndex, struct RMRKEquipRenderUtils.EquippableData[] equippableData)
Used to get the child's assets and slot parts pairs, identifying parts the said assets can be equipped into, for a specific parent asset.
Reverts if child token is not owned by an NFT.The full EquippableData
struct looks like this: [ slotPartId, childAssetId, parentAssetId, priority, parentCatalogAddress, isEquipped, partMetadata, childAssetMetadata, parentAssetMetadata ]
Parameters
Name | Type | Description |
---|---|---|
targetChild | address | Address of the smart contract of the given token |
childId | uint256 | ID of the child token whose assets will be matched against parent's slot parts |
parentAssetId | uint64 | ID of the target parent asset to use to equip the child |
Returns
Name | Type | Description |
---|---|---|
childIndex | uint256 | Index of the child in the parent's list of active children |
equippableData | RMRKEquipRenderUtils.EquippableData[] | An array of EquippableData structs containing info about the equippable child assets and their corresponding slot parts |
getEquippableSlotsFromParentForPendingChild
function getEquippableSlotsFromParentForPendingChild(address targetChild, uint256 childId, uint64 parentAssetId) external view returns (uint256 childIndex, struct RMRKEquipRenderUtils.EquippableData[] equippableData)
Used to get the child's assets and slot parts pairs, identifying parts the said assets can be equipped into, for a specific parent asset while the child is in pending array.
Reverts if child token is not owned by an NFT.The full EquippableData
struct looks like this: [ slotPartId, childAssetId, parentAssetId, priority, parentCatalogAddress, isEquipped, partMetadata, childAssetMetadata, parentAssetMetadata ]
Parameters
Name | Type | Description |
---|---|---|
targetChild | address | Address of the smart contract of the given token |
childId | uint256 | ID of the child token whose assets will be matched against parent's slot parts |
parentAssetId | uint64 | ID of the target parent asset to use to equip the child |
Returns
Name | Type | Description |
---|---|---|
childIndex | uint256 | Index of the child in the parent's list of pending children |
equippableData | RMRKEquipRenderUtils.EquippableData[] | An array of EquippableData structs containing info about the equippable child assets and their corresponding slot parts |
getEquipped
function getEquipped(address target, uint256 tokenId, uint64 assetId) external view returns (uint64[] slotPartIds, struct IERC6220.Equipment[] childrenEquipped, string[] childrenAssetMetadata)
Used to retrieve the equipped parts of the given token.
NOTE: Some of the equipped children might be empty.The full Equipment
struct looks like this: [ assetId, childAssetId, childId, childEquippableAddress ]
Parameters
Name | Type | Description |
---|---|---|
target | address | Address of the smart contract of the given token |
tokenId | uint256 | ID of the token to retrieve the equipped items in the asset for |
assetId | uint64 | ID of the asset being queried for equipped parts |
Returns
Name | Type | Description |
---|---|---|
slotPartIds | uint64[] | An array of the IDs of the slot parts present in the given asset |
childrenEquipped | IERC6220.Equipment[] | An array of Equipment structs containing info about the equipped children |
childrenAssetMetadata | string[] | An array of strings corresponding to asset metadata of the equipped children |
getExtendedActiveAssets
function getExtendedActiveAssets(address target, uint256 tokenId) external view returns (struct RMRKMultiAssetRenderUtils.ExtendedActiveAsset[] activeAssets)
Used to get the active assets of the given token.
The full ExtendedActiveAsset
looks like this: [ id, priority, metadata ]
Parameters
Name | Type | Description |
---|---|---|
target | address | Address of the smart contract of the given token |
tokenId | uint256 | ID of the token to retrieve the active assets for |
Returns
Name | Type | Description |
---|---|---|
activeAssets | RMRKMultiAssetRenderUtils.ExtendedActiveAsset[] | An array of ActiveAssets present on the given token |
getExtendedEquippableActiveAssets
function getExtendedEquippableActiveAssets(address target, uint256 tokenId) external view returns (struct RMRKEquipRenderUtils.ExtendedEquippableActiveAsset[] activeAssets)
Used to get extended active assets of the given token.
The full ExtendedEquippableActiveAsset
looks like this: [ ID, equippableGroupId, priority, catalogAddress, metadata, [ fixedPartId0, fixedPartId1, fixedPartId2, slotPartId0, slotPartId1, slotPartId2 ] ]
Parameters
Name | Type | Description |
---|---|---|
target | address | Address of the smart contract of the given token |
tokenId | uint256 | ID of the token to retrieve the extended active assets for |
Returns
Name | Type | Description |
---|---|---|
activeAssets | RMRKEquipRenderUtils.ExtendedEquippableActiveAsset[] | An array of ExtendedEquippableActiveAssets present on the given token |
getExtendedNft
function getExtendedNft(uint256 tokenId, address targetCollection) external view returns (struct RMRKRenderUtils.ExtendedNft data)
Used to get extended information about a specified token.
The full ExtendedNft
struct looks like this: [ tokenMetadataUri, directOwner, rootOwner, activeAssetCount, pendingAssetCount priorities, maxSupply, totalSupply, issuer, name, symbol, activeChildrenNumber, pendingChildrenNumber, isSoulbound, hasMultiAssetInterface, hasNestingInterface, hasEquippableInterface ]
Parameters
Name | Type | Description |
---|---|---|
tokenId | uint256 | ID of the token for which to retireve the ExtendedNft struct |
targetCollection | address | Address of the collection to which the specified token belongs to |
Returns
Name | Type | Description |
---|---|---|
data | RMRKRenderUtils.ExtendedNft | The ExtendedNft struct containing the specified token's data |
getExtendedPendingAssets
function getExtendedPendingAssets(address target, uint256 tokenId) external view returns (struct RMRKEquipRenderUtils.ExtendedPendingAsset[] pendingAssets)
Used to get the extended pending assets of the given token.
The full ExtendedPendingAsset
looks like this: [ ID, equippableGroupId, acceptRejectIndex, replacesAssetWithId, catalogAddress, metadata, [ fixedPartId0, fixedPartId1, fixedPartId2, slotPartId0, slotPartId1, slotPartId2 ] ]
Parameters
Name | Type | Description |
---|---|---|
target | address | Address of the smart contract of the given token |
tokenId | uint256 | ID of the token to retrieve the extended pending assets for |
Returns
Name | Type | Description |
---|---|---|
pendingAssets | RMRKEquipRenderUtils.ExtendedPendingAsset[] | An array of ExtendedPendingAssets present on the given token |
getParent
function getParent(address childAddress, uint256 childId) external view returns (address parentAddress, uint256 parentId)
Used to retrieve the contract address and ID of the parent token of the specified child token.
Reverts if child token is not owned by an NFT.
Parameters
Name | Type | Description |
---|---|---|
childAddress | address | Address of the child token's collection smart contract |
childId | uint256 | ID of the child token |
Returns
Name | Type | Description |
---|---|---|
parentAddress | address | Address of the parent token's collection smart contract |
parentId | uint256 | ID of the parent token |
getPendingAssets
function getPendingAssets(address target, uint256 tokenId) external view returns (struct RMRKMultiAssetRenderUtils.PendingAsset[] pendingAssets)
Used to get the pending assets of the given token.
The full PendingAsset
looks like this: [ id, acceptRejectIndex, replacesAssetWithId, metadata ]
Parameters
Name | Type | Description |
---|---|---|
target | address | Address of the smart contract of the given token |
tokenId | uint256 | ID of the token to retrieve the pending assets for |
Returns
Name | Type | Description |
---|---|---|
pendingAssets | RMRKMultiAssetRenderUtils.PendingAsset[] | An array of PendingAssets present on the given token |
getPendingChildIndex
function getPendingChildIndex(address parentAddress, uint256 parentId, address childAddress, uint256 childId) external view returns (uint256 index)
Used to retrieve the given child's index in its parent's pending child tokens array.
Parameters
Name | Type | Description |
---|---|---|
parentAddress | address | Address of the parent token's collection smart contract |
parentId | uint256 | ID of the parent token |
childAddress | address | Address of the child token's colection smart contract |
childId | uint256 | ID of the child token |
Returns
Name | Type | Description |
---|---|---|
index | uint256 | The index of the child token in the parent token's pending child tokens array |
getSlotPartsAndCatalog
function getSlotPartsAndCatalog(address tokenAddress, uint256 tokenId, uint64 assetId) external view returns (uint64[] parentSlotPartIds, address catalogAddress)
Used to retrieve the parent address and its slot part IDs for a given target child, and the catalog of the parent asset.
Parameters
Name | Type | Description |
---|---|---|
tokenAddress | address | Address of the collection smart contract of parent token |
tokenId | uint256 | ID of the parent token |
assetId | uint64 | ID of the parent asset from which to get the slot parts |
Returns
Name | Type | Description |
---|---|---|
parentSlotPartIds | uint64[] | Array of slot part IDs of the parent token's asset |
catalogAddress | address | Address of the catalog the parent asset belongs to |
getTopAsset
function getTopAsset(address target, uint256 tokenId) external view returns (uint64 topAssetId, uint64 topAssetPriority, string topAssetMetadata)
Used to retrieve ID, priority value and metadata URI of the asset with the highest priority that is present on a specified token.
Parameters
Name | Type | Description |
---|---|---|
target | address | Collection smart contract of the token for which to retireve the top asset |
tokenId | uint256 | ID of the token for which to retrieve the top asset |
Returns
Name | Type | Description |
---|---|---|
topAssetId | uint64 | ID of the asset with the highest priority |
topAssetPriority | uint64 | Priotity value of the asset with the highest priority |
topAssetMetadata | string | Metadata URI of the asset with the highest priority |
getTopAssetAndEquippableDataForToken
function getTopAssetAndEquippableDataForToken(address target, uint256 tokenId) external view returns (struct RMRKEquipRenderUtils.ExtendedEquippableActiveAsset topAsset)
Used to retrieve the equippable data of the specified token's asset with the highest priority.
Parameters
Name | Type | Description |
---|---|---|
target | address | Address of the collection smart contract of the specified token |
tokenId | uint256 | ID of the token for which to retrieve the equippable data of the asset with the highest priority |
Returns
Name | Type | Description |
---|---|---|
topAsset | RMRKEquipRenderUtils.ExtendedEquippableActiveAsset | ExtendedEquippableActiveAsset struct with the equippable data containing the asset with the highest priority |
getTopAssetMetaForToken
function getTopAssetMetaForToken(address target, uint256 tokenId) external view returns (string metadata)
Used to retrieve the metadata URI of the specified token's asset with the highest priority.
Parameters
Name | Type | Description |
---|---|---|
target | address | Address of the smart contract of the given token |
tokenId | uint256 | ID of the token for which to retrieve the metadata URI of the asset with the highest priority |
Returns
Name | Type | Description |
---|---|---|
metadata | string | The metadata URI of the asset with the highest priority |
getTopAssetMetadataForTokens
function getTopAssetMetadataForTokens(address target, uint256[] tokenIds) external view returns (string[] metadata)
Used to retrieve the metadata URI of the specified token's asset with the highest priority for each of the given tokens.
Parameters
Name | Type | Description |
---|---|---|
target | address | Address of the smart contract of the tokens |
tokenIds | uint256[] | IDs of the tokens for which to retrieve the metadata URIs |
Returns
Name | Type | Description |
---|---|---|
metadata | string[] | An array of strings with the top asset metadata for each of the given tokens, in the same order as the tokens passed in the tokenIds input array |
getTotalDescendants
function getTotalDescendants(address collection, uint256 tokenId) external view returns (uint256 totalDescendants, bool hasMoreThanOneLevelOfNesting_)
Used to retrieve the total number of descendants of the given token and whether it has more than one level of nesting.
Parameters
Name | Type | Description |
---|---|---|
collection | address | Address of the token's collection smart contract |
tokenId | uint256 | ID of the token |
Returns
Name | Type | Description |
---|---|---|
totalDescendants | uint256 | The total number of descendants of the given token |
hasMoreThanOneLevelOfNesting_ | bool | A boolean value indicating whether the given token has more than one level of nesting |
hasMoreThanOneLevelOfNesting
function hasMoreThanOneLevelOfNesting(address collection, uint256 tokenId) external view returns (bool hasMoreThanOneLevelOfNesting_)
Used to retrieve whether a token has more than one level of nesting.
Parameters
Name | Type | Description |
---|---|---|
collection | address | Address of the token's collection smart contract |
tokenId | uint256 | ID of the token |
Returns
Name | Type | Description |
---|---|---|
hasMoreThanOneLevelOfNesting_ | bool | A boolean value indicating whether the given token has more than one level of nesting |
isAssetEquipped
function isAssetEquipped(address parentAddress, uint256 parentId, address parentAssetCatalog, address childAddress, uint256 childId, uint64 childAssetId, uint64 slotPartId) external view returns (bool isEquipped)
Used to verify whether a given child asset is equipped into a given parent slot.
Parameters
Name | Type | Description |
---|---|---|
parentAddress | address | Address of the collection smart contract of the parent token |
parentId | uint256 | ID of the parent token |
parentAssetCatalog | address | Address of the catalog the parent asset belongs to |
childAddress | address | Address of the collection smart contract of the child token |
childId | uint256 | ID of the child token |
childAssetId | uint64 | ID of the child asset |
slotPartId | uint64 | ID of the slot part |
Returns
Name | Type | Description |
---|---|---|
isEquipped | bool | Boolean value signifying whether the child asset is equipped into the parent slot or not |
isTokenRejectedOrAbandoned
function isTokenRejectedOrAbandoned(address collection, uint256 tokenId) external view returns (bool isRejectedOrAbandoned)
Used to identify if the given token is rejected or abandoned. That is, it's parent is an NFT but this token is neither on the parent's active nor pending children list.
Returns false if the immediate owner is not an NFT.
Parameters
Name | Type | Description |
---|---|---|
collection | address | Address of the token's collection smart contract |
tokenId | uint256 | ID of the token |
Returns
Name | Type | Description |
---|---|---|
isRejectedOrAbandoned | bool | Whether the token is rejected or abandoned |
splitSlotAndFixedParts
function splitSlotAndFixedParts(uint64[] allPartIds, address catalogAddress) external view returns (uint64[] slotPartIds, uint64[] fixedPartIds)
Used to split slot and fixed parts.
Parameters
Name | Type | Description |
---|---|---|
allPartIds | uint64[] | [] An array of Part IDs containing both, Slot and Fixed parts |
catalogAddress | address | An address of the catalog to which the given Part s belong to |
Returns
Name | Type | Description |
---|---|---|
slotPartIds | uint64[] | An array of IDs of the Slot parts included in the allPartIds |
fixedPartIds | uint64[] | An array of IDs of the Fixed parts included in the allPartIds |
validateChildOf
function validateChildOf(address parentAddress, address childAddress, uint256 parentId, uint256 childId) external view returns (bool validChild)
Used to validate whether the specified child token is owned by a given parent token.
Parameters
Name | Type | Description |
---|---|---|
parentAddress | address | Address of the parent token's collection smart contract |
childAddress | address | Address of the child token's collection smart contract |
parentId | uint256 | ID of the parent token |
childId | uint256 | ID of the child token |
Returns
Name | Type | Description |
---|---|---|
validChild | bool | A boolean value indicating whether the child token is owned by the parent token or not |
validateChildrenOf
function validateChildrenOf(address parentAddress, address[] childAddresses, uint256 parentId, uint256[] childIds) external view returns (bool isValid, bool[] validityOfChildren)
Used to validate whether the specified child token is owned by a given parent token.
Parameters
Name | Type | Description |
---|---|---|
parentAddress | address | Address of the parent token's collection smart contract |
childAddresses | address[] | An array of the child token's collection smart contract addresses |
parentId | uint256 | ID of the parent token |
childIds | uint256[] | An array of child token IDs to verify |
Returns
Name | Type | Description |
---|---|---|
isValid | bool | A boolean value indicating whether all of the child tokens are owned by the parent token or not |
validityOfChildren | bool[] | An array of boolean values indicating whether each of the child tokens are owned by the parent token or not |
Errors
RMRKChildNotFoundInParent
error RMRKChildNotFoundInParent()
Attempting to find the index of a child token on a parent which does not own it.
RMRKMismachedArrayLength
error RMRKMismachedArrayLength()
Attempting to pass complementary arrays of different lengths
RMRKNotComposableAsset
error RMRKNotComposableAsset()
Attempting to compose an asset wihtout having an associated Catalog
RMRKParentIsNotNFT
error RMRKParentIsNotNFT()
Attempting an operation requiring the token being nested, while it is not
RMRKTokenHasNoAssets
error RMRKTokenHasNoAssets()
Attempting to determine the asset with the top priority on a token without assets
RMRKUnexpectedParent
error RMRKUnexpectedParent()
Attempting an operation expecting a parent to the token which is not the actual one