@rabby-wallet/rabby-bridge 0.0.13-alpha.0 → 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.
- package/README.md +1 -131
- package/dist/chains.d.ts +2 -1
- package/dist/chains.js +2 -0
- package/dist/data.d.ts +3 -0
- package/dist/data.js +3 -0
- package/dist/index.d.ts +1 -7
- package/dist/index.js +0 -3
- package/dist/quote.d.ts +4 -18
- package/dist/quote.js +65 -282
- package/package.json +3 -13
- package/dist/calldata/abi.d.ts +0 -29
- package/dist/calldata/abi.js +0 -160
- package/dist/calldata/across/deposit.d.ts +0 -2
- package/dist/calldata/across/deposit.js +0 -36
- package/dist/calldata/across/depositNative.d.ts +0 -2
- package/dist/calldata/across/depositNative.js +0 -45
- package/dist/calldata/across/depositNow.d.ts +0 -2
- package/dist/calldata/across/depositNow.js +0 -35
- package/dist/calldata/across/depositV3.d.ts +0 -2
- package/dist/calldata/across/depositV3.js +0 -35
- package/dist/calldata/across/depositV3Now.d.ts +0 -2
- package/dist/calldata/across/depositV3Now.js +0 -34
- package/dist/calldata/across/index.d.ts +0 -4
- package/dist/calldata/across/index.js +0 -31
- package/dist/calldata/across/swapAndBridge.d.ts +0 -2
- package/dist/calldata/across/swapAndBridge.js +0 -70
- package/dist/calldata/across/validate.d.ts +0 -3
- package/dist/calldata/across/validate.js +0 -30
- package/dist/calldata/chains.d.ts +0 -2
- package/dist/calldata/chains.js +0 -35
- package/dist/calldata/destination.d.ts +0 -6
- package/dist/calldata/destination.js +0 -148
- package/dist/calldata/diagnostics.d.ts +0 -4
- package/dist/calldata/diagnostics.js +0 -18
- package/dist/calldata/expect.d.ts +0 -25
- package/dist/calldata/expect.js +0 -129
- package/dist/calldata/hex.d.ts +0 -6
- package/dist/calldata/hex.js +0 -46
- package/dist/calldata/index.d.ts +0 -20
- package/dist/calldata/index.js +0 -85
- package/dist/calldata/lifi/across/acrossV4Erc20Min.d.ts +0 -2
- package/dist/calldata/lifi/across/acrossV4Erc20Min.js +0 -26
- package/dist/calldata/lifi/across/acrossV4NativeMin.d.ts +0 -2
- package/dist/calldata/lifi/across/acrossV4NativeMin.js +0 -22
- package/dist/calldata/lifi/across/index.d.ts +0 -6
- package/dist/calldata/lifi/across/index.js +0 -19
- package/dist/calldata/lifi/allbridge/index.d.ts +0 -3
- package/dist/calldata/lifi/allbridge/index.js +0 -26
- package/dist/calldata/lifi/celer/index.d.ts +0 -4
- package/dist/calldata/lifi/celer/index.js +0 -10
- package/dist/calldata/lifi/centrifuge/index.d.ts +0 -3
- package/dist/calldata/lifi/centrifuge/index.js +0 -22
- package/dist/calldata/lifi/frax/index.d.ts +0 -4
- package/dist/calldata/lifi/frax/index.js +0 -29
- package/dist/calldata/lifi/garden/index.d.ts +0 -3
- package/dist/calldata/lifi/garden/index.js +0 -22
- package/dist/calldata/lifi/gaszip/index.d.ts +0 -6
- package/dist/calldata/lifi/gaszip/index.js +0 -15
- package/dist/calldata/lifi/index.d.ts +0 -4
- package/dist/calldata/lifi/index.js +0 -60
- package/dist/calldata/lifi/intents/index.d.ts +0 -4
- package/dist/calldata/lifi/intents/index.js +0 -10
- package/dist/calldata/lifi/layerswap/index.d.ts +0 -4
- package/dist/calldata/lifi/layerswap/index.js +0 -10
- package/dist/calldata/lifi/m0/index.d.ts +0 -3
- package/dist/calldata/lifi/m0/index.js +0 -33
- package/dist/calldata/lifi/mayan/index.d.ts +0 -4
- package/dist/calldata/lifi/mayan/index.js +0 -10
- package/dist/calldata/lifi/method.d.ts +0 -6
- package/dist/calldata/lifi/method.js +0 -16
- package/dist/calldata/lifi/native/index.d.ts +0 -4
- package/dist/calldata/lifi/native/index.js +0 -80
- package/dist/calldata/lifi/params.d.ts +0 -30
- package/dist/calldata/lifi/params.js +0 -370
- package/dist/calldata/lifi/paxos/index.d.ts +0 -4
- package/dist/calldata/lifi/paxos/index.js +0 -10
- package/dist/calldata/lifi/polymer/index.d.ts +0 -4
- package/dist/calldata/lifi/polymer/index.js +0 -10
- package/dist/calldata/lifi/relay/index.d.ts +0 -6
- package/dist/calldata/lifi/relay/index.js +0 -15
- package/dist/calldata/lifi/shape.d.ts +0 -4
- package/dist/calldata/lifi/shape.js +0 -31
- package/dist/calldata/lifi/squid/index.d.ts +0 -6
- package/dist/calldata/lifi/squid/index.js +0 -15
- package/dist/calldata/lifi/stargate/index.d.ts +0 -5
- package/dist/calldata/lifi/stargate/index.js +0 -15
- package/dist/calldata/lifi/swap/index.d.ts +0 -5
- package/dist/calldata/lifi/swap/index.js +0 -18
- package/dist/calldata/lifi/swap/swapMethod.d.ts +0 -2
- package/dist/calldata/lifi/swap/swapMethod.js +0 -40
- package/dist/calldata/match.d.ts +0 -3
- package/dist/calldata/match.js +0 -21
- package/dist/calldata/mayan/destination.d.ts +0 -2
- package/dist/calldata/mayan/destination.js +0 -13
- package/dist/calldata/mayan/fastMctpBridge.d.ts +0 -3
- package/dist/calldata/mayan/fastMctpBridge.js +0 -43
- package/dist/calldata/mayan/fastMctpCreateOrder.d.ts +0 -3
- package/dist/calldata/mayan/fastMctpCreateOrder.js +0 -39
- package/dist/calldata/mayan/forward.d.ts +0 -8
- package/dist/calldata/mayan/forward.js +0 -35
- package/dist/calldata/mayan/forwardERC20.d.ts +0 -2
- package/dist/calldata/mayan/forwardERC20.js +0 -19
- package/dist/calldata/mayan/forwardEth.d.ts +0 -2
- package/dist/calldata/mayan/forwardEth.js +0 -16
- package/dist/calldata/mayan/index.d.ts +0 -4
- package/dist/calldata/mayan/index.js +0 -21
- package/dist/calldata/mayan/mctp.d.ts +0 -5
- package/dist/calldata/mayan/mctp.js +0 -41
- package/dist/calldata/mayan/readProtocol.d.ts +0 -2
- package/dist/calldata/mayan/readProtocol.js +0 -29
- package/dist/calldata/mayan/swapAndForwardERC20.d.ts +0 -2
- package/dist/calldata/mayan/swapAndForwardERC20.js +0 -24
- package/dist/calldata/mayan/swapAndForwardEth.d.ts +0 -2
- package/dist/calldata/mayan/swapAndForwardEth.js +0 -23
- package/dist/calldata/mayan/swiftCreateOrder.d.ts +0 -3
- package/dist/calldata/mayan/swiftCreateOrder.js +0 -49
- package/dist/calldata/mayan/validate.d.ts +0 -3
- package/dist/calldata/mayan/validate.js +0 -20
- package/dist/calldata/protocols.d.ts +0 -9
- package/dist/calldata/protocols.js +0 -56
- package/dist/calldata/relay/calls.d.ts +0 -13
- package/dist/calldata/relay/calls.js +0 -54
- package/dist/calldata/relay/depositErc20.d.ts +0 -2
- package/dist/calldata/relay/depositErc20.js +0 -22
- package/dist/calldata/relay/depositErc20Allowance.d.ts +0 -2
- package/dist/calldata/relay/depositErc20Allowance.js +0 -20
- package/dist/calldata/relay/depositNative.d.ts +0 -2
- package/dist/calldata/relay/depositNative.js +0 -20
- package/dist/calldata/relay/index.d.ts +0 -4
- package/dist/calldata/relay/index.js +0 -40
- package/dist/calldata/relay/multicall.d.ts +0 -2
- package/dist/calldata/relay/multicall.js +0 -15
- package/dist/calldata/relay/permit2TransferAndMulticall.d.ts +0 -2
- package/dist/calldata/relay/permit2TransferAndMulticall.js +0 -42
- package/dist/calldata/relay/permit3009TransferAndMulticall.d.ts +0 -2
- package/dist/calldata/relay/permit3009TransferAndMulticall.js +0 -41
- package/dist/calldata/relay/permit3009TransferAndMulticallSigned.d.ts +0 -2
- package/dist/calldata/relay/permit3009TransferAndMulticallSigned.js +0 -40
- package/dist/calldata/relay/permitTransferAndMulticall.d.ts +0 -2
- package/dist/calldata/relay/permitTransferAndMulticall.js +0 -34
- package/dist/calldata/relay/permitTransferAndMulticallLegacy.d.ts +0 -2
- package/dist/calldata/relay/permitTransferAndMulticallLegacy.js +0 -35
- package/dist/calldata/relay/transferAndMulticall.d.ts +0 -2
- package/dist/calldata/relay/transferAndMulticall.js +0 -26
- package/dist/calldata/relay/validate.d.ts +0 -3
- package/dist/calldata/relay/validate.js +0 -18
- package/dist/calldata/resolve.d.ts +0 -2
- package/dist/calldata/resolve.js +0 -28
- package/dist/calldata/socket/bridge.d.ts +0 -2
- package/dist/calldata/socket/bridge.js +0 -28
- package/dist/calldata/socket/exec.d.ts +0 -2
- package/dist/calldata/socket/exec.js +0 -71
- package/dist/calldata/socket/index.d.ts +0 -4
- package/dist/calldata/socket/index.js +0 -13
- package/dist/calldata/socket/params.d.ts +0 -5
- package/dist/calldata/socket/params.js +0 -14
- package/dist/calldata/socket/protocols/ccip.d.ts +0 -2
- package/dist/calldata/socket/protocols/ccip.js +0 -32
- package/dist/calldata/socket/protocols/cctp.d.ts +0 -2
- package/dist/calldata/socket/protocols/cctp.js +0 -24
- package/dist/calldata/socket/protocols/eco.d.ts +0 -2
- package/dist/calldata/socket/protocols/eco.js +0 -20
- package/dist/calldata/socket/protocols/index.d.ts +0 -3
- package/dist/calldata/socket/protocols/index.js +0 -81
- package/dist/calldata/socket/protocols/native.d.ts +0 -2
- package/dist/calldata/socket/protocols/native.js +0 -70
- package/dist/calldata/socket/protocols/oft.d.ts +0 -2
- package/dist/calldata/socket/protocols/oft.js +0 -31
- package/dist/calldata/socket/protocols/swapsXYZ.d.ts +0 -2
- package/dist/calldata/socket/protocols/swapsXYZ.js +0 -62
- package/dist/calldata/socket/swapAndBridge.d.ts +0 -2
- package/dist/calldata/socket/swapAndBridge.js +0 -37
- package/dist/calldata/socket/validate.d.ts +0 -3
- package/dist/calldata/socket/validate.js +0 -21
- package/dist/calldata/types.d.ts +0 -82
- package/dist/calldata/types.js +0 -20
- package/dist/errors/constants.d.ts +0 -876
- package/dist/errors/constants.js +0 -883
- package/dist/errors/index.d.ts +0 -61
- package/dist/errors/index.js +0 -53
- package/dist/errors/sanitize.d.ts +0 -3
- package/dist/errors/sanitize.js +0 -75
- package/dist/providers/data.d.ts +0 -23
- package/dist/providers/data.js +0 -116
- package/dist/providers/errors.d.ts +0 -7
- package/dist/providers/errors.js +0 -10
- package/dist/providers/index.d.ts +0 -7
- package/dist/providers/index.js +0 -340
- package/dist/providers/layerswap.d.ts +0 -9
- package/dist/providers/layerswap.js +0 -95
- package/dist/providers/relay.d.ts +0 -59
- package/dist/providers/relay.js +0 -185
- package/dist/providers/request.d.ts +0 -23
- package/dist/providers/request.js +0 -69
- package/dist/providers/socket.d.ts +0 -5
- package/dist/providers/socket.js +0 -57
- package/dist/providers/types.d.ts +0 -36
- package/dist/providers/types.js +0 -1
package/dist/errors/index.d.ts
DELETED
|
@@ -1,61 +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
|
-
lite?: boolean;
|
|
7
|
-
blocking?: boolean;
|
|
8
|
-
aggregatorId?: string;
|
|
9
|
-
chainId?: string;
|
|
10
|
-
toChainId?: string;
|
|
11
|
-
bridgeId?: string;
|
|
12
|
-
provider?: string;
|
|
13
|
-
method?: string;
|
|
14
|
-
selector?: string;
|
|
15
|
-
routerSelector?: string;
|
|
16
|
-
protocolSelector?: string;
|
|
17
|
-
destinationSelectors?: string[];
|
|
18
|
-
calldataFormat?: 'missing' | 'empty' | 'valid' | 'invalid';
|
|
19
|
-
calldataBytes?: number;
|
|
20
|
-
routerCalldataBytes?: number;
|
|
21
|
-
protocolCalldataBytes?: number;
|
|
22
|
-
destinationCalldataBytes?: number;
|
|
23
|
-
destinationCallCount?: number;
|
|
24
|
-
hasDestinationCall?: boolean;
|
|
25
|
-
abiOffset?: number;
|
|
26
|
-
abiBufferBytes?: number;
|
|
27
|
-
commandByte?: number;
|
|
28
|
-
commandCount?: number;
|
|
29
|
-
requestKind?: 'relay_chains' | 'relay_quote' | 'socket_quote' | 'layerswap_orders' | 'backend_quote' | 'backend_build';
|
|
30
|
-
operation?: 'getQuote' | 'buildTx' | 'verifyTx' | 'verifyLayerSwapTx';
|
|
31
|
-
unverifiedFields?: string[];
|
|
32
|
-
httpStatus?: number;
|
|
33
|
-
};
|
|
34
|
-
export type BridgeErrorDetail = BridgeErrorDefinition & BridgeErrorContext;
|
|
35
|
-
export declare const bridgeFailure: (errors: BridgeErrorDetail[]) => {
|
|
36
|
-
ok: false;
|
|
37
|
-
reason: string;
|
|
38
|
-
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_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";
|
|
39
|
-
stage: "input" | "contract" | "decode" | "structure" | "intent" | "provider_request" | "provider_response" | "provider_binding" | "completeness" | "unknown";
|
|
40
|
-
errors: BridgeErrorDetail[];
|
|
41
|
-
};
|
|
42
|
-
export declare class BridgeError extends Error {
|
|
43
|
-
readonly error_code: BridgeErrorDetail['error_code'];
|
|
44
|
-
readonly stage: BridgeErrorDetail['stage'];
|
|
45
|
-
readonly errors: BridgeErrorDetail[];
|
|
46
|
-
constructor(definition: BridgeErrorDefinition, context?: BridgeErrorContext, errors?: BridgeErrorDetail[]);
|
|
47
|
-
toJSON(): {
|
|
48
|
-
name: string;
|
|
49
|
-
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_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";
|
|
50
|
-
stage: "input" | "contract" | "decode" | "structure" | "intent" | "provider_request" | "provider_response" | "provider_binding" | "completeness" | "unknown";
|
|
51
|
-
errors: BridgeErrorDetail[];
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
/** Preserve typed SDK failures; never copy an arbitrary transport exception into a report. */
|
|
55
|
-
export declare const asBridgeError: (error: unknown, fallback?: BridgeErrorDefinition, context?: BridgeErrorContext) => BridgeError;
|
|
56
|
-
export type BridgeErrorReport = ReturnType<BridgeError['toJSON']>;
|
|
57
|
-
export type BridgeErrorReporter = (error: BridgeErrorReport) => void | Promise<void>;
|
|
58
|
-
/** Accept a check/decode result or exception; never serialize the result's parsed transaction. */
|
|
59
|
-
export declare const toBridgeErrorReport: (value: unknown) => BridgeErrorReport | undefined;
|
|
60
|
-
/** Only used when an invalid quote is filtered; directly thrown failures stay with the caller. */
|
|
61
|
-
export declare const reportBridgeError: (report: BridgeErrorReporter | undefined, error: BridgeError, context: BridgeErrorContext) => void;
|
package/dist/errors/index.js
DELETED
|
@@ -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)
|
|
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
|
-
};
|
package/dist/errors/sanitize.js
DELETED
|
@@ -1,75 +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
|
-
if (typeof raw.hasDestinationCall === 'boolean')
|
|
65
|
-
result.hasDestinationCall = raw.hasDestinationCall;
|
|
66
|
-
if (typeof raw.lite === 'boolean')
|
|
67
|
-
result.lite = raw.lite;
|
|
68
|
-
if (typeof raw.blocking === 'boolean')
|
|
69
|
-
result.blocking = raw.blocking;
|
|
70
|
-
if (Array.isArray(raw.destinationSelectors))
|
|
71
|
-
result.destinationSelectors = [...new Set(raw.destinationSelectors.filter(selector).map((item) => item.toLowerCase()))].slice(0, 16);
|
|
72
|
-
if (Array.isArray(raw.unverifiedFields))
|
|
73
|
-
result.unverifiedFields = [...new Set(raw.unverifiedFields.filter((item) => typeof item === 'string' && fields.has(item)))];
|
|
74
|
-
return result;
|
|
75
|
-
};
|
package/dist/providers/data.d.ts
DELETED
|
@@ -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
|
-
};
|
package/dist/providers/data.js
DELETED
|
@@ -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
|
-
}
|
package/dist/providers/errors.js
DELETED
|
@@ -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,7 +0,0 @@
|
|
|
1
|
-
import type { BridgeProviderClient, BridgeProviderClientOptions, DirectBridgeProvider } from './types.js';
|
|
2
|
-
export declare const isDirectBridgeProviderRoute: (provider: string, bridgeId: string) => provider is DirectBridgeProvider;
|
|
3
|
-
export declare const createBridgeProviderClient: (options: BridgeProviderClientOptions) => BridgeProviderClient;
|
|
4
|
-
export { InvalidBridgeProviderError } from './errors.js';
|
|
5
|
-
export { BRIDGE_PROVIDER_ORIGINS, createBridgeFetchRequest } from './request.js';
|
|
6
|
-
export type { BridgeFetch } from './request.js';
|
|
7
|
-
export type { BridgeProviderClient, BridgeProviderClientOptions, BridgeProviderVerification, BridgeVerificationProvider, BridgeServiceRequest, DirectBridgeProvider } from './types.js';
|