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

> Layouts: 5 exports of the svm module of @eco-incorp/sauce, including ArgObject, ArgValue, ArgsLayoutKind, ArgsLayoutSlot, ArgsLayout.

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

### `ArgObject`

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

A struct arg at the main() boundary, encoded as a TUPLE with fields sorted ALPHABETICALLY.

```typescript theme={null}
export interface ArgObject {
    [key: string]: ArgValue;
}
```

### `ArgValue`

*Type* · `sdk/dist/svm/layout.d.ts`

```typescript theme={null}
export type ArgValue = bigint | string | ArgValue[] | ArgObject;
```

### `ArgsLayoutKind`

*Type* · `sdk/dist/svm/layout.d.ts`

```typescript theme={null}
export type ArgsLayoutKind = "scalar" | "bytes";
```

### `ArgsLayoutSlot`

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

```typescript theme={null}
export interface ArgsLayoutSlot {
    arg: number;
    kind: ArgsLayoutKind;
    offset: number;
    length: number;
}
```

### `ArgsLayout`

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

```typescript theme={null}
export interface ArgsLayout {
    mode: "calldata";
    programLength: number;
    byteLength: number;
    slots: ArgsLayoutSlot[];
}
```
