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

> Sending: the declaration and description of each of the 8 exports of @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`.

### `simulateExecute`

*Function* · `@eco-incorp/sauce/svm`

Simulates a signed execute transaction. A `Custom(0)` error from the execute
instruction is a sauce REVERT: the revert payload rides in returnData and
surfaces as `revert.payload`. All other engine failures map to the same
InvalidInstructionData instruction error and are NOT distinguishable from
each other except by reading `logs`. Failures of other instructions
(prepends) surface as plain `err` - never as `revert`.

```typescript theme={null}
export declare function simulateExecute(rpc: Rpc<SimulateTransactionApi>, transaction: Transaction, { executeInstructionIndex, accounts: requested }?: SimulateExecuteOptions): Promise<SimulateExecuteResult>;
```

### `sendExecute`

*Function* · `@eco-incorp/sauce/svm`

Sends a signed execute transaction, confirms it, and reads back return data from the transaction meta.

```typescript theme={null}
export declare function sendExecute({ rpc, rpcSubscriptions, transaction, commitment, }: SendExecuteInput): Promise<SendExecuteResult>;
```

### `recommendedComputeUnitLimit`

*Function* · `@eco-incorp/sauce/svm`

Simulated units padded 20% (rounded up), capped at the engine's 1.4M CU budget.

```typescript theme={null}
export declare function recommendedComputeUnitLimit(simulatedUnits: bigint): number;
```

### `SimulateExecuteResult`

*Interface* · `@eco-incorp/sauce/svm`

```typescript theme={null}
export interface SimulateExecuteResult {
    ok: boolean;
    unitsConsumed?: bigint;
    returnData?: Uint8Array;
    logs: string[];
    revert?: {
        payload: Uint8Array;
    };
    err?: unknown;
    accounts?: readonly (SimulatedAccount | null)[];
}
```

### `SimulatedAccount`

*Interface* · `@eco-incorp/sauce/svm`

An account as a simulation leaves it.

```typescript theme={null}
export interface SimulatedAccount {
    readonly lamports: bigint;
    readonly owner: Address;
    readonly data: Uint8Array;
    readonly executable: boolean;
}
```

### `SimulateExecuteOptions`

*Interface* · `@eco-incorp/sauce/svm`

```typescript theme={null}
export interface SimulateExecuteOptions {
    executeInstructionIndex?: number;
    accounts?: readonly Address[];
}
```

### `SendExecuteInput`

*Interface* · `@eco-incorp/sauce/svm`

```typescript theme={null}
export interface SendExecuteInput {
    rpc: Rpc<GetEpochInfoApi & GetSignatureStatusesApi & GetTransactionApi & SendTransactionApi>;
    rpcSubscriptions: RpcSubscriptions<SignatureNotificationsApi & SlotNotificationsApi>;
    transaction: SignedExecuteTransaction;
    commitment?: Commitment;
}
```

### `SendExecuteResult`

*Interface* · `@eco-incorp/sauce/svm`

```typescript theme={null}
export interface SendExecuteResult {
    signature: Signature;
    returnData?: Uint8Array;
    computeUnits?: bigint;
    logs: string[];
    lookupTableAddress?: Address;
}
```


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