# Pump 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`         | Pump Fun program ID                             |
| `eventType`       | `string`         | `string`         | Type of event (SWAP, COMPLETE, CREATE, MIGRATE) |
| `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                    |

### SWAP Event

Token swap event on Pump Fun bonding curve.

| Property                       | Type             | JSON Type | Description                                   |
| ------------------------------ | ---------------- | --------- | --------------------------------------------- |
| `maxSolCost`                   | `bigint`         | `string`  | Maximum SOL cost for buy orders (optional)    |
| `maxSolCostUiAmount`           | `PreciseDecimal` | `string`  | UI-formatted max SOL cost (optional)          |
| `minSolOutput`                 | `bigint`         | `string`  | Minimum SOL output for sell orders (optional) |
| `minSolOutputUiAmount`         | `PreciseDecimal` | `string`  | UI-formatted min SOL output (optional)        |
| `mint`                         | `string`         | `string`  | Token mint address                            |
| `isBuy`                        | `boolean`        | `boolean` | True for buy orders, false for sell orders    |
| `account`                      | `string`         | `string`  | User's token account                          |
| `owner`                        | `string`         | `string`  | Account owner address                         |
| `bondingCurve`                 | `string`         | `string`  | Bonding curve account address                 |
| `solAmount`                    | `bigint`         | `string`  | SOL amount involved in swap                   |
| `solAmountUiAmount`            | `PreciseDecimal` | `string`  | UI-formatted SOL amount                       |
| `price`                        | `PreciseDecimal` | `string`  | Actual swap price                             |
| `pricePost`                    | `PreciseDecimal` | `string`  | Price after swap                              |
| `marketCapSol`                 | `bigint`         | `string`  | Market cap in SOL                             |
| `marketCapSolAmount`           | `bigint`         | `string`  | Market cap SOL amount                         |
| `marketCapSolAmountUi`         | `PreciseDecimal` | `string`  | UI-formatted market cap SOL                   |
| `marketCapPumpSol`             | `PreciseDecimal` | `string`  | Pump Fun market cap in SOL                    |
| `marketCapPumpSolAmount`       | `bigint`         | `string`  | Pump Fun market cap SOL amount                |
| `marketCapPumpSolUiAmount`     | `PreciseDecimal` | `string`  | UI-formatted Pump Fun market cap SOL          |
| `tokenAmount`                  | `bigint`         | `string`  | Token amount involved in swap                 |
| `tokenUiAmount`                | `PreciseDecimal` | `string`  | UI-formatted token amount                     |
| `virtualSolReserves`           | `bigint`         | `string`  | Virtual SOL reserves                          |
| `virtualSolReservesAmount`     | `bigint`         | `string`  | Virtual SOL reserves amount                   |
| `virtualSolReservesUiAmount`   | `PreciseDecimal` | `string`  | UI-formatted virtual SOL reserves             |
| `virtualTokenReserves`         | `bigint`         | `string`  | Virtual token reserves                        |
| `virtualTokenReservesAmount`   | `bigint`         | `string`  | Virtual token reserves amount                 |
| `virtualTokenReservesUiAmount` | `PreciseDecimal` | `string`  | UI-formatted virtual token reserves           |
| `bondingCurvePrePercentage`    | `number`         | `number`  | Bonding curve completion before swap (%)      |
| `bondingCurvePostPercentage`   | `number`         | `number`  | Bonding curve completion after swap (%)       |
| `bondingPreBalance`            | `bigint`         | `string`  | Bonding curve balance before swap             |
| `bondingPreBalanceUiAmount`    | `PreciseDecimal` | `string`  | UI-formatted bonding pre-balance              |
| `bondingPreBalanceAmount`      | `bigint`         | `string`  | Bonding pre-balance amount                    |
| `bondingPostBalance`           | `bigint`         | `string`  | Bonding curve balance after swap              |
| `bondingPostBalanceUiAmount`   | `PreciseDecimal` | `string`  | UI-formatted bonding post-balance             |
| `bondingPostBalanceAmount`     | `bigint`         | `string`  | Bonding post-balance amount                   |
| `userTokenPreBalance`          | `bigint`         | `string`  | User token balance before swap                |
| `userTokenPreBalanceUiAmount`  | `PreciseDecimal` | `string`  | UI-formatted user token pre-balance           |
| `userTokenPreBalanceAmount`    | `bigint`         | `string`  | User token pre-balance amount                 |
| `userTokenPostBalance`         | `bigint`         | `string`  | User token balance after swap                 |
| `userTokenPostBalanceUiAmount` | `PreciseDecimal` | `string`  | UI-formatted user token post-balance          |
| `userTokenPostBalanceAmount`   | `bigint`         | `string`  | User token post-balance amount                |
| `realSolReserves`              | `bigint`         | `string`  | Real SOL reserves                             |
| `realSolReservesUiAmount`      | `PreciseDecimal` | `string`  | UI-formatted real SOL reserves                |
| `realTokenReserves`            | `bigint`         | `string`  | Real token reserves                           |
| `realTokenReservesUiAmount`    | `PreciseDecimal` | `string`  | UI-formatted real token reserves              |
| `feeRecipient`                 | `string`         | `string`  | Fee recipient address                         |
| `feeBasisPoints`               | `bigint`         | `string`  | Fee in basis points                           |
| `fee`                          | `bigint`         | `string`  | Fee amount                                    |
| `creator`                      | `string`         | `string`  | Token creator address                         |
| `creatorFeeBasisPoints`        | `bigint`         | `string`  | Creator fee in basis points                   |
| `creatorFee`                   | `bigint`         | `string`  | Creator fee amount                            |

### COMPLETE Event

Bonding curve completion event when token graduates to Raydium.

| Property       | Type     | JSON Type | Description                   |
| -------------- | -------- | --------- | ----------------------------- |
| `user`         | `string` | `string`  | User who completed the curve  |
| `mint`         | `string` | `string`  | Token mint address            |
| `bondingCurve` | `string` | `string`  | Bonding curve account address |
| `timestamp`    | `string` | `string`  | Event timestamp               |

### CREATE Event

Token creation event on Pump Fun.

| Property               | Type     | JSON Type | Description                               |
| ---------------------- | -------- | --------- | ----------------------------------------- |
| `name`                 | `string` | `string`  | Token name                                |
| `symbol`               | `string` | `string`  | Token symbol                              |
| `uri`                  | `string` | `string`  | Token metadata URI                        |
| `creator`              | `string` | `string`  | Token creator address                     |
| `mint`                 | `string` | `string`  | Token mint address                        |
| `bondingCurve`         | `string` | `string`  | Bonding curve account address             |
| `timestamp`            | `string` | `string`  | Creation timestamp                        |
| `virtualTokenReserves` | `string` | `string`  | Initial virtual token reserves (optional) |
| `virtualSolReserves`   | `string` | `string`  | Initial virtual SOL reserves (optional)   |
| `realTokenReserves`    | `string` | `string`  | Initial real token reserves (optional)    |
| `tokenTotalSupply`     | `string` | `string`  | Total token supply (optional)             |

### MIGRATE Event

Token migration event when moving from bonding curve to Raydium.

| Property                   | Type             | JSON Type | Description                      |
| -------------------------- | ---------------- | --------- | -------------------------------- |
| `user`                     | `string`         | `string`  | User who initiated migration     |
| `mint`                     | `string`         | `string`  | Token mint address               |
| `mintAmount`               | `bigint`         | `string`  | Amount of tokens minted          |
| `mintAmountUiAmount`       | `PreciseDecimal` | `string`  | UI-formatted mint amount         |
| `solAmount`                | `bigint`         | `string`  | SOL amount involved in migration |
| `solAmountUiAmount`        | `PreciseDecimal` | `string`  | UI-formatted SOL amount          |
| `poolMigrationFee`         | `bigint`         | `string`  | Pool migration fee               |
| `poolMigrationFeeUiAmount` | `PreciseDecimal` | `string`  | UI-formatted migration fee       |
| `bondingCurve`             | `string`         | `string`  | Bonding curve account address    |
| `timestamp`                | `string`         | `string`  | Migration timestamp              |
| `pool`                     | `string`         | `string`  | Destination pool address         |

### Data Types

* `bigint`: Large integer values for token amounts and prices
* `string`: Text values for addresses, names, symbols, and timestamps
* `number`: Numeric values for percentages and 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 (PUMP\_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 Pump Fun decoder handles bonding curve mechanics with comprehensive price tracking, market cap calculations, and virtual/real reserve management.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.lyslabs.ai/decoders/pump-fun.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
