Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.dzap.io/llms.txt

Use this file to discover all available pages before exploring further.

A Fuse intent is a structured EIP-712 message describing the outcome a user wants. Solvers compete to settle it.

Intent types

The SDK exports three intent type sets, one per execution shape:
TypeWhenEIP-712 type
SwapSame-chain swapDzapUserIntentSwapTypes
Swap+BridgeCross-chain swap with destination actionDzapUserIntentSwapBridgeTypes
BridgePure cross-chain transferDzapUserIntentBridgeTypes

Intent fields

Every intent carries:
{
  txId: string;            // Unique intent ID (returned by quote)
  nonce: bigint;           // Per-user replay protection
  deadline: number;        // Unix seconds; intent expires after
  executorFeesHash: bytes; // Hash of the fee schedule
  swapDataHash: bytes;     // Hash of the actual swap calldata
  // ...type-specific fields
}
The hashes (executorFeesHash, swapDataHash) bind the off-chain intent to the exact on-chain action. A solver cannot rewrite the swap and reuse your signature.

Lifecycle

1

Quote

Frontend asks getZapQuote(). Response includes txId, candidate steps, and the typed-data structure to sign.
2

Sign

User signs the EIP-712 typed data with their wallet. Output: a signature bound to the intent hash.
3

Submit

Signature + intent posted to the Fuse API (or directly to a solver).
4

Match + execute

A solver picks up the intent, verifies signature on-chain, executes the bundle.
5

Settle

User receives the final asset on the destination chain. Status visible via getZapTxnStatus().

Why intents instead of transactions?

  • Gasless — solver pays gas; user pays only via the swap output.
  • Atomic outcome — user signs the destination state, not the path.
  • Composable — intents compose with bundles (multi-leg flows).
See Gasless for the signing flow and Execution Flow for what the solver does after submission.