Skip to main content

Add Collateral

Adds collateral to a user’s position, enabling borrowing against it.

Accounts

pair
Account<Pair>
required
The pair account.
user_position
Account<UserPosition>
required
The user’s position account. Will be created if it doesn’t exist. PDA derived from [POSITION_SEED_PREFIX, pair, user].
collateral_vault
InterfaceAccount<TokenAccount>
required
The pair vault for the collateral token. Must be owned by pair PDA.
user_collateral_token_account
InterfaceAccount<TokenAccount>
required
User’s collateral token account. Must have sufficient balance.
user
Signer
required
The user adding collateral. Must be a signer.

Arguments

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

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

let accounts = AddCollateral {
    pair: pair_pda,
    user_position: user_position_pda,
    collateral_vault: token0_vault,
    user_collateral_token_account: user_token0_account,
    user: user.key(),
    // ... other accounts
};

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