LedgerConfigFacet

Git Source

Inherits: IFactoryConfig

Handles ledger currency permissions and factory configuration through tiered interface

Standalone diamond facet for configuring ledger factory settings

Access control is handled by AccessControlFacet

Functions

initializeLedgerFactory

Initialize ledger factory with tiered configuration

function initializeLedgerFactory(address subscriptionManager) external;

Parameters

Name
Type
Description

subscriptionManager

address

Address of the subscription manager

_setupDefaultLedgerTiers

Set up default ledger tier configuration

function _setupDefaultLedgerTiers() internal;

initializeConfig

function initializeConfig() external override;

isConfigInitialized

function isConfigInitialized() external view override returns (bool);

setFeatureEnabled

function setFeatureEnabled(string calldata feature, bool enabled) external override;

isFeatureEnabled

function isFeatureEnabled(string calldata feature) external view override returns (bool);

getEnabledFeatures

function getEnabledFeatures() external view override returns (string[] memory);

setLimit

function setLimit(string calldata limitType, uint256 value) external override;

getLimit

function getLimit(string calldata limitType) external view override returns (uint256);

setPermission

function setPermission(string calldata permissionType, bool granted) external override;

hasPermission

function hasPermission(string calldata permissionType) external view override returns (bool);

getFactoryConfiguration

function getFactoryConfiguration()
    external
    view
    override
    returns (
        string[] memory features,
        string[] memory limits,
        uint256[] memory limitValues,
        string[] memory permissions,
        bool[] memory permissionStates
    );

getConfigurationStats

function getConfigurationStats()
    external
    view
    override
    returns (uint256 totalFeatures, uint256 enabledFeatures, uint256 totalLimits, uint256 totalPermissions);

setSubscriptionManager

function setSubscriptionManager(address subscriptionManager) external override;

getSubscriptionManager

function getSubscriptionManager() external view override returns (address);

getUserTier

function getUserTier(address user) external view override returns (uint8);

hasActiveSubscription

function hasActiveSubscription(address user) external view override returns (bool);

_getUserTier

function _getUserTier(address user) internal view returns (uint8);

_hasActiveSubscription

function _hasActiveSubscription(address user) internal view returns (bool);

setTieredFeature

function setTieredFeature(string calldata feature, uint8 minimumTier, bool enabled) external override;

isTieredFeatureAvailable

function isTieredFeatureAvailable(string calldata feature, uint8 tier) external view override returns (bool);

isFeatureAvailableForUser

function isFeatureAvailableForUser(string calldata feature, address user) external view override returns (bool);

getAvailableFeaturesForTier

function getAvailableFeaturesForTier(uint8 tier) external view override returns (string[] memory);

getTieredFeatureInfo

function getTieredFeatureInfo(string calldata feature)
    external
    view
    override
    returns (uint8 minimumTier, bool enabled);

setTieredLimit

function setTieredLimit(string calldata limitType, uint8 tier, uint256 value) external override;

getTieredLimit

function getTieredLimit(string calldata limitType, uint8 tier) external view override returns (uint256);

getLimitForUser

function getLimitForUser(string calldata limitType, address user) external view override returns (uint256);

wouldExceedLimit

function wouldExceedLimit(string calldata limitType, address user, uint256 currentUsage, uint256 additionalUsage)
    external
    view
    override
    returns (bool wouldExceed, uint256 currentLimit);

setTieredPermission

function setTieredPermission(string calldata permissionType, uint8 tier, bool granted) external override;

isTieredPermissionGranted

function isTieredPermissionGranted(string calldata permissionType, uint8 tier) external view override returns (bool);

isPermissionGrantedForUser

function isPermissionGrantedForUser(string calldata permissionType, address user)
    external
    view
    override
    returns (bool);

setTieredFeaturesBatch

function setTieredFeaturesBatch(string[] calldata features, uint8[] calldata minimumTiers, bool[] calldata enabled)
    external
    override;

setTieredLimitsBatch

function setTieredLimitsBatch(string[] calldata limitTypes, uint8 tier, uint256[] calldata values) external override;

getUserConfigSummary

function getUserConfigSummary(address user)
    external
    view
    override
    returns (uint8 tier, bool hasSubscription, string[] memory availableFeatures, uint256[] memory limits);

getTierInfo

function getTierInfo(uint8 tier)
    external
    pure
    override
    returns (string memory name, uint256 monthlyFeeUSD, bool isActive);

getAllTiers

function getAllTiers()
    external
    pure
    override
    returns (uint8[] memory tiers, string[] memory names, uint256[] memory fees);

_getAllLedgerTypes

Get all ledger currency types supported by this factory

function _getAllLedgerTypes() internal pure returns (string[] memory currencyTypes);

Returns

Name
Type
Description

currencyTypes

string[]

Array of currency type names

_requireAdmin

function _requireAdmin() internal view;

_getAuthority

Get the authority (access manager) for this facet

function _getAuthority() internal view returns (address);

Returns

Name
Type
Description

<none>

address

The address of the access manager

setFeeRecipient

Set the fee recipient address (admin only)

function setFeeRecipient(address feeRecipient) external;

Parameters

Name
Type
Description

feeRecipient

address

New fee recipient address

getFeeRecipient

Get the current fee recipient address

function getFeeRecipient() external view returns (address feeRecipient);

Returns

Name
Type
Description

feeRecipient

address

Current fee recipient address

emergencyWithdrawFees

Emergency withdrawal of any fees stuck in the factory (admin only)

function emergencyWithdrawFees(address payable recipient) external;

Parameters

Name
Type
Description

recipient

address payable

Address to receive the withdrawn funds

Events

LedgerCreationValidated

event LedgerCreationValidated(address indexed user, string currencyType, uint8 userTier);

LedgerLimitChecked

event LedgerLimitChecked(address indexed user, uint256 currentCount, uint256 limit, uint8 tier);

FeeRecipientUpdated

event FeeRecipientUpdated(address indexed feeRecipient);

EmergencyFeesWithdrawn

event EmergencyFeesWithdrawn(address indexed recipient, uint256 amount);

Last updated

Was this helpful?