Skip to main content

IExternalControlListManagement

Asset Tokenization Studio Team

IExternalControlListManagement

Interface for managing external control list contracts on a security token. External control lists are trusted third-party contracts that implement IExternalControlList and are consulted during transfer authorisation checks.

Part of the Diamond facet system. ROLE_CONTROL_LIST_MANAGER is required for all state-mutating functions after initialisation. The external control list and its initialisation flag are stored in diamond storage at STORAGE_LOCATION_CONTROL_LIST_MANAGEMENT via ExternalListManagementStorageWrapper.

Methods​

addExternalControlList​

function addExternalControlList(address _controlList) external nonpayable returns (bool success_)

Adds an external control list contract to the list.

Requires ROLE_CONTROL_LIST_MANAGER, the token to be unpaused, and a non-zero address. Reverts with ListedControlList if the address is already listed. Emits AddedToExternalControlLists.

Parameters​

NameTypeDescription
_controlListaddressAddress of the external control list contract to add.

Returns​

NameTypeDescription
success_boolTrue if the contract was added successfully.

getExternalControlListsCount​

function getExternalControlListsCount() external view returns (uint256 externalControlListsCount_)

Returns the total number of external control list contracts in the list.

Returns​

NameTypeDescription
externalControlListsCount_uint256The current number of listed external control list contracts.

getExternalControlListsMembers​

function getExternalControlListsMembers(uint256 _pageIndex, uint256 _pageLength) external view returns (address[] members_)

Returns a paginated slice of the external control list contract list.

_The list offset is computed as \_pageIndex _ \_pageLength. Returns an empty array when the offset meets or exceeds the list length.*

Parameters​

NameTypeDescription
_pageIndexuint256Zero-based page index.
_pageLengthuint256Maximum number of addresses to return per page.

Returns​

NameTypeDescription
members_address[]Array of external control list contract addresses for the requested page.

initializeExternalControlLists​

function initializeExternalControlLists(address[] _controlLists) external nonpayable

One-time initialiser that populates the external control list at token deployment.

Can only be called once; subsequent calls revert via onlyFacetNotRegistered. The leading-underscore naming convention signals this is an initialiser function.

Parameters​

NameTypeDescription
_controlListsaddress[]Initial array of external control list contract addresses to register.

isExternalControlList​

function isExternalControlList(address _controlList) external view returns (bool)

Checks whether an address is present in the external control list.

Parameters​

NameTypeDescription
_controlListaddressAddress to check.

Returns​

NameTypeDescription
_0boolTrue if the address is a listed external control list contract, false otherwise.

removeExternalControlList​

function removeExternalControlList(address _controlList) external nonpayable returns (bool success_)

Removes an external control list contract from the list.

Requires ROLE_CONTROL_LIST_MANAGER and the token to be unpaused. Reverts with UnlistedControlList if the address is not listed. Emits RemovedFromExternalControlLists.

Parameters​

NameTypeDescription
_controlListaddressAddress of the external control list contract to remove.

Returns​

NameTypeDescription
success_boolTrue if the contract was removed successfully.

updateExternalControlLists​

function updateExternalControlLists(address[] _controlLists, bool[] _actives) external nonpayable returns (bool success_)

Adds or removes multiple external control list contracts in a single transaction.

Requires ROLE_CONTROL_LIST_MANAGER and the token to be unpaused. Both arrays must have the same length and contain no duplicate addresses, validated by ArrayValidation.checkUniqueValues. Emits ExternalControlListsUpdated.

Parameters​

NameTypeDescription
_controlListsaddress[]Array of external control list contract addresses to process.
_activesbool[]Corresponding flags; true adds the address to the list, false removes it.

Returns​

NameTypeDescription
success_boolTrue if the batch update completed successfully.

Events​

AddedToExternalControlLists​

event AddedToExternalControlLists(address indexed operator, address controlList)

Emitted when an external control list contract is added to the list.

Parameters​

NameTypeDescription
operator indexedaddressAddress of the caller who performed the addition.
controlListaddressAddress of the external control list contract that was added.

ExternalControlListInitialized​

event ExternalControlListInitialized(address[] controlLists)

Emitted once when the external control list capability is initialised on a token.

Fires exclusively from initializeExternalControlLists after the storage write succeeds.

Parameters​

NameTypeDescription
controlListsaddress[]The initial array of external control list contract addresses registered.

ExternalControlListsUpdated​

event ExternalControlListsUpdated(address indexed operator, address[] controlLists, bool[] actives)

Emitted when multiple external control list addresses are added or removed in a single batch.

Parameters​

NameTypeDescription
operator indexedaddressAddress of the caller who performed the update.
controlListsaddress[]Array of external control list contract addresses that were processed.
activesbool[]Corresponding activation flags; true means added, false means removed.

RemovedFromExternalControlLists​

event RemovedFromExternalControlLists(address indexed operator, address controlList)

Emitted when an external control list contract is removed from the list.

Parameters​

NameTypeDescription
operator indexedaddressAddress of the caller who performed the removal.
controlListaddressAddress of the external control list contract that was removed.

Errors​

ListedControlList​

error ListedControlList(address controlList)

Thrown when attempting to add an address already present in the external control list.

Parameters​

NameTypeDescription
controlListaddressThe duplicate external control list contract address.

UnlistedControlList​

error UnlistedControlList(address controlList)

Thrown when attempting to remove an address not present in the external control list.

Parameters​

NameTypeDescription
controlListaddressThe unlisted external control list contract address.