remove_liquidity

Burn LP shares to withdraw your proportional share of the pool’s base and quote reserves. Supports slippage guards via min_base_amount and min_quote_amount. Emits a LiquidityRemovedEvent.


Arguments

#[derive(AnchorSerialize, AnchorDeserialize, Clone)]
pub struct RemoveLiquidityArgs {
    pub lp_amount: u64,         // LP tokens to burn
    pub min_base_amount: u64,   // minimum base you must receive
    pub min_quote_amount: u64,  // minimum quote you must receive
}

Required Accounts

#
Name
Writable
Seeds / Constraints

0

config

["global_config"] (PDA)

1

user

βœ…

2

base_mint

Owner == SPL Token program

3

quote_mint

Owner == SPL Token program

4

pool

βœ…

["pool", base_mint, quote_mint], bump = pool.bump; pool.state == 1; pool.base_mint == base_mint; pool.quote_mint == quote_mint

5

lp_mint

βœ…

["lp_mint", pool]; lp_mint == pool.lp_mint

6

base_vault

βœ…

["vault", pool, base_mint]; key == pool.base_vault; owner == pool; mint == base_mint

7

quote_vault

βœ…

["vault", pool, quote_mint]; key == pool.quote_vault; owner == pool; mint == quote_mint

8

user_base_account

βœ…

mint == base_mint; owner == user

9

user_quote_account

βœ…

mint == quote_mint; owner == user

10

user_lp_account

βœ…

mint == lp_mint; owner == user; amount β‰₯ args.lp_amount

11

token_program

Must equal SPL Token program ID

12

system_program


Event

Last updated