DiamondFacet
Asset Tokenization Studio Team
DiamondFacet
Exposes Diamond management, loupe, and ERC-165 selectors for proxy registration.
Provides static resolver metadata for the core Diamond facet under RESOLVER_KEY_DIAMOND. The returned selectors include Diamond cut, resolver configuration, Diamond loupe pagination, facet lookup, and interface support functions inherited through DiamondBase.
Methods
getConfigInfo
function getConfigInfo() external view returns (address resolver_, bytes8 proxyVersion_, bytes32 configurationId_, uint256 configurationVersion_, bool replacementEnabled_)
Returns the active resolver address, configuration identifier, and version.
Returns
| Name | Type | Description |
|---|---|---|
| resolver_ | address | Address of the current Business Logic Resolver. |
| proxyVersion_ | bytes8 | proxy version. |
| configurationId_ | bytes32 | Identifier of the active configuration. |
| configurationVersion_ | uint256 | Version number of the active configuration. |
| replacementEnabled_ | bool | Whether replacement is enabled. |
getFacet
function getFacet(bytes32 _facetId) external view returns (struct IDiamondLoupe.Facet facet_)
Get the information associated with an specific facet
If facet is not found return empty Facet struct
Parameters
| Name | Type | Description |
|---|---|---|
| _facetId | bytes32 | The facet key for the resolver |
Returns
| Name | Type | Description |
|---|---|---|
| facet_ | IDiamondLoupe.Facet | Facet data |
getFacetAddress
function getFacetAddress(bytes4 _selector) external view returns (address facetAddress_)
Gets the facet that supports the given selector
If facet is not found return address(0)
Parameters
| Name | Type | Description |
|---|---|---|
| _selector | bytes4 | The function selector |
Returns
| Name | Type | Description |
|---|---|---|
| facetAddress_ | address | The facet address |
getFacetAddresses
function getFacetAddresses() external view returns (address[] facetAddresses_)
Get all the facet addresses used by a resolverProxy
Returns
| Name | Type | Description |
|---|---|---|
| facetAddresses_ | address[] | facetAddresses_ |
getFacetAddressesByPage
function getFacetAddressesByPage(uint256 _pageIndex, uint256 _pageLength) external view returns (address[] facetAddresses_)
Get all the facet addresses used by a resolverProxy
Parameters
| Name | Type | Description |
|---|---|---|
| _pageIndex | uint256 | members to skip : _pageIndex * _pageLength |
| _pageLength | uint256 | number of members to return |
Returns
| Name | Type | Description |
|---|---|---|
| facetAddresses_ | address[] | facetAddresses_ |
getFacetIdBySelector
function getFacetIdBySelector(bytes4 _selector) external view returns (bytes32 facetId_)
Returns the facet identifier registered for a function selector.
Reads resolver-proxy selector metadata and returns zero when the selector is absent.
Parameters
| Name | Type | Description |
|---|---|---|
| _selector | bytes4 | Function selector to resolve. |
Returns
| Name | Type | Description |
|---|---|---|
| facetId_ | bytes32 | Facet identifier associated with the selector. |
getFacetIds
function getFacetIds() external view returns (bytes32[] facetIds_)
Get all the facet addresses used by a resolverProxy
Returns
| Name | Type | Description |
|---|---|---|
| facetIds_ | bytes32[] | facetIds_ |
getFacetIdsByPage
function getFacetIdsByPage(uint256 _pageIndex, uint256 _pageLength) external view returns (bytes32[] facetIds_)
Get all the facet addresses used by a resolverProxy
Parameters
| Name | Type | Description |
|---|---|---|
| _pageIndex | uint256 | members to skip : _pageIndex * _pageLength |
| _pageLength | uint256 | number of members to return |
Returns
| Name | Type | Description |
|---|---|---|
| facetIds_ | bytes32[] | facetIds_ |
getFacetSelectors
function getFacetSelectors(bytes32 _facetId) external view returns (bytes4[] facetSelectors_)
Gets all the function selectors supported by a specific facet.
Parameters
| Name | Type | Description |
|---|---|---|
| _facetId | bytes32 | The facet key for the resolver. |
Returns
| Name | Type | Description |
|---|---|---|
| facetSelectors_ | bytes4[] | facetSelectors_ |
getFacetSelectorsByPage
function getFacetSelectorsByPage(bytes32 _facetId, uint256 _pageIndex, uint256 _pageLength) external view returns (bytes4[] facetSelectors_)
Gets all the function selectors supported by a specific facet.
Parameters
| Name | Type | Description |
|---|---|---|
| _facetId | bytes32 | The facet key for the resolver. |
| _pageIndex | uint256 | members to skip : _pageIndex * _pageLength |
| _pageLength | uint256 | number of members to return |
Returns
| Name | Type | Description |
|---|---|---|
| facetSelectors_ | bytes4[] | facetSelectors_ |
getFacetSelectorsLength
function getFacetSelectorsLength(bytes32 _facetId) external view returns (uint256 facetSelectorsLength_)
Gets the function selectors length.
Parameters
| Name | Type | Description |
|---|---|---|
| _facetId | bytes32 | The facet key for the resolver. |
Returns
| Name | Type | Description |
|---|---|---|
| facetSelectorsLength_ | uint256 | facetSelectorsLength_ |
getFacets
function getFacets() external view returns (struct IDiamondLoupe.Facet[] facets_)
Gets all facet addresses and their four byte function selectors.
Returns
| Name | Type | Description |
|---|---|---|
| facets_ | IDiamondLoupe.Facet[] | Facet |
getFacetsByPage
function getFacetsByPage(uint256 _pageIndex, uint256 _pageLength) external view returns (struct IDiamondLoupe.Facet[] facets_)
Gets all facet addresses and their four byte function selectors.
Parameters
| Name | Type | Description |
|---|---|---|
| _pageIndex | uint256 | members to skip : _pageIndex * _pageLength |
| _pageLength | uint256 | number of members to return |
Returns
| Name | Type | Description |
|---|---|---|
| facets_ | IDiamondLoupe.Facet[] | Facet |
getFacetsLength
function getFacetsLength() external view returns (uint256 facetsLength_)
Gets facet length.
Returns
| Name | Type | Description |
|---|---|---|
| facetsLength_ | uint256 | Facets length |
getStaticFunctionSelectors
function getStaticFunctionSelectors() external pure returns (bytes4[] staticFunctionSelectors_)
Gets all function selectors of a facet
The selector count must remain aligned with the number of assigned selectors.
Returns
| Name | Type | Description |
|---|---|---|
| staticFunctionSelectors_ | bytes4[] | Face functions selectors |
getStaticInterfaceIds
function getStaticInterfaceIds() external pure returns (bytes4[] staticInterfaceIds_)
Gets all interfaces ids of a facet.
Registers the Diamond, Diamond cut, Diamond loupe, and ERC-165 interface IDs.
Returns
| Name | Type | Description |
|---|---|---|
| staticInterfaceIds_ | bytes4[] | Face interface ids |
getStaticResolverKey
function getStaticResolverKey() external pure returns (bytes32 staticResolverKey_)
Gets the static resolver key
Returns
| Name | Type | Description |
|---|---|---|
| staticResolverKey_ | bytes32 | Static resolver key |
initializeDiamondCut
function initializeDiamondCut() external nonpayable
Initialises the diamond facet and registers it in the initialiser registry.
Callable once; subsequent calls revert with FacetAlreadyRegistered. Requires DEFAULT_ADMIN_ROLE. Called by the factory during deployment.
supportsInterface
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.
Parameters
| Name | Type | Description |
|---|---|---|
| _interfaceId | bytes4 | undefined |
Returns
| Name | Type | Description |
|---|---|---|
| _0 | bool | undefined |
updateConfig
function updateConfig(bytes32 _newConfigurationId, uint256 _newVersion) external nonpayable
For the current BLR, update its configuration identifier and version.
Requires DEFAULT_ADMIN_ROLE and validates the configuration before storing the new configuration identifier and pinned version. The admin is responsible for confirming that _newConfigurationId is compatible with the currently active configuration before calling this function; no on-chain compatibility check is performed.
Parameters
| Name | Type | Description |
|---|---|---|
| _newConfigurationId | bytes32 | The new configuration identifier to apply. |
| _newVersion | uint256 | The version number associated with the new configuration. |
updateConfigVersion
function updateConfigVersion(uint256 _newVersion) external nonpayable
For the current BLR and configuration, update the used version.
Requires DEFAULT_ADMIN_ROLE and preserves the active configuration identifier and resolver while updating only the pinned configuration version.
Parameters
| Name | Type | Description |
|---|---|---|
| _newVersion | uint256 | The new version number to set for the current configuration. |
updateReplacementEnabled
function updateReplacementEnabled(bool _newReplacementEnabled) external nonpayable
For the current BLR update its configuration
Parameters
| Name | Type | Description |
|---|---|---|
| _newReplacementEnabled | bool | The replacement enabled flag to set* |
updateResolver
function updateResolver(contract IBusinessLogicResolver _newResolver, bytes32 _newConfigurationId, uint256 _newVersion, bool _newReplacementEnabled) external nonpayable
Replaces the Business Logic Resolver with a new one, setting configuration and version.
Requires DEFAULT_ADMIN_ROLE, validates _newResolver is a genuine IBusinessLogicResolver, and validates the target configuration against it before replacing the resolver pointer, configuration identifier and version. The admin is responsible for confirming business-key and configuration compatibility across the resolver switch before calling this function; no on-chain compatibility check is performed — _newResolver, _newConfigurationId and _newVersion are trusted as a deliberate, atomic choice by a trusted admin role.
Parameters
| Name | Type | Description |
|---|---|---|
| _newResolver | contract IBusinessLogicResolver | The new BLR contract address to wire into the proxy. |
| _newConfigurationId | bytes32 | The configuration identifier to activate on the new resolver. |
| _newVersion | uint256 | The version number associated with the new configuration. |
| _newReplacementEnabled | bool | The replacement enabled flag to set. |
Events
ConfigUpdated
event ConfigUpdated(address indexed caller, bytes32 oldConfigurationId, bytes32 newConfigurationId, uint256 oldConfigurationVersion, uint256 newConfigurationVersion)
Emitted when the active configuration identifier is replaced.
updateConfig() combines an id change and a version change in one call; both get a complete old/new pair here.
Parameters
| Name | Type | Description |
|---|---|---|
caller indexed | address | Account that performed the update. |
| oldConfigurationId | bytes32 | Previous configuration identifier. |
| newConfigurationId | bytes32 | New configuration identifier. |
| oldConfigurationVersion | uint256 | Previous configuration version. |
| newConfigurationVersion | uint256 | Version activated for the new configuration. |
ConfigVersionUpdated
event ConfigVersionUpdated(address indexed caller, uint256 oldConfigurationVersion, uint256 newConfigurationVersion)
Emitted when the pinned version of the active configuration is replaced.
Parameters
| Name | Type | Description |
|---|---|---|
caller indexed | address | Account that performed the update. |
| oldConfigurationVersion | uint256 | Previous configuration version. |
| newConfigurationVersion | uint256 | New configuration version. |
DiamondCutInitialized
event DiamondCutInitialized()
Emitted once when the diamond facet is initialised.
Fires exclusively from initializeDiamondCut.
ReplacementEnabledUpdated
event ReplacementEnabledUpdated(address indexed caller, bool oldReplacementEnabled, bool newReplacementEnabled)
Emitted when the replacement-enabled flag is replaced.
Parameters
| Name | Type | Description |
|---|---|---|
caller indexed | address | Account that performed the update. |
| oldReplacementEnabled | bool | Previous replacement-enabled flag. |
| newReplacementEnabled | bool | New replacement-enabled flag. |
ResolverUpdated
event ResolverUpdated(address indexed caller, address oldResolver, address newResolver, bytes32 oldConfigurationId, bytes32 newConfigurationId, uint256 oldConfigurationVersion, uint256 newConfigurationVersion, bool oldReplacementEnabled, bool newReplacementEnabled)
Emitted when the resolver-proxy's Business Logic Resolver is replaced.
updateResolver() combines four changes in one call; every one of them gets a complete old/new pair here rather than only the fields that happen to differ.
Parameters
| Name | Type | Description |
|---|---|---|
caller indexed | address | Account that performed the update. |
| oldResolver | address | Previous Business Logic Resolver address. |
| newResolver | address | New Business Logic Resolver address. |
| oldConfigurationId | bytes32 | Previous configuration identifier. |
| newConfigurationId | bytes32 | Configuration identifier activated on the new resolver. |
| oldConfigurationVersion | uint256 | Previous configuration version. |
| newConfigurationVersion | uint256 | Configuration version activated on the new resolver. |
| oldReplacementEnabled | bool | Previous replacement-enabled flag. |
| newReplacementEnabled | bool | Replacement-enabled flag activated on the new resolver. |
Errors
AccountHasNoRole
error AccountHasNoRole(address account, bytes32 role)
Thrown when an account does not hold a required role.
Parameters
| Name | Type | Description |
|---|---|---|
| account | address | The account that lacks the role. |
| role | bytes32 | The role that is not held. |
FacetAlreadyRegistered
error FacetAlreadyRegistered(bytes32 facetId, uint256 lastVersion)
Raised when an initialiser tries to register a facet that already has a non-zero last registered version (i.e. the facet is being re-initialised on a fresh install).
Parameters
| Name | Type | Description |
|---|---|---|
| facetId | bytes32 | Identifier of the offending facet. |
| lastVersion | uint256 | Last version recorded for that facet at the time of the check. |
InvalidBusinessLogicResolver
error InvalidBusinessLogicResolver(address invalidResolver)
Thrown when a candidate resolver is the zero address or fails the isBusinessLogicResolver() identity check.
Parameters
| Name | Type | Description |
|---|---|---|
| invalidResolver | address | The address that failed validation. |
UnrecognizedResolverProxyVersion
error UnrecognizedResolverProxyVersion(bytes8 _resolverProxyVersion)
Thrown when the provided proxy version does not match any BLR compatible standard.
Parameters
| Name | Type | Description |
|---|---|---|
| _resolverProxyVersion | bytes8 | proxy version that is not compatible with the BLR. |
WalletRecovered
error WalletRecovered()
Thrown when attempting to recover a wallet that has already been recovered.