> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ravn.exchange/llms.txt
> Use this file to discover all available pages before exploring further.

# Execution Types

> The one field your integration branches on.

RAVN spans three settlement models. `POST /execute` returns exactly one of them, tagged by
**`executionType`**. Your integration reads that single field and branches — nothing else
about the flow changes.

<CardGroup cols={3}>
  <Card title="TRANSACTION" icon="signature">
    Sign & broadcast the returned transaction.
    <br />**Across · Relay · Mayan · Jupiter**
  </Card>

  <Card title="SIGNATURE" icon="pen-nib">
    Sign typed data — no gas, no send. RAVN submits it.
    <br />**0x Gasless · Bebop · CoW**
  </Card>

  <Card title="DEPOSIT" icon="paper-plane">
    Send the origin asset to an address.
    <br />**NEAR Intents · Rift (BTC)**
  </Card>
</CardGroup>

## The payloads

<CodeGroup>
  ```json TRANSACTION theme={null}
  {
    "executionType": "TRANSACTION",
    "transaction": { "to": "0x…", "data": "0x…", "value": "0", "chainId": 1 }
  }
  ```

  ```json SIGNATURE theme={null}
  {
    "executionType": "SIGNATURE",
    "typedData": { },
    "approvalData": { },
    "submit": { "url": "/api/v1/submit-signature" }
  }
  ```

  ```json DEPOSIT theme={null}
  {
    "executionType": "DEPOSIT",
    "deposit": { "address": "0x…", "amount": "1000000000000000000", "chainId": 1 },
    "statusRef": "0x…"
  }
  ```
</CodeGroup>

## Branch logic

```js theme={null}
switch (res.data.executionType) {
  case "TRANSACTION": await wallet.sendTransaction(res.data.transaction); break;
  case "SIGNATURE":   { const sig = await wallet.signTypedData(res.data.typedData);
                        await submitSignature(quoteToken, sig); } break;
  case "DEPOSIT":     await wallet.send(res.data.deposit.address, res.data.deposit.amount); break;
}
```

<Tip>
  A `DEPOSIT` can be fulfilled **automatically** (build a wallet transfer to the address, as an
  EVM/Solana wallet does) or **manually** (show the address + a QR, as a native-BTC send does).
  Both are the same execution type — you choose the UX.
</Tip>
