SubscriptionManagerStorage
Contains all storage variables for the subscription management system
Storage contract for SubscriptionManager diamond
State Variables
STORAGE_SLOT
bytes32 internal constant STORAGE_SLOT = keccak256("capsign.storage.billing");
SECONDS_IN_MONTH
uint256 internal constant SECONDS_IN_MONTH = 30 days;
DISCOUNT_DENOMINATOR
uint256 internal constant DISCOUNT_DENOMINATOR = 10000;
PRICING_DECIMALS
uint8 internal constant PRICING_DECIMALS = 6;
Functions
layout
Get the storage layout
function layout() internal pure returns (Layout storage l);
Returns
l
Layout
The storage layout
getTier
Get a subscription tier
function getTier(uint8 tierLevel) internal view returns (SubscriptionTier storage tier);
Parameters
tierLevel
uint8
The tier level
Returns
tier
SubscriptionTier
The subscription tier
getSubscription
Get a subscriber's subscription
function getSubscription(address subscriber) internal view returns (Subscription storage subscription);
Parameters
subscriber
address
The subscriber address
Returns
subscription
Subscription
The subscription data
getTokenConfig
Get token configuration
function getTokenConfig(address token) internal view returns (TokenConfig storage tokenConfig);
Parameters
token
address
The token address
Returns
tokenConfig
TokenConfig
The token configuration
getAddressTierDiscount
Get address-specific tier discount
function getAddressTierDiscount(address subscriber, uint8 tierLevel) internal view returns (uint256 discount);
Parameters
subscriber
address
The subscriber address
tierLevel
uint8
The tier level
Returns
discount
uint256
The discount in basis points
setAddressTierDiscount
Set address-specific tier discount
function setAddressTierDiscount(address subscriber, uint8 tierLevel, uint256 discount) internal;
Parameters
subscriber
address
The subscriber address
tierLevel
uint8
The tier level
discount
uint256
The discount in basis points
Structs
SubscriptionTier
struct SubscriptionTier {
string name;
uint256 monthlyFeeUSD;
bool isActive;
}
Subscription
struct Subscription {
uint8 tierLevel;
uint256 nextPaymentDue;
bool isActive;
uint256 lastPaymentAmount;
address lastPaymentToken;
}
TokenConfig
struct TokenConfig {
bool accepted;
uint8 decimals;
bool isStablecoin;
}
Layout
struct Layout {
IERC20 cmxToken;
address swapRouter;
address treasury;
uint24 uniswapPoolFee;
mapping(uint8 => SubscriptionTier) tiers;
mapping(address => Subscription) subscribers;
mapping(address => TokenConfig) acceptedTokens;
mapping(address => mapping(uint8 => uint256)) addressTierDiscounts;
uint256 cmxDiscountBasisPoints;
bool initialized;
}
Last updated
Was this helpful?