signaldocs Open Signal

Build with Signal

Errors and recovery

Curve launches

The standard Pair Router uses CurvePairCheck(uint8 reason). Decode against the exact ABI and retain the original revert data.

ReasonCheck categoryRecovery
1Constructor/configuration or companion consistencyReview deployment identity; do not retry as a trade
2Reentrancy guardReview the calling contract
3Unexpected native transfer senderUse the supported router method
4Market identity or token/curve/quote/pool linkageStop and verify the market
5Recipient eligibilityReview the actual recipient; do not silently replace it
6Nonzero minimum or bounded deadlineRequote and set a valid protected deadline
7Expected phase changedRead graduation state and rebuild the route
8Conversion route identityRefresh the admitted route; do not substitute a pool
9Balance delta or minimum-output conditionRequote and simulate; inspect actual amounts
10Native payout failedCheck recipient's ability to receive HYPE
11Input amount or input/minimum constraintsValidate amounts and units

These are categories: a reason can cover more than one condition. Underlying contracts can also return their own errors. An RPC transport error is not a decoded contract revert.

Signal v4 pools

A v4 trade reverts with the hook's or the router's own error. Decode against the v4 ABIs. A revert raised inside the PoolManager can arrive wrapped; search the revert data for the selector.

ErrorSelectorMeaningRecovery
ExactOutputUnsupported()0xf7ebfa18An exact-output swapSend exact input
PartialFill()0xd964f528A buy the pool could not fill wholeRemove the price limit or lower the size; requote
Gated()0xfb727798A buy through a router the factory has not approved, inside the launch's Signal-only windowUse Signal's router, or wait for the window to end
WhaleCap()0xb11c7524The buy would lift its recipient over the launch's wallet cap, or came through a router that is not approved and so named no recipientLower the size so the recipient stays under the cap, send through Signal's router, or wait
OverBudget()0x323e8637This buy would take this block's token budget past its limitSend again in a later block. If the buy alone is larger than the budget, lower the size or wait for the window to end
TooLittleReceived(got, min)0x4e86d23aThe output was under the minimumRequote; do not lower the minimum silently
Expired()0x203d82d8Past the deadlineRequote with a fresh deadline
NotNativePool()0x425c65bbbuyNative on a pool not paired with WHYPEPay in the pair asset with swap
Locked()0x0f2e5b6cAdding, removing or donating liquidity, or creating a pool on the hookNot available to anyone
UnknownPool()0xf7139e33The pool id is not one of this hook'sRecheck the release and the pool id

A sale is never refused by Gated, WhaleCap or OverBudget.

Ambiguous sends

Track chain, sender, nonce, signed intent and transaction hash locally in the wallet integration. If submission times out, reconcile that intent and nonce before sending a replacement. A successful receipt can exist even if the client never received the RPC response.

If a transaction reverted, preserve its evidence and obtain a fresh quote before another user-approved attempt. Do not automatically increase slippage, change recipient or remove a minimum to make a retry succeed.