Skip to content

INestorComplianceFactory

Git Source

Author: Originally developed by DEFYCA Labs S.a.r.l., maintained by Nestor Exchange OÜ

MIT Licence. Originally Copyright © 2023 DEFYCA Labs S.a.r.l.

Interface defining the upgradeable compliance factory for all tokens in the Nestor Protocol.

Functions

setTreasuryManager

function setTreasuryManager(address newTreasuryManager_) external;

updateModularComplianceImpl

function updateModularComplianceImpl(address newModularComplianceImpl_) external;

updateSupportedComplianceData

function updateSupportedComplianceData(UpdateSupportedComplianceData[] calldata updateSupportedComplianceDataArr_) external;

updateModularComplianceData

function updateModularComplianceData(UpdateModularComplianceData[] calldata updateModularComplianceDataArr_) external;

deployCompliance

Deploys the compliance contract using the ProxyBeacon with the associated NestorPermissionsManager contract

function deployCompliance(IBasicNestorToken.NestorTokenTypes tokenType_) external returns (address);

treasuryManager

function treasuryManager() external view returns (address);

modularComplianceBeacon

function modularComplianceBeacon() external view returns (ProxyBeacon);

getModularComplianceImpl

function getModularComplianceImpl() external view returns (address);

getModularComplianceTokenType

function getModularComplianceTokenType(address modularComplianceAddr_) external view returns (IBasicNestorToken.NestorTokenTypes);

getSupportedComplianceModulesCount

function getSupportedComplianceModulesCount(IBasicNestorToken.NestorTokenTypes tokenType_) external view returns (uint256);

getSupportedComplianceModules

function getSupportedComplianceModules(IBasicNestorToken.NestorTokenTypes tokenType_) external view returns (address[] memory);

getSupportedComplianceInfo

function getSupportedComplianceInfo(IBasicNestorToken.NestorTokenTypes tokenType_) external view returns (ModularComplianceInfo memory);

isSupportedComplianceModule

function isSupportedComplianceModule(IBasicNestorToken.NestorTokenTypes tokenType_, address moduleToCheck_) external view returns (bool);

isModularCompliance

function isModularCompliance(address modularComplianceAddr_) external view returns (bool);

Events

NestorComplianceDeployed

event NestorComplianceDeployed(
    IBasicNestorToken.NestorTokenTypes indexed tokenType,
    address newComplianceContract
);

Errors

NestorComplianceFactoryZeroAddr

error NestorComplianceFactoryZeroAddr(string);

NestorComplianceFactoryNotATreasuryManager

error NestorComplianceFactoryNotATreasuryManager(address);

NestorComplianceFactoryNotAModularCompliance

error NestorComplianceFactoryNotAModularCompliance(address);

NestorComplianceFactoryInvalidTokenType

error NestorComplianceFactoryInvalidTokenType();

NestorComplianceFactoryInvalidModularComplianceData

error NestorComplianceFactoryInvalidModularComplianceData(UpdateModularComplianceData modularComplianceData);

Structs

SupportedComplianceData

struct SupportedComplianceData {
    uint256 maxModulesCount;
    EnumerableSet.AddressSet modules;
    bytes32[48] _gap;
}

ModularComplianceInfo

struct ModularComplianceInfo {
    uint256 maxModulesCount;
    address[] modules;
}

UpdateModularComplianceData

struct UpdateModularComplianceData {
    address modularCompliance;
    ModularComplianceInfo complianceInfo;
    bool isAdding;
}

UpdateSupportedComplianceData

struct UpdateSupportedComplianceData {
    IBasicNestorToken.NestorTokenTypes tokenType;
    ModularComplianceInfo complianceInfo;
    bool isAdding;
}