Skip to main content
The ixWrapperSellYt method on the MarketThree class converts YT (Yield Tokens) back into base assets by merging YT with PT to create 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.ixWrapperSellYt({
  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 YT tokens to sell
minBaseOutbigintMinimum amount of base asset to receive

Optional Parameters

ParameterTypeDescription
tokenBaseTraderPublicKeyDestination base token account. Defaults to owner’s ATA
tokenSyTraderPublicKeyIntermediate SY token account. Defaults to owner’s ATA
tokenYtTraderPublicKeySource YT token account. Defaults to owner’s ATA
tokenPtTraderPublicKeyIntermediate PT token account. Defaults to owner’s ATA

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, YT, and base tokens. The ixs array contains the sell YT instruction followed by the flavor pre-instructions.