Skip to main content

createMergeInstruction

Builds a raw instruction to merge equal amounts of PT (Principal Token) and YT (Yield Token) back into SY tokens.

Usage

import { createMergeInstruction } from "@exponent-labs/exponent-sdk/client/core";
import { PublicKey } from "@solana/web3.js";

const ix = createMergeInstruction(
  {
    owner: wallet.publicKey,
    authority: vaultAuthority,
    vault: vaultAddress,
    syDst: userSyTokenAccount,
    escrowSy: vaultEscrowSy,
    ytSrc: userYtTokenAccount,
    ptSrc: userPtTokenAccount,
    mintYt: ytMint,
    mintPt: ptMint,
    tokenProgram: TOKEN_PROGRAM_ID,
    syProgram: syProgramId,
    addressLookupTable: vaultLookupTable,
    yieldPosition: vaultYieldPosition,
    eventAuthority: eventAuthorityPda,
    program: EXPONENT_CORE_PROGRAM_ID,
  },
  {
    amount: BigInt(1_000_000),
  }
);

Accounts

NameTypeSignerWritableDescription
ownerPublicKeyYesYesThe user merging PT + YT
authorityPublicKeyNoYesVault authority PDA
vaultPublicKeyNoYesVault account
syDstPublicKeyNoYesDestination SY token account
escrowSyPublicKeyNoYesVault SY escrow account
ytSrcPublicKeyNoYesSource YT token account
ptSrcPublicKeyNoYesSource PT token account
mintYtPublicKeyNoYesYT mint address
mintPtPublicKeyNoYesPT mint address
tokenProgramPublicKeyNoNoSPL Token program
syProgramPublicKeyNoNoSY program
addressLookupTablePublicKeyNoNoVault address lookup table
yieldPositionPublicKeyNoYesVault robot yield position
eventAuthorityPublicKeyNoNoEvent authority PDA
programPublicKeyNoNoExponent Core program

Args

NameTypeDescription
amountbigintAmount of PT + YT to merge (in base units)

Returns

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