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

# svm venue: woofi

> 49 exports of the woofi venue integration in @eco-incorp/sauce/svm, including fetchWoofiConfig, woofiSwapAccounts, WOOFI_PROGRAM_ID, WOOFI_SWAP_DISCRIMINATOR, WOOFI_AMM_POOL_SIZE, WOOFI_WOOPOOL_SIZE.

Solana venue integration `woofi` under `svm/venues/woofi`.

<Note>
  Generated from the type declarations shipped in `@eco-incorp/sauce` 0.99.4. Each entry shows the package authors' JSDoc and declaration for this SDK version. For runtime compatibility and deployed addresses, see [architecture and deployments](/programmable-transactions/sauce/architecture-and-deployments).
</Note>

### `fetchWoofiConfig`

*Function* · `sdk/dist/svm/venues/woofi/index.d.ts`

Fetch + gate one WooFi pool. QUOTE-PAIRED ONLY (see file header): exactly
one of the bundle's two sides must equal `quoteTokenMint`, else this is a
genuine base-to-base pair and this adapter throws (not yet wired - a
follow-up, not a permission gate).

```typescript theme={null}
export declare function fetchWoofiConfig(load: AccountLoader, pool: Address): Promise<WoofiPoolConfig>;
```

### `woofiSwapAccounts`

*Function* · `sdk/dist/svm/venues/woofi/index.d.ts`

The 17-account order `Swap` expects (swap.rs, verified against 6 real mainnet transactions).

```typescript theme={null}
export declare function woofiSwapAccounts(c: WoofiPoolConfig, user: SwapUser, make: (ref: string, addr: Address, writable?: boolean) => VenueAccount, refFor?: (role: string) => string): VenueAccount[];
```

### `WOOFI_PROGRAM_ID`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
WOOFI_PROGRAM_ID: Address<"WooFif76YGRNjk1pA8wCsN67aQsD9f9iLsz4NcJ1AVb">
```

### `WOOFI_SWAP_DISCRIMINATOR`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

Anchor `sha256("global:swap")[0..8]` - program-independent (same bytes obric-v2/meteora use for their own "swap" ix).

```typescript theme={null}
WOOFI_SWAP_DISCRIMINATOR: number[]
```

### `WOOFI_AMM_POOL_SIZE`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
WOOFI_AMM_POOL_SIZE = 617
```

### `WOOFI_WOOPOOL_SIZE`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
WOOFI_WOOPOOL_SIZE = 284
```

### `WOOFI_WOORACLE_SIZE`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
WOOFI_WOORACLE_SIZE = 363
```

### `WOOFI_PRICE_UPDATE_SIZE`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
WOOFI_PRICE_UPDATE_SIZE = 134
```

### `OFF_AMM_WOORACLE_A`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_AMM_WOORACLE_A = 73
```

### `OFF_AMM_WOOPOOL_A`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_AMM_WOOPOOL_A = 105
```

### `OFF_AMM_TOKEN_MINT_A`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_AMM_TOKEN_MINT_A = 201
```

### `OFF_AMM_TOKEN_VAULT_A`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_AMM_TOKEN_VAULT_A = 233
```

### `OFF_AMM_WOORACLE_B`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_AMM_WOORACLE_B = 265
```

### `OFF_AMM_WOOPOOL_B`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_AMM_WOOPOOL_B = 297
```

### `OFF_AMM_TOKEN_MINT_B`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_AMM_TOKEN_MINT_B = 393
```

### `OFF_AMM_TOKEN_VAULT_B`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_AMM_TOKEN_VAULT_B = 425
```

### `OFF_AMM_QUOTE_TOKEN_MINT`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_AMM_QUOTE_TOKEN_MINT = 457
```

### `OFF_ORACLE_WOOCONFIG`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_ORACLE_WOOCONFIG = 8
```

### `OFF_ORACLE_PRICE_UPDATE`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_ORACLE_PRICE_UPDATE = 136
```

### `OFF_ORACLE_MAXIMUM_AGE`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_ORACLE_MAXIMUM_AGE = 168
```

### `OFF_ORACLE_PRICE_DECIMALS`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_ORACLE_PRICE_DECIMALS = 176
```

### `OFF_ORACLE_QUOTE_DECIMALS`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_ORACLE_QUOTE_DECIMALS = 177
```

### `OFF_ORACLE_UPDATED_AT`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_ORACLE_UPDATED_AT = 179
```

### `OFF_ORACLE_STALE_DURATION`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_ORACLE_STALE_DURATION = 187
```

### `OFF_ORACLE_BOUND`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_ORACLE_BOUND = 195
```

### `OFF_ORACLE_PRICE`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_ORACLE_PRICE = 203
```

### `OFF_ORACLE_COEFF`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_ORACLE_COEFF = 219
```

