OfferingConfigFacet
Inherits: IFactoryConfig
Handles offering type permissions and factory configuration through tiered interface
Standalone diamond facet for configuring offering factory settings
Access control is handled by AccessControlFacet
Functions
initializeOfferingFactory
Initialize offering factory with tiered configuration
function initializeOfferingFactory(address subscriptionManager) external;
Parameters
subscriptionManager
address
Address of the subscription manager
_setupDefaultOfferingTiers
Set up default offering tier configuration
function _setupDefaultOfferingTiers() internal;
canCreateOfferingType
Check if a user can create a specific offering type
function canCreateOfferingType(address user, string calldata offeringType)
external
view
returns (bool canCreate, string memory reason);
Parameters
user
address
The user address
offeringType
string
The offering type to check
Returns
canCreate
bool
Whether the user can create this offering type
reason
string
Reason if cannot create
wouldExceedOfferingLimit
Check if a user would exceed their offering creation limit
function wouldExceedOfferingLimit(address user, uint256 currentOfferingCount)
external
view
returns (bool wouldExceed, uint256 currentLimit);
Parameters
user
address
The user address
currentOfferingCount
uint256
Current number of offerings owned by user
Returns
wouldExceed
bool
Whether creating an offering would exceed the limit
currentLimit
uint256
The user's current offering limit
getOfferingCreationSummary
Get offering creation summary for a user
function getOfferingCreationSummary(address user)
external
view
returns (uint8 tier, uint256 maxOfferings, string[] memory availableOfferingTypes, bool hasActiveSubscription);
Parameters
user
address
The user address
Returns
tier
uint8
User's subscription tier
maxOfferings
uint256
Maximum offerings allowed for this tier
availableOfferingTypes
string[]
Offering types available for this tier
hasActiveSubscription
bool
Whether user has active subscription
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);
_getAllOfferingTypes
Get all offering types supported by this factory
function _getAllOfferingTypes() internal pure returns (string[] memory offeringTypes);
Returns
offeringTypes
string[]
Array of offering type names
_requireAdmin
function _requireAdmin() internal view;
_getAuthority
Get the authority (access manager) for this facet
function _getAuthority() internal view returns (address);
Returns
<none>
address
The address of the access manager
setFeeRecipient
Set the fee recipient address (admin only)
function setFeeRecipient(address feeRecipient) external;
Parameters
feeRecipient
address
New fee recipient address
getFeeRecipient
Get the current fee recipient address
function getFeeRecipient() external view returns (address feeRecipient);
Returns
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
recipient
address payable
Address to receive the withdrawn funds
Events
OfferingCreationValidated
event OfferingCreationValidated(address indexed user, string offeringType, uint8 userTier);
OfferingLimitChecked
event OfferingLimitChecked(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?