> ## 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: Client

> Client: 11 exports of the svm module of @eco-incorp/sauce, including createSauceSvmClient, SauceSvmClientConfig, SimulateOpts, ExecuteOpts, StagedBuffer, StagedArgs.

`@eco-incorp/sauce/svm` is the Solana side: staging a program through the kitchen, resolving accounts against the compiler's account manifest, building and sending transactions, and verifying settle programs. Solana execution goes through the Kitchen client here; the SDK's SVM route helpers emit a legacy instruction that the released engine does not accept.

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

This page covers `sdk/dist/svm/client.d.ts`.

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

### `createSauceSvmClient`

*Function* · `sdk/dist/svm/client.d.ts`

```typescript theme={null}
export declare function createSauceSvmClient({ rpcUrl, wsUrl, programId, kitchen, payer, potSalt, maxExecutionFee, }: SauceSvmClientConfig): Promise<SauceSvmClient>;
```

### `SauceSvmClientConfig`

*Interface* · `sdk/dist/svm/client.d.ts`

```typescript theme={null}
export interface SauceSvmClientConfig {
    rpcUrl: string;
    wsUrl?: string;
    programId: Address;
    kitchen: Address;
    payer: TransactionSigner;
    potSalt?: Uint8Array;
    maxExecutionFee?: bigint;
}
```

### `SimulateOpts`

*Interface* · `sdk/dist/svm/client.d.ts`

```typescript theme={null}
export interface SimulateOpts {
    prepends?: readonly Instruction[];
    lookupTables?: AddressesByLookupTableAddress;
    appendPayerSigner?: boolean;
}
```

### `ExecuteOpts`

*Interface* · `sdk/dist/svm/client.d.ts`

```typescript theme={null}
export interface ExecuteOpts extends SimulateOpts {
    computeUnitLimit?: number | "auto";
}
```

### `StagedBuffer`

*Interface* · `sdk/dist/svm/client.d.ts`

A buffer staged by this client - carries the SDK-computed content hash (the execute pin).

```typescript theme={null}
export interface StagedBuffer {
    address: Address;
    seed: Uint8Array;
    sha256: Uint8Array;
    signatures: Signature[];
}
```

### `StagedArgs`

*Interface* · `sdk/dist/svm/client.d.ts`

Per-execution args for a staged program. The layout is CALLER-SUPPLIED: neither `CompileResult`
carries one - the compiler's is `{ bytecode, manifest? }`, the route seam's is
`{ bytecode: Uint8Array[], warnings }` - so `ArgsLayout` is the SDK's own type (`./layout.ts`)
describing where each value sits in the payload tail.

```typescript theme={null}
export interface StagedArgs {
    layout: ArgsLayout;
    values: readonly ArgValue[];
}
```

### `SimulateStagedOpts`

*Interface* · `sdk/dist/svm/client.d.ts`

```typescript theme={null}
export interface SimulateStagedOpts extends SimulateOpts {
    expectedSha256?: Uint8Array;
}
```

### `ExecuteStagedOpts`

*Interface* · `sdk/dist/svm/client.d.ts`

```typescript theme={null}
export interface ExecuteStagedOpts extends SimulateStagedOpts {
    computeUnitLimit?: number | "auto";
}
```

### `EnsuredLookupTable`

*Interface* · `sdk/dist/svm/client.d.ts`

An address lookup table this client created/extended, ready to compress a v0 transaction against.

```typescript theme={null}
export interface EnsuredLookupTable {
    lookupTableAddress: Address;
    lookupTables: AddressesByLookupTableAddress;
}
```

### `EnsureLookupTableOpts`

*Interface* · `sdk/dist/svm/client.d.ts`

```typescript theme={null}
export interface EnsureLookupTableOpts {
    existing?: Address;
    commitment?: Commitment;
}
```

### `SauceSvmClient`

*Interface* · `sdk/dist/svm/client.d.ts`

```typescript theme={null}
export interface SauceSvmClient {
    readonly payerAddress: Address;
    ensureLookupTable(addresses: readonly Address[], opts?: EnsureLookupTableOpts): Promise<EnsuredLookupTable>;
    simulate(bytecode: Uint8Array, manifest: AccountManifest, resolution: AccountResolution, opts?: SimulateOpts): Promise<SimulateExecuteResult>;
    execute(bytecode: Uint8Array, manifest: AccountManifest, resolution: AccountResolution, opts?: ExecuteOpts): Promise<SendExecuteResult>;
    simulateStaged(buffer: Address | StagedBuffer, manifest: AccountManifest, resolution: AccountResolution, opts?: SimulateStagedOpts): Promise<SimulateExecuteResult>;
    executeStaged(buffer: Address | StagedBuffer, manifest: AccountManifest, resolution: AccountResolution, opts?: ExecuteStagedOpts): Promise<SendExecuteResult>;
}
```
