AssetConfigFacet

Git Source

Inherits: IFactoryConfig

Handles asset type permissions and factory configuration through tiered interface

Standalone diamond facet for configuring asset factory settings

Access control is handled by AccessControlFacet

Functions

initializeAssetFactory

Initialize asset factory with tiered configuration

function initializeAssetFactory(address subscriptionManager) external;

Parameters

Name
Type
Description

subscriptionManager

address

Address of the subscription manager

_setupDefaultAssetTiers

Set up default asset tier configuration

function _setupDefaultAssetTiers() 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);

_getAllAssetTypes

Get all asset types supported by this factory

function _getAllAssetTypes() internal pure returns (string[] memory assetTypes);

Returns

Name
Type
Description

assetTypes

string[]

Array of asset 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

Events

AssetCreationValidated

event AssetCreationValidated(address indexed user, string assetType, uint8 userTier);

AssetLimitChecked

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

Last updated

Was this helpful?