Skip to main content

FactoryFacet

Asset Tokenization Studio Team

FactoryFacet

Diamond facet that exposes all Factory selectors under a single RESOLVER_KEY_FACTORY for use as a ResolverProxy facet.

Inherits all logic from Factory unchanged. Adds only the IStaticFunctionSelectors triplet required by the Diamond proxy for selector registration in the BusinessLogicResolver. Factory is stateless (no storage). Delegatecall from ResolverProxy is safe: all CREATE operations (deployProxy, deployEquity, etc.) execute in the proxy's context, so created contracts are correctly owned and funded by the proxy, not a separate factory contract. This is the intended behaviour for a factory-as-proxy pattern.

Methods​

deployBond​

function deployBond(IFactory.BondData _bondData, FactoryRegulationData _factoryRegulationData) external nonpayable returns (address bondAddress_)

Parameters​

NameTypeDescription
_bondDataIFactory.BondDataundefined
_factoryRegulationDataFactoryRegulationDataundefined

Returns​

NameTypeDescription
bondAddress_addressundefined

deployEquity​

function deployEquity(IFactory.EquityData _equityData, FactoryRegulationData _factoryRegulationData) external nonpayable returns (address equityAddress_)

Parameters​

NameTypeDescription
_equityDataIFactory.EquityDataundefined
_factoryRegulationDataFactoryRegulationDataundefined

Returns​

NameTypeDescription
equityAddress_addressundefined

deployProxy​

function deployProxy(contract IBusinessLogicResolver _resolver, IResolverProxy.ResolverProxyConfigurationV2 _resolverProxyConfigurationV2, IResolverProxy.Rbac[] _rbacs, bytes _data) external nonpayable returns (address proxyAddress_)

Parameters​

NameTypeDescription
_resolvercontract IBusinessLogicResolverundefined
_resolverProxyConfigurationV2IResolverProxy.ResolverProxyConfigurationV2undefined
_rbacsIResolverProxy.Rbac[]undefined
_databytesundefined

Returns​

NameTypeDescription
proxyAddress_addressundefined

getAppliedRegulationData​

function getAppliedRegulationData(enum RegulationType _regulationType, enum RegulationSubType _regulationSubType) external pure returns (struct RegulationData regulationData_)

Returns the regulation data that applies to a given type/sub-type pair.

Parameters​

NameTypeDescription
_regulationTypeenum RegulationTypePrimary regulation category.
_regulationSubTypeenum RegulationSubTypeSub-category within the regulation.

Returns​

NameTypeDescription
regulationData_RegulationDataMatched regulation configuration.

getStaticFunctionSelectors​

function getStaticFunctionSelectors() external pure returns (bytes4[])

Gets all function selectors of a facet

Returns​

NameTypeDescription
_0bytes4[]Face functions selectors

getStaticInterfaceIds​

function getStaticInterfaceIds() external pure returns (bytes4[])

Gets all interfaces ids of a facet.

Returns​

NameTypeDescription
_0bytes4[]Face interface ids

getStaticResolverKey​

function getStaticResolverKey() external pure returns (bytes32 staticResolverKey_)

Gets the static resolver key

Returns​

NameTypeDescription
staticResolverKey_bytes32Static resolver key

Events​

BondDeployed​

event BondDeployed(address indexed deployer, address bondAddress, IFactory.BondData bondData, FactoryRegulationData regulationData)

Emitted when a new variable-rate bond is deployed.

Parameters​

NameTypeDescription
deployer indexedaddressAddress that initiated the deployment.
bondAddressaddressAddress of the newly deployed bond proxy.
bondDataIFactory.BondDataFull bond configuration supplied at deployment.
regulationDataFactoryRegulationDataRegulation settings applied to the bond.

EquityDeployed​

event EquityDeployed(address indexed deployer, address equityAddress, IFactory.EquityData equityData, FactoryRegulationData regulationData)

Emitted when a new equity token is deployed.

Parameters​

NameTypeDescription
deployer indexedaddressAddress that initiated the deployment.
equityAddressaddressAddress of the newly deployed equity proxy.
equityDataIFactory.EquityDataFull equity configuration supplied at deployment.
regulationDataFactoryRegulationDataRegulation settings applied to the equity.

ProxyDeployed​

event ProxyDeployed(address indexed proxyAddress, contract IBusinessLogicResolver resolver, bytes32 configKey, uint256 version, IResolverProxy.Rbac[] rbac, bytes data)

Emitted when a new resolver proxy is deployed.

Parameters​

NameTypeDescription
proxyAddress indexedaddressAddress of the newly deployed proxy.
resolvercontract IBusinessLogicResolverBusiness-logic resolver attached to the proxy.
configKeybytes32Configuration identifier used by the proxy.
versionuint256Initial configuration version.
rbacIResolverProxy.Rbac[]Role-based access control entries seeded at deployment.
databytesAdditional data for the proxy deployment.

Errors​

AccountIsBlocked​

error AccountIsBlocked(address account)

Reverts when an operation targets or is requested by a blocked account.

The blocking policy is enforced by the domain that performs the check.

Parameters​

NameTypeDescription
accountaddressAccount rejected by the blocking validation.

AlreadyInitialized​

error AlreadyInitialized()

Reverts when an initialisation routine is invoked more than once.

Used by contracts or facets that must be initialised exactly once.

ContradictoryValuesInArray​

error ContradictoryValuesInArray(uint256 lowerIndex, uint256 upperIndex)

Reverts when ordered array values contradict expected ordering.

Indicates that two indexed values cannot both satisfy the required monotonic or range invariant.

