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

# Errors and waits

> The kit's error classes, bounded waits after a broadcast, and what an unknown outcome means.

| Error | From | Meaning |
| - | - | - |
| `SubmittedStatusUnknownError` | waits after a broadcast | The transaction or intent was sent but its outcome is not known before the deadline. It may still complete: check history before retrying. `ref.txHash` / `ref.intentHashes` / `ref.chain` when known |
| `InsufficientOmniBalanceError` | payments | The HOT balance is short; `shortfalls` lists `{ asset, have, need }` |
| `InsufficientNftError` | payments | The HOT balance does not hold these NFTs (`assets`) |
| `NotSupportedError` | wallets, connectors | The wallet cannot do this at all; do not retry |
| `ReadableDexError` | `kit.exchange` | A swap error whose message can be shown to the user (e.g. "Minimum amount is ...") |
| `UnsupportedDexError` | `kit.exchange` | No route for this pair |
| `UnverifiedQuoteError`, `QuoteVerificationUnavailableError` | `kit.exchange` | The 1Click quote signature did not verify, or could not be checked; the swap is refused |
| `NetworkError`, `TimeoutNetworkError` | `api` | A hex-api request (the intents solver relay) failed (`status`, `url`) or timed out |
| `StorageUnavailableError` | `ParentStorage` | The parent window's storage did not answer |

Every class is exported from `@hot-labs/kit` and, except `StorageUnavailableError`, from `@hot-labs/kit/core`, so check
with `instanceof`.

## Bounded waits

Every wait that follows a broadcast has a deadline. When it passes after the transaction or intent was already sent,
the kit throws `SubmittedStatusUnknownError` instead of reporting a failure.

* `Intents#execute()` waits for settlement up to `Intents.PUBLISH_TIMEOUT_MS` (10 min). A retry on the same builder
  resumes instead of signing again.
* `HotBridge.waitGaslessWithdraw` resolves `string | null`: `null` means the withdrawal was published but the
  relayer's transaction is not visible yet.
* `TonWallet.waitTransactionByMessageHash(pending, { timeoutMs })` and
  `HotBridge.waitUntilBalance(intent, amount, account, { timeoutMs })` take the deadline as the last argument.
* The HOT bridge `publishIntents` polls the intent status for `HotBridge.intentStatusTimeoutMs` (10 min).

## Trust notes

* Responses read from the HOT Wallet relay are not end-to-end authenticated: the kit trusts the relay to return what
  the HOT Wallet posted.
* 1Click quotes are verified against the 1Click manager key before a deposit is sent.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.