> ## Documentation Index
> Fetch the complete documentation index at: https://docs.exponent.finance/llms.txt
> Use this file to discover all available pages before exploring further.

# Buy YT

> Buy YT tokens using base assets in a single transaction

The `ixWrapperBuyYt` method on the `MarketThree` class converts base assets into YT (Yield Tokens) by wrapping the base into SY, stripping SY into PT and YT, and swapping the PT back for SY in a single atomic operation.

## Usage

```typescript theme={null}
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.ixWrapperBuyYt({
  owner: wallet.publicKey,
  ytOut: 1_000_000_000n,
  maxBaseIn: 1_200_000_000n,
});

const tx = new Transaction().add(...setupIxs, ...ixs);
const signature = await sendAndConfirmTransaction(connection, tx, [wallet]);
```

<Tip>
  This is an async method because it needs to construct the SY minting accounts and YT deposit accounts from the market's configuration.
</Tip>

## Required Parameters

| Parameter   | Type        | Description                           |
| ----------- | ----------- | ------------------------------------- |
| `owner`     | `PublicKey` | The owner's wallet public key         |
| `ytOut`     | `bigint`    | Amount of YT tokens to receive        |
| `maxBaseIn` | `bigint`    | Maximum amount of base asset to spend |

## Optional Parameters

| Parameter         | Type        | Description                                            |
| ----------------- | ----------- | ------------------------------------------------------ |
| `tokenSyTrader`   | `PublicKey` | Intermediate SY token account. Defaults to owner's ATA |
| `tokenPtTrader`   | `PublicKey` | Intermediate PT token account. Defaults to owner's ATA |
| `tokenYtTrader`   | `PublicKey` | Destination YT token account. Defaults to owner's ATA  |
| `tokenBaseTrader` | `PublicKey` | Source base token account. Defaults to owner's ATA     |

## Returns

Returns a `Promise<PreparedInstruction>` with the following structure:

```typescript theme={null}
{
  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 YT tokens. The `ixs` array contains the flavor pre-instructions followed by the buy YT instruction.
