@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.
Files changed (198) hide show
  1. package/README.md +1 -131
  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 -7
  7. package/dist/index.js +0 -3
  8. package/dist/quote.d.ts +4 -18
  9. package/dist/quote.js +65 -282
  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 -30
  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 -148
  33. package/dist/calldata/diagnostics.d.ts +0 -4
  34. package/dist/calldata/diagnostics.js +0 -18
  35. package/dist/calldata/expect.d.ts +0 -25
  36. package/dist/calldata/expect.js +0 -129
  37. package/dist/calldata/hex.d.ts +0 -6
  38. package/dist/calldata/hex.js +0 -46
  39. package/dist/calldata/index.d.ts +0 -20
  40. package/dist/calldata/index.js +0 -85
  41. package/dist/calldata/lifi/across/acrossV4Erc20Min.d.ts +0 -2
  42. package/dist/calldata/lifi/across/acrossV4Erc20Min.js +0 -26
  43. package/dist/calldata/lifi/across/acrossV4NativeMin.d.ts +0 -2
  44. package/dist/calldata/lifi/across/acrossV4NativeMin.js +0 -22
  45. package/dist/calldata/lifi/across/index.d.ts +0 -6
  46. package/dist/calldata/lifi/across/index.js +0 -19
  47. package/dist/calldata/lifi/allbridge/index.d.ts +0 -3
  48. package/dist/calldata/lifi/allbridge/index.js +0 -26
  49. package/dist/calldata/lifi/celer/index.d.ts +0 -4
  50. package/dist/calldata/lifi/celer/index.js +0 -10
  51. package/dist/calldata/lifi/centrifuge/index.d.ts +0 -3
  52. package/dist/calldata/lifi/centrifuge/index.js +0 -22
  53. package/dist/calldata/lifi/frax/index.d.ts +0 -4
  54. package/dist/calldata/lifi/frax/index.js +0 -29
  55. package/dist/calldata/lifi/garden/index.d.ts +0 -3
  56. package/dist/calldata/lifi/garden/index.js +0 -22
  57. package/dist/calldata/lifi/gaszip/index.d.ts +0 -6
  58. package/dist/calldata/lifi/gaszip/index.js +0 -15
  59. package/dist/calldata/lifi/index.d.ts +0 -4
  60. package/dist/calldata/lifi/index.js +0 -60
  61. package/dist/calldata/lifi/intents/index.d.ts +0 -4
  62. package/dist/calldata/lifi/intents/index.js +0 -10
  63. package/dist/calldata/lifi/layerswap/index.d.ts +0 -4
  64. package/dist/calldata/lifi/layerswap/index.js +0 -10
  65. package/dist/calldata/lifi/m0/index.d.ts +0 -3
  66. package/dist/calldata/lifi/m0/index.js +0 -33
  67. package/dist/calldata/lifi/mayan/index.d.ts +0 -4
  68. package/dist/calldata/lifi/mayan/index.js +0 -10
  69. package/dist/calldata/lifi/method.d.ts +0 -6
  70. package/dist/calldata/lifi/method.js +0 -16
  71. package/dist/calldata/lifi/native/index.d.ts +0 -4
  72. package/dist/calldata/lifi/native/index.js +0 -80
  73. package/dist/calldata/lifi/params.d.ts +0 -30
  74. package/dist/calldata/lifi/params.js +0 -370
  75. package/dist/calldata/lifi/paxos/index.d.ts +0 -4
  76. package/dist/calldata/lifi/paxos/index.js +0 -10
  77. package/dist/calldata/lifi/polymer/index.d.ts +0 -4
  78. package/dist/calldata/lifi/polymer/index.js +0 -10
  79. package/dist/calldata/lifi/relay/index.d.ts +0 -6
  80. package/dist/calldata/lifi/relay/index.js +0 -15
  81. package/dist/calldata/lifi/shape.d.ts +0 -4
  82. package/dist/calldata/lifi/shape.js +0 -31
  83. package/dist/calldata/lifi/squid/index.d.ts +0 -6
  84. package/dist/calldata/lifi/squid/index.js +0 -15
  85. package/dist/calldata/lifi/stargate/index.d.ts +0 -5
  86. package/dist/calldata/lifi/stargate/index.js +0 -15
  87. package/dist/calldata/lifi/swap/index.d.ts +0 -5
  88. package/dist/calldata/lifi/swap/index.js +0 -18
  89. package/dist/calldata/lifi/swap/swapMethod.d.ts +0 -2
  90. package/dist/calldata/lifi/swap/swapMethod.js +0 -40
  91. package/dist/calldata/match.d.ts +0 -3
  92. package/dist/calldata/match.js +0 -21
  93. package/dist/calldata/mayan/destination.d.ts +0 -2
  94. package/dist/calldata/mayan/destination.js +0 -13
  95. package/dist/calldata/mayan/fastMctpBridge.d.ts +0 -3
  96. package/dist/calldata/mayan/fastMctpBridge.js +0 -43
  97. package/dist/calldata/mayan/fastMctpCreateOrder.d.ts +0 -3
  98. package/dist/calldata/mayan/fastMctpCreateOrder.js +0 -39
  99. package/dist/calldata/mayan/forward.d.ts +0 -8
  100. package/dist/calldata/mayan/forward.js +0 -35
  101. package/dist/calldata/mayan/forwardERC20.d.ts +0 -2
  102. package/dist/calldata/mayan/forwardERC20.js +0 -19
  103. package/dist/calldata/mayan/forwardEth.d.ts +0 -2
  104. package/dist/calldata/mayan/forwardEth.js +0 -16
  105. package/dist/calldata/mayan/index.d.ts +0 -4
  106. package/dist/calldata/mayan/index.js +0 -21
  107. package/dist/calldata/mayan/mctp.d.ts +0 -5
  108. package/dist/calldata/mayan/mctp.js +0 -41
  109. package/dist/calldata/mayan/readProtocol.d.ts +0 -2
  110. package/dist/calldata/mayan/readProtocol.js +0 -29
  111. package/dist/calldata/mayan/swapAndForwardERC20.d.ts +0 -2
  112. package/dist/calldata/mayan/swapAndForwardERC20.js +0 -24
  113. package/dist/calldata/mayan/swapAndForwardEth.d.ts +0 -2
  114. package/dist/calldata/mayan/swapAndForwardEth.js +0 -23
  115. package/dist/calldata/mayan/swiftCreateOrder.d.ts +0 -3
  116. package/dist/calldata/mayan/swiftCreateOrder.js +0 -49
  117. package/dist/calldata/mayan/validate.d.ts +0 -3
  118. package/dist/calldata/mayan/validate.js +0 -20
  119. package/dist/calldata/protocols.d.ts +0 -9
  120. package/dist/calldata/protocols.js +0 -56
  121. package/dist/calldata/relay/calls.d.ts +0 -13
  122. package/dist/calldata/relay/calls.js +0 -54
  123. package/dist/calldata/relay/depositErc20.d.ts +0 -2
  124. package/dist/calldata/relay/depositErc20.js +0 -22
  125. package/dist/calldata/relay/depositErc20Allowance.d.ts +0 -2
  126. package/dist/calldata/relay/depositErc20Allowance.js +0 -20
  127. package/dist/calldata/relay/depositNative.d.ts +0 -2
  128. package/dist/calldata/relay/depositNative.js +0 -20
  129. package/dist/calldata/relay/index.d.ts +0 -4
  130. package/dist/calldata/relay/index.js +0 -40
  131. package/dist/calldata/relay/multicall.d.ts +0 -2
  132. package/dist/calldata/relay/multicall.js +0 -15
  133. package/dist/calldata/relay/permit2TransferAndMulticall.d.ts +0 -2
  134. package/dist/calldata/relay/permit2TransferAndMulticall.js +0 -42
  135. package/dist/calldata/relay/permit3009TransferAndMulticall.d.ts +0 -2
  136. package/dist/calldata/relay/permit3009TransferAndMulticall.js +0 -41
  137. package/dist/calldata/relay/permit3009TransferAndMulticallSigned.d.ts +0 -2
  138. package/dist/calldata/relay/permit3009TransferAndMulticallSigned.js +0 -40
  139. package/dist/calldata/relay/permitTransferAndMulticall.d.ts +0 -2
  140. package/dist/calldata/relay/permitTransferAndMulticall.js +0 -34
  141. package/dist/calldata/relay/permitTransferAndMulticallLegacy.d.ts +0 -2
  142. package/dist/calldata/relay/permitTransferAndMulticallLegacy.js +0 -35
  143. package/dist/calldata/relay/transferAndMulticall.d.ts +0 -2
  144. package/dist/calldata/relay/transferAndMulticall.js +0 -26
  145. package/dist/calldata/relay/validate.d.ts +0 -3
  146. package/dist/calldata/relay/validate.js +0 -18
  147. package/dist/calldata/resolve.d.ts +0 -2
  148. package/dist/calldata/resolve.js +0 -28
  149. package/dist/calldata/socket/bridge.d.ts +0 -2
  150. package/dist/calldata/socket/bridge.js +0 -28
  151. package/dist/calldata/socket/exec.d.ts +0 -2
  152. package/dist/calldata/socket/exec.js +0 -71
  153. package/dist/calldata/socket/index.d.ts +0 -4
  154. package/dist/calldata/socket/index.js +0 -13
  155. package/dist/calldata/socket/params.d.ts +0 -5
  156. package/dist/calldata/socket/params.js +0 -14
  157. package/dist/calldata/socket/protocols/ccip.d.ts +0 -2
  158. package/dist/calldata/socket/protocols/ccip.js +0 -32
  159. package/dist/calldata/socket/protocols/cctp.d.ts +0 -2
  160. package/dist/calldata/socket/protocols/cctp.js +0 -24
  161. package/dist/calldata/socket/protocols/eco.d.ts +0 -2
  162. package/dist/calldata/socket/protocols/eco.js +0 -20
  163. package/dist/calldata/socket/protocols/index.d.ts +0 -3
  164. package/dist/calldata/socket/protocols/index.js +0 -81
  165. package/dist/calldata/socket/protocols/native.d.ts +0 -2
  166. package/dist/calldata/socket/protocols/native.js +0 -70
  167. package/dist/calldata/socket/protocols/oft.d.ts +0 -2
  168. package/dist/calldata/socket/protocols/oft.js +0 -31
  169. package/dist/calldata/socket/protocols/swapsXYZ.d.ts +0 -2
  170. package/dist/calldata/socket/protocols/swapsXYZ.js +0 -62
  171. package/dist/calldata/socket/swapAndBridge.d.ts +0 -2
  172. package/dist/calldata/socket/swapAndBridge.js +0 -37
  173. package/dist/calldata/socket/validate.d.ts +0 -3
  174. package/dist/calldata/socket/validate.js +0 -21
  175. package/dist/calldata/types.d.ts +0 -82
  176. package/dist/calldata/types.js +0 -20
  177. package/dist/errors/constants.d.ts +0 -876
  178. package/dist/errors/constants.js +0 -883
  179. package/dist/errors/index.d.ts +0 -61
  180. package/dist/errors/index.js +0 -53
  181. package/dist/errors/sanitize.d.ts +0 -3
  182. package/dist/errors/sanitize.js +0 -75
  183. package/dist/providers/data.d.ts +0 -23
  184. package/dist/providers/data.js +0 -116
  185. package/dist/providers/errors.d.ts +0 -7
  186. package/dist/providers/errors.js +0 -10
  187. package/dist/providers/index.d.ts +0 -7
  188. package/dist/providers/index.js +0 -340
  189. package/dist/providers/layerswap.d.ts +0 -9
  190. package/dist/providers/layerswap.js +0 -95
  191. package/dist/providers/relay.d.ts +0 -59
  192. package/dist/providers/relay.js +0 -185
  193. package/dist/providers/request.d.ts +0 -23
  194. package/dist/providers/request.js +0 -69
  195. package/dist/providers/socket.d.ts +0 -5
  196. package/dist/providers/socket.js +0 -57
  197. package/dist/providers/types.d.ts +0 -36
  198. package/dist/providers/types.js +0 -1
