arbitrum, solana, and sui; ethereum and base are recognized names in the protocol but are not enabled right now, and GetChains is the source of truth for what is live.
On EVM chains there are three contracts.
HularEscrow receives every deposit (plain depositToken and depositNative calls land here) and pays refunds; its funds move to the solver only after the deposit settles past the deep-reorg check. HularSolver holds the operator float and pays fulfillments, gas drops, and voucher redemptions; only the solver can pull from the escrow, and only its registered executors can trigger that pull. HularRouter carries the swap, permit, permit2, and gasless entry points and forwards the funds into the escrow. GetChains returns the router as router; the quote’s router_address is the contract that specific quote deposits into.
On Solana the program id carries every instruction. Deposits pay into the escrow, a program-derived account (DvCPeroncQwfZxWBzQxHbUYNr4wpYGRZ4AoNkj2iUqhA), and fulfillments pay out of the treasury FD819o8VXWWkkDkS2N3Qb7VumUnJBdJGNYE6oZWPXaA7, returned as treasury by GetChains.
On Sui a single Move package carries every entry function, and one shared escrow object created at publish holds the deposit float, the referral voucher float, and the settlement markers. Deposits call deposit on the package with the escrow object; fulfillments pay out of the treasury address, which holds the operator float as an address balance. GetChains returns the package id as router, the escrow object id as escrow, and the treasury address as treasury. The only accepted token on Sui is native USDC, and it is identified by its full coin type string rather than an address.
Availability is runtime state
A chain being listed here does not mean it is currently open for quoting. Quoting, indexing, and relaying are toggled per chain, andGetChains is the source of truth:
Build chain selectors from
quote_enabled instead of a static list, and the selector stays correct when a chain is paused for maintenance.
Gas drop ceilings
The maximum native asset that can be delivered with a fulfillment, in base units of the destination chain’s native asset.GetChains returns the live value as max_gas_drop.
See Gas drop.
Confirmations
Required confirmations are set per chain and scale with trade size in USD. They are not a constant you can hardcode: readrequired_confirmations and src_confirmations from the order returned by GetOrder and show progress from those two numbers.
Tokens
Token support is per chain and served by the catalog, not fixed here.ListTokens returns every quotable token with its chain, address, decimals, tier, and whether it supports EIP-2612 permit. See Token catalog.