TwoBorderAmountFacetStorage
TwoBorderAmountFacetStorage
This library manages the storage and logic for applying amount-based packet configurations for staking campaigns and handles amount-based checks that should be performed during staking and unstaking operations.
This implementation is designed to configure minimum and maximum limits on the number of input packets supported by positions within any campaign.
CampaignNotOnCreationStateForSetting
Thrown when a targeted campaign is not "On Creation" state, which is required at configurations.
PositionsMaxAmountOfPacketsCannotBeZero
Thrown when attempting to set a campaign's positions' max amount of staked packets to zero.
PositionsMaxAmountLessThanMinAmountOfPackets
Thrown when setting a campaign's positions' max amount of packets less than the minimum required.
PacketsToStakeCannotBeZero
Thrown when the specified amount of input packets is zero.
PacketsToStakeNotWithinAcceptedRange
Thrown at stake when the amount of packets is outside the accepted range for a campaign's positions.
PositionExceedsMaxAmountOfPackets
Thrown when the resulting packets after staking exceeds the maximum set for a campaign's positions.
PacketsToUnstakeCannotBeZero
Thrown when attempting to unstake zero packets.
CannotPartiallyUnstakeMoreOrEqualToStaked
Thrown when attempting to partially unstake more or equal packets than/to currently staked.
RemainingPacketsBelowMinRequired
Thrown when the remaining packets after partially unstaking are less than the required minimum.
STORAGE_SLOT
Unique identifier for the storage slot where the Layout struct is stored.
Layout
Struct for managing amount-based configuration details for staking campaigns.
CampaignAmounts
Struct containing the amount-based configuration for a staking campaign.
layout
Retrieves a reference to the Layout struct stored at the slot specified by STORAGE_SLOT
unique identifier.
setCampaignAmountsData
Setter function for configuring amount-based packet constraints for the specified staking campaign.
_Setter functions are executed during the creation process of campaigns (see CampaignCreationSkeleton.sol
).
This function allows for setting the minimum and maximum limits on the number of input packets that a campaign's position can support.
IMPORTANT:
maxAmountOfPackets
must be strictly greater than 0.minAmountOfPackets
must be less than or equal tomaxAmountOfPackets
._
Parameters
Name | Type | Description |
---|---|---|
l | struct TwoBorderAmountFacetStorage.Layout | A reference to the Layout struct in storage. |
campaignId | uint256 | The unique identifier of the targeted staking campaign. |
campaignAmountsData | bytes | The ABI-encoded data containing the following: - minAmountOfPackets : The minimum number of input packets required to create and maintain a position within the campaign. - maxAmountOfPackets : The maximum number of input packets that a position can support within the campaign. |
checkInputPackets
Checks whether the specified amount of packets can be allocated within a given campaign's position.
_Reverts if amountOfPackets
is 0 or outside the configured limits for the campaign
(see setCampaignAmountsData()
).
IMPORTANT: If nftId == 0
, the check is performed for a new stake operation; otherwise, it is performed
for a restake operation._
Parameters
Name | Type | Description |
---|---|---|
l | struct TwoBorderAmountFacetStorage.Layout | A reference to the Layout struct in storage. |
campaignId | uint256 | The unique identifier of the targeted staking campaign. |
nftId | uint256 | The unique identifier of the NFT associated with the position. |
amountOfPackets | uint256 | The number of input packets to check. |
checkUnstakePackets
Checks whether the specified amount of packets can be withdrawn from a given campaign's position.
_Reverts if:
amountOfPackets
is 0.- For partial unstaking, if
amountOfPackets
is greater than or equal to the position's total staked packets, or if the position's remaining staked packets would fall below the campaign's configuredminAmountOfPackets
(seesetCampaignAmountsData()
), which is required to maintain active positions._
Parameters
Name | Type | Description |
---|---|---|
l | struct TwoBorderAmountFacetStorage.Layout | A reference to the Layout struct in storage. |
campaignId | uint256 | The unique identifier of the targeted staking campaign. |
nftId | uint256 | The unique identifier of the NFT associated with the position. |
amountOfPacketsToUnstake | uint256 | The number of input packets to check. |
isPartialUnstake | bool | A flag indicating whether the unstake is partial (true ) or full (false ). |