@rabby-wallet/rabby-bridge 0.0.13-alpha.1 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/README.md +1 -159
  2. package/dist/chains.d.ts +2 -1
  3. package/dist/chains.js +2 -0
  4. package/dist/data.d.ts +3 -0
  5. package/dist/data.js +3 -0
  6. package/dist/index.d.ts +1 -6
  7. package/dist/index.js +0 -3
  8. package/dist/quote.d.ts +4 -26
  9. package/dist/quote.js +67 -200
  10. package/package.json +3 -13
  11. package/dist/calldata/abi.d.ts +0 -29
  12. package/dist/calldata/abi.js +0 -160
  13. package/dist/calldata/across/deposit.d.ts +0 -2
  14. package/dist/calldata/across/deposit.js +0 -36
  15. package/dist/calldata/across/depositNative.d.ts +0 -2
  16. package/dist/calldata/across/depositNative.js +0 -45
  17. package/dist/calldata/across/depositNow.d.ts +0 -2
  18. package/dist/calldata/across/depositNow.js +0 -35
  19. package/dist/calldata/across/depositV3.d.ts +0 -2
  20. package/dist/calldata/across/depositV3.js +0 -35
  21. package/dist/calldata/across/depositV3Now.d.ts +0 -2
  22. package/dist/calldata/across/depositV3Now.js +0 -34
  23. package/dist/calldata/across/index.d.ts +0 -4
  24. package/dist/calldata/across/index.js +0 -31
  25. package/dist/calldata/across/swapAndBridge.d.ts +0 -2
  26. package/dist/calldata/across/swapAndBridge.js +0 -70
  27. package/dist/calldata/across/validate.d.ts +0 -3
  28. package/dist/calldata/across/validate.js +0 -34
  29. package/dist/calldata/chains.d.ts +0 -2
  30. package/dist/calldata/chains.js +0 -35
  31. package/dist/calldata/destination.d.ts +0 -6
  32. package/dist/calldata/destination.js +0 -211
  33. package/dist/calldata/destinationSwap.d.ts +0 -14
  34. package/dist/calldata/destinationSwap.js +0 -80
  35. package/dist/calldata/diagnostics.d.ts +0 -4
  36. package/dist/calldata/diagnostics.js +0 -18
  37. package/dist/calldata/expect.d.ts +0 -27
  38. package/dist/calldata/expect.js +0 -158
  39. package/dist/calldata/hex.d.ts +0 -6
  40. package/dist/calldata/hex.js +0 -46
  41. package/dist/calldata/index.d.ts +0 -20
  42. package/dist/calldata/index.js +0 -88
  43. package/dist/calldata/lifi/across/acrossV4Erc20Min.d.ts +0 -2
  44. package/dist/calldata/lifi/across/acrossV4Erc20Min.js +0 -26
  45. package/dist/calldata/lifi/across/acrossV4NativeMin.d.ts +0 -2
  46. package/dist/calldata/lifi/across/acrossV4NativeMin.js +0 -22
  47. package/dist/calldata/lifi/across/index.d.ts +0 -6
  48. package/dist/calldata/lifi/across/index.js +0 -19
  49. package/dist/calldata/lifi/allbridge/index.d.ts +0 -3
  50. package/dist/calldata/lifi/allbridge/index.js +0 -26
  51. package/dist/calldata/lifi/celer/index.d.ts +0 -4
  52. package/dist/calldata/lifi/celer/index.js +0 -10
  53. package/dist/calldata/lifi/centrifuge/index.d.ts +0 -3
  54. package/dist/calldata/lifi/centrifuge/index.js +0 -22
  55. package/dist/calldata/lifi/destination.d.ts +0 -5
  56. package/dist/calldata/lifi/destination.js +0 -40
  57. package/dist/calldata/lifi/frax/index.d.ts +0 -4
  58. package/dist/calldata/lifi/frax/index.js +0 -29
  59. package/dist/calldata/lifi/garden/index.d.ts +0 -3
  60. package/dist/calldata/lifi/garden/index.js +0 -22
  61. package/dist/calldata/lifi/gaszip/index.d.ts +0 -6
  62. package/dist/calldata/lifi/gaszip/index.js +0 -15
  63. package/dist/calldata/lifi/index.d.ts +0 -4
  64. package/dist/calldata/lifi/index.js +0 -62
  65. package/dist/calldata/lifi/intents/index.d.ts +0 -4
  66. package/dist/calldata/lifi/intents/index.js +0 -10
  67. package/dist/calldata/lifi/layerswap/index.d.ts +0 -4
  68. package/dist/calldata/lifi/layerswap/index.js +0 -10
  69. package/dist/calldata/lifi/m0/index.d.ts +0 -3
  70. package/dist/calldata/lifi/m0/index.js +0 -33
  71. package/dist/calldata/lifi/mayan/index.d.ts +0 -4
  72. package/dist/calldata/lifi/mayan/index.js +0 -10
  73. package/dist/calldata/lifi/method.d.ts +0 -6
  74. package/dist/calldata/lifi/method.js +0 -16
  75. package/dist/calldata/lifi/native/index.d.ts +0 -4
  76. package/dist/calldata/lifi/native/index.js +0 -80
  77. package/dist/calldata/lifi/params.d.ts +0 -28
  78. package/dist/calldata/lifi/params.js +0 -347
  79. package/dist/calldata/lifi/paxos/index.d.ts +0 -4
  80. package/dist/calldata/lifi/paxos/index.js +0 -10
  81. package/dist/calldata/lifi/polymer/index.d.ts +0 -4
  82. package/dist/calldata/lifi/polymer/index.js +0 -10
  83. package/dist/calldata/lifi/relay/index.d.ts +0 -6
  84. package/dist/calldata/lifi/relay/index.js +0 -15
  85. package/dist/calldata/lifi/shape.d.ts +0 -4
  86. package/dist/calldata/lifi/shape.js +0 -31
  87. package/dist/calldata/lifi/squid/index.d.ts +0 -6
  88. package/dist/calldata/lifi/squid/index.js +0 -15
  89. package/dist/calldata/lifi/stargate/index.d.ts +0 -5
  90. package/dist/calldata/lifi/stargate/index.js +0 -15
  91. package/dist/calldata/lifi/swap/index.d.ts +0 -5
  92. package/dist/calldata/lifi/swap/index.js +0 -18
  93. package/dist/calldata/lifi/swap/swapMethod.d.ts +0 -2
  94. package/dist/calldata/lifi/swap/swapMethod.js +0 -40
  95. package/dist/calldata/lifi/swapData.d.ts +0 -5
  96. package/dist/calldata/lifi/swapData.js +0 -33
  97. package/dist/calldata/match.d.ts +0 -3
  98. package/dist/calldata/match.js +0 -21
  99. package/dist/calldata/mayan/destination.d.ts +0 -2
  100. package/dist/calldata/mayan/destination.js +0 -13
  101. package/dist/calldata/mayan/fastMctpBridge.d.ts +0 -3
  102. package/dist/calldata/mayan/fastMctpBridge.js +0 -48
  103. package/dist/calldata/mayan/fastMctpCreateOrder.d.ts +0 -3
  104. package/dist/calldata/mayan/fastMctpCreateOrder.js +0 -39
  105. package/dist/calldata/mayan/forward.d.ts +0 -8
  106. package/dist/calldata/mayan/forward.js +0 -35
  107. package/dist/calldata/mayan/forwardERC20.d.ts +0 -2
  108. package/dist/calldata/mayan/forwardERC20.js +0 -19
  109. package/dist/calldata/mayan/forwardEth.d.ts +0 -2
  110. package/dist/calldata/mayan/forwardEth.js +0 -16
  111. package/dist/calldata/mayan/index.d.ts +0 -4
  112. package/dist/calldata/mayan/index.js +0 -21
  113. package/dist/calldata/mayan/mctp.d.ts +0 -5
  114. package/dist/calldata/mayan/mctp.js +0 -41
  115. package/dist/calldata/mayan/readProtocol.d.ts +0 -2
  116. package/dist/calldata/mayan/readProtocol.js +0 -29
  117. package/dist/calldata/mayan/swapAndForwardERC20.d.ts +0 -2
  118. package/dist/calldata/mayan/swapAndForwardERC20.js +0 -24
  119. package/dist/calldata/mayan/swapAndForwardEth.d.ts +0 -2
  120. package/dist/calldata/mayan/swapAndForwardEth.js +0 -23
  121. package/dist/calldata/mayan/swiftCreateOrder.d.ts +0 -3
  122. package/dist/calldata/mayan/swiftCreateOrder.js +0 -49
  123. package/dist/calldata/mayan/validate.d.ts +0 -3
  124. package/dist/calldata/mayan/validate.js +0 -20
  125. package/dist/calldata/protocols.d.ts +0 -9
  126. package/dist/calldata/protocols.js +0 -57
  127. package/dist/calldata/relay/calls.d.ts +0 -13
  128. package/dist/calldata/relay/calls.js +0 -54
  129. package/dist/calldata/relay/depositErc20.d.ts +0 -2
  130. package/dist/calldata/relay/depositErc20.js +0 -22
  131. package/dist/calldata/relay/depositErc20Allowance.d.ts +0 -2
  132. package/dist/calldata/relay/depositErc20Allowance.js +0 -20
  133. package/dist/calldata/relay/depositNative.d.ts +0 -2
  134. package/dist/calldata/relay/depositNative.js +0 -20
  135. package/dist/calldata/relay/index.d.ts +0 -4
  136. package/dist/calldata/relay/index.js +0 -42
  137. package/dist/calldata/relay/multicall.d.ts +0 -2
  138. package/dist/calldata/relay/multicall.js +0 -15
  139. package/dist/calldata/relay/permit2TransferAndMulticall.d.ts +0 -2
  140. package/dist/calldata/relay/permit2TransferAndMulticall.js +0 -42
  141. package/dist/calldata/relay/permit3009TransferAndMulticall.d.ts +0 -2
  142. package/dist/calldata/relay/permit3009TransferAndMulticall.js +0 -41
  143. package/dist/calldata/relay/permit3009TransferAndMulticallSigned.d.ts +0 -2
  144. package/dist/calldata/relay/permit3009TransferAndMulticallSigned.js +0 -40
  145. package/dist/calldata/relay/permitTransferAndMulticall.d.ts +0 -2
  146. package/dist/calldata/relay/permitTransferAndMulticall.js +0 -34
  147. package/dist/calldata/relay/permitTransferAndMulticallLegacy.d.ts +0 -2
  148. package/dist/calldata/relay/permitTransferAndMulticallLegacy.js +0 -35
  149. package/dist/calldata/relay/transferAndMulticall.d.ts +0 -2
  150. package/dist/calldata/relay/transferAndMulticall.js +0 -26
  151. package/dist/calldata/relay/validate.d.ts +0 -3
  152. package/dist/calldata/relay/validate.js +0 -18
  153. package/dist/calldata/resolve.d.ts +0 -2
  154. package/dist/calldata/resolve.js +0 -28
  155. package/dist/calldata/socket/bridge.d.ts +0 -2
  156. package/dist/calldata/socket/bridge.js +0 -28
  157. package/dist/calldata/socket/exec.d.ts +0 -2
  158. package/dist/calldata/socket/exec.js +0 -71
  159. package/dist/calldata/socket/index.d.ts +0 -4
  160. package/dist/calldata/socket/index.js +0 -13
  161. package/dist/calldata/socket/params.d.ts +0 -5
  162. package/dist/calldata/socket/params.js +0 -14
  163. package/dist/calldata/socket/protocols/ccip.d.ts +0 -2
  164. package/dist/calldata/socket/protocols/ccip.js +0 -32
  165. package/dist/calldata/socket/protocols/cctp.d.ts +0 -2
  166. package/dist/calldata/socket/protocols/cctp.js +0 -24
  167. package/dist/calldata/socket/protocols/eco.d.ts +0 -2
  168. package/dist/calldata/socket/protocols/eco.js +0 -20
  169. package/dist/calldata/socket/protocols/index.d.ts +0 -3
  170. package/dist/calldata/socket/protocols/index.js +0 -86
  171. package/dist/calldata/socket/protocols/native.d.ts +0 -2
  172. package/dist/calldata/socket/protocols/native.js +0 -70
  173. package/dist/calldata/socket/protocols/oft.d.ts +0 -2
  174. package/dist/calldata/socket/protocols/oft.js +0 -33
  175. package/dist/calldata/socket/protocols/swapsXYZ.d.ts +0 -2
  176. package/dist/calldata/socket/protocols/swapsXYZ.js +0 -62
  177. package/dist/calldata/socket/swapAndBridge.d.ts +0 -2
  178. package/dist/calldata/socket/swapAndBridge.js +0 -41
  179. package/dist/calldata/socket/validate.d.ts +0 -3
  180. package/dist/calldata/socket/validate.js +0 -24
  181. package/dist/calldata/types.d.ts +0 -82
  182. package/dist/calldata/types.js +0 -20
  183. package/dist/errors/constants.d.ts +0 -891
  184. package/dist/errors/constants.js +0 -898
  185. package/dist/errors/index.d.ts +0 -66
  186. package/dist/errors/index.js +0 -53
  187. package/dist/errors/sanitize.d.ts +0 -3
  188. package/dist/errors/sanitize.js +0 -74
  189. package/dist/providers/data.d.ts +0 -23
  190. package/dist/providers/data.js +0 -116
  191. package/dist/providers/errors.d.ts +0 -7
  192. package/dist/providers/errors.js +0 -10
  193. package/dist/providers/layerswap.d.ts +0 -9
  194. package/dist/providers/layerswap.js +0 -95
  195. package/dist/providers/relay.d.ts +0 -59
  196. package/dist/providers/relay.js +0 -185
  197. package/dist/providers/socket.d.ts +0 -5
  198. package/dist/providers/socket.js +0 -57
@@ -1,66 +0,0 @@
1
- import type { BridgeErrorDefinition } from './constants.js';
2
- export { BRIDGE_ERRORS } from './constants.js';
3
- export type { BridgeErrorCode, BridgeErrorStage, BridgeErrorDefinition } from './constants.js';
4
- /** Reporting context deliberately excludes calldata, wallet addresses and provider response bodies. */
5
- export type BridgeErrorContext = {
6
- pass?: boolean;
7
- routerPass?: boolean;
8
- fromPass?: boolean;
9
- toPass?: boolean;
10
- receiverPass?: boolean;
11
- lite?: boolean;
12
- blocking?: boolean;
13
- aggregatorId?: string;
14
- chainId?: string;
15
- toChainId?: string;
16
- bridgeId?: string;
17
- provider?: string;
18
- method?: string;
19
- selector?: string;
20
- routerSelector?: string;
21
- protocolSelector?: string;
22
- destinationSelectors?: string[];
23
- calldataFormat?: 'missing' | 'empty' | 'valid' | 'invalid';
24
- calldataBytes?: number;
25
- routerCalldataBytes?: number;
26
- protocolCalldataBytes?: number;
27
- destinationCalldataBytes?: number;
28
- destinationCallCount?: number;
29
- hasDestinationCall?: boolean;
30
- abiOffset?: number;
31
- abiBufferBytes?: number;
32
- commandByte?: number;
33
- commandCount?: number;
34
- requestKind?: 'relay_chains' | 'relay_quote' | 'socket_quote' | 'layerswap_orders' | 'backend_quote' | 'backend_build';
35
- operation?: 'getQuote' | 'buildTx' | 'verifyTx' | 'verifyLayerSwapTx';
36
- unverifiedFields?: string[];
37
- httpStatus?: number;
38
- };
39
- export type BridgeErrorDetail = BridgeErrorDefinition & BridgeErrorContext;
40
- export declare const bridgeFailure: (errors: BridgeErrorDetail[]) => {
41
- ok: false;
42
- reason: string;
43
- error_code: "BRIDGE_MISSING_BUILD_API" | "BRIDGE_MISSING_QUOTE_API" | "BRIDGE_DIRECT_PROVIDER_CLIENT_IS_REQUIRED" | "BRIDGE_FROM_ADDRESS_MISMATCH" | "BRIDGE_FROM_CHAIN_MISMATCH" | "BRIDGE_INVALID_SOCKET_API" | "BRIDGE_INVALID_PROVIDER_TIMEOUT" | "BRIDGE_INVALID_QUOTE_KEY" | "BRIDGE_INVALID_TRANSACTION_VALUE" | "BRIDGE_SLIPPAGE_IS_REQUIRED_FOR_THIS_API_CALL" | "BRIDGE_UNSUPPORTED_BRIDGE_AGGREGATOR" | "BRIDGE_UNSUPPORTED_CHAIN" | "BRIDGE_UNSUPPORTED_DIRECT_PROVIDER" | "BRIDGE_UNSUPPORTED_FEE_RATE" | "BRIDGE_UNSUPPORTED_SOURCE_CHAIN" | "BRIDGE_ROUTER_NOT_ALLOWED" | "BRIDGE_SPENDER_NOT_ALLOWED" | "BRIDGE_ABI_ARRAY_TOO_LONG" | "BRIDGE_ABI_BYTES_OUT_OF_BOUNDS" | "BRIDGE_CALLDATA_DECODE_FAILED" | "BRIDGE_ABI_WORD_OUT_OF_BOUNDS" | "BRIDGE_ABI_OFFSET_OUT_OF_BOUNDS" | "BRIDGE_EXPECTED_ARRAY" | "BRIDGE_EXPECTED_STRING" | "BRIDGE_EXPECTED_TUPLE" | "BRIDGE_EXPECTED_UINT" | "BRIDGE_INVALID_ABI_ADDRESS" | "BRIDGE_INVALID_BOOL" | "BRIDGE_INVALID_CALLDATA" | "BRIDGE_INVALID_HEX" | "BRIDGE_INVALID_SELECTOR" | "BRIDGE_MISSING_CALLDATA" | "BRIDGE_MISSING_SELECTOR" | "BRIDGE_UNSUPPORTED_ABI_TYPE" | "BRIDGE_UNSUPPORTED_METHOD" | "BRIDGE_UNSUPPORTED_CALLDATA_AGGREGATOR" | "BRIDGE_UNRECOGNIZED_MAYAN_PROTOCOL_CALLDATA" | "BRIDGE_UNRECOGNIZED_SOCKET_BRIDGE_CALLDATA" | "BRIDGE_UNRECOGNIZED_SOCKET_ROUTER_CALLDATA" | "BRIDGE_UNSUPPORTED_MAYAN_PROTOCOL_CALLDATA" | "BRIDGE_UNSUPPORTED_NON_EVM_M0_DESTINATION" | "BRIDGE_M0_REFUND_RECIPIENT_MISMATCH" | "BRIDGE_M0_RECEIVER_MISMATCH" | "BRIDGE_ACROSS_FALLBACK_RECEIVER_MISMATCH" | "BRIDGE_ACROSS_FALLBACK_TOKEN_MISMATCH" | "BRIDGE_ACROSS_NATIVE_VALUE_MISMATCH" | "BRIDGE_ACROSS_SWAP_VALUE_MISMATCH" | "BRIDGE_ALLBRIDGE_RECEIVER_MISMATCH" | "BRIDGE_CCIP_REQUIRES_ONE_BRIDGE_ASSET" | "BRIDGE_CENTRIFUGE_REFUND_RECIPIENT_MISMATCH" | "BRIDGE_HYPERLANE_BALANCE_AMOUNT_REQUIRES_EXECUTION_STATE" | "BRIDGE_HYPERLANE_COMMAND_LENGTH_MISMATCH" | "BRIDGE_SOCKET_CCTP_TOKEN_DOES_NOT_MATCH_BRIDGE_ASSET" | "BRIDGE_SOCKET_RFQ_TOKEN_DOES_NOT_MATCH_BRIDGE_ASSET" | "BRIDGE_SOCKET_ALLOWANCE_AMOUNT_MISMATCH" | "BRIDGE_SOCKET_ALLOWANCE_TOKEN_MISMATCH" | "BRIDGE_SOCKET_DEPOSIT_AMOUNT_MISMATCH" | "BRIDGE_SOCKET_NATIVE_VALUE_MISMATCH" | "BRIDGE_BRIDGE_FEES_EXCEED_THE_INPUT_AMOUNT" | "BRIDGE_BRIDGE_OFFSET_EXCEEDS_CALLDATA" | "BRIDGE_BRIDGE_SPLICE_DOES_NOT_TARGET_THE_INPUT_AMOUNT" | "BRIDGE_INVALID_FASTMCTP_REFERRER_FEE" | "BRIDGE_INVALID_SUPERSET_OMNI_TOKEN_PATH" | "BRIDGE_INVALID_BRIDGE_OFFSET" | "BRIDGE_MISSING_HYPERLANE_TRANSFER" | "BRIDGE_MISSING_MEGAETH_DESTINATION_TOKEN" | "BRIDGE_MISSING_DESTINATION" | "BRIDGE_MISSING_DESTINATION_CHAIN" | "BRIDGE_MISSING_MIN_OUTPUT" | "BRIDGE_MISSING_OUTPUT_TOKEN" | "BRIDGE_MISSING_QUOTE_ID" | "BRIDGE_MISSING_RECEIVER" | "BRIDGE_MISSING_RELAY_ORDER_ID" | "BRIDGE_MISSING_SOURCE_AMOUNT" | "BRIDGE_MISSING_SOURCE_TOKEN" | "BRIDGE_MULTIPLE_SOURCE_ASSETS_ARE_NOT_SUPPORTED" | "BRIDGE_SPOKE_POOL_IS_NOT_IN_THE_ALLOWLIST" | "BRIDGE_UNSUPPORTED_HYPERLANE_OPERATION" | "BRIDGE_UNSUPPORTED_RELAY_SOURCE_ASSET_LIST" | "BRIDGE_UNSUPPORTED_SOCKET_CCTP_TARGET_SPENDER_OR_VALUE" | "BRIDGE_UNSUPPORTED_SOCKET_RFQ_TARGET_SPENDER_OR_VALUE" | "BRIDGE_UNSUPPORTED_SOCKET_OPERATOR_OR_ROUTER" | "BRIDGE_UNSUPPORTED_DESTINATION_CALL" | "BRIDGE_UNSUPPORTED_NON_EVM_FRAX_RECEIVER" | "BRIDGE_UNSUPPORTED_SWAPS_XYZ_EXECUTION" | "BRIDGE_QUOTE_ID_MISMATCH" | "BRIDGE_REQUEST_ID_MISMATCH" | "BRIDGE_SOCKET_RFQ_QUOTE_ID_MISMATCH" | "BRIDGE_DEPOSITOR_MISMATCH" | "BRIDGE_FROM_AMOUNT_MISMATCH" | "BRIDGE_FROM_TOKEN_MISMATCH" | "BRIDGE_MIN_RECEIVE_MISMATCH" | "BRIDGE_RECEIVER_MISMATCH" | "BRIDGE_TO_CHAIN_MISMATCH" | "BRIDGE_TO_TOKEN_MISMATCH" | "BRIDGE_PROVIDER_HTTP_ERROR" | "BRIDGE_LAYERSWAP_LOOKUP_TIMED_OUT" | "BRIDGE_LAYERSWAP_ORDER_NOT_FOUND" | "BRIDGE_LAYERSWAP_PAGINATION_DID_NOT_ADVANCE" | "BRIDGE_SOCKET_QUOTE_REQUEST_REJECTED" | "BRIDGE_BACKEND_BUILD_REQUEST_FAILED" | "BRIDGE_BACKEND_QUOTE_REQUEST_FAILED" | "BRIDGE_REQUEST_TIMED_OUT" | "BRIDGE_SERVICE_REQUEST_FAILED" | "BRIDGE_UNSUPPORTED_SERVICE_PATH" | "BRIDGE_LAYERSWAP_AMOUNT_EXCEEDS_TOKEN_PRECISION" | "BRIDGE_LAYERSWAP_BRIDGE_ID_MISMATCH" | "BRIDGE_LAYERSWAP_BRIDGE_INPUT_MISMATCH" | "BRIDGE_LAYERSWAP_CHAIN_MISMATCH" | "BRIDGE_LAYERSWAP_QUOTE_TOKEN_MISMATCH" | "BRIDGE_LAYERSWAP_QUOTED_AMOUNT_CHANGED" | "BRIDGE_LAYERSWAP_RECEIVER_MISMATCH" | "BRIDGE_LAYERSWAP_REFUND_RECIPIENT_MISMATCH" | "BRIDGE_LAYERSWAP_REQUEST_ID_MISMATCH" | "BRIDGE_LAYERSWAP_SOURCE_VALUE_MISMATCH" | "BRIDGE_RELAY_APPROVAL_MISMATCH" | "BRIDGE_RELAY_CANONICAL_DEPOSITORY_MISMATCH" | "BRIDGE_RELAY_DISPLAY_AMOUNT_MISMATCH" | "BRIDGE_RELAY_ORDER_CHAIN_MISMATCH" | "BRIDGE_RELAY_ORDER_HASH_MISMATCH" | "BRIDGE_RELAY_PROTOCOL_CHAIN_MISMATCH" | "BRIDGE_RELAY_REFUND_RECIPIENT_MISMATCH" | "BRIDGE_RELAY_SOURCE_PAYMENT_MISMATCH" | "BRIDGE_RELAY_SOURCE_VALUE_MISMATCH" | "BRIDGE_SOCKET_RFQ_ORDER_MISMATCH" | "BRIDGE_SOCKET_APPROVAL_MISMATCH" | "BRIDGE_SOCKET_BRIDGE_CHAIN_MISMATCH" | "BRIDGE_SOCKET_BRIDGE_OUTPUT_MISMATCH" | "BRIDGE_SOCKET_PUBLIC_APP_FEE_UNSUPPORTED" | "BRIDGE_SOCKET_QUOTE_INPUT_MISMATCH" | "BRIDGE_SOCKET_SOURCE_QUOTE_MISMATCH" | "BRIDGE_AMBIGUOUS_LAYERSWAP_REQUEST_ID" | "BRIDGE_AMBIGUOUS_RELAY_CHAIN" | "BRIDGE_INVALID_LAYERSWAP_AMOUNT" | "BRIDGE_INVALID_LAYERSWAP_OUTPUT_AMOUNT" | "BRIDGE_INVALID_LAYERSWAP_SWAP_ID" | "BRIDGE_INVALID_ADDRESS" | "BRIDGE_INVALID_AMOUNT" | "BRIDGE_INVALID_AMOUNT_EXPONENT" | "BRIDGE_INVALID_ARRAY" | "BRIDGE_INVALID_BYTES" | "BRIDGE_INVALID_FEE_DISPLAY" | "BRIDGE_INVALID_MINIMUM_PRECISION" | "BRIDGE_INVALID_OBJECT" | "BRIDGE_INVALID_RESPONSE" | "BRIDGE_INVALID_SLIPPAGE" | "BRIDGE_INVALID_STRING" | "BRIDGE_MISSING_LAYERSWAP_AMOUNT" | "BRIDGE_PROVIDER_RESPONSE_IS_NOT_VALID_JSON" | "BRIDGE_INVALID_SLIPPAGE_PRECISION" | "BRIDGE_UNSAFE_LAYERSWAP_AMOUNT" | "BRIDGE_UNSAFE_NUMBER" | "BRIDGE_UNSUPPORTED_LAYERSWAP_NON_EVM_RECEIVER" | "BRIDGE_UNSUPPORTED_LAYERSWAP_TRANSACTION" | "BRIDGE_UNSUPPORTED_RELAY_VM" | "BRIDGE_UNSUPPORTED_RELAY_APPROVAL" | "BRIDGE_UNSUPPORTED_RELAY_APPROVAL_COUNT" | "BRIDGE_UNSUPPORTED_RELAY_DEPOSIT" | "BRIDGE_UNSUPPORTED_RELAY_DEPOSIT_COUNT" | "BRIDGE_UNSUPPORTED_RELAY_DEPOSIT_METHOD" | "BRIDGE_UNSUPPORTED_RELAY_ORDER_SHAPE" | "BRIDGE_UNSUPPORTED_RELAY_ORDER_VERSION" | "BRIDGE_UNSUPPORTED_RELAY_STEP" | "BRIDGE_UNSUPPORTED_SOCKET_CCTP_RECEIVER" | "BRIDGE_UNSUPPORTED_SOCKET_SERVICE_ROUTE" | "BRIDGE_UNSUPPORTED_SOCKET_TRANSACTION" | "BRIDGE_LAYERSWAP_TRANSACTION_IS_REQUIRED" | "BRIDGE_A_DIRECT_PROVIDER_QUOTE_IS_REQUIRED" | "BRIDGE_PROVIDER_DESTINATION_UNBOUND" | "BRIDGE_INVALID_TRANSACTION" | "BRIDGE_PROVIDER_CLIENT_CONTEXT_CHANGED" | "BRIDGE_QUOTE_DOES_NOT_MATCH_LOCAL_INTENT" | "BRIDGE_QUOTE_REQUEST_WAS_INVALIDATED" | "BRIDGE_QUOTED_AMOUNT_CHANGED" | "BRIDGE_SOURCE_TRANSACTION_CHANGED" | "BRIDGE_UNVERIFIED_BRIDGE_FIELDS" | "BRIDGE_UNKNOWN";
44
- stage: "input" | "contract" | "decode" | "structure" | "intent" | "provider_request" | "provider_response" | "provider_binding" | "completeness" | "unknown";
45
- errors: BridgeErrorDetail[];
46
- };
47
- export declare class BridgeError extends Error {
48
- readonly error_code: BridgeErrorDetail['error_code'];
49
- readonly stage: BridgeErrorDetail['stage'];
50
- readonly errors: BridgeErrorDetail[];
51
- constructor(definition: BridgeErrorDefinition, context?: BridgeErrorContext, errors?: BridgeErrorDetail[]);
52
- toJSON(): {
53
- name: string;
54
- error_code: "BRIDGE_MISSING_BUILD_API" | "BRIDGE_MISSING_QUOTE_API" | "BRIDGE_DIRECT_PROVIDER_CLIENT_IS_REQUIRED" | "BRIDGE_FROM_ADDRESS_MISMATCH" | "BRIDGE_FROM_CHAIN_MISMATCH" | "BRIDGE_INVALID_SOCKET_API" | "BRIDGE_INVALID_PROVIDER_TIMEOUT" | "BRIDGE_INVALID_QUOTE_KEY" | "BRIDGE_INVALID_TRANSACTION_VALUE" | "BRIDGE_SLIPPAGE_IS_REQUIRED_FOR_THIS_API_CALL" | "BRIDGE_UNSUPPORTED_BRIDGE_AGGREGATOR" | "BRIDGE_UNSUPPORTED_CHAIN" | "BRIDGE_UNSUPPORTED_DIRECT_PROVIDER" | "BRIDGE_UNSUPPORTED_FEE_RATE" | "BRIDGE_UNSUPPORTED_SOURCE_CHAIN" | "BRIDGE_ROUTER_NOT_ALLOWED" | "BRIDGE_SPENDER_NOT_ALLOWED" | "BRIDGE_ABI_ARRAY_TOO_LONG" | "BRIDGE_ABI_BYTES_OUT_OF_BOUNDS" | "BRIDGE_CALLDATA_DECODE_FAILED" | "BRIDGE_ABI_WORD_OUT_OF_BOUNDS" | "BRIDGE_ABI_OFFSET_OUT_OF_BOUNDS" | "BRIDGE_EXPECTED_ARRAY" | "BRIDGE_EXPECTED_STRING" | "BRIDGE_EXPECTED_TUPLE" | "BRIDGE_EXPECTED_UINT" | "BRIDGE_INVALID_ABI_ADDRESS" | "BRIDGE_INVALID_BOOL" | "BRIDGE_INVALID_CALLDATA" | "BRIDGE_INVALID_HEX" | "BRIDGE_INVALID_SELECTOR" | "BRIDGE_MISSING_CALLDATA" | "BRIDGE_MISSING_SELECTOR" | "BRIDGE_UNSUPPORTED_ABI_TYPE" | "BRIDGE_UNSUPPORTED_METHOD" | "BRIDGE_UNSUPPORTED_CALLDATA_AGGREGATOR" | "BRIDGE_UNRECOGNIZED_MAYAN_PROTOCOL_CALLDATA" | "BRIDGE_UNRECOGNIZED_SOCKET_BRIDGE_CALLDATA" | "BRIDGE_UNRECOGNIZED_SOCKET_ROUTER_CALLDATA" | "BRIDGE_UNSUPPORTED_MAYAN_PROTOCOL_CALLDATA" | "BRIDGE_UNSUPPORTED_NON_EVM_M0_DESTINATION" | "BRIDGE_M0_REFUND_RECIPIENT_MISMATCH" | "BRIDGE_M0_RECEIVER_MISMATCH" | "BRIDGE_ACROSS_FALLBACK_RECEIVER_MISMATCH" | "BRIDGE_ACROSS_FALLBACK_TOKEN_MISMATCH" | "BRIDGE_ACROSS_NATIVE_VALUE_MISMATCH" | "BRIDGE_ACROSS_SWAP_VALUE_MISMATCH" | "BRIDGE_ALLBRIDGE_RECEIVER_MISMATCH" | "BRIDGE_CCIP_REQUIRES_ONE_BRIDGE_ASSET" | "BRIDGE_CENTRIFUGE_REFUND_RECIPIENT_MISMATCH" | "BRIDGE_HYPERLANE_BALANCE_AMOUNT_REQUIRES_EXECUTION_STATE" | "BRIDGE_HYPERLANE_COMMAND_LENGTH_MISMATCH" | "BRIDGE_SOCKET_CCTP_TOKEN_DOES_NOT_MATCH_BRIDGE_ASSET" | "BRIDGE_SOCKET_RFQ_TOKEN_DOES_NOT_MATCH_BRIDGE_ASSET" | "BRIDGE_SOCKET_ALLOWANCE_AMOUNT_MISMATCH" | "BRIDGE_SOCKET_ALLOWANCE_TOKEN_MISMATCH" | "BRIDGE_SOCKET_DEPOSIT_AMOUNT_MISMATCH" | "BRIDGE_SOCKET_NATIVE_VALUE_MISMATCH" | "BRIDGE_BRIDGE_FEES_EXCEED_THE_INPUT_AMOUNT" | "BRIDGE_BRIDGE_OFFSET_EXCEEDS_CALLDATA" | "BRIDGE_BRIDGE_SPLICE_DOES_NOT_TARGET_THE_INPUT_AMOUNT" | "BRIDGE_INVALID_FASTMCTP_REFERRER_FEE" | "BRIDGE_INVALID_SUPERSET_OMNI_TOKEN_PATH" | "BRIDGE_INVALID_BRIDGE_OFFSET" | "BRIDGE_MISSING_HYPERLANE_TRANSFER" | "BRIDGE_MISSING_MEGAETH_DESTINATION_TOKEN" | "BRIDGE_MISSING_DESTINATION" | "BRIDGE_MISSING_DESTINATION_CHAIN" | "BRIDGE_MISSING_MIN_OUTPUT" | "BRIDGE_MISSING_OUTPUT_TOKEN" | "BRIDGE_MISSING_QUOTE_ID" | "BRIDGE_MISSING_RECEIVER" | "BRIDGE_MISSING_RELAY_ORDER_ID" | "BRIDGE_MISSING_SOURCE_AMOUNT" | "BRIDGE_MISSING_SOURCE_TOKEN" | "BRIDGE_MULTIPLE_SOURCE_ASSETS_ARE_NOT_SUPPORTED" | "BRIDGE_SPOKE_POOL_IS_NOT_IN_THE_ALLOWLIST" | "BRIDGE_UNSUPPORTED_HYPERLANE_OPERATION" | "BRIDGE_UNSUPPORTED_RELAY_SOURCE_ASSET_LIST" | "BRIDGE_UNSUPPORTED_SOCKET_CCTP_TARGET_SPENDER_OR_VALUE" | "BRIDGE_UNSUPPORTED_SOCKET_RFQ_TARGET_SPENDER_OR_VALUE" | "BRIDGE_UNSUPPORTED_SOCKET_OPERATOR_OR_ROUTER" | "BRIDGE_UNSUPPORTED_DESTINATION_CALL" | "BRIDGE_UNSUPPORTED_NON_EVM_FRAX_RECEIVER" | "BRIDGE_UNSUPPORTED_SWAPS_XYZ_EXECUTION" | "BRIDGE_QUOTE_ID_MISMATCH" | "BRIDGE_REQUEST_ID_MISMATCH" | "BRIDGE_SOCKET_RFQ_QUOTE_ID_MISMATCH" | "BRIDGE_DEPOSITOR_MISMATCH" | "BRIDGE_FROM_AMOUNT_MISMATCH" | "BRIDGE_FROM_TOKEN_MISMATCH" | "BRIDGE_MIN_RECEIVE_MISMATCH" | "BRIDGE_RECEIVER_MISMATCH" | "BRIDGE_TO_CHAIN_MISMATCH" | "BRIDGE_TO_TOKEN_MISMATCH" | "BRIDGE_PROVIDER_HTTP_ERROR" | "BRIDGE_LAYERSWAP_LOOKUP_TIMED_OUT" | "BRIDGE_LAYERSWAP_ORDER_NOT_FOUND" | "BRIDGE_LAYERSWAP_PAGINATION_DID_NOT_ADVANCE" | "BRIDGE_SOCKET_QUOTE_REQUEST_REJECTED" | "BRIDGE_BACKEND_BUILD_REQUEST_FAILED" | "BRIDGE_BACKEND_QUOTE_REQUEST_FAILED" | "BRIDGE_REQUEST_TIMED_OUT" | "BRIDGE_SERVICE_REQUEST_FAILED" | "BRIDGE_UNSUPPORTED_SERVICE_PATH" | "BRIDGE_LAYERSWAP_AMOUNT_EXCEEDS_TOKEN_PRECISION" | "BRIDGE_LAYERSWAP_BRIDGE_ID_MISMATCH" | "BRIDGE_LAYERSWAP_BRIDGE_INPUT_MISMATCH" | "BRIDGE_LAYERSWAP_CHAIN_MISMATCH" | "BRIDGE_LAYERSWAP_QUOTE_TOKEN_MISMATCH" | "BRIDGE_LAYERSWAP_QUOTED_AMOUNT_CHANGED" | "BRIDGE_LAYERSWAP_RECEIVER_MISMATCH" | "BRIDGE_LAYERSWAP_REFUND_RECIPIENT_MISMATCH" | "BRIDGE_LAYERSWAP_REQUEST_ID_MISMATCH" | "BRIDGE_LAYERSWAP_SOURCE_VALUE_MISMATCH" | "BRIDGE_RELAY_APPROVAL_MISMATCH" | "BRIDGE_RELAY_CANONICAL_DEPOSITORY_MISMATCH" | "BRIDGE_RELAY_DISPLAY_AMOUNT_MISMATCH" | "BRIDGE_RELAY_ORDER_CHAIN_MISMATCH" | "BRIDGE_RELAY_ORDER_HASH_MISMATCH" | "BRIDGE_RELAY_PROTOCOL_CHAIN_MISMATCH" | "BRIDGE_RELAY_REFUND_RECIPIENT_MISMATCH" | "BRIDGE_RELAY_SOURCE_PAYMENT_MISMATCH" | "BRIDGE_RELAY_SOURCE_VALUE_MISMATCH" | "BRIDGE_SOCKET_RFQ_ORDER_MISMATCH" | "BRIDGE_SOCKET_APPROVAL_MISMATCH" | "BRIDGE_SOCKET_BRIDGE_CHAIN_MISMATCH" | "BRIDGE_SOCKET_BRIDGE_OUTPUT_MISMATCH" | "BRIDGE_SOCKET_PUBLIC_APP_FEE_UNSUPPORTED" | "BRIDGE_SOCKET_QUOTE_INPUT_MISMATCH" | "BRIDGE_SOCKET_SOURCE_QUOTE_MISMATCH" | "BRIDGE_AMBIGUOUS_LAYERSWAP_REQUEST_ID" | "BRIDGE_AMBIGUOUS_RELAY_CHAIN" | "BRIDGE_INVALID_LAYERSWAP_AMOUNT" | "BRIDGE_INVALID_LAYERSWAP_OUTPUT_AMOUNT" | "BRIDGE_INVALID_LAYERSWAP_SWAP_ID" | "BRIDGE_INVALID_ADDRESS" | "BRIDGE_INVALID_AMOUNT" | "BRIDGE_INVALID_AMOUNT_EXPONENT" | "BRIDGE_INVALID_ARRAY" | "BRIDGE_INVALID_BYTES" | "BRIDGE_INVALID_FEE_DISPLAY" | "BRIDGE_INVALID_MINIMUM_PRECISION" | "BRIDGE_INVALID_OBJECT" | "BRIDGE_INVALID_RESPONSE" | "BRIDGE_INVALID_SLIPPAGE" | "BRIDGE_INVALID_STRING" | "BRIDGE_MISSING_LAYERSWAP_AMOUNT" | "BRIDGE_PROVIDER_RESPONSE_IS_NOT_VALID_JSON" | "BRIDGE_INVALID_SLIPPAGE_PRECISION" | "BRIDGE_UNSAFE_LAYERSWAP_AMOUNT" | "BRIDGE_UNSAFE_NUMBER" | "BRIDGE_UNSUPPORTED_LAYERSWAP_NON_EVM_RECEIVER" | "BRIDGE_UNSUPPORTED_LAYERSWAP_TRANSACTION" | "BRIDGE_UNSUPPORTED_RELAY_VM" | "BRIDGE_UNSUPPORTED_RELAY_APPROVAL" | "BRIDGE_UNSUPPORTED_RELAY_APPROVAL_COUNT" | "BRIDGE_UNSUPPORTED_RELAY_DEPOSIT" | "BRIDGE_UNSUPPORTED_RELAY_DEPOSIT_COUNT" | "BRIDGE_UNSUPPORTED_RELAY_DEPOSIT_METHOD" | "BRIDGE_UNSUPPORTED_RELAY_ORDER_SHAPE" | "BRIDGE_UNSUPPORTED_RELAY_ORDER_VERSION" | "BRIDGE_UNSUPPORTED_RELAY_STEP" | "BRIDGE_UNSUPPORTED_SOCKET_CCTP_RECEIVER" | "BRIDGE_UNSUPPORTED_SOCKET_SERVICE_ROUTE" | "BRIDGE_UNSUPPORTED_SOCKET_TRANSACTION" | "BRIDGE_LAYERSWAP_TRANSACTION_IS_REQUIRED" | "BRIDGE_A_DIRECT_PROVIDER_QUOTE_IS_REQUIRED" | "BRIDGE_PROVIDER_DESTINATION_UNBOUND" | "BRIDGE_INVALID_TRANSACTION" | "BRIDGE_PROVIDER_CLIENT_CONTEXT_CHANGED" | "BRIDGE_QUOTE_DOES_NOT_MATCH_LOCAL_INTENT" | "BRIDGE_QUOTE_REQUEST_WAS_INVALIDATED" | "BRIDGE_QUOTED_AMOUNT_CHANGED" | "BRIDGE_SOURCE_TRANSACTION_CHANGED" | "BRIDGE_UNVERIFIED_BRIDGE_FIELDS" | "BRIDGE_UNKNOWN";
55
- stage: "input" | "contract" | "decode" | "structure" | "intent" | "provider_request" | "provider_response" | "provider_binding" | "completeness" | "unknown";
56
- errors: BridgeErrorDetail[];
57
- };
58
- }
59
- /** Preserve typed SDK failures; never copy an arbitrary transport exception into a report. */
60
- export declare const asBridgeError: (error: unknown, fallback?: BridgeErrorDefinition, context?: BridgeErrorContext) => BridgeError;
61
- export type BridgeErrorReport = ReturnType<BridgeError['toJSON']>;
62
- export type BridgeErrorReporter = (error: BridgeErrorReport) => void | Promise<void>;
63
- /** Accept a check/decode result or exception; never serialize the result's parsed transaction. */
64
- export declare const toBridgeErrorReport: (value: unknown) => BridgeErrorReport | undefined;
65
- /** Only used when an invalid quote is filtered; directly thrown failures stay with the caller. */
66
- export declare const reportBridgeError: (report: BridgeErrorReporter | undefined, error: BridgeError, context: BridgeErrorContext) => void;
@@ -1,53 +0,0 @@
1
- import { BRIDGE_ERRORS } from './constants.js';
2
- import { sanitizeBridgeError } from './sanitize.js';
3
- export { BRIDGE_ERRORS } from './constants.js';
4
- export const bridgeFailure = (errors) => {
5
- const failures = (errors.length ? errors : [BRIDGE_ERRORS.UNKNOWN]).map(sanitizeBridgeError);
6
- return { ok: false, reason: failures.map((error) => error.message).join(','),
7
- error_code: failures[0].error_code, stage: failures[0].stage, errors: failures };
8
- };
9
- export class BridgeError extends Error {
10
- constructor(definition, context = {}, errors) {
11
- const failures = (errors?.length ? errors : [definition]).map((error) => sanitizeBridgeError({ ...error, ...context }));
12
- super(failures.map((error) => error.message).join(','));
13
- this.name = 'BridgeError';
14
- this.errors = failures;
15
- this.error_code = failures[0].error_code;
16
- this.stage = failures[0].stage;
17
- }
18
- toJSON() {
19
- const errors = (this.errors.length ? this.errors : [BRIDGE_ERRORS.UNKNOWN]).map(sanitizeBridgeError);
20
- const name = ['BridgeError', 'InvalidBridgeCalldataError', 'InvalidBridgeContractError', 'InvalidBridgeProviderError'].includes(this.name)
21
- ? this.name : 'BridgeError';
22
- return { name, error_code: errors[0].error_code, stage: errors[0].stage, errors };
23
- }
24
- }
25
- /** Preserve typed SDK failures; never copy an arbitrary transport exception into a report. */
26
- export const asBridgeError = (error, fallback = BRIDGE_ERRORS.UNKNOWN, context = {}) => {
27
- if (error instanceof BridgeError) {
28
- error.errors.splice(0, error.errors.length, ...error.errors.map((detail) => sanitizeBridgeError({ ...detail, ...context })));
29
- return error;
30
- }
31
- return new BridgeError(fallback, context);
32
- };
33
- /** Accept a check/decode result or exception; never serialize the result's parsed transaction. */
34
- export const toBridgeErrorReport = (value) => {
35
- if (value instanceof BridgeError)
36
- return value.toJSON();
37
- const result = value && typeof value === 'object' ? value : {};
38
- if (result.ok === true || (result.pass === true && Array.isArray(result.errors) && !result.errors.length))
39
- return undefined;
40
- const errors = Array.isArray(result.errors) ? result.errors.slice(0, 32).map(sanitizeBridgeError) : undefined;
41
- return new BridgeError(BRIDGE_ERRORS.UNKNOWN, {}, errors).toJSON();
42
- };
43
- /** Only used when an invalid quote is filtered; directly thrown failures stay with the caller. */
44
- export const reportBridgeError = (report, error, context) => {
45
- if (!report)
46
- return;
47
- try {
48
- const payload = asBridgeError(error, BRIDGE_ERRORS.UNKNOWN, context).toJSON();
49
- void Promise.resolve(report(payload))
50
- .catch(() => { });
51
- }
52
- catch { /* Reporting must not change which transactions pass validation. */ }
53
- };
@@ -1,3 +0,0 @@
1
- import type { BridgeErrorDetail } from './index.js';
2
- /** A reporting allowlist, not an object spread: unknown labels and arbitrary properties never escape. */
3
- export declare const sanitizeBridgeError: (value: unknown) => BridgeErrorDetail;
@@ -1,74 +0,0 @@
1
- import { BRIDGE_AGGREGATORS } from '../consts.js';
2
- import { SERVER_ID_TO_CHAIN_ENUM } from '../chains.js';
3
- import { evmChainId } from '../calldata/chains.js';
4
- import { BRIDGE_ERRORS } from './constants.js';
5
- const definitions = new Map(Object.values(BRIDGE_ERRORS).map((error) => [error.error_code, { ...error }]));
6
- const chains = new Set(Object.entries(SERVER_ID_TO_CHAIN_ENUM).flatMap(([id, chain]) => [id, chain, evmChainId(id)?.toString()].filter((value) => typeof value === 'string')));
7
- const bridges = new Set([
8
- ...BRIDGE_AGGREGATORS, 'celercircle', 'celercirclefast', 'gnosis', 'layerswap', 'lifiIntents',
9
- 'mayanMCTP', 'paxos', 'polygon', 'polymer', 'polymerStandard', 'superset', 'FASTMCTP',
10
- 'arbitrum-native', 'ccip', 'cctp-v2', 'cctp-v2-slow', 'eco', 'gnosis-native', 'native-op-stack',
11
- 'oft', 'polygon-native', 'rfq-vault-executor', 'robinhood-native', 'swaps-xyz', 'megaeth',
12
- 'centrifuge', 'frax', 'm0', 'allbridge', 'garden', 'gaszip', 'squid',
13
- ]);
14
- const methods = new Set([
15
- 'bridge', 'swapAndBridge', 'deposit', 'depositErc20', 'depositErc20Allowance', 'depositNative',
16
- 'depositNow', 'depositV3', 'depositV3Now', 'exec', 'forwardERC20', 'forwardEth', 'multicall',
17
- 'permit2TransferAndMulticall', 'permit3009TransferAndMulticall', 'permit3009TransferAndMulticallSigned',
18
- 'permitTransferAndMulticall', 'permitTransferAndMulticallLegacy', 'transferAndMulticall',
19
- 'swapAndForwardERC20', 'swapAndForwardEth', 'startBridgeTokensViaAcrossV4ERC20Min', 'startBridgeTokensViaAcrossV4NativeMin',
20
- ...['AcrossV4', 'AllBridge', 'CelerCircleBridge', 'Centrifuge', 'Frax', 'Garden', 'GasZip',
21
- 'GnosisBridge', 'LayerSwap', 'LiFiIntentEscrowV2', 'M0', 'Mayan', 'MegaETHBridge', 'PaxosTransit',
22
- 'PolygonBridge', 'PolymerCCTP', 'RelayDepository', 'Squid', 'Stargate', 'Superset']
23
- .flatMap((name) => [`startBridgeTokensVia${name}`, `swapAndStartBridgeTokensVia${name}`]),
24
- ...['Single', 'Multiple'].flatMap((kind) => ['ERC20ToERC20', 'ERC20ToNative', 'NativeToERC20']
25
- .map((assets) => `swapTokens${kind}V3${assets}`)),
26
- ]);
27
- const fields = new Set(['sourceToken', 'sourceAmount', 'outputToken', 'minOutputAmount', 'receiver', 'destinationChainId']);
28
- const selector = (value) => typeof value === 'string' && /^0x[0-9a-f]{8}$/i.test(value);
29
- /** A reporting allowlist, not an object spread: unknown labels and arbitrary properties never escape. */
30
- export const sanitizeBridgeError = (value) => {
31
- const raw = value && typeof value === 'object' ? value : {};
32
- const definition = typeof raw.error_code === 'string' ? definitions.get(raw.error_code) : undefined;
33
- const result = { ...(definition ?? BRIDGE_ERRORS.UNKNOWN) };
34
- for (const [key, allowed] of [
35
- ['aggregatorId', new Set(BRIDGE_AGGREGATORS)], ['provider', new Set(['relay', 'socket', 'layerswap', 'context'])],
36
- ['bridgeId', bridges], ['chainId', chains], ['toChainId', chains], ['method', methods],
37
- ['operation', new Set(['getQuote', 'buildTx', 'verifyTx', 'verifyLayerSwapTx'])],
38
- ['requestKind', new Set(['relay_chains', 'relay_quote', 'socket_quote', 'layerswap_orders', 'backend_quote', 'backend_build'])],
39
- ['calldataFormat', new Set(['missing', 'empty', 'valid', 'invalid'])],
40
- ]) {
41
- const item = raw[key];
42
- if (typeof item === 'string') {
43
- if (allowed.has(item))
44
- Object.assign(result, { [key]: item });
45
- else if (['aggregatorId', 'provider', 'bridgeId', 'chainId', 'toChainId'].includes(key))
46
- Object.assign(result, { [key]: 'unknown' });
47
- }
48
- }
49
- for (const key of ['selector', 'routerSelector', 'protocolSelector']) {
50
- const item = raw[key];
51
- if (selector(item))
52
- result[key] = item.toLowerCase();
53
- }
54
- for (const key of ['calldataBytes', 'routerCalldataBytes', 'protocolCalldataBytes', 'destinationCalldataBytes',
55
- 'destinationCallCount', 'abiOffset', 'abiBufferBytes', 'commandCount']) {
56
- const item = raw[key];
57
- if (typeof item === 'number' && Number.isSafeInteger(item) && item >= 0 && item <= 10000000)
58
- result[key] = item;
59
- }
60
- if (typeof raw.commandByte === 'number' && Number.isInteger(raw.commandByte) && raw.commandByte >= 0 && raw.commandByte <= 255)
61
- result.commandByte = raw.commandByte;
62
- if (typeof raw.httpStatus === 'number' && Number.isInteger(raw.httpStatus) && raw.httpStatus >= 100 && raw.httpStatus <= 599)
63
- result.httpStatus = raw.httpStatus;
64
- for (const key of ['hasDestinationCall', 'lite', 'blocking', 'pass', 'routerPass', 'fromPass', 'toPass', 'receiverPass']) {
65
- const item = raw[key];
66
- if (typeof item === 'boolean')
67
- result[key] = item;
68
- }
69
- if (Array.isArray(raw.destinationSelectors))
70
- result.destinationSelectors = [...new Set(raw.destinationSelectors.filter(selector).map((item) => item.toLowerCase()))].slice(0, 16);
71
- if (Array.isArray(raw.unverifiedFields))
72
- result.unverifiedFields = [...new Set(raw.unverifiedFields.filter((item) => typeof item === 'string' && fields.has(item)))];
73
- return result;
74
- };
@@ -1,23 +0,0 @@
1
- import type { BridgeCalldataTx, ParsedBridgeCall } from '../calldata/types.js';
2
- import type { BridgeQuoteListParams, BridgeTx } from '../quote.js';
3
- export type JsonObject = Record<string, unknown>;
4
- export declare const object: (value: unknown) => JsonObject;
5
- export declare const array: (value: unknown) => unknown[];
6
- export declare const text: (value: unknown) => string;
7
- export declare const address: (value: unknown) => string;
8
- export declare const bytes: (value: unknown, size?: number) => string;
9
- export declare const uint: (value: unknown, bits?: number) => bigint;
10
- export declare const chain: (value: string) => bigint;
11
- export declare const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
12
- export declare const tokenAddress: (value: string, chainId: string) => string;
13
- /** Include every user-controlled condition; never use backend quote fields as intent. */
14
- export declare const intentKey: (params: BridgeQuoteListParams) => string;
15
- export declare const slippageBps: (value: string | undefined) => number;
16
- export declare const assertIntent: (parsed: ParsedBridgeCall, params: BridgeQuoteListParams, expectedAmount: bigint, minimumQuantum?: bigint) => void;
17
- /** Copy only signing fields; never carry arbitrary keys supplied by a service. */
18
- export declare const transaction: (value: unknown, params: BridgeQuoteListParams) => BridgeTx;
19
- export declare const sameTransaction: (left: BridgeCalldataTx, right: BridgeCalldataTx) => boolean;
20
- export declare const feeDisplay: (raw: unknown, usd?: unknown) => {
21
- raw_amount_hex_str: string;
22
- usd_value: number;
23
- };
@@ -1,116 +0,0 @@
1
- import { sourceAmountMatches } from '../calldata/expect.js';
2
- import { BRIDGE_ERRORS, BridgeError } from '../errors/index.js';
3
- import { evmChainId } from '../calldata/chains.js';
4
- import { txValue } from '../calldata/types.js';
5
- export const object = (value) => {
6
- if (!value || typeof value !== 'object' || Array.isArray(value))
7
- throw new BridgeError(BRIDGE_ERRORS.INVALID_OBJECT);
8
- return value;
9
- };
10
- export const array = (value) => {
11
- if (!Array.isArray(value))
12
- throw new BridgeError(BRIDGE_ERRORS.INVALID_ARRAY);
13
- return value;
14
- };
15
- export const text = (value) => {
16
- if (typeof value !== 'string')
17
- throw new BridgeError(BRIDGE_ERRORS.INVALID_STRING);
18
- return value;
19
- };
20
- export const address = (value) => {
21
- const result = text(value).toLowerCase();
22
- if (!/^0x[0-9a-f]{40}$/.test(result))
23
- throw new BridgeError(BRIDGE_ERRORS.INVALID_ADDRESS);
24
- return result;
25
- };
26
- export const bytes = (value, size) => {
27
- const result = text(value).toLowerCase();
28
- if (!/^0x([0-9a-f]{2})*$/.test(result) || (size !== undefined && result.length !== 2 + size * 2))
29
- throw new BridgeError(BRIDGE_ERRORS.INVALID_BYTES);
30
- return result;
31
- };
32
- export const uint = (value, bits = 256) => {
33
- if (typeof value === 'number' && !Number.isSafeInteger(value))
34
- throw new BridgeError(BRIDGE_ERRORS.UNSAFE_NUMBER);
35
- if (!['string', 'number', 'bigint'].includes(typeof value) || !/^(0x[0-9a-f]+|[0-9]+)$/i.test(String(value)))
36
- throw new BridgeError(BRIDGE_ERRORS.INVALID_AMOUNT);
37
- const n = BigInt(value);
38
- if (n < 0n || n >= 1n << BigInt(bits))
39
- throw new BridgeError(BRIDGE_ERRORS.INVALID_AMOUNT);
40
- return n;
41
- };
42
- export const chain = (value) => {
43
- const id = evmChainId(value);
44
- if (id === undefined || id > BigInt(Number.MAX_SAFE_INTEGER))
45
- throw new BridgeError(BRIDGE_ERRORS.UNSUPPORTED_CHAIN);
46
- return id;
47
- };
48
- export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
49
- export const tokenAddress = (value, chainId) => {
50
- if (value.toLowerCase() === '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' ||
51
- evmChainId(value) === chain(chainId))
52
- return ZERO_ADDRESS;
53
- return address(value);
54
- };
55
- /** Include every user-controlled condition; never use backend quote fields as intent. */
56
- export const intentKey = (params) => JSON.stringify([
57
- address(params.userAddress), chain(params.fromChainId).toString(), tokenAddress(params.fromTokenId, params.fromChainId),
58
- uint(params.fromTokenRawAmount).toString(), chain(params.toChainId).toString(), tokenAddress(params.toTokenId, params.toChainId),
59
- slippageBps(params.slippage), params.feeRate ?? 0.25,
60
- ]);
61
- export const slippageBps = (value) => {
62
- if (!value || !/^(0|0?\.[0-9]{1,4})$/.test(value))
63
- throw new BridgeError(BRIDGE_ERRORS.INVALID_SLIPPAGE_PRECISION);
64
- const n = Number(value) * 10000;
65
- if (!Number.isFinite(n) || n < 0 || n >= 10000)
66
- throw new BridgeError(BRIDGE_ERRORS.INVALID_SLIPPAGE);
67
- return Math.round(n);
68
- };
69
- export const assertIntent = (parsed, params, expectedAmount, minimumQuantum = 1n) => {
70
- const errors = [];
71
- if (parsed.sourceToken !== tokenAddress(params.fromTokenId, params.fromChainId) &&
72
- tokenAddress(parsed.sourceToken ?? '', params.fromChainId) !== tokenAddress(params.fromTokenId, params.fromChainId))
73
- errors.push(BRIDGE_ERRORS.FROM_TOKEN_MISMATCH);
74
- if (!sourceAmountMatches(parsed.sourceAmount, uint(params.fromTokenRawAmount)) || parsed.sourceAmount === 0n)
75
- errors.push(BRIDGE_ERRORS.FROM_AMOUNT_MISMATCH);
76
- if (parsed.destinationChainId !== chain(params.toChainId))
77
- errors.push(BRIDGE_ERRORS.TO_CHAIN_MISMATCH);
78
- if (tokenAddress(parsed.outputToken ?? '', params.toChainId) !== tokenAddress(params.toTokenId, params.toChainId))
79
- errors.push(BRIDGE_ERRORS.TO_TOKEN_MISMATCH);
80
- if (parsed.receiver !== address(params.userAddress))
81
- errors.push(BRIDGE_ERRORS.RECEIVER_MISMATCH);
82
- // LayerSwap floors the minimum to its provider-declared token precision.
83
- if (minimumQuantum < 1n)
84
- throw new BridgeError(BRIDGE_ERRORS.INVALID_MINIMUM_PRECISION);
85
- const minimum = expectedAmount * BigInt(10000 - slippageBps(params.slippage)) / 10000n / minimumQuantum * minimumQuantum;
86
- if (expectedAmount <= 0n || minimum <= 0n || parsed.minOutputAmount === undefined || parsed.minOutputAmount < minimum)
87
- errors.push(BRIDGE_ERRORS.MIN_RECEIVE_MISMATCH);
88
- if (errors.length)
89
- throw new BridgeError(errors[0], { ...parsed.diagnostics, method: parsed.method }, errors);
90
- };
91
- /** Copy only signing fields; never carry arbitrary keys supplied by a service. */
92
- export const transaction = (value, params) => {
93
- const raw = object(value);
94
- const chainId = uint(raw.chainId);
95
- if (chainId !== chain(params.fromChainId))
96
- throw new BridgeError(BRIDGE_ERRORS.FROM_CHAIN_MISMATCH);
97
- const from = raw.from === undefined ? address(params.userAddress) : address(raw.from);
98
- if (from !== address(params.userAddress))
99
- throw new BridgeError(BRIDGE_ERRORS.FROM_ADDRESS_MISMATCH);
100
- const result = {
101
- from, to: address(raw.to), data: bytes(raw.data), value: `0x${uint(raw.value ?? '0').toString(16)}`, chainId: Number(chainId),
102
- };
103
- for (const key of ['gas', 'gasLimit', 'gasPrice', 'maxFeePerGas', 'maxPriorityFeePerGas']) {
104
- if (raw[key] !== undefined)
105
- result[key] = `0x${uint(raw[key]).toString(16)}`;
106
- }
107
- return result;
108
- };
109
- export const sameTransaction = (left, right) => {
110
- return address(left.to) === address(right.to) && address(left.from) === address(right.from) &&
111
- uint(left.chainId) === uint(right.chainId) && bytes(left.data) === bytes(right.data) && txValue(left) === txValue(right);
112
- };
113
- export const feeDisplay = (raw, usd) => ({
114
- raw_amount_hex_str: `0x${uint(raw ?? '0').toString(16)}`,
115
- usd_value: typeof usd === 'string' || typeof usd === 'number' ? Number(usd) || 0 : 0,
116
- });
@@ -1,7 +0,0 @@
1
- import { BridgeError } from '../errors/index.js';
2
- import type { BridgeErrorDefinition } from '../errors/index.js';
3
- export declare class InvalidBridgeProviderError extends BridgeError {
4
- readonly provider: string;
5
- readonly reason: string;
6
- constructor(provider: string, error: BridgeErrorDefinition | BridgeError | string);
7
- }
@@ -1,10 +0,0 @@
1
- import { BRIDGE_ERRORS, BridgeError } from '../errors/index.js';
2
- export class InvalidBridgeProviderError extends BridgeError {
3
- constructor(provider, error) {
4
- super(BRIDGE_ERRORS.INVALID_RESPONSE, { provider }, error instanceof BridgeError ? error.errors : [typeof error === 'string' ? BRIDGE_ERRORS.INVALID_RESPONSE : error]);
5
- this.provider = provider;
6
- this.reason = typeof error === 'string' ? error : this.message;
7
- this.message = `Bridge provider validation failed for ${provider}: ${this.reason}`;
8
- this.name = 'InvalidBridgeProviderError';
9
- }
10
- }
@@ -1,9 +0,0 @@
1
- import type { BridgeBuildTxParams, BridgeTx } from '../quote.js';
2
- import type { ProviderQuoteData } from './relay.js';
3
- export declare const readLayerSwapDeposit: (tx: BridgeTx, params: BridgeBuildTxParams) => {
4
- tx: BridgeTx;
5
- parsed: import("../calldata/types.js").ParsedBridgeCall;
6
- };
7
- export declare const layerSwapSequence: (row: unknown) => bigint;
8
- export declare const readLayerSwapOrder: (raw: unknown, params: BridgeBuildTxParams, deposit: ReturnType<typeof readLayerSwapDeposit>) => ProviderQuoteData;
9
- export declare const layerSwapOrderRows: (raw: unknown) => unknown[];
@@ -1,95 +0,0 @@
1
- import { BRIDGE_ERRORS, BridgeError } from '../errors/index.js';
2
- import { decodeCall, asRecord, asString } from '../calldata/abi.js';
3
- import { decodeBridgeCalldataResult } from '../calldata/index.js';
4
- import { bridgeDataParam, layerSwapDataParam, swapDataArrayParam } from '../calldata/lifi/params.js';
5
- import { address, array, bytes, chain, object, text, tokenAddress, transaction, uint, ZERO_ADDRESS } from './data.js';
6
- /** The API uses decimal quantities, sometimes in scientific notation. No float multiplication. */
7
- const decimalAmount = (value, decimals) => {
8
- if (typeof value === 'number' && (!Number.isFinite(value) || value < 0 ||
9
- (Number.isInteger(value) && !Number.isSafeInteger(value))))
10
- throw new BridgeError(BRIDGE_ERRORS.UNSAFE_LAYERSWAP_AMOUNT);
11
- if (typeof value !== 'string' && typeof value !== 'number')
12
- throw new BridgeError(BRIDGE_ERRORS.MISSING_LAYERSWAP_AMOUNT);
13
- const match = /^(\d+)(?:\.(\d+))?(?:e([+-]?\d+))?$/i.exec(String(value));
14
- if (!match)
15
- throw new BridgeError(BRIDGE_ERRORS.INVALID_LAYERSWAP_AMOUNT);
16
- const fraction = match[2] ?? '';
17
- const exponent = Number(match[3] ?? 0);
18
- if (!Number.isSafeInteger(exponent) || Math.abs(exponent) > 255)
19
- throw new BridgeError(BRIDGE_ERRORS.INVALID_AMOUNT_EXPONENT);
20
- const scale = decimals + exponent - fraction.length;
21
- const digits = BigInt(match[1] + fraction);
22
- if (scale >= 0)
23
- return uint(digits * 10n ** BigInt(scale));
24
- const divisor = 10n ** BigInt(-scale);
25
- if (digits % divisor !== 0n)
26
- throw new BridgeError(BRIDGE_ERRORS.LAYERSWAP_AMOUNT_EXCEEDS_TOKEN_PRECISION);
27
- return uint(digits / divisor);
28
- };
29
- const token = (raw, chainId) => {
30
- const t = object(raw);
31
- const decimals = Number(uint(t.decimals, 8));
32
- return { address: t.contract === null ? ZERO_ADDRESS : tokenAddress(text(t.contract), chainId), decimals,
33
- precision: t.precision === undefined ? decimals : Number(uint(t.precision, 8)) };
34
- };
35
- export const readLayerSwapDeposit = (tx, params) => {
36
- if (params.bridgeId !== 'layerswap')
37
- throw new BridgeError(BRIDGE_ERRORS.LAYERSWAP_BRIDGE_ID_MISMATCH);
38
- const sourceTx = transaction(tx, params);
39
- const decodedResult = decodeBridgeCalldataResult('lifi', sourceTx);
40
- if (!decodedResult.ok)
41
- throw new BridgeError(BRIDGE_ERRORS.INVALID_CALLDATA, {}, decodedResult.errors);
42
- const parsed = decodedResult.parsed;
43
- if (!parsed || !parsed.method.endsWith('ViaLayerSwap') || !parsed.orderId || !parsed.receiver)
44
- throw new BridgeError(BRIDGE_ERRORS.UNSUPPORTED_LAYERSWAP_TRANSACTION);
45
- const args = decodeCall([bridgeDataParam,
46
- ...(parsed.method.startsWith('swapAnd') ? [swapDataArrayParam] : []), layerSwapDataParam], sourceTx.data);
47
- const layerData = asRecord(args.layerSwapData);
48
- if (asString(layerData.refundRecipient) !== address(params.userAddress))
49
- throw new BridgeError(BRIDGE_ERRORS.LAYERSWAP_REFUND_RECIPIENT_MISMATCH);
50
- if (uint(asString(layerData.nonEVMReceiver)) !== 0n)
51
- throw new BridgeError(BRIDGE_ERRORS.UNSUPPORTED_LAYERSWAP_NON_EVM_RECEIVER);
52
- const native = tokenAddress(parsed.sourceToken ?? '', params.fromChainId) === ZERO_ADDRESS;
53
- if (uint(sourceTx.value) !== (native ? parsed.sourceAmount : 0n))
54
- throw new BridgeError(BRIDGE_ERRORS.LAYERSWAP_SOURCE_VALUE_MISMATCH);
55
- return { tx: sourceTx, parsed };
56
- };
57
- export const layerSwapSequence = (row) => uint(object(object(object(row).swap).metadata).sequence_number);
58
- export const readLayerSwapOrder = (raw, params, deposit) => {
59
- const row = object(raw), swap = object(row.swap), quote = object(row.quote);
60
- const { parsed, tx } = deposit;
61
- if (layerSwapSequence(row) !== uint(parsed.orderId))
62
- throw new BridgeError(BRIDGE_ERRORS.LAYERSWAP_REQUEST_ID_MISMATCH);
63
- if (typeof swap.id !== 'string' || !/^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i.test(swap.id))
64
- throw new BridgeError(BRIDGE_ERRORS.INVALID_LAYERSWAP_SWAP_ID);
65
- const assertNetworks = (data) => {
66
- if (object(data.source_network).type !== 'evm' || object(data.destination_network).type !== 'evm' ||
67
- uint(object(data.source_network).chain_id) !== chain(params.fromChainId) ||
68
- uint(object(data.destination_network).chain_id) !== chain(params.toChainId))
69
- throw new BridgeError(BRIDGE_ERRORS.LAYERSWAP_CHAIN_MISMATCH);
70
- };
71
- assertNetworks(swap);
72
- assertNetworks(quote);
73
- const source = token(swap.source_token, params.fromChainId), destination = token(swap.destination_token, params.toChainId);
74
- const quotedSource = token(quote.source_token, params.fromChainId), quotedDestination = token(quote.destination_token, params.toChainId);
75
- if (source.address !== quotedSource.address || source.decimals !== quotedSource.decimals ||
76
- destination.address !== quotedDestination.address || destination.decimals !== quotedDestination.decimals ||
77
- destination.precision !== quotedDestination.precision || destination.precision > destination.decimals)
78
- throw new BridgeError(BRIDGE_ERRORS.LAYERSWAP_QUOTE_TOKEN_MISMATCH);
79
- if (source.address !== tokenAddress(parsed.bridgeToken ?? parsed.sourceToken ?? '', params.fromChainId) ||
80
- decimalAmount(swap.requested_amount, source.decimals) !== parsed.bridgeAmount ||
81
- decimalAmount(quote.requested_amount, source.decimals) !== parsed.bridgeAmount)
82
- throw new BridgeError(BRIDGE_ERRORS.LAYERSWAP_BRIDGE_INPUT_MISMATCH);
83
- const receiver = address(swap.destination_address);
84
- if (receiver !== parsed.receiver || receiver !== address(params.userAddress))
85
- throw new BridgeError(BRIDGE_ERRORS.LAYERSWAP_RECEIVER_MISMATCH);
86
- const expectedAmount = decimalAmount(quote.receive_amount, destination.decimals);
87
- const minOutputAmount = decimalAmount(quote.min_receive_amount, destination.decimals);
88
- if (expectedAmount <= 0n || minOutputAmount <= 0n || minOutputAmount > expectedAmount)
89
- throw new BridgeError(BRIDGE_ERRORS.INVALID_LAYERSWAP_OUTPUT_AMOUNT);
90
- return { tx, parsed: { ...parsed, outputToken: destination.address, minOutputAmount, receiver, unresolvedFields: [] },
91
- expectedAmount,
92
- orderId: bytes(parsed.orderId, 32), requestId: bytes(parsed.orderId, 32), approveAddress: '',
93
- minimumQuantum: 10n ** BigInt(destination.decimals - destination.precision) };
94
- };
95
- export const layerSwapOrderRows = (raw) => array(object(raw).data);
@@ -1,59 +0,0 @@
1
- import type { ParsedBridgeCall } from '../calldata/types.js';
2
- import type { BridgeQuoteListParams, BridgeTx } from '../quote.js';
3
- export type RelayChain = {
4
- evmId: bigint;
5
- protocolId: string;
6
- depository: string;
7
- };
8
- export declare const relayChains: (value: unknown) => RelayChain[];
9
- export declare const relayOrder: (raw: unknown, metadata: RelayChain[]) => {
10
- version: string;
11
- solverChainId: string;
12
- solver: string;
13
- salt: string;
14
- inputs: {
15
- payment: {
16
- chainId: string;
17
- currency: string;
18
- amount: string;
19
- weight: string;
20
- };
21
- refunds: {
22
- chainId: string;
23
- recipient: string;
24
- currency: string;
25
- minimumAmount: string;
26
- deadline: string;
27
- extraData: string;
28
- }[];
29
- }[];
30
- output: {
31
- chainId: string;
32
- deadline: string;
33
- extraData: string;
34
- calls: string[];
35
- payments: {
36
- recipient: string;
37
- currency: string;
38
- minimumAmount: string;
39
- expectedAmount: string;
40
- }[];
41
- };
42
- fees: {
43
- recipientChainId: string;
44
- recipient: string;
45
- currencyChainId: string;
46
- currency: string;
47
- amount: string;
48
- }[];
49
- };
50
- export type ProviderQuoteData = {
51
- tx: BridgeTx;
52
- parsed: ParsedBridgeCall;
53
- expectedAmount: bigint;
54
- approveAddress: string;
55
- orderId: string;
56
- requestId: string;
57
- minimumQuantum?: bigint;
58
- };
59
- export declare const readRelayQuote: (raw: unknown, params: BridgeQuoteListParams, metadata: RelayChain[]) => ProviderQuoteData;