Skip to main content
The ixWrapperBuyPt method on the MarketThree class converts base assets into PT (Principal Tokens) by wrapping the base into SY and then swapping SY for PT 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.ixWrapperBuyPt({
  owner: wallet.publicKey,
  minPtOut: 1_000_000_000n,
  baseIn: 1_100_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 minting accounts from the market’s flavor configuration.

Required Parameters

ParameterTypeDescription
ownerPublicKeyThe owner’s wallet public key
minPtOutbigintMinimum amount of PT tokens to receive
baseInbigintAmount of base asset to spend

Optional Parameters

ParameterTypeDescription
tokenSyTraderPublicKeyIntermediate SY token account. Defaults to owner’s ATA
tokenPtTraderPublicKeyDestination PT token account. Defaults to owner’s ATA
tokenBaseTraderPublicKeySource 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 buy PT instruction, and the flavor post-instructions.