TRACERSRegistry

Git Source

Inherits: Ownable, ERC165, ITRACERSRegistry

Author: transientlabs.xyz

Registry for TRACE Registered agents

State Variables

ADMIN_ROLE

bytes32 public constant ADMIN_ROLE = keccak256("ADMIN_ROLE");

_registeredAgents

mapping(address => RegisteredAgent) private _registeredAgents;

_registeredAgentOverrides

mapping(address => mapping(address => RegisteredAgent)) private _registeredAgentOverrides;

Functions

constructor

constructor(address initOwner) Ownable(initOwner);

Parameters

NameTypeDescription
initOwneraddressThe initial owner of the contract

setRegisteredAgent

Function to add a global registered agent by the contract owner

This is a for a global registered agent so registeredAgent.numberOfStories is ignored

function setRegisteredAgent(address registeredAgentAddress, RegisteredAgent memory registeredAgent)
    external
    onlyOwner;

Parameters

NameTypeDescription
registeredAgentAddressaddressThe registered agent address
registeredAgentRegisteredAgentThe registered agent

setRegisteredAgentOverride

Function to add a registered agent override by an nft contract owner or admin

MUST emit the event RegisteredAgentOverrideUpdate

function setRegisteredAgentOverride(
    address nftContract,
    address registeredAgentAddress,
    RegisteredAgent calldata registeredAgent
) external;

Parameters

NameTypeDescription
nftContractaddressThe nft contract
registeredAgentAddressaddressThe registered agent address
registeredAgentRegisteredAgentThe registered agent

isRegisteredAgent

Function callable by an nft contract to check the registered agent

This MUST be called by the nft contract in order to check overrides properly

function isRegisteredAgent(address registeredAgentAddress) external returns (bool, string memory);

Parameters

NameTypeDescription
registeredAgentAddressaddressThe registered agent address

Returns

NameTypeDescription
<none>boolbool Boolean indicating if the address is question is a registered agent or not
<none>stringstring The name of the registered agent

getRegisteredAgent

External view function to get a registered agent, returning an overrided agent for a contract if it exists

function getRegisteredAgent(address nftContract, address registeredAgentAddress)
    external
    view
    returns (RegisteredAgent memory registeredAgent);

Parameters

NameTypeDescription
nftContractaddressThe nft contract (set to the zero address if not looking for an override)
registeredAgentAddressaddressThe registered agent address

Returns

NameTypeDescription
registeredAgentRegisteredAgentThe registered agent struct

supportsInterface

function supportsInterface(bytes4 interfaceId) public view override returns (bool);

Errors

NotCreatorOrAdmin

not creator or admin for nft contract

error NotCreatorOrAdmin();