Skip to main content

IMint

Asset Tokenization Studio Team

IMint

Interface aggregating the token issuance entry points of the ATS Diamond.

Consolidates the ERC-1594 issue/isIssuable pair and the ERC-3643 mint operation in a single facet. Both write operations require the caller to hold either the issuer or agent role, honour max-supply and compliance checks, and emit the Issued event from IERC1594.

Methods​

disableIssuance​

function disableIssuance() external nonpayable

Permanently disables issuance of new tokens.

Restricted to DEFAULT_ADMIN_ROLE. Sets the issuance flag to false and emits IssuanceDisabled. Reverts if issuance has already been disabled.

finalizeIssuance​

function finalizeIssuance() external nonpayable

Permanently finalizes issuance of new tokens.

Restricted to DEFAULT_ADMIN_ROLE. Sets the issuance flag to false and emits IssuanceFinalized. Reverts if issuance has already been disabled.

initializeERC1594​

function initializeERC1594() external nonpayable

Initialises the ERC-1594 StorageWrapper on the calling contract.

Can only be invoked once per contract; subsequent calls revert via onlyFacetNotRegistered.

isIssuable​

function isIssuable() external view returns (bool issuable_)

Returns whether further issuance is permitted for this security.

Once a token returns false it must never return true again. Implementations read the issuance flag maintained by ERC1594StorageWrapper.

Returns​

NameTypeDescription
issuable_boolTrue while new tokens may still be issued or minted.

issue​

function issue(address _tokenHolder, uint256 _value, bytes _data) external nonpayable

Issues new tokens to a token holder under the ERC-1594 semantics.

Restricted to issuer or agent roles. Increases the total supply and emits IERC1594.Issued. Only callable in single-partition mode and when the token is unpaused; the destination must pass identity and compliance checks.

Parameters​

NameTypeDescription
_tokenHolderaddressRecipient of the newly issued tokens.
_valueuint256Amount of tokens to issue, denominated in base units.
_databytesArbitrary data forwarded alongside the issuance for off-chain consumers.

mint​

function mint(address _to, uint256 _amount) external nonpayable

Mints new tokens to a recipient under the ERC-3643 semantics.

Behaves as a thin alias over issue with an empty data payload. Restricted to issuer or agent roles and subject to the same pause, supply, identity and compliance constraints. Emits IERC1594.Issued.

Parameters​

NameTypeDescription
_toaddressRecipient of the newly minted tokens.
_amountuint256Amount of tokens to mint, denominated in base units.

Events​

ERC1594Initialized​

event ERC1594Initialized()

/**Emitted once when the ERC-1594 capability is initialised on a token.

Fires exclusively from initializeERC1594 after the storage write succeeds.

IssuanceDisabled​

event IssuanceDisabled(address indexed operator)

Emitted when token issuance is disabled.

Parameters​

NameTypeDescription
operator indexedaddressAccount that disabled issuance.

IssuanceFinalized​

event IssuanceFinalized(address indexed operator)

Emitted when token issuance is finalized.

Parameters​

NameTypeDescription
operator indexedaddressAccount that finalized issuance.

Issued​

event Issued(address indexed operator, address indexed to, uint256 value, bytes data)

Emitted when new tokens are issued to a holder.

Parameters​

NameTypeDescription
operator indexedaddressAccount that invoked the issuance (issuer or agent).
to indexedaddressRecipient of the newly issued tokens.
valueuint256Amount of tokens issued, denominated in base units.
databytesArbitrary payload forwarded alongside the issuance.

Errors​

IssuanceIsDisabled​

error IssuanceIsDisabled()

Thrown when an issuance operation is attempted after issuance has been permanently disabled.