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 swap

    • min_amount_out: Slippage protection

    • amount_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 IDs

    • distribution_x, distribution_y: Liquidity distribution

    • coin_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 from

  • Returns: 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 reserves

  • get_active_id: Current active price bin

  • get_bin: Specific bin reserves

  • get_protocol_fees: Accumulated protocol fees

  • get_pending_rewards: Unclaimed rewards for position

  • get_pending_fees: Unclaimed fees for position

Last updated