Remove liquidity
Function
clmmpool/sources/pool.move
/// Remove liquidity from the pool.
///
/// # Arguments
///
/// _ `config` - A reference to the `GlobalConfig` object.
/// _ `pool` - A mutable reference to the `Pool` object.
/// _ `position_nft` - A mutable reference to the `Position` object representing the liquidity position to remove from.
/// _ `delta_liquidity` - The amount of liquidity to remove. you can use position.liquidity() to get it.
/// _ `clock` - A reference to the `Clock` object used to determine the current time.
///
/// # Generic Type Parameters
///
/// _ `CoinTypeA` - The type of the first coin in the pool.
/// \* `CoinTypeB` - The type of the second coin in the pool.
///
/// # Returns
///
/// A tuple containing the resulting balances of `CoinTypeA` and `CoinTypeB` after removing liquidity.
pub fun remove_liquidity<CoinTypeA, CoinTypeB>(
config: &GlobalConfig,
pool: &mut Pool<CoinTypeA, CoinTypeB>,
position_nft: &mut Position,
delta_liquidity: u128,
clock: &Clock,
): (Balance<CoinTypeA>, Balance<CoinTypeB>) {}
Example
public entry fun remove_liquidity<CoinTypeA, CoinTypeB>(
config: &GlobalConfig,
pool: &mut Pool<CoinTypeA, CoinTypeB>,
position_nft: &mut Position,
delta_liquidity: u128,
min_amount_a: u64,
min_amount_b: u64,
clock: &Clock,
ctx: &mut TxContext
) {
let (balance_a, balance_b) = pool::remove_liquidity<CoinTypeA, CoinTypeB>(
config,
pool,
position_nft,
delta_liquidity,
clock
);
let (fee_a, fee_b) = pool::collect_fee(
config,
pool,
position_nft,
false
);
// you can implentment these methods by yourself methods.
// balance::join(&mut balance_a, fee_a);
// balance::join(&mut balance_b, fee_b);
// send_coin(coin::from_balance(balance_a, ctx), tx_context::sender(ctx));
// send_coin(coin::from_balance(balance_b, ctx), tx_context::sender(ctx));
}
Last updated