Skip to main content
The ixWrapperSellPt method on the MarketThree class converts PT (Principal Tokens) back into base assets by swapping PT for SY and then redeeming SY for base in a single atomic operation.

Usage

import { MarketThree, LOCAL_ENV } from "@exponent-labs/exponent-sdk";
import { Connection, PublicKey, Transaction, sendAndConfirmTransaction } from "@solana/web3.js";

const connection = new Connection("https://api.mainnet-beta.solana.com");
const market = await MarketThree.load(LOCAL_ENV, connection, marketAddress);

const { ixs, setupIxs } = await market.ixWrapperSellPt({
  owner: wallet.publicKey,
  amount: 1_000_000_000n,
  minBaseOut: 900_000_000n,
});

const tx = new Transaction().add(...setupIxs, ...ixs);
const signature = await sendAndConfirmTransaction(connection, tx, [wallet]);
This is an async method because it needs to construct the SY redemption accounts from the market’s flavor configuration.

Required Parameters

ParameterTypeDescription
ownerPublicKeyThe owner’s wallet public key
amountbigintAmount of PT tokens to sell
minBaseOutbigintMinimum amount of base asset to receive

Optional Parameters

ParameterTypeDescription
tokenSyTraderPublicKeyIntermediate SY token account. Defaults to owner’s ATA
tokenPtTraderPublicKeySource PT token account. Defaults to owner’s ATA
tokenBaseTraderPublicKeyDestination base token account. Defaults to owner’s ATA
lnImpliedApyLimitnumberOptional APY limit for the swap

Returns

Returns a Promise<PreparedInstruction> with the following structure:
{
  ixs: TransactionInstruction[],      // Main instructions to execute
  setupIxs: TransactionInstruction[]  // Setup instructions for creating ATAs
}
The setupIxs array contains instructions to create the necessary associated token accounts (ATAs) for SY, PT, and base tokens. The ixs array contains the flavor pre-instructions, the sell PT instruction, and the flavor post-instructions.