LB Pair Module
Handles trading logic, liquidity management, and fee collection
Structs
LBPair<X, Y>
struct LBPair<phantom X, phantom Y> has key, store {
id: UID,
is_pause: bool,
bin_step: u16,
parameters: PairParameters,
protocol_fee_x: u64,
protocol_fee_y: u64,
bin_manager: BinManager,
oracle: Oracle,
position_manager: LBPositionManager,
balance_x: Balance<X>,
balance_y: Balance<Y>,
rewarder_manager: RewarderManager,
global_reward_state: GlobalRewardState,
}Purpose: Core trading pair implementation
GlobalRewardState
Purpose: Tracks fees for reward distribution
FlashLoanReceipt
Purpose: Receipt for flash loan repayment validation
Events
SwapEvent
Emitted: When swap is executed
CollectedProtocolFeesEvent
Emitted: When protocol fees are collected
OracleLengthIncreasedEvent
Emitted: When oracle capacity is increased
ForcedDecayEvent
Emitted: When volatility decay is forced
StaticFeeParametersSetEvent
Emitted: When fee parameters are updated
CompositionFeesEvent
Emitted: When composition fees are charged
FeesCollectedEvent
Emitted: When position fees are collected
RewarderAddedEvent
Emitted: When new rewarder is added
RewarderEmissionUpdatedEvent
Emitted: When emission rate is updated
RewardsCollectedEvent
Emitted: When rewards are collected
FeeParametersQueriedEvent
Emitted: When fee parameters are queried
OracleParametersQueriedEvent
Emitted: When oracle parameters are queried
OracleSampleQueriedEvent
Emitted: When oracle sample is queried
PriceFromIdQueriedEvent
Emitted: When price is calculated from ID
IdFromPriceQueriedEvent
Emitted: When ID is calculated from price
FlashLoanEvent
Emitted: When flash loan is taken
OpenPositionEvent
Emitted: When position is opened
ClosePositionEvent
Emitted: When position is closed
AddLiquidityEvent
Emitted: When liquidity is added
RemoveLiquidityEvent
Emitted: When liquidity is removed
LockPositionEvent
Emitted: When position is locked
PairPausedEvent
Emitted: When pair is paused/unpaused
Trading Functions
swap<X, Y>
Purpose: Execute token swaps
Parameters:
swap_for_y: Direction of swapmin_amount_out: Slippage protectionamount_in_x,amount_in_y: Input tokens
Returns: Output tokens after swap
get_swap_in / get_swap_out
Purpose: Calculate swap amounts (view functions)
Use Cases: Price quotation, slippage calculation
Returns: Expected amounts and fees
Liquidity Management
add_liquidity<X, Y>
Purpose: Add liquidity to specific price bins
Parameters:
ids: Target bin IDsdistribution_x,distribution_y: Liquidity distributioncoin_x,coin_y: Token amounts
Features: Handles composition fees and refunds
remove_liquidity<X, Y>
Purpose: Remove liquidity from positions
Parameters:
ids: Bin IDs to remove from
Returns: Withdrawn tokens
Validations: Position ownership, lock period
Position Management
open_position<X, Y>
Purpose: Create new liquidity position
Returns: NFT-like position object
Features: Optional time lock mechanism
close_position<X, Y>
Purpose: Destroy empty position
Requirements: Position must be completely empty
Fee Collection
collect_position_fees<X, Y>
Purpose: Collect accumulated trading fees
Parameters:
bin_ids- specific bins to collect fromReturns: Fee tokens earned
Side Effects: Updates global reward tracking
collect_protocol_fees<X, Y>
Purpose: Collect protocol revenue (admin only)
Returns: Protocol fee tokens
Reward System
add_rewarder<X, Y, RewardCoin>
Purpose: Add new reward token (admin only)
Limits: Maximum 5 reward types per pair
update_emission<X, Y, RewardCoin>
Purpose: Update reward emission rate (admin only)
Validation: Sufficient vault balance
collect_position_rewards<X, Y, RewardCoin>
Purpose: Claim earned rewards
Returns: Reward tokens based on fee generation
Flash Loans
flash_loan<X, Y>
Purpose: Borrow tokens temporarily
Returns: Borrowed tokens and repayment receipt
Fee: Configurable flash loan fee
repay_flash_loan<X, Y>
Purpose: Repay borrowed tokens with fee
Requirements: Must repay principal + fee
View Functions
get_reserves: Current token reservesget_active_id: Current active price binget_bin: Specific bin reservesget_protocol_fees: Accumulated protocol feesget_pending_rewards: Unclaimed rewards for positionget_pending_fees: Unclaimed fees for position
Last updated