--- title: Gas drop description: Delivering destination-chain native asset alongside the payout, so the recipient can transact on arrival. --- import { MAX_GAS_DROP_ARBITRUM, MAX_GAS_DROP_SOLANA, MAX_GAS_DROP_SUI } from "/snippets/vars.mdx"; A user bridging USDC to a chain where they hold nothing cannot move it afterwards. Gas drop solves that: the fulfillment delivers a requested amount of the destination chain's native asset in the same transaction as the payout, out of vault float. ## Requesting it `gas_drop` is a decimal string in base units of the destination chain's native asset: wei on EVM chains, lamports on Solana, MIST on Sui. Send an empty string or omit it for none. ```ts const quote = quoteOf( await hular.getQuote({ srcChain: "solana", dstChain: "arbitrum", srcToken: usdcOnSolana, dstToken: usdcOnArbitrum, tradeType: TradeType.EXACT_INPUT, amount: "25000000", recipient, refundAddress, gasDrop: "100000000000000", }), ); ``` It is priced into the quote like any other component: the cost appears in `fee_breakdown` as `gas_drop` on the destination side, and `amount_out` is already net of it. ## Ceilings Each chain caps how much can be dropped. Exceeding the cap fails the quote with `gas drop exceeds the allowed maximum`. | Destination | Maximum | Unit | | --- | --- | --- | | `arbitrum` | {MAX_GAS_DROP_ARBITRUM} | wei | | `solana` | {MAX_GAS_DROP_SOLANA} | lamports | | `sui` | {MAX_GAS_DROP_SUI} | MIST | Read the live ceiling from `GetChains` rather than hardcoding it: ```ts const { chains } = await hular.getChains({}); const dst = chains.find((c) => c.chain === "arbitrum"); dst.maxGasDrop; // ceiling, base units dst.nativeSymbol; // "ETH" dst.nativeDecimals; // 18 ``` `native_symbol` and `native_decimals` come back on the same message, which is everything needed to render a slider from zero to the cap without a second source of truth. ## Behavior The drop is part of the fulfillment, not a separate transfer: the recipient receives tokens and native asset in one transaction, or neither. On a refund it is never delivered and never charged: refunds deduct only the committed refund fees, and `gas_drop` sits on the destination side. When the destination token is itself the native asset, the request's `gas_drop` is ignored and priced as zero, because the payout already is gas. Same-chain swaps never carry a drop. A recipient that is a contract must be able to receive native asset. If the transfer to it fails, the fulfillment fails with it.