Skip to main content

createAddLiquidityInstruction

Builds a raw instruction to add liquidity to an existing LP position within its current tick range. This increases the position’s liquidity by depositing additional PT and SY tokens into the pool at the position’s previously defined tick boundaries.

Usage

import { createAddLiquidityInstruction } from "@exponent-labs/exponent-sdk/client/clmm";
import { PublicKey, SystemProgram } from "@solana/web3.js";

const ix = createAddLiquidityInstruction({
  owner: ownerKeypair.publicKey,
  market: marketAddress,
  ticks: ticksAccount,
  lpPosition: lpPositionAccount,
  tokenPtSrc: ownerPtTokenAccount,
  tokenSySrc: ownerSyTokenAccount,
  tokenPtEscrow: marketPtEscrow,
  tokenSyEscrow: marketSyEscrow,
  addressLookupTable: lookupTableAddress,
  tokenProgram: tokenProgramId,
  syProgram: syProgramId,
  systemProgram: SystemProgram.programId,
  rent: rentSysvar,
  eventAuthority: eventAuthorityPda,
  program: clmmProgramId,
  maxSyInToAdd: 1_000_000_000n,
  maxPtInToAdd: 500_000_000n,
});

Accounts

NameTypeSignerWritableDescription
ownerPublicKeyYesYesWallet providing liquidity
marketPublicKeyNoYesThe CLMM market account
ticksPublicKeyNoYesThe market tick array account
lpPositionPublicKeyNoYesExisting LP position account
tokenPtSrcPublicKeyNoYesOwner’s PT token account
tokenSySrcPublicKeyNoYesOwner’s SY token account
tokenPtEscrowPublicKeyNoYesMarket PT escrow account
tokenSyEscrowPublicKeyNoYesMarket SY escrow account
addressLookupTablePublicKeyNoNoMarket address lookup table
tokenProgramPublicKeyNoNoSPL Token program
syProgramPublicKeyNoNoSY program
systemProgramPublicKeyNoNoSystem program
eventAuthorityPublicKeyNoNoEvent authority PDA
programPublicKeyNoNoCLMM program ID

Args

NameTypeDescription
maxSyInToAddu64Maximum amount of SY tokens to add
maxPtInToAddu64Maximum amount of PT tokens to add
lowerTickKeyOptionalu32 (optional)Lower tick key override
upperTickKeyOptionalu32 (optional)Upper tick key override

Returns

TransactionInstruction — a transaction instruction ready to be added to a transaction.