# Boop.fun

### Common Properties

All decoded events include the following base properties from `BaseTransactionRecord`:

| Property          | Type             | JSON Type        | Description                                    |
| ----------------- | ---------------- | ---------------- | ---------------------------------------------- |
| `uuid`            | `bigint`         | `string`         | Unique identifier for the transaction record   |
| `instructionPath` | `string`         | `string`         | Path to the instruction within the transaction |
| `parentProgramId` | `string \| null` | `string \| null` | ID of the parent program if applicable         |
| `txSignature`     | `string`         | `string`         | Transaction signature                          |
| `blockTime`       | `number`         | `number`         | Block timestamp                                |
| `programId`       | `string`         | `string`         | Boop Fun program ID                            |
| `eventType`       | `string`         | `string`         | Type of event (INITIALIZE, SWAP)               |
| `decoderType`     | `DecoderType`    | `string`         | Decoder type identifier                        |
| `blockHeight`     | `number`         | `number`         | Block height                                   |
| `slot`            | `number`         | `number`         | Blockchain slot number                         |
| `txFee`           | `number`         | `number`         | Transaction fee in lamports                    |
| `txFeeUiAmount`   | `PreciseDecimal` | `string`         | UI-formatted transaction fee                   |

### INITIALIZE Event

Token initialization event for Boop Fun.

| Property                       | Type             | JSON Type | Description                         |
| ------------------------------ | ---------------- | --------- | ----------------------------------- |
| `mint`                         | `string`         | `string`  | Token mint address                  |
| `name`                         | `string`         | `string`  | Token name                          |
| `symbol`                       | `string`         | `string`  | Token symbol                        |
| `uri`                          | `string`         | `string`  | Token metadata URI                  |
| `virtualTokenReserves`         | `bigint`         | `string`  | Virtual token reserves              |
| `virtualTokenReservesUiAmount` | `PreciseDecimal` | `string`  | UI-formatted virtual token reserves |
| `virtualSolReserves`           | `bigint`         | `string`  | Virtual SOL reserves                |
| `virtualSolReservesUiAmount`   | `PreciseDecimal` | `string`  | UI-formatted virtual SOL reserves   |
| `tokenTotalSupply`             | `bigint`         | `string`  | Total token supply                  |
| `tokenTotalSupplyUiAmount`     | `PreciseDecimal` | `string`  | UI-formatted total token supply     |
| `user`                         | `string`         | `string`  | User/creator address                |
| `tokenAccount`                 | `string`         | `string`  | Token account address               |
| `solVault`                     | `string`         | `string`  | SOL vault address                   |
| `tokenVault`                   | `string`         | `string`  | Token vault address                 |
| `creatorInitialTokens`         | `bigint`         | `string`  | Creator's initial token amount      |
| `creatorInitialTokensUiAmount` | `PreciseDecimal` | `string`  | UI-formatted creator initial tokens |

### SWAP Event

Token swap event on Boop Fun.

| Property                              | Type             | JSON Type | Description                                |
| ------------------------------------- | ---------------- | --------- | ------------------------------------------ |
| `mint`                                | `string`         | `string`  | Token mint address                         |
| `user`                                | `string`         | `string`  | User address                               |
| `tokenAccount`                        | `string`         | `string`  | Token account address                      |
| `solAccount`                          | `string`         | `string`  | SOL account address                        |
| `tokenVault`                          | `string`         | `string`  | Token vault address                        |
| `solVault`                            | `string`         | `string`  | SOL vault address                          |
| `isBuy`                               | `boolean`        | `boolean` | True for buy orders, false for sell orders |
| `amount`                              | `bigint`         | `string`  | Amount swapped                             |
| `amountUiAmount`                      | `PreciseDecimal` | `string`  | UI-formatted amount swapped                |
| `solAmount`                           | `bigint`         | `string`  | SOL amount involved in swap                |
| `solAmountUiAmount`                   | `PreciseDecimal` | `string`  | UI-formatted SOL amount                    |
| `tokenAmount`                         | `bigint`         | `string`  | Token amount involved in swap              |
| `tokenAmountUiAmount`                 | `PreciseDecimal` | `string`  | UI-formatted token amount                  |
| `virtualSolReserves`                  | `bigint`         | `string`  | Virtual SOL reserves after swap            |
| `virtualSolReservesUiAmount`          | `PreciseDecimal` | `string`  | UI-formatted virtual SOL reserves          |
| `virtualTokenReserves`                | `bigint`         | `string`  | Virtual token reserves after swap          |
| `virtualTokenReservesUiAmount`        | `PreciseDecimal` | `string`  | UI-formatted virtual token reserves        |
| `userSolAccountPreBalance`            | `bigint`         | `string`  | User SOL balance before swap               |
| `userSolAccountPreBalanceUiAmount`    | `PreciseDecimal` | `string`  | UI-formatted user SOL pre-balance          |
| `userSolAccountPostBalance`           | `bigint`         | `string`  | User SOL balance after swap                |
| `userSolAccountPostBalanceUiAmount`   | `PreciseDecimal` | `string`  | UI-formatted user SOL post-balance         |
| `userTokenAccountPreBalance`          | `bigint`         | `string`  | User token balance before swap             |
| `userTokenAccountPreBalanceUiAmount`  | `PreciseDecimal` | `string`  | UI-formatted user token pre-balance        |
| `userTokenAccountPostBalance`         | `bigint`         | `string`  | User token balance after swap              |
| `userTokenAccountPostBalanceUiAmount` | `PreciseDecimal` | `string`  | UI-formatted user token post-balance       |
| `tokenVaultPreBalance`                | `bigint`         | `string`  | Token vault balance before swap            |
| `tokenVaultPreBalanceUiAmount`        | `PreciseDecimal` | `string`  | UI-formatted token vault pre-balance       |
| `tokenVaultPostBalance`               | `bigint`         | `string`  | Token vault balance after swap             |
| `tokenVaultPostBalanceUiAmount`       | `PreciseDecimal` | `string`  | UI-formatted token vault post-balance      |
| `solVaultPreBalance`                  | `bigint`         | `string`  | SOL vault balance before swap              |
| `solVaultPreBalanceUiAmount`          | `PreciseDecimal` | `string`  | UI-formatted SOL vault pre-balance         |
| `solVaultPostBalance`                 | `bigint`         | `string`  | SOL vault balance after swap               |
| `solVaultPostBalanceUiAmount`         | `PreciseDecimal` | `string`  | UI-formatted SOL vault post-balance        |

### Data Types

* `bigint`: Large integer values for token amounts and reserves
* `string`: Text values for addresses, names, symbols, and URIs
* `number`: Numeric values for other integer values
* `boolean`: True/false values for buy/sell direction
* `PreciseDecimal`: High-precision decimal representation for UI display
* `DecoderType`: Enum indicating the decoder type (BOOP\_FUN)

### Usage

The decoder automatically determines the event type and returns the appropriate structure. All monetary values are provided in both raw (`bigint`) and UI-formatted (`PreciseDecimal`) versions for flexibility in different use cases. The Boop Fun decoder handles token initialization and swapping mechanics with virtual reserve management and balance tracking.
