function init(address[] calldata modules_, uint256 maxModulesCount_) external;function updateMaxModulesCount(uint256 newMaxModulesCount_) external;function addModules(address[] calldata modulesToAdd_) external;function removeModules(address[] calldata modulesToRemove_) external;function maxModulesCount() external view returns (uint256);event MaxModulesCountUpdated(uint256 newMaxModulesCount, uint256 oldMaxModulesCount);event ModulesAdded(address[] modules);event ModulesRemoved(address[] modules);error FrictionlessIsZeroAddress(string);error FrictionlessModularComplianceZeroMaxModulesCount();error FrictionlessModularComplianceModuleIsAlreadyBound(address module);error FrictionlessModularComplianceModuleDoesNotExist(address module);error FrictionlessModularComplianceMaxModuleCountReached();error FrictionlessModularComplianceCallerNotATokenOrOwner(address caller);error FrictionlessModularComplianceCallerNotAToken(address caller);function setPermissionsManager(address frictionlessPermissionsManager_) external;function setComplianceFactory(address newComplianceFactory_) external;function permissionsManager() external view returns (IFrictionlessPermissionsManager);function complianceFactory() external view returns (IFrictionlessComplianceFactory);function isTreasury(address walletAddress_) external view returns (bool);function isCustodian(address walletAddress_) external view returns (bool);function isInvestor(address walletAddress_) external view returns (bool);function isManager(address walletAddress_) external view returns (bool);function isCalculatingAgent(address walletAddress_) external view returns (bool);function isTransferAgent(address walletAddress_) external view returns (bool);function isFundAccountant(address walletAddress_) external view returns (bool);function isUser(address walletAddress_) external view returns (bool);function hasClaim(address userAddress_, IFrictionlessPermissionsManager.FrictionlessPermissionedUser userType_)
external
view
returns (bool);event FrictionlessTokenTransferred(
IBasicFrictionlessToken.FrictionlessTokenTypes tokenType,
address tokenAddr,
address from,
address to,
uint256 amount
);error FrictionlessIsZeroAddress(string);error FrictionlessComplianceModuleInvalidCompliance(address compliance);error FrictionlessComplianceModuleNotAnApprovedCompliance(address compliance);error FrictionlessComplianceModuleComplianceIsAlreadyBound(address compliance);error FrictionlessComplianceModuleNotABoundCompliance(address compliance);function setTreasuryManager(address newTreasuryManager_) external;function updateModularComplianceImpl(address newModularComplianceImpl_) external;function updateSupportedComplianceData(UpdateSupportedComplianceData[] calldata updateSupportedComplianceDataArr_)
external;function updateModularComplianceData(UpdateModularComplianceData[] calldata updateModularComplianceDataArr_) external;function deployCompliance(IBasicFrictionlessToken.FrictionlessTokenTypes tokenType_) external returns (address);function treasuryManager() external view returns (address);function modularComplianceBeacon() external view returns (ProxyBeacon);function getModularComplianceImpl() external view returns (address);function getModularComplianceTokenType(address modularComplianceAddr_)
external
view
returns (IBasicFrictionlessToken.FrictionlessTokenTypes);function getSupportedComplianceModulesCount(IBasicFrictionlessToken.FrictionlessTokenTypes tokenType_)
external
view
returns (uint256);function getSupportedComplianceModules(IBasicFrictionlessToken.FrictionlessTokenTypes tokenType_)
external
view
returns (address[] memory);function getSupportedComplianceInfo(IBasicFrictionlessToken.FrictionlessTokenTypes tokenType_)
external
view
returns (ModularComplianceInfo memory);function isSupportedComplianceModule(IBasicFrictionlessToken.FrictionlessTokenTypes tokenType_, address moduleToCheck_)
external
view
returns (bool);function isModularCompliance(address modularComplianceAddr_) external view returns (bool);event FrictionlessComplianceDeployed(
IBasicFrictionlessToken.FrictionlessTokenTypes indexed tokenType, address newComplianceContract
);error FrictionlessComplianceFactoryZeroAddr(string);error FrictionlessComplianceFactoryNotATreasuryManager(address);error FrictionlessComplianceFactoryNotAModularCompliance(address);error FrictionlessComplianceFactoryInvalidTokenType();error FrictionlessComplianceFactoryInvalidModularComplianceData(UpdateModularComplianceData modularComplianceData);struct SupportedComplianceData {
uint256 maxModulesCount;
EnumerableSet.AddressSet modules;
bytes32[48] _gap;
}struct ModularComplianceInfo {
uint256 maxModulesCount;
address[] modules;
}struct UpdateModularComplianceData {
address modularCompliance;
ModularComplianceInfo complianceInfo;
bool isAdding;
}struct UpdateSupportedComplianceData {
IBasicFrictionlessToken.FrictionlessTokenTypes tokenType;
ModularComplianceInfo complianceInfo;
bool isAdding;
}IFrictionlessPermissionsManager public override permissionsManager;IFrictionlessComplianceFactory public override complianceFactory;mapping(address => bool) private _complianceBound;modifier onlyApprovedCompliance();modifier onlyBoundCompliance();function __AbstractFrictionlessComplianceModule_init(
address frictionlessPermissionsManager_,
address complianceFactory_
) internal onlyInitializing;function setPermissionsManager(address frictionlessPermissionsManager_) external override onlyOwner;function setComplianceFactory(address newComplianceFactory_) external override onlyOwner;function bindCompliance(address compliance_) external override onlyApprovedCompliance;function unbindCompliance(address compliance_) external override;function moduleTransferAction(address from_, address to_, uint256 value_)
external
virtual
override
onlyBoundCompliance;function moduleMintAction(address to_, uint256 value_) external virtual override onlyBoundCompliance;function moduleBurnAction(address from_, uint256 value_) external virtual override onlyBoundCompliance;function moduleCheck(address, address, uint256, address) public view virtual override returns (bool);function isComplianceBound(address compliance_) public view override returns (bool);function isTreasury(address userAddress_) public view override returns (bool);function isCustodian(address userAddress_) public view override returns (bool);function isInvestor(address userAddress_) public view override returns (bool);function isManager(address userAddress_) public view override returns (bool);function isCalculatingAgent(address userAddress_) public view override returns (bool);function isTransferAgent(address userAddress_) public view override returns (bool);function isFundAccountant(address userAddress_) public view override returns (bool);function isUser(address userAddress_) public view override returns (bool);function hasClaim(address userAddress_, IFrictionlessPermissionsManager.FrictionlessPermissionedUser userType_)
public
view
override
returns (bool);function _setPermissionsManager(address newFrictionlessPermissionsManager_) internal;function _setComplianceFactory(address newComplianceFactory_) internal;function _checkZeroAddr(address addrToCheck_, string memory addrName_) internal pure;function _onlyBoundCompliance(address compliance_) internal view virtual;function _onlyValidCompliance(address compliance_) internal view;function _onlyApprovedCompliance() internal view;function _getTokenBound(address compliance_) internal view returns (address);function _hasClaim(address userAddress_, IFrictionlessPermissionsManager.FrictionlessPermissionedUser userType_)
internal
view
virtual
returns (bool);