Skip to main content

createWrapperMarketOfferInstruction

Builds a raw instruction that executes a market order against existing offers with automatic SY minting/redemption and YT deposit/withdrawal. This combines the SY operations and market order execution atomically.

Usage

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

const ix = createWrapperMarketOfferInstruction(
  {
    trader: wallet.publicKey,
    orderbook: orderbookAddress,
    vault: vaultAddress,
    cpiAccountOrderbook: cpiAccountsOrderbook,
    yieldPosition: yieldPositionPda,
    tokenEscrowYt: orderbookEscrowYt,
    tokenEscrowSy: orderbookEscrowSy,
    tokenEscrowPt: orderbookEscrowPt,
    tokenSyTrader: userSyTokenAccount,
    tokenYtTrader: userYtTokenAccount,
    tokenPtTrader: userPtTokenAccount,
    systemProgram: SystemProgram.programId,
    syProgram: syProgramId,
    tokenProgram: TOKEN_PROGRAM_ID,
    exponentCore: EXPONENT_CORE_PROGRAM_ID,
    addressLookupTable: vaultLookupTable,
    eventAuthority: eventAuthorityPda,
    program: EXPONENT_ORDERBOOK_PROGRAM_ID,
  },
  {
    maxPriceApy: 8.0,
    amountBase: BigInt(500_000),
    minAmountOut: BigInt(490_000),
    offerType: { buyYt: {} },
    virtualOffer: false,
    mintSyOrWithdrawYtAccountsUntil: 0,
    redeemSyOrDepositYtAccountsUntil: 0,
  }
);

Accounts

NameTypeSignerWritableDescription
traderPublicKeyYesNoThe trader executing the market order
orderbookPublicKeyNoYesOrderbook account
vaultPublicKeyNoYesVault account
cpiAccountOrderbookPublicKeyNoNoCPI accounts orderbook
yieldPositionPublicKeyNoYesUser’s yield position PDA
tokenEscrowYtPublicKeyNoYesOrderbook YT escrow account
tokenEscrowSyPublicKeyNoYesOrderbook SY escrow account
tokenEscrowPtPublicKeyNoYesOrderbook PT escrow account
tokenSyTraderPublicKeyNoYesTrader’s SY token account
tokenYtTraderPublicKeyNoYesTrader’s YT token account
tokenPtTraderPublicKeyNoYesTrader’s PT token account
systemProgramPublicKeyNoNoSystem program
syProgramPublicKeyNoNoSY program
tokenProgramPublicKeyNoNoSPL Token program
exponentCorePublicKeyNoNoExponent Core program
addressLookupTablePublicKeyNoNoVault address lookup table
eventAuthorityPublicKeyNoNoEvent authority PDA
programPublicKeyNoNoExponent Orderbook program

Args

NameTypeDescription
maxPriceApynumberMaximum acceptable price as implied APY (f64)
amountBasebigintAmount of base asset to use (in base units)
minAmountOutbigintMinimum amount of output tokens to receive
offerTypeOfferTypeType of offer (SellYt or BuyYt)
virtualOfferbooleanWhether this is a virtual offer
mintSyOrWithdrawYtAccountsUntilnumberIndex into remaining accounts for SY minting or YT withdrawal CPI accounts
redeemSyOrDepositYtAccountsUntilnumberIndex into remaining accounts for SY redemption or YT deposit CPI accounts

Returns

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