Skip to main content

IExternalKycListManagement

Asset Tokenization Studio Team

IExternalKycListManagement

Interface for managing external KYC list contracts on a security token. External KYC lists are trusted third-party contracts consulted during KYC verification: an account's KYC status is considered externally valid only when every listed provider confirms the requested status.

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

Methods​

addExternalKycList​

function addExternalKycList(address _kycList) external nonpayable returns (bool success_)

Adds an external KYC list contract to the list.

Requires ROLE_KYC_MANAGER, the token to be unpaused, and a non-zero address. Reverts with ListedKycList if the address is already listed. Emits AddedToExternalKycLists.

Parameters​

NameTypeDescription
_kycListaddressAddress of the external KYC list contract to add.

Returns​

NameTypeDescription
success_boolTrue if the contract was added successfully.

getExternalKycListsCount​

function getExternalKycListsCount() external view returns (uint256 externalKycListsCount_)

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

Returns​

NameTypeDescription
externalKycListsCount_uint256The current number of listed external KYC list contracts.

getExternalKycListsMembers​

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

Returns a paginated slice of the external KYC 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 KYC list contract addresses for the requested page.

initializeExternalKycLists​

function initializeExternalKycLists(address[] _kycLists) external nonpayable

One-time initialiser that populates the external KYC 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
_kycListsaddress[]Initial array of external KYC list contract addresses to register.

isExternalKycList​

function isExternalKycList(address _kycList) external view returns (bool)

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

Parameters​

NameTypeDescription
_kycListaddressAddress to check.

Returns​

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

isExternallyGranted​

function isExternallyGranted(address _account, enum IKyc.KycStatus _kycStatus) external view returns (bool)

Checks whether an account holds the requested KYC status across all listed external KYC list contracts.

Iterates every listed external KYC provider and calls getKycStatus. Returns true only when all providers confirm the exact _kycStatus for _account (AND semantics across providers). Returns true when no providers are listed.

Parameters​

NameTypeDescription
_accountaddressAddress of the account whose KYC status is being evaluated.
_kycStatusenum IKyc.KycStatusThe IKyc.KycStatus value that every provider must confirm.

Returns​

NameTypeDescription
_0boolTrue if all listed providers confirm _kycStatus for _account, false otherwise.

removeExternalKycList​

function removeExternalKycList(address _kycList) external nonpayable returns (bool success_)

Removes an external KYC list contract from the list.

Requires ROLE_KYC_MANAGER and the token to be unpaused. Reverts with UnlistedKycList if the address is not listed. Emits RemovedFromExternalKycLists.

Parameters​

NameTypeDescription
_kycListaddressAddress of the external KYC list contract to remove.

Returns​

NameTypeDescription
success_boolTrue if the contract was removed successfully.

updateExternalKycLists​

function updateExternalKycLists(address[] _kycLists, bool[] _actives) external nonpayable returns (bool success_)

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

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

Parameters​

NameTypeDescription
_kycListsaddress[]Array of external KYC 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​

AddedToExternalKycLists​

event AddedToExternalKycLists(address indexed operator, address kycList)

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

Parameters​

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

ExternalKycListInitialized​

event ExternalKycListInitialized(address[] kycLists)

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

Fires exclusively from initializeExternalKycLists after the storage write succeeds.

Parameters​

NameTypeDescription
kycListsaddress[]Initial array of external KYC list contract addresses registered.

ExternalKycListsUpdated​

event ExternalKycListsUpdated(address indexed operator, address[] kycLists, bool[] actives)

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

Parameters​

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

RemovedFromExternalKycLists​

event RemovedFromExternalKycLists(address indexed operator, address kycList)

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

Parameters​

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

Errors​

ListedKycList​

error ListedKycList(address kycList)

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

Parameters​

NameTypeDescription
kycListaddressThe duplicate external KYC list contract address.

UnlistedKycList​

error UnlistedKycList(address kycList)

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

Parameters​

NameTypeDescription
kycListaddressThe unlisted external KYC list contract address.