@@ -1,9 +0,0 @@
1
- export declare const NATIVE_TOKEN = "0x0000000000000000000000000000000000000000";
2
- export declare const WRAPPED_NATIVE_TOKENS: Record<string, string>;
3
- export declare const isNative: (token: string) => boolean;
4
- export declare const CCTP_CHAINS: Record<string, bigint>;
5
- export declare const WORMHOLE_CHAINS: Record<string, bigint>;
6
- export declare const LAYERZERO_CHAINS: Record<string, bigint>;
7
- export declare const CCIP_CHAINS: Record<string, bigint>;
8
- export declare const CCTP_USDC: Record<string, string>;
9
- export declare const subtractFees: (amount: bigint, ...fees: bigint[]) => bigint;
@@ -1,56 +0,0 @@
1
- import { BRIDGE_ERRORS, BridgeError } from '../errors/index.js';
2
- export const NATIVE_TOKEN = '0x0000000000000000000000000000000000000000';
3
- export const WRAPPED_NATIVE_TOKENS = {
4
- 1: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
5
- 10: '0x4200000000000000000000000000000000000006',
6
- 56: '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c',
7
- 137: '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270',
8
- 4663: '0x0bd7d308f8e1639fab988df18a8011f41eacad73',
9
- 8453: '0x4200000000000000000000000000000000000006',
10
- 42161: '0x82af49447d8a07e3bd95bd0d56f35241523fbab1',
11
- 43114: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7',
12
- 57073: '0x4200000000000000000000000000000000000006',
13
- };
14
- export const isNative = (token) => token === NATIVE_TOKEN || token.toLowerCase() === '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee';
15
- // Circle CCTP domains and Wormhole IDs are different namespaces from EVM chain IDs.
16
- export const CCTP_CHAINS = {
17
- 0: 1n, 1: 43114n, 2: 10n, 3: 42161n, 6: 8453n, 7: 137n,
18
- 10: 130n, 11: 59144n, 13: 146n, 15: 143n, 19: 999n,
19
- };
20
- export const WORMHOLE_CHAINS = {
21
- 2: 1n, 4: 56n, 5: 137n, 6: 43114n, 23: 42161n, 24: 10n,
22
- 30: 8453n, 38: 59144n, 44: 130n, 47: 999n, 48: 143n, 52: 146n,
23
- };
24
- // Mainnet endpoint IDs from LayerZero's network metadata; v1 and v2 IDs coexist.
25
- export const LAYERZERO_CHAINS = {
26
- 101: 1n, 30101: 1n, 102: 56n, 30102: 56n, 106: 43114n, 30106: 43114n,
27
- 109: 137n, 30109: 137n, 110: 42161n, 30110: 42161n, 111: 10n, 30111: 10n,
28
- 184: 8453n, 30184: 8453n, 183: 59144n, 30183: 59144n, 181: 5000n, 30181: 5000n,
29
- 320: 130n, 30320: 130n, 332: 146n, 30332: 146n, 340: 1868n, 30340: 1868n,
30
- 367: 999n, 30367: 999n, 370: 98866n, 30370: 98866n, 383: 9745n, 30383: 9745n,
31
- 390: 143n, 30390: 143n, 416: 4663n, 30416: 4663n,
32
- 255: 252n, 30255: 252n, 280: 1329n, 30280: 1329n,
33
- };
34
- export const CCIP_CHAINS = {
35
- '5009297550715157269': 1n, '15971525489660198786': 8453n, '11344663589394136015': 56n,
36
- };
37
- // Canonical Circle USDC, not a symbol-based or quote-provided token mapping.
38
- export const CCTP_USDC = {
39
- 1: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
40
- 10: '0x0b2c639c533813f4aa9d7837caf62653d097ff85',
41
- 137: '0x3c499c542cef5e3811e1192ce70d8cc03d5c3359',
42
- 8453: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
43
- 42161: '0xaf88d065e77c8cc2239327c5edb3a432268e5831',
44
- 43114: '0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e',
45
- 130: '0x078d782b760474a361dda0af3839290b0ef57ad6',
46
- 143: '0x754704bc059f8c67012fed69bc8a327a5aafb603',
47
- 146: '0x29219dd400f2bf60e5a23d13be72b486d4038894',
48
- 999: '0xb88339cb7199b77e23db6e890353e22632ba630f',
49
- 59144: '0x176211869ca2b568f2a7d4ee941e073a821ee1ff',
50
- };
51
- export const subtractFees = (amount, ...fees) => {
52
- const total = fees.reduce((sum, fee) => sum + fee, 0n);
53
- if (total > amount)
54
- throw new BridgeError(BRIDGE_ERRORS.BRIDGE_FEES_EXCEED_THE_INPUT_AMOUNT);
55
- return amount - total;
56
- };
@@ -1,13 +0,0 @@
1
- import { type AbiParam, type AbiValue } from '../abi.js';
2
- import type { ParsedBridgeCall } from '../types.js';
3
- export declare const callTuple: AbiParam;
4
- export declare const callsParam: AbiParam;
5
- export declare const requestIdFromMetadata: (metadata: string) => string | undefined;
6
- export declare const relayCall: (method: string, metadata: string, value: bigint, source?: {
7
- token?: string;
8
- amount?: bigint;
9
- }) => ParsedBridgeCall;
10
- export declare const firstPositive: (values: AbiValue[]) => {
11
- token?: string;
12
- amount: bigint;
13
- };
@@ -1,54 +0,0 @@
1
- import { BRIDGE_ERRORS, BridgeError } from '../../errors/index.js';
2
- import { asBigint, asRecord, asString } from '../abi.js';
3
- import { isZeroWord } from '../hex.js';
4
- import { NATIVE_TOKEN } from '../protocols.js';
5
- export const callTuple = {
6
- name: 'call',
7
- kind: 'tuple',
8
- components: [
9
- { name: 'target', kind: 'address' },
10
- { name: 'allowFailure', kind: 'bool' },
11
- { name: 'value', kind: 'uint' },
12
- { name: 'callData', kind: 'bytes' },
13
- ],
14
- };
15
- export const callsParam = {
16
- name: 'calls',
17
- kind: 'array',
18
- item: callTuple,
19
- };
20
- export const requestIdFromMetadata = (metadata) => {
21
- const body = metadata.toLowerCase().replace(/^0x/, '');
22
- if (body.length < 64) {
23
- return undefined;
24
- }
25
- const requestId = `0x${body.slice(0, 64)}`;
26
- return isZeroWord(requestId) ? undefined : requestId;
27
- };
28
- export const relayCall = (method, metadata, value, source) => ({
29
- aggregatorId: 'relay',
30
- method,
31
- kind: 'deposit',
32
- requestId: requestIdFromMetadata(metadata),
33
- sourceToken: source?.token ?? (value > 0n ? NATIVE_TOKEN : undefined),
34
- sourceAmount: source?.amount && source.amount > 0n ? source.amount : value,
35
- });
36
- const amountOf = (record) => {
37
- const amount = record.amount ?? record.value;
38
- return asBigint(amount);
39
- };
40
- export const firstPositive = (values) => {
41
- let amount = 0n;
42
- let token;
43
- for (const value of values) {
44
- const record = asRecord(value);
45
- amount += amountOf(record);
46
- if (record.token) {
47
- const current = asString(record.token);
48
- if (token && token !== current)
49
- throw new BridgeError(BRIDGE_ERRORS.MULTIPLE_SOURCE_ASSETS_ARE_NOT_SUPPORTED);
50
- token = current;
51
- }
52
- }
53
- return { token, amount };
54
- };
@@ -1,2 +0,0 @@
1
- import type { CalldataMethod } from '../abi.js';
2
- export declare const depositErc20: CalldataMethod;
@@ -1,22 +0,0 @@
1
- import { asBigint, asString, decodeCall } from '../abi.js';
2
- export const depositErc20 = {
3
- name: 'depositErc20',
4
- selector: '0xe8017952',
5
- decode(data) {
6
- const args = decodeCall([
7
- { name: 'depositor', kind: 'address' },
8
- { name: 'token', kind: 'address' },
9
- { name: 'amount', kind: 'uint' },
10
- { name: 'id', kind: 'bytes', size: 32 },
11
- ], data);
12
- return {
13
- aggregatorId: 'relay',
14
- method: 'depositErc20',
15
- kind: 'deposit',
16
- sourceToken: asString(args.token),
17
- sourceAmount: asBigint(args.amount),
18
- orderId: asString(args.id),
19
- depositor: asString(args.depositor),
20
- };
21
- },
22
- };
@@ -1,2 +0,0 @@
1
- import type { CalldataMethod } from '../abi.js';
2
- export declare const depositErc20Allowance: CalldataMethod;
@@ -1,20 +0,0 @@
1
- import { asString, decodeCall } from '../abi.js';
2
- export const depositErc20Allowance = {
3
- name: 'depositErc20Allowance',
4
- selector: '0x5a1ee3ac',
5
- decode(data) {
6
- const args = decodeCall([
7
- { name: 'depositor', kind: 'address' },
8
- { name: 'token', kind: 'address' },
9
- { name: 'id', kind: 'bytes', size: 32 },
10
- ], data);
11
- return {
12
- aggregatorId: 'relay',
13
- method: 'depositErc20Allowance',
14
- kind: 'deposit',
15
- sourceToken: asString(args.token),
16
- orderId: asString(args.id),
17
- depositor: asString(args.depositor),
18
- };
19
- },
20
- };
@@ -1,2 +0,0 @@
1
- import type { CalldataMethod } from '../abi.js';
2
- export declare const depositNative: CalldataMethod;
@@ -1,20 +0,0 @@
1
- import { asString, decodeCall } from '../abi.js';
2
- export const depositNative = {
3
- name: 'depositNative',
4
- selector: '0x49290c1c',
5
- decode(data, value) {
6
- const args = decodeCall([
7
- { name: 'depositor', kind: 'address' },
8
- { name: 'id', kind: 'bytes', size: 32 },
9
- ], data);
10
- return {
11
- aggregatorId: 'relay',
12
- method: 'depositNative',
13
- kind: 'deposit',
14
- sourceToken: '0x0000000000000000000000000000000000000000',
15
- sourceAmount: value,
16
- orderId: asString(args.id),
17
- depositor: asString(args.depositor),
18
- };
19
- },
20
- };
@@ -1,4 +0,0 @@
1
- import type { BridgeCallExpectation } from '../expect.js';
2
- import type { BridgeCheck, DecodeHit } from '../types.js';
3
- export declare const decodeRelay: (data: string, value: bigint) => DecodeHit;
4
- export declare const validateRelay: (data: string, value: bigint, expectation?: BridgeCallExpectation, chainId?: string) => BridgeCheck;
@@ -1,40 +0,0 @@
1
- import { matchMethod } from '../match.js';
2
- import { finishCheck } from '../expect.js';
3
- import { depositErc20 } from './depositErc20.js';
4
- import { depositErc20Allowance } from './depositErc20Allowance.js';
5
- import { depositNative } from './depositNative.js';
6
- import { multicall } from './multicall.js';
7
- import { permit2TransferAndMulticall } from './permit2TransferAndMulticall.js';
8
- import { permit3009TransferAndMulticall } from './permit3009TransferAndMulticall.js';
9
- import { permit3009TransferAndMulticallSigned } from './permit3009TransferAndMulticallSigned.js';
10
- import { permitTransferAndMulticall } from './permitTransferAndMulticall.js';
11
- import { permitTransferAndMulticallLegacy } from './permitTransferAndMulticallLegacy.js';
12
- import { transferAndMulticall } from './transferAndMulticall.js';
13
- import { relayFailure } from './validate.js';
14
- const METHODS = [
15
- depositErc20,
16
- depositErc20Allowance,
17
- depositNative,
18
- multicall,
19
- transferAndMulticall,
20
- permit2TransferAndMulticall,
21
- permit3009TransferAndMulticall,
22
- permit3009TransferAndMulticallSigned,
23
- permitTransferAndMulticall,
24
- permitTransferAndMulticallLegacy,
25
- ];
26
- export const decodeRelay = (data, value) => matchMethod(METHODS, data, value);
27
- const relayCompareMask = (parsed) => ({
28
- fromToken: parsed.sourceToken !== undefined,
29
- fromAmount: parsed.sourceAmount !== undefined && parsed.sourceToken !== undefined,
30
- toToken: false,
31
- toAmount: false,
32
- receiver: false,
33
- });
34
- export const validateRelay = (data, value, expectation, chainId = '') => {
35
- const hit = decodeRelay(data, value);
36
- if (!hit.ok) {
37
- return { ...hit, aggregatorId: 'relay' };
38
- }
39
- return finishCheck('relay', hit.parsed, relayFailure(hit.parsed), expectation, chainId, relayCompareMask(hit.parsed));
40
- };
@@ -1,2 +0,0 @@
1
- import type { CalldataMethod } from '../abi.js';
2
- export declare const multicall: CalldataMethod;
@@ -1,15 +0,0 @@
1
- import { asString, decodeCall } from '../abi.js';
2
- import { callsParam, relayCall } from './calls.js';
3
- export const multicall = {
4
- name: 'multicall',
5
- selector: '0xcd6e13f7',
6
- decode(data, value) {
7
- const args = decodeCall([
8
- callsParam,
9
- { name: 'refundTo', kind: 'address' },
10
- { name: 'nftRecipient', kind: 'address' },
11
- { name: 'metadata', kind: 'bytes' },
12
- ], data);
13
- return relayCall('multicall', asString(args.metadata), value);
14
- },
15
- };
@@ -1,2 +0,0 @@
1
- import type { CalldataMethod } from '../abi.js';
2
- export declare const permit2TransferAndMulticall: CalldataMethod;
@@ -1,42 +0,0 @@
1
- import { asArray, asRecord, asString, decodeCall } from '../abi.js';
2
- import { callsParam, firstPositive, relayCall } from './calls.js';
3
- const permit = {
4
- name: 'permit',
5
- kind: 'tuple',
6
- components: [
7
- {
8
- name: 'permitted',
9
- kind: 'array',
10
- item: {
11
- name: 'tokenPermissions',
12
- kind: 'tuple',
13
- components: [
14
- { name: 'token', kind: 'address' },
15
- { name: 'amount', kind: 'uint' },
16
- ],
17
- },
18
- },
19
- { name: 'nonce', kind: 'uint' },
20
- { name: 'deadline', kind: 'uint' },
21
- ],
22
- };
23
- export const permit2TransferAndMulticall = {
24
- name: 'permit2TransferAndMulticall',
25
- selector: '0x0a2b8f36',
26
- decode(data, value) {
27
- const args = decodeCall([
28
- { name: 'user', kind: 'address' },
29
- permit,
30
- callsParam,
31
- { name: 'refundTo', kind: 'address' },
32
- { name: 'nftRecipient', kind: 'address' },
33
- { name: 'metadata', kind: 'bytes' },
34
- { name: 'permitSignature', kind: 'bytes' },
35
- ], data);
36
- const source = firstPositive(asArray(asRecord(args.permit).permitted));
37
- return {
38
- ...relayCall('permit2TransferAndMulticall', asString(args.metadata), value, source),
39
- depositor: asString(args.user),
40
- };
41
- },
42
- };
@@ -1,2 +0,0 @@
1
- import type { CalldataMethod } from '../abi.js';
2
- export declare const permit3009TransferAndMulticall: CalldataMethod;
@@ -1,41 +0,0 @@
1
- import { asArray, asString, decodeCall } from '../abi.js';
2
- import { callsParam, firstPositive, relayCall } from './calls.js';
3
- const permits = {
4
- name: 'permits',
5
- kind: 'array',
6
- item: {
7
- name: 'permit',
8
- kind: 'tuple',
9
- components: [
10
- { name: 'from', kind: 'address' },
11
- { name: 'value', kind: 'uint' },
12
- { name: 'validAfter', kind: 'uint' },
13
- { name: 'validBefore', kind: 'uint' },
14
- { name: 'v', kind: 'uint' },
15
- { name: 'r', kind: 'bytes', size: 32 },
16
- { name: 's', kind: 'bytes', size: 32 },
17
- ],
18
- },
19
- };
20
- const decodePermits = (name, selector, tail) => ({
21
- name,
22
- selector,
23
- decode(data, value) {
24
- const args = decodeCall([
25
- permits,
26
- { name: 'tokens', kind: 'array', item: { name: 'token', kind: 'address' } },
27
- callsParam,
28
- { name: 'refundTo', kind: 'address' },
29
- { name: 'nftRecipient', kind: 'address' },
30
- { name: 'metadata', kind: 'bytes' },
31
- ...tail,
32
- ], data);
33
- const source = firstPositive(asArray(args.permits));
34
- const tokens = asArray(args.tokens).map((token) => asString(token));
35
- return relayCall(name, asString(args.metadata), value, {
36
- token: tokens[0] ?? source.token,
37
- amount: source.amount,
38
- });
39
- },
40
- });
41
- export const permit3009TransferAndMulticall = decodePermits('permit3009TransferAndMulticall', '0xf80f00fb', []);
@@ -1,2 +0,0 @@
1
- import type { CalldataMethod } from '../abi.js';
2
- export declare const permit3009TransferAndMulticallSigned: CalldataMethod;
@@ -1,40 +0,0 @@
1
- import { asArray, asString, decodeCall } from '../abi.js';
2
- import { callsParam, firstPositive, relayCall } from './calls.js';
3
- const permits = {
4
- name: 'permits',
5
- kind: 'array',
6
- item: {
7
- name: 'permit',
8
- kind: 'tuple',
9
- components: [
10
- { name: 'from', kind: 'address' },
11
- { name: 'value', kind: 'uint' },
12
- { name: 'validAfter', kind: 'uint' },
13
- { name: 'validBefore', kind: 'uint' },
14
- { name: 'v', kind: 'uint' },
15
- { name: 'r', kind: 'bytes', size: 32 },
16
- { name: 's', kind: 'bytes', size: 32 },
17
- ],
18
- },
19
- };
20
- export const permit3009TransferAndMulticallSigned = {
21
- name: 'permit3009TransferAndMulticallSigned',
22
- selector: '0x745599f3',
23
- decode(data, value) {
24
- const args = decodeCall([
25
- permits,
26
- { name: 'tokens', kind: 'array', item: { name: 'token', kind: 'address' } },
27
- callsParam,
28
- { name: 'refundTo', kind: 'address' },
29
- { name: 'nftRecipient', kind: 'address' },
30
- { name: 'metadata', kind: 'bytes' },
31
- { name: 'multicallSignatures', kind: 'array', item: { name: 'signature', kind: 'bytes' } },
32
- ], data);
33
- const source = firstPositive(asArray(args.permits));
34
- const tokens = asArray(args.tokens).map((token) => asString(token));
35
- return relayCall('permit3009TransferAndMulticallSigned', asString(args.metadata), value, {
36
- token: tokens[0] ?? source.token,
37
- amount: source.amount,
38
- });
39
- },
40
- };
@@ -1,2 +0,0 @@
1
- import type { CalldataMethod } from '../abi.js';
2
- export declare const permitTransferAndMulticall: CalldataMethod;
@@ -1,34 +0,0 @@
1
- import { asArray, asString, decodeCall } from '../abi.js';
2
- import { callsParam, firstPositive, relayCall } from './calls.js';
3
- const permits = {
4
- name: 'permits',
5
- kind: 'array',
6
- item: {
7
- name: 'permit',
8
- kind: 'tuple',
9
- components: [
10
- { name: 'token', kind: 'address' },
11
- { name: 'owner', kind: 'address' },
12
- { name: 'value', kind: 'uint' },
13
- { name: 'deadline', kind: 'uint' },
14
- { name: 'v', kind: 'uint' },
15
- { name: 'r', kind: 'bytes', size: 32 },
16
- { name: 's', kind: 'bytes', size: 32 },
17
- ],
18
- },
19
- };
20
- export const permitTransferAndMulticall = {
21
- name: 'permitTransferAndMulticall',
22
- selector: '0xbd4967a9',
23
- decode(data, value) {
24
- const args = decodeCall([
25
- permits,
26
- callsParam,
27
- { name: 'refundTo', kind: 'address' },
28
- { name: 'nftRecipient', kind: 'address' },
29
- { name: 'metadata', kind: 'bytes' },
30
- ], data);
31
- const source = firstPositive(asArray(args.permits));
32
- return relayCall('permitTransferAndMulticall', asString(args.metadata), value, source);
33
- },
34
- };
@@ -1,2 +0,0 @@
1
- import type { CalldataMethod } from '../abi.js';
2
- export declare const permitTransferAndMulticallLegacy: CalldataMethod;
@@ -1,35 +0,0 @@
1
- import { asArray, asString, decodeCall } from '../abi.js';
2
- import { callsParam, firstPositive, relayCall } from './calls.js';
3
- const permits = {
4
- name: 'permits',
5
- kind: 'array',
6
- item: {
7
- name: 'permit',
8
- kind: 'tuple',
9
- components: [
10
- { name: 'token', kind: 'address' },
11
- { name: 'owner', kind: 'address' },
12
- { name: 'value', kind: 'uint' },
13
- { name: 'nonce', kind: 'uint' },
14
- { name: 'deadline', kind: 'uint' },
15
- { name: 'v', kind: 'uint' },
16
- { name: 'r', kind: 'bytes', size: 32 },
17
- { name: 's', kind: 'bytes', size: 32 },
18
- ],
19
- },
20
- };
21
- export const permitTransferAndMulticallLegacy = {
22
- name: 'permitTransferAndMulticallLegacy',
23
- selector: '0xfb68c293',
24
- decode(data, value) {
25
- const args = decodeCall([
26
- permits,
27
- callsParam,
28
- { name: 'refundTo', kind: 'address' },
29
- { name: 'nftRecipient', kind: 'address' },
30
- { name: 'metadata', kind: 'bytes' },
31
- ], data);
32
- const source = firstPositive(asArray(args.permits));
33
- return relayCall('permitTransferAndMulticallLegacy', asString(args.metadata), value, source);
34
- },
35
- };
@@ -1,2 +0,0 @@
1
- import type { CalldataMethod } from '../abi.js';
2
- export declare const transferAndMulticall: CalldataMethod;
@@ -1,26 +0,0 @@
1
- import { BRIDGE_ERRORS, BridgeError } from '../../errors/index.js';
2
- import { asArray, asBigint, asString, decodeCall } from '../abi.js';
3
- import { callsParam, relayCall } from './calls.js';
4
- export const transferAndMulticall = {
5
- name: 'transferAndMulticall',
6
- selector: '0xf9e4bab4',
7
- decode(data, value) {
8
- const args = decodeCall([
9
- { name: 'tokens', kind: 'array', item: { name: 'token', kind: 'address' } },
10
- { name: 'amounts', kind: 'array', item: { name: 'amount', kind: 'uint' } },
11
- callsParam,
12
- { name: 'refundTo', kind: 'address' },
13
- { name: 'nftRecipient', kind: 'address' },
14
- { name: 'metadata', kind: 'bytes' },
15
- ], data);
16
- const tokens = asArray(args.tokens).map((token) => asString(token));
17
- const amounts = asArray(args.amounts).map((amount) => asBigint(amount));
18
- if (tokens.length !== amounts.length || new Set(tokens).size > 1) {
19
- throw new BridgeError(BRIDGE_ERRORS.UNSUPPORTED_RELAY_SOURCE_ASSET_LIST);
20
- }
21
- return relayCall('transferAndMulticall', asString(args.metadata), value, {
22
- token: tokens[0],
23
- amount: amounts.reduce((sum, amount) => sum + amount, 0n),
24
- });
25
- },
26
- };
@@ -1,3 +0,0 @@
1
- import type { BridgeErrorDefinition } from '../../errors/index.js';
2
- import type { ParsedBridgeCall } from '../types.js';
3
- export declare const relayFailure: (parsed: ParsedBridgeCall) => BridgeErrorDefinition | undefined;
@@ -1,18 +0,0 @@
1
- import { BRIDGE_ERRORS } from '../../errors/index.js';
2
- import { isZeroWord } from '../hex.js';
3
- const AMOUNT_OPTIONAL = new Set(['depositErc20Allowance', 'multicall']);
4
- export const relayFailure = (parsed) => {
5
- if (isZeroWord(parsed.orderId) && isZeroWord(parsed.requestId)) {
6
- return BRIDGE_ERRORS.MISSING_RELAY_ORDER_ID;
7
- }
8
- if (AMOUNT_OPTIONAL.has(parsed.method)) {
9
- return undefined;
10
- }
11
- if ((parsed.sourceAmount ?? 0n) <= 0n) {
12
- return BRIDGE_ERRORS.MISSING_SOURCE_AMOUNT;
13
- }
14
- if (parsed.sourceToken === undefined) {
15
- return BRIDGE_ERRORS.MISSING_SOURCE_TOKEN;
16
- }
17
- return undefined;
18
- };
@@ -1,2 +0,0 @@
1
- import type { ParsedBridgeCall } from './types.js';
2
- export declare const resolveParsed: (parsed: ParsedBridgeCall) => ParsedBridgeCall;
@@ -1,28 +0,0 @@
1
- import { CCTP_USDC, isNative } from './protocols.js';
2
- const tokenInfo = (reference) => {
3
- if (reference.protocol === 'cctp' && reference.destinationChainId !== undefined) {
4
- const token = CCTP_USDC[reference.destinationChainId.toString()];
5
- if (token)
6
- return { token, decimals: 6 };
7
- }
8
- if (reference.protocol === 'token' && reference.token && isNative(reference.token)) {
9
- return { token: reference.token, decimals: 18 };
10
- }
11
- return undefined;
12
- };
13
- export const resolveParsed = (parsed) => {
14
- const info = parsed.outputTokenReference ? tokenInfo(parsed.outputTokenReference) : undefined;
15
- if (info)
16
- parsed.outputToken = info.token;
17
- const amount = parsed.outputAmountReference;
18
- if (amount?.kind === 'normalized' && parsed.minOutputAmount === undefined) {
19
- const metadata = tokenInfo(amount.token);
20
- if (metadata) {
21
- const sourceDecimals = Math.min(metadata.decimals, amount.decimals ?? 8);
22
- parsed.minOutputAmount = amount.amount * 10n ** BigInt(metadata.decimals - sourceDecimals);
23
- }
24
- }
25
- parsed.unresolvedFields = ['sourceToken', 'sourceAmount', 'outputToken', 'minOutputAmount', 'receiver']
26
- .filter((field) => parsed[field] === undefined);
27
- return parsed;
28
- };
@@ -1,2 +0,0 @@
1
- import type { CalldataMethod } from '../abi.js';
2
- export declare const bridge: CalldataMethod;
@@ -1,28 +0,0 @@
1
- import { BRIDGE_ERRORS, BridgeError } from '../../errors/index.js';
2
- import { asBigint, asRecord, asString, decodeCall } from '../abi.js';
3
- import { subtractFees } from '../protocols.js';
4
- import { bridgeData, fee, input } from './params.js';
5
- import { readSocketBridge } from './protocols/index.js';
6
- export const bridge = {
7
- name: 'bridge', selector: '0xb18248d5',
8
- decode(data) {
9
- const a = decodeCall([{ name: 'quoteId', kind: 'bytes', size: 32 }, input, fee, bridgeData,
10
- { name: 'bridgeCallData', kind: 'bytes' }], data);
11
- const source = asRecord(a.input);
12
- const hop = asRecord(a.bridgeData);
13
- const target = asString(hop.target);
14
- const token = asString(source.inputToken);
15
- const amount = subtractFees(asBigint(source.inputAmount), asBigint(asRecord(a.fee).amount));
16
- const protocol = readSocketBridge(asString(a.bridgeCallData), target, token, asBigint(hop.value), asString(hop.approvalSpender));
17
- if (['receiveERC20', 'depositForBurn'].includes(protocol?.protocolMethod ?? '') && protocol?.bridgeAmount !== amount) {
18
- throw new BridgeError(BRIDGE_ERRORS.SOCKET_DEPOSIT_AMOUNT_MISMATCH, protocol?.diagnostics);
19
- }
20
- return {
21
- aggregatorId: 'socket', method: 'bridge', kind: 'bridge', quoteId: asString(a.quoteId),
22
- sourceToken: token, sourceAmount: asBigint(source.inputAmount), depositor: asString(source.user),
23
- bridgeToken: token, bridgeAmount: amount,
24
- referrer: asString(asRecord(a.fee).receiver), innerTarget: target,
25
- ...protocol,
26
- };
27
- },
28
- };
@@ -1,2 +0,0 @@
1
- import type { CalldataMethod } from '../abi.js';
2
- export declare const exec: CalldataMethod;