Parameters​

NameTypeDescription
lowerIndexuint256Lower array index involved in the contradiction.
upperIndexuint256Upper array index involved in the contradiction.

DecimalsTooLarge​

error DecimalsTooLarge(uint8 currentDecimals, uint8 newDecimals)

Reverts when the difference between current decimals and new decimals exceeds the maximum value.

Protects decimals amount difference between current and new not te be greater than maximum.

Parameters​

NameTypeDescription
currentDecimalsuint8the current decimals amount.
newDecimalsuint8the new decimals amount.

DifferentLengths​

error DifferentLengths(uint256 length1, uint256 length2)

Emitted when two arrays or collections expected to have matching lengths differ.

Reverts operations that require one-to-one correspondence between input parameters.

Parameters​

NameTypeDescription
length1uint256Length of the first array or collection.
length2uint256Length of the second array or collection.

EmptyResolver​

error EmptyResolver(contract IBusinessLogicResolver resolver)

Raised when the supplied resolver address is the zero address.

Parameters​

NameTypeDescription
resolvercontract IBusinessLogicResolverThe zero-address resolver that caused the revert.

ExpiredDeadline​

error ExpiredDeadline(uint256 deadline)

Reverts when a signed payload is submitted after its deadline.

The caller must provide and validate deadlines before accepting the signed operation.

Parameters​

NameTypeDescription
deadlineuint256Expired deadline carried by the signed payload.

ExponentOverflow​

error ExponentOverflow(uint256 exponent)

Reverts when an exponent would cause 10 ** exponent to overflow uint256.

Thrown by DecimalsLib.checkExponentOverflow when exponent >= 78.

Parameters​

NameTypeDescription
exponentuint256The exponent that would produce an overflow.

GreaterThanMaxUint256​

error GreaterThanMaxUint256(uint256 amount, uint8 decimals)

Reverts when multiplying amount by 10 ** decimals would exceed uint256 max.

Thrown by DecimalsLib.calculateDecimalsAdjustment when amount > MAX_UINT256 / 10 ** decimals.

Parameters​

NameTypeDescription
amountuint256The token amount that cannot be scaled up.
decimalsuint8The exponent that causes the overflow.

InvalidDates​

error InvalidDates()

Reverts when a date set is invalid.

Used when the failing date constraint does not require exposing values.

InvalidTimestamp​

error InvalidTimestamp()

Reverts when a timestamp value is invalid.

Used for shared timestamp validation that is not tied to expiration.

MaxExternalListSizeReached​

error MaxExternalListSizeReached(uint256 max)

Reverts when adding an entry would grow an external list beyond its maximum size.

Enforced by ExternalListManagementStorageWrapper.addExternalList for the external pause, control and KYC lists. The bound exists because each list is iterated in full on the hot path of token operations, so an unbounded list could exceed the gas limit and brick the token.

Parameters​

NameTypeDescription
maxuint256Maximum number of entries permitted in the external list.

NoInitialAdmins​

error NoInitialAdmins()

Raised when no admin role assignments are provided for the new proxy.

RegulationTypeAndSubTypeForbidden​

error RegulationTypeAndSubTypeForbidden(enum RegulationType regulationType, enum RegulationSubType regulationSubType)

Raised when the requested regulation type and sub-type combination is not permitted.

Parameters​

NameTypeDescription
regulationTypeenum RegulationTypePrimary regulation category.
regulationSubTypeenum RegulationSubTypeSub-category within the regulation.

UnexpectedError​

error UnexpectedError(bytes4 _errorId)

Reverts when an unreachable validation state is detected.

Replaces assertions for defensive handling of logically impossible states.

Parameters​

NameTypeDescription
_errorIdbytes4Identifier of the unexpected validation condition.

WrongDates​

error WrongDates(uint256 firstDate, uint256 secondDate)

Reverts when two date values fail their required ordering constraint.

The expected relationship between both dates is defined by the caller's validation context.

Parameters​

NameTypeDescription
firstDateuint256First date participating in the failed comparison.
secondDateuint256Second date participating in the failed comparison.

WrongExpirationTimestamp​

error WrongExpirationTimestamp()

Reverts when an expiration timestamp is invalid.

Used for expired, past, or otherwise unacceptable expiration values.

WrongNonce​

error WrongNonce(uint256 nonce, address account)

Reverts when a nonce does not match the expected value for an account.

Protects signed operations against replay and out-of-order execution.

Parameters​

NameTypeDescription
nonceuint256Nonce supplied by the caller or signed payload.
accountaddressAccount for which the nonce validation failed.

WrongSignature​

error WrongSignature()

Reverts when a signature fails verification.

Applies to shared signature validation flows, including EIP-712 payloads and partition-based signatures.

WrongSignatureLength​

error WrongSignatureLength()

Reverts when a signature payload has an invalid byte length.

Used before signature recovery or verification to reject malformed input.

WrongTimestamp​

error WrongTimestamp(uint256 timeStamp)

Reverts when a scheduled timestamp is not strictly in the future.

Used for shared scheduling validation where the current block time is read through TimeTravelStorageWrapper.

Parameters​

NameTypeDescription
timeStampuint256Timestamp rejected for scheduling.

ZeroAddressNotAllowed​

error ZeroAddressNotAllowed()

Reverts when the zero address is supplied where it is not permitted.

Prevents invalid account, contract, or recipient references.

ZeroValueNotAllowed​

error ZeroValueNotAllowed()

Reverts when zero is supplied where a positive value is required.

Used for shared validation of amounts, limits, factors, or identifiers.