Skip to main content

Remove Collateral

Removes collateral from a user’s position. The position must remain properly collateralized after removal.

Accounts

pair
Account<Pair>
required
The pair account.
user_position
Account<UserPosition>
required
The user’s position account.
collateral_vault
InterfaceAccount<TokenAccount>
required
The pair vault for the collateral token.
user_collateral_token_account
InterfaceAccount<TokenAccount>
required
User’s collateral token account. Will receive removed collateral.
user
Signer
required
The user removing collateral. Must be a signer.

Arguments

amount
u64
required
Amount of collateral to remove. Must be greater than 0.
use anchor_lang::prelude::*;
use omnipair::program::Omnipair;

let remove_collateral_args = AdjustPositionArgs {
    amount: 200 * 10u64.pow(collateral_token_decimals),
};

let accounts = CommonAdjustPosition {
    pair: pair_pda,
    user_position: user_position_pda,
    token_vault: collateral_vault,
    user_token_account: user_collateral_token_account,
    user: user.key(),
    // ... other accounts
};

let ctx = CpiContext::new(program_id, accounts);
omnipair::cpi::remove_collateral(ctx, remove_collateral_args)?;
{
  "signature": "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmG5Rk88jH2k9f4w3JHFf7Pjsk3bWqeXrC",
  "slot": 123456789
}