Skip to main content

createWrapperMergeInstruction

Builds a raw instruction that merges PT + YT back into SY and unwraps to the base asset in a single atomic operation. This combines the merging and SY redemption steps.

Usage

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

const ix = createWrapperMergeInstruction(
  {
    merger: wallet.publicKey,
    tokenSyMerger: userSyTokenAccount,
    vault: vaultAddress,
    escrowSy: vaultEscrowSy,
    tokenYtMerger: userYtTokenAccount,
    tokenPtMerger: userPtTokenAccount,
    mintYt: ytMint,
    mintPt: ptMint,
    authority: vaultAuthority,
    vaultAddressLookupTable: vaultLookupTable,
    tokenProgram: TOKEN_PROGRAM_ID,
    vaultRobotYieldPosition: vaultYieldPosition,
    syProgram: syProgramId,
    systemProgram: SystemProgram.programId,
    eventAuthority: eventAuthorityPda,
    program: EXPONENT_CORE_PROGRAM_ID,
  },
  {
    amountPy: BigInt(1_000_000),
    redeemSyAccountsUntil: 0,
  }
);

Accounts

NameTypeSignerWritableDescription
mergerPublicKeyYesYesThe user performing the merge
tokenSyMergerPublicKeyNoYesUser’s SY token account (intermediate)
vaultPublicKeyNoYesVault account
escrowSyPublicKeyNoYesVault SY escrow account
tokenYtMergerPublicKeyNoYesUser’s source YT token account
tokenPtMergerPublicKeyNoYesUser’s source PT token account
mintYtPublicKeyNoYesYT mint address
mintPtPublicKeyNoYesPT mint address
authorityPublicKeyNoYesVault authority PDA
vaultAddressLookupTablePublicKeyNoNoVault address lookup table
tokenProgramPublicKeyNoNoSPL Token program
vaultRobotYieldPositionPublicKeyNoYesVault robot yield position
syProgramPublicKeyNoNoSY program
systemProgramPublicKeyNoNoSystem program
eventAuthorityPublicKeyNoNoEvent authority PDA
programPublicKeyNoNoExponent Core program

Args

NameTypeDescription
amountPybigintAmount of PT + YT to merge (in base units)
redeemSyAccountsUntilnumberIndex into remaining accounts for SY redemption CPI accounts

Returns

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