### `OFF_ORACLE_SPREAD`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_ORACLE_SPREAD = 227
```

### `OFF_ORACLE_RANGE_MIN`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_ORACLE_RANGE_MIN = 235
```

### `OFF_ORACLE_RANGE_MAX`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_ORACLE_RANGE_MAX = 251
```

### `OFF_ORACLE_QUOTE_PRICE_UPDATE`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_ORACLE_QUOTE_PRICE_UPDATE = 331
```

### `OFF_POOL_FEE_RATE`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_POOL_FEE_RATE = 105
```

### `OFF_POOL_MAX_GAMMA`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_POOL_MAX_GAMMA = 107
```

### `OFF_POOL_MAX_NOTIONAL_SWAP`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_POOL_MAX_NOTIONAL_SWAP = 123
```

### `OFF_POOL_CAP_BAL`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_POOL_CAP_BAL = 139
```

### `OFF_POOL_MIN_SWAP_AMOUNT`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

u16, NOT u128 - bisection-verified against the real binary (see OFF\_POOL\_RESERVE's doc): a
wider read here would swallow OFF\_POOL\_RESERVE's low bytes. Always 0 on every live pool today.

```typescript theme={null}
OFF_POOL_MIN_SWAP_AMOUNT = 155
```

### `OFF_POOL_RESERVE`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

A LIVE (not baked) per-pool accounting value the real `Swap` ix's newer,
deployed-only require (`ReserveLessThanFee`, not present in the audited
source this adapter otherwise mirrors) checks on the FROM side's own pool
before it will move anything. Bisection-verified against the real binary
(not documented anywhere): flipping only this field's low byte on a real
mainnet dump (woopoolBase, this pool's actual live bytes) took the swap
from a hard revert to succeeding. Semantics beyond "a floor this pool's own
activity must clear" are NOT independently confirmed (its exact relation
to swap\_fee/from\_amount, and its true width past 8 bytes, are unverified) - modeled here as a conservative DIRECT cap on the tradable amount
(ladder.ts), the same one-sided-safe treatment as capBal. It reads 0 on
every live pool sampled 2026-07-31 (this pool's own real recent swaps all
fail on mainnet too - consistent with a currently-zeroed floor).

```typescript theme={null}
OFF_POOL_RESERVE = 157
```

### `OFF_POOL_TOKEN_MINT`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_POOL_TOKEN_MINT = 187
```

### `OFF_POOL_TOKEN_VAULT`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_POOL_TOKEN_VAULT = 219
```

### `OFF_POOL_BASE_DECIMALS`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_POOL_BASE_DECIMALS = 283
```

### `OFF_PYTH_VERIFICATION_TAG`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_PYTH_VERIFICATION_TAG = 40
```

### `OFF_PYTH_PRICE`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_PYTH_PRICE = 73
```

### `OFF_PYTH_EXPONENT`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_PYTH_EXPONENT = 89
```

### `OFF_PYTH_PUBLISH_TIME`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
OFF_PYTH_PUBLISH_TIME = 93
```

### `PYTH_VERIFICATION_FULL`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
PYTH_VERIFICATION_FULL = 1
```

### `ONE_E18`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
ONE_E18 = 1000000000000000000n
```

### `ONE_E5`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
ONE_E5 = 100000n
```

### `WoofiPoolConfig`

*Interface* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
export interface WoofiPoolConfig extends PoolConfig {
    venue: typeof SLUG;
    direction: "sellBase" | "sellQuote";
    wooconfig: Address;
    wooracleBase: Address;
    woopoolBase: Address;
    tokenMintBase: Address;
    tokenVaultBase: Address;
    priceUpdateBase: Address;
    wooracleQuote: Address;
    woopoolQuote: Address;
    quoteTokenMint: Address;
    quoteTokenVault: Address;
    priceUpdateQuote: Address;
    tokenProgram: Address;
    priceDec: bigint;
    quoteDec: bigint;
    baseDec: bigint;
    coeff: bigint;
    feeRate: bigint;
    maxGamma: bigint;
    maxNotionalSwap: bigint;
    capBal: bigint;
    minSwapAmount: bigint;
    bound: bigint;
    staleDuration: bigint;
    rangeMin: bigint;
    rangeMax: bigint;
    maximumAge: bigint;
    pythQuoteDecPow: bigint;
}
```

### `woofi`

*Variable* · `sdk/dist/svm/venues/woofi/index.d.ts`

```typescript theme={null}
woofi: {
    slug: string;
    programId: Address<"WooFif76YGRNjk1pA8wCsN67aQsD9f9iLsz4NcJ1AVb">;
    fetchPoolConfig: typeof fetchWoofiConfig;
    quoteAccounts(cfg: PoolConfig): VenueAccount[];
    buildSwap(cfg: PoolConfig, user: SwapUser, amountIn: bigint): VenueSwap;
}
```
