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

# recipes: CCTP split and plain transfer

> CCTP split and plain transfer: 7 exports of the recipes module of @eco-incorp/sauce, including buildCctpSplitTransfer, buildPlainTransfer, cctpSplitSource, plainTransferSource, CCTP_SPLIT_SOURCE_PATH, PLAIN_TRANSFER_SOURCE_PATH.

Shipped programs and the builders that turn them into intents.

```typescript theme={null}
import { buildCctpSplitTransfer, settleSource } from "@eco-incorp/sauce/recipes";
```

This page covers `sdk/dist/recipes/cctp-transfer.d.ts`.

In SDK 0.99.4 these convenience builders do not configure the cook fee or route token delivery. See the [CCTP recipe limitations](/cookbook/sauce/cctp-split#build-them-into-intents) before constructing an executable intent.

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

### `buildCctpSplitTransfer`

*Function* · `sdk/dist/recipes/cctp-transfer.d.ts`

WITH CCTP - one intent whose route drains `amount` in `depositForBurn`s capped at
`perMessageLimit` (the script splits: full-cap burns until the last, which takes the remainder),
atomic in one cook. Fulfilled locally on the source chain, so the intent's destination IS its
source. The builder hands the program only its two numbers; the program's `CCTP_*` consts are
overridden with this intent's values via `defines`.

```typescript theme={null}
export declare function buildCctpSplitTransfer(params: CctpTransferParams): BuiltIntent;
```

### `buildPlainTransfer`

*Function* · `sdk/dist/recipes/cctp-transfer.d.ts`

WITHOUT CCTP (the baseline) - a plain cross-chain USDC transfer intent: the solver delivers
`amount` USDC to `recipient` on the destination chain via the normal Eco flow, no bridge stitch.
The program's `XFER_*` consts are overridden with this intent's values via `defines`.

```typescript theme={null}
export declare function buildPlainTransfer(params: CctpTransferParams): BuiltIntent;
```

### `cctpSplitSource`

*Function* · `sdk/dist/recipes/cctp-transfer.d.ts`

The `cctp-split.sauce.ts` program text - read once and cached.

```typescript theme={null}
export declare function cctpSplitSource(): string;
```

### `plainTransferSource`

*Function* · `sdk/dist/recipes/cctp-transfer.d.ts`

The `plain-transfer.sauce.ts` program text - read once and cached.

```typescript theme={null}
export declare function plainTransferSource(): string;
```

### `CCTP_SPLIT_SOURCE_PATH`

*Variable* · `sdk/dist/recipes/cctp-transfer.d.ts`

Absolute path to the CCTP split-burn program asset inside THIS installed package.

```typescript theme={null}
CCTP_SPLIT_SOURCE_PATH: string
```

### `PLAIN_TRANSFER_SOURCE_PATH`

*Variable* · `sdk/dist/recipes/cctp-transfer.d.ts`

Absolute path to the plain-transfer baseline program asset inside THIS installed package.

```typescript theme={null}
PLAIN_TRANSFER_SOURCE_PATH: string
```

### `CctpTransferParams`

*Interface* · `sdk/dist/recipes/cctp-transfer.d.ts`

```typescript theme={null}
export interface CctpTransferParams {
    readonly from: ChainRef;
    readonly to: ChainRef;
    readonly amount: bigint;
    readonly perMessageLimit: bigint;
    readonly recipient: AddressInput;
    readonly maxFeePerChunk?: bigint;
    readonly pot: AddressInput;
    readonly engine: AddressInput;
    readonly portal: AddressInput;
    readonly sourcePortal?: AddressInput;
    readonly deadline: bigint | number | string;
    readonly rewardDeadline?: bigint | number | string;
    readonly creator: AddressInput;
    readonly prover: AddressInput;
    readonly reward: RewardArg;
}
```
