Skip to main content

Liquidate

Liquidates an undercollateralized position by writing off debt and seizing collateral.

Accounts

pair
Account<Pair>
required
The pair account.
user_position
Account<UserPosition>
required
The undercollateralized position to liquidate.
collateral_vault
InterfaceAccount<TokenAccount>
required
The pair vault for the collateral token.
debt_vault
InterfaceAccount<TokenAccount>
required
The pair vault for the debt token.
liquidator_collateral_account
InterfaceAccount<TokenAccount>
required
Liquidator’s collateral token account. Will receive liquidation incentive.
liquidator
Signer
required
The liquidator. Must be a signer.
use anchor_lang::prelude::*;
use omnipair::program::Omnipair;

let accounts = Liquidate {
    pair: pair_pda,
    user_position: undercollateralized_position_pda,
    collateral_vault: token0_vault,
    debt_vault: token1_vault,
    liquidator_collateral_account: liquidator_token0_account,
    liquidator: liquidator.key(),
    // ... other accounts
};

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