> ## 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: 7 exports of the svm module of @eco-incorp/sauce, including simulateExecute, sendExecute, recommendedComputeUnitLimit, SimulateExecuteResult, SimulateExecuteOptions, SendExecuteInput.

`@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/send.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>

### `simulateExecute`

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

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 }?: SimulateExecuteOptions): Promise<SimulateExecuteResult>;
```

### `sendExecute`

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

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* · `sdk/dist/svm/send.d.ts`

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* · `sdk/dist/svm/send.d.ts`

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

### `SimulateExecuteOptions`

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

```typescript theme={null}
export interface SimulateExecuteOptions {
    executeInstructionIndex?: number;
}
```

### `SendExecuteInput`

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

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

### `SendExecuteResult`

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

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