> ## 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 accessors

> Venue accessors: the declaration and description of each of the 5 exports of @eco-incorp/sauce, @eco-incorp/sauce/svm.

`@eco-incorp/sauce/svm` is the Solana side: the client (`createSauceSvmClient`), clusters, PDAs, account resolution against the compiler's account manifest, Kitchen and engine instructions, transactions and sending, token accounts, and compute planning for `@sauce/router`'s Solana venues. `@eco-incorp/sauce/svm/engine` exports the engine's wire format and instruction builders, `@eco-incorp/sauce/svm/verify` verifies settle programs and engine CPI data, and `@eco-incorp/sauce/svm/engine-artifacts` (Node only) returns file paths to the packaged engine and Kitchen binaries.

```typescript theme={null}
import { createSauceSvmClient, SOLANA_CLUSTERS } from "@eco-incorp/sauce/svm";
```

Generated from the type declarations of `@eco-incorp/sauce`.

### `venue`

*Function* · `@eco-incorp/sauce` as `svmVenues.venue`, `@eco-incorp/sauce/svm`

Slug-based front door: `venue('raydium-cp-swap').swap(...)` - the
analogue of `descriptors/accessors.ts`'s `on(chainRef)`, for a caller
resolving a venue at run time rather than naming `Solana.RaydiumCpSwap`.

```typescript theme={null}
export declare function venue(slug: SvmVenueSlug): SvmVenueAccessor;
```

### `venues`

*Function* · `@eco-incorp/sauce` as `svmVenues.venues`, `@eco-incorp/sauce/svm`

The lazy, memoising tree the `Solana` global composes (see
../routes/globals.ts). Builds zero adapter wrappers until a namespace is
actually touched; two reads of the same namespace off one `venues()` call
return the identical object.

```typescript theme={null}
export declare function venues(): SvmVenueAccessors;
```

### `SvmVenueSlug`

*Type* · `@eco-incorp/sauce` as `svmVenues.SvmVenueSlug`, `@eco-incorp/sauce/svm`

Registered venue slugs only - see this module's own header for why the other \~77 are excluded.

```typescript theme={null}
export type SvmVenueSlug = RegisteredVenueSlug;
```

### `SvmVenueAccessor`

*Interface* · `@eco-incorp/sauce` as `svmVenues.SvmVenueAccessor`, `@eco-incorp/sauce/svm`

One leaf: `Solana.<Venue>`. Every member forwards to the identically-shaped
`SvmVenueAdapter` member (`.adapter`) - an accessor call and a direct
adapter call are indistinguishable in behavior, errors, and returned
objects.

```typescript theme={null}
export interface SvmVenueAccessor {
    readonly slug: SvmVenueSlug;
    readonly kind: SvmVenueAdapter["kind"];
    readonly programId: Address;
    readonly adapter: SvmVenueAdapter;
    poolConfig(load: OwnedAccountLoader, pool: Address): Promise<PoolConfig>;
    quoteAccounts(cfg: PoolConfig): VenueAccount[];
    quoteSource(cfg: PoolConfig, i: number, amountIn: bigint): string;
    swap(cfg: PoolConfig, user: SwapUser, amountIn: bigint): VenueSwap;
    referenceQuote(cfg: PoolConfig, state: AccountBytesMap, amountIn: bigint, now: bigint): bigint;
}
```

### `SvmVenueAccessors`

*Type* · `@eco-incorp/sauce` as `svmVenues.SvmVenueAccessors`, `@eco-incorp/sauce/svm`

The whole typed tree `venues()` returns - one namespace per registered adapter slug.

```typescript theme={null}
export type SvmVenueAccessors = {
    readonly [S in SvmVenueSlug as PascalOf<S>]: SvmVenueAccessor;
};
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.