Comment on page
RMRKCatalogImpl
RMRK team
RMRKCatalogImpl
Implementation of RMRK catalog.
Contract for storing 'catalog' elements of NFTs to be accessed by instances of RMRKAsset implementing contracts. This default implementation includes an OwnableLock dependency, which allows the deployer to freeze the state of the catalog contract.
function addEquippableAddresses(uint64 partId, address[] equippableAddresses) external nonpayable
Used to add multiple
equippableAddresses
to a single catalog entry.Can only be called on
Part
s of Slot
type.Name | Type | Description |
---|---|---|
partId | uint64 | ID of the Part that we are adding the equippable addresses to |
equippableAddresses | address[] | An array of addresses that can be equipped into the Part associated with the partId |
function addPart(IRMRKCatalog.IntakeStruct intakeStruct) external nonpayable
Name | Type | Description |
---|---|---|
intakeStruct | IRMRKCatalog.IntakeStruct | undefined |
function addPartList(IRMRKCatalog.IntakeStruct[] intakeStructs) external nonpayable
Name | Type | Description |
---|---|---|
intakeStructs | IRMRKCatalog.IntakeStruct[] | undefined |
function checkIsEquippable(uint64 partId, address targetAddress) external view returns (bool)
Used to check whether the given address is allowed to equip the desired
Part
.Returns true if a collection may equip asset with
partId
.Name | Type | Description |
---|---|---|
partId | uint64 | The ID of the part that we are checking |
targetAddress | address | The address that we are checking for whether the part can be equipped into it or not |
Name | Type | Description |
---|---|---|
_0 | bool | The status indicating whether the targetAddress can be equipped into Part with partId or not |
function checkIsEquippableToAll(uint64 partId) external view returns (bool)
Used to check if the part is equippable by all addresses.
Returns true if part is equippable to all.
Name | Type | Description |
---|---|---|
partId | uint64 | ID of the part that we are checking |
Name | Type | Description |
---|---|---|
_0 | bool | The status indicating whether the part with partId can be equipped by any address or not |
function getLock() external view returns (bool)
Used to retrieve the status of a lockable smart contract.
Name | Type | Description |
---|---|---|
_0 | bool | A boolean value signifying whether the smart contract has been locked |
function getMetadataURI() external view returns (string)
Used to return the metadata URI of the associated Catalog.
Name | Type | Description |
---|---|---|
_0 | string | Catalog metadata URI |
function getPart(uint64 partId) external view returns (struct IRMRKCatalog.Part)
Used to retrieve a
Part
with id partId
Name | Type | Description |
---|---|---|
partId | uint64 | ID of the part that we are retrieving |
Name | Type | Description |
---|---|---|
_0 | IRMRKCatalog.Part | The Part struct associated with given partId |
function getParts(uint64[] partIds) external view returns (struct IRMRKCatalog.Part[])
Used to retrieve multiple parts at the same time.
Name | Type | Description |
---|---|---|
partIds | uint64[] | An array of part IDs that we want to retrieve |
Name | Type | Description |
---|---|---|
_0 | IRMRKCatalog.Part[] | An array of Part structs associated with given partIds |
function getType() external view returns (string)
Used to return the
itemType
of the associated CatalogName | Type | Description |
---|---|---|
_0 | string | itemType of the associated Catalog |
function isContributor(address contributor) external view returns (bool)
Used to check if the address is one of the contributors.
Name | Type | Description |
---|---|---|
contributor | address | Address of the contributor whose status we are checking |
Name | Type | Description |
---|---|---|
_0 | bool | Boolean value indicating whether the address is a contributor or not |
function manageContributor(address contributor, bool grantRole) external nonpayable
Adds or removes a contributor to the smart contract.
Can only be called by the owner.Emits ContributorUpdate event.
Name | Type | Description |
---|---|---|
contributor | address | Address of the contributor's account |
grantRole | bool | A boolean value signifying whether the contributor role is being granted ( true ) or revoked (false ) |
function owner() external view returns (address)
Returns the address of the current owner.
Name | Type | Description |
---|---|---|
_0 | address | Address of the current owner |
function renounceOwnership() external nonpayable
Leaves the contract without owner. Functions using the
onlyOwner
modifier will be disabled.Can only be called by the current owner.Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.
function resetEquippableAddresses(uint64 partId) external nonpayable
Used to remove all of the
equippableAddresses
for a Part
associated with the partId
.Can only be called on
Part
s of Slot
type.Name | Type | Description |
---|---|---|
partId | uint64 | ID of the part that we are clearing the equippableAddresses from |
function setEquippableAddresses(uint64 partId, address[] equippableAddresses) external nonpayable
Function used to set the new list of
equippableAddresses
.Overwrites existing
equippableAddresses
.Can only be called on Part
s of Slot
type.Name | Type | Description |
---|---|---|
partId | uint64 | ID of the Part s that we are overwiting the equippableAddresses for |
equippableAddresses | address[] | A full array of addresses that can be equipped into this Part |
function setEquippableToAll(uint64 partId) external nonpayable
Sets the isEquippableToAll flag to true, meaning that any collection may be equipped into the
Part
with this partId
.Can only be called on
Part
s of Slot
type.Name | Type | Description |
---|---|---|
partId | uint64 | ID of the Part that we are setting as equippable by any address |
function setLock() external nonpayable
Locks the operation.
Once locked, functions using
notLocked
modifier cannot be executed.Emits LockSet event.function supportsInterface(bytes4 interfaceId) external view returns (bool)
Returns true if this contract implements the interface defined by
interfaceId
. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.Name | Type | Description |
---|---|---|
interfaceId | bytes4 | undefined |
Name | Type | Description |
---|---|---|
_0 | bool | undefined |
function transferOwnership(address newOwner) external nonpayable
Transfers ownership of the contract to a new owner.
Can only be called by the current owner.
Name | Type | Description |
---|---|---|
newOwner | address | Address of the new owner's account |
event AddedEquippables(uint64 indexed partId, address[] equippableAddresses)
Event to announce new equippables to the part.
It is emitted when new addresses are marked as equippable for
partId
.Name | Type | Description |
---|---|---|
partId indexed | uint64 | ID of the part that had new equippable addresses added |
equippableAddresses | address[] | An array of the new addresses that can equip this part |
event AddedPart(uint64 indexed partId, enum IRMRKCatalog.ItemType indexed itemType, uint8 zIndex, address[] equippableAddresses, string metadataURI)
Event to announce addition of a new part.
It is emitted when a new part is added.
Name | Type | Description |
---|---|---|
partId indexed | uint64 | ID of the part that was added |
itemType indexed | enum IRMRKCatalog.ItemType | Enum value specifying whether the part is None , Slot and Fixed |
zIndex | uint8 | An uint specifying the z value of the part. It is used to specify the depth which the part should be rendered at |
equippableAddresses | address[] | An array of addresses that can equip this part |
metadataURI | string | The metadata URI of the part |
event ContributorUpdate(address indexed contributor, bool isContributor)
Event that signifies that an address was granted contributor role or that the permission has been revoked.
This can only be triggered by a current owner, so there is no need to include that information in the event.
Name | Type | Description |
---|---|---|
contributor indexed | address | Address of the account that had contributor role status updated |
isContributor | bool | A boolean value signifying whether the role has been granted ( true ) or revoked (false ) |
event LockSet()
Emitted when the smart contract is locked.
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Used to anounce the transfer of ownership.
Name | Type | Description |
---|---|---|
previousOwner indexed | address | Address of the account that transferred their ownership role |
newOwner indexed | address | Address of the account receiving the ownership role |
event SetEquippableToAll(uint64 indexed partId)
Event to announce that a given part can be equipped by any address.
It is emitted when a given part is marked as equippable by any.
Name | Type | Description |
---|---|---|
partId indexed | uint64 | ID of the part marked as equippable by any address |
event SetEquippables(uint64 indexed partId, address[] equippableAddresses)
Event to announce the overriding of equippable addresses of the part.
It is emitted when the existing list of addresses marked as equippable for
partId
is overwritten by a new one.Name | Type | Description |
---|---|---|
partId indexed | uint64 | ID of the part whose list of equippable addresses was overwritten |
equippableAddresses | address[] | The new, full, list of addresses that can equip this part |
error RMRKBadConfig()
Attempting to incorrectly configue a Catalog item
error RMRKIdZeroForbidden()
Attempting to use ID 0, which is not supported
The ID 0 in RMRK suite is reserved for empty values. Guarding against its use ensures the expected operation
error RMRKLocked()
Attempting to interact with a contract that had its operation locked
error RMRKNewContributorIsZeroAddress()
Attempting to assign a 0x0 address as a contributor
error RMRKNewOwnerIsZeroAddress()
Attempting to transfer the ownership to the 0x0 address
error RMRKNotOwner()
Attempting to interact with a management function without being the smart contract's owner
error RMRKNotOwnerOrContributor()
Attempting to interact with a function without being the owner or contributor of the collection
error RMRKPartAlreadyExists()
Attempting to add a
Part
with an ID that is already usederror RMRKPartDoesNotExist()
Attempting to use a
Part
that doesn't existerror RMRKPartIsNotSlot()
Attempting to use a
Part
that is Fixed
when Slot
kind of Part
should be usederror RMRKZeroLengthIdsPassed()
Attempting not to pass an empty array of equippable addresses when adding or setting the equippable addresses