FactoryConfigFacet

Git Source

Inherits: IFactoryConfig

Implementation of factory configuration with subscription integration

Provides subscription-tier-based access control for factory features, limits, and permissions

Functions

onlyAdmin

modifier onlyAdmin();

validTier

modifier validTier(uint8 tier);

setSubscriptionManager

function setSubscriptionManager(address subscriptionManager) external override onlyAdmin;

getSubscriptionManager

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

getUserTier

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

hasActiveSubscription

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

setTieredFeature

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

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 validTier(tier) 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
    onlyAdmin
    validTier(tier);

getTieredLimit

function getTieredLimit(string calldata limitType, uint8 tier)
    external
    view
    override
    validTier(tier)
    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
    onlyAdmin
    validTier(tier);

isTieredPermissionGranted

function isTieredPermissionGranted(string calldata permissionType, uint8 tier)
    external
    view
    override
    validTier(tier)
    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
    onlyAdmin;

setTieredLimitsBatch

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

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
    view
    override
    validTier(tier)
    returns (string memory name, uint256 monthlyFeeUSD, bool isActive);

getAllTiers

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

initializeConfig

function initializeConfig() external virtual override onlyAdmin;

isConfigInitialized

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

getEnabledFeatures

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

_getUserTier

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

_hasActiveSubscription

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

_requireAdmin

function _requireAdmin() internal view virtual;

Last updated

Was this helpful?