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

# Execution Flow

> From signature to settlement — what happens between.

A Fuse intent is settled by a solver. Here's what that means in practice.

## The lifecycle

```
1. User signs intent
   └─ EIP-712 typed data, bound to deadline + nonce + fee/swap hashes
2. Intent posted to relay
   └─ POST /v1/bundle (signature + intent body)
3. Solver picks intent
   └─ Solver verifies signature, simulates the bundle, locks fee
4. Solver submits source-chain tx
   └─ Source: ERC20 pull (Permit2/permit), swap, bridge-emit
5. Cross-chain message in flight
   └─ Bridge relayer (Across/Mayan/CCTP/...) carries the message
6. Solver submits destination-chain tx
   └─ Destination: receive, swap (if any), final action (LP/deposit/transfer)
7. Status updated
   └─ getZapTxnStatus() returns step-level status until "completed"
```

## Atomicity

Within a chain, steps in a bundle execute atomically — if one reverts, the bundle reverts.

Across chains, atomicity is bounded by the bridge: the source side commits, then the destination side runs. If the destination side fails, funds are refunded to the `refundee` you specified at quote time.

## Solver economics

* Solvers earn the spread between user-facing output and best on-chain output.
* Fees are bound at intent-signature time via `executorFeesHash` — solvers cannot raise their take after the fact.
* Intents have a `deadline`; expired intents are unwinnable.

## Tracking

```ts theme={null}
const status = await dzap.getZapTxnStatus({
  txId: '...',           // Returned at quote time
});

// status.steps[i] => { protocol, status, txHash, ... }
```

For step-by-step UI updates, render `status.steps`.

## Failure modes

| Failure                 | Result                                                     |
| ----------------------- | ---------------------------------------------------------- |
| Source-chain tx reverts | Intent unsettled; user state unchanged                     |
| Bridge message stuck    | Solver retries; if exhausted, refund to `refundee`         |
| Destination tx reverts  | Funds refunded to `refundee` (may be on destination chain) |
| Deadline exceeded       | Intent voided; signature can't be replayed                 |

For the gasless variant of this flow, see [Gasless](/products/dzap-fuse/gasless).
