@1delta/trade-sdk 0.1.8 → 0.1.10

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 (94) hide show
  1. package/dist/aggregator/fetchAggregatorTrade.d.ts.map +1 -1
  2. package/dist/aggregator/fetchAggregatorTrade.js +3 -1
  3. package/dist/composedTrades/across/acrossAdapter.d.ts +5 -0
  4. package/dist/composedTrades/across/acrossAdapter.d.ts.map +1 -0
  5. package/dist/composedTrades/across/acrossAdapter.js +44 -0
  6. package/dist/composedTrades/across/acrossRoutes.d.ts +1 -2
  7. package/dist/composedTrades/across/acrossRoutes.d.ts.map +1 -1
  8. package/dist/composedTrades/across/acrossWithSwap.integration.spec.d.ts +1 -0
  9. package/dist/composedTrades/across/acrossWithSwap.integration.spec.js +122 -116
  10. package/dist/composedTrades/axelar/axelarAdapter.d.ts +5 -0
  11. package/dist/composedTrades/axelar/axelarAdapter.d.ts.map +1 -0
  12. package/dist/composedTrades/axelar/axelarAdapter.js +38 -0
  13. package/dist/composedTrades/axelar/axelarRoutes.d.ts +1 -2
  14. package/dist/composedTrades/axelar/axelarRoutes.d.ts.map +1 -1
  15. package/dist/composedTrades/gaszip/gaszipAdapter.d.ts +9 -0
  16. package/dist/composedTrades/gaszip/gaszipAdapter.d.ts.map +1 -0
  17. package/dist/composedTrades/gaszip/gaszipAdapter.js +46 -0
  18. package/dist/composedTrades/general/composableBridgeAdapter.d.ts +9 -0
  19. package/dist/composedTrades/general/composableBridgeAdapter.d.ts.map +1 -0
  20. package/dist/composedTrades/general/composableBridgeAdapter.js +39 -0
  21. package/dist/composedTrades/general/composeBridgeTrade.d.ts +5 -0
  22. package/dist/composedTrades/general/composeBridgeTrade.d.ts.map +1 -0
  23. package/dist/composedTrades/general/composeBridgeTrade.js +106 -0
  24. package/dist/composedTrades/general/index.d.ts +3 -0
  25. package/dist/composedTrades/general/index.d.ts.map +1 -0
  26. package/dist/composedTrades/general/index.js +2 -0
  27. package/dist/composedTrades/index.d.ts +3 -3
  28. package/dist/composedTrades/index.d.ts.map +1 -1
  29. package/dist/composedTrades/index.js +40 -3
  30. package/dist/composedTrades/utils/createSwapAndBridgeCalldata.d.ts.map +1 -1
  31. package/dist/composedTrades/utils/index.d.ts +1 -0
  32. package/dist/composedTrades/utils/index.d.ts.map +1 -1
  33. package/dist/composedTrades/utils/index.js +1 -0
  34. package/dist/composedTrades/utils/validateContracts.d.ts +5 -0
  35. package/dist/composedTrades/utils/validateContracts.d.ts.map +1 -0
  36. package/dist/composedTrades/utils/validateContracts.js +11 -0
  37. package/dist/core.d.ts.map +1 -1
  38. package/dist/core.js +1 -13
  39. package/dist/deltaCall/toComposerCall.d.ts.map +1 -1
  40. package/dist/deltaCall/toComposerCall.js +2 -8
  41. package/dist/index.d.ts +2 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +1 -0
  44. package/dist/initialize.d.ts +2 -2
  45. package/dist/initialize.d.ts.map +1 -1
  46. package/dist/registry/currency.d.ts +1 -1
  47. package/dist/registry/currency.d.ts.map +1 -1
  48. package/dist/registry/currency.js +2 -1
  49. package/dist/registry/price.d.ts +1 -1
  50. package/dist/registry/price.d.ts.map +1 -1
  51. package/dist/registry/price.js +2 -1
  52. package/dist/tradeExecution/getStatusFromTrade.d.ts +20 -0
  53. package/dist/tradeExecution/getStatusFromTrade.d.ts.map +1 -0
  54. package/dist/tradeExecution/getStatusFromTrade.js +71 -0
  55. package/dist/tradeExecution/getTransactionData.d.ts +13 -0
  56. package/dist/tradeExecution/getTransactionData.d.ts.map +1 -0
  57. package/dist/tradeExecution/getTransactionData.js +50 -0
  58. package/dist/tradeExecution/index.d.ts +13 -0
  59. package/dist/tradeExecution/index.d.ts.map +1 -0
  60. package/dist/tradeExecution/index.js +150 -0
  61. package/dist/tradeExecution/isBridge.d.ts +3 -0
  62. package/dist/tradeExecution/isBridge.d.ts.map +1 -0
  63. package/dist/tradeExecution/isBridge.js +3 -0
  64. package/dist/tradeExecution/signData.d.ts +4 -0
  65. package/dist/tradeExecution/signData.d.ts.map +1 -0
  66. package/dist/tradeExecution/signData.js +21 -0
  67. package/dist/tradeExecution/trackTradeCompletion.d.ts +9 -0
  68. package/dist/tradeExecution/trackTradeCompletion.d.ts.map +1 -0
  69. package/dist/tradeExecution/trackTradeCompletion.js +75 -0
  70. package/dist/tradeExecution/types.d.ts +30 -0
  71. package/dist/tradeExecution/types.d.ts.map +1 -0
  72. package/dist/tradeExecution/types.js +1 -0
  73. package/dist/types/bridgeInput.d.ts +30 -19
  74. package/dist/types/bridgeInput.d.ts.map +1 -1
  75. package/dist/types/bridgeInput.js +1 -1
  76. package/dist/types/composedBridgeAdapter.d.ts +33 -0
  77. package/dist/types/composedBridgeAdapter.d.ts.map +1 -0
  78. package/dist/types/composedBridgeAdapter.js +1 -0
  79. package/dist/types/index.d.ts +1 -0
  80. package/dist/types/index.d.ts.map +1 -1
  81. package/dist/types/index.js +1 -0
  82. package/package.json +4 -4
  83. package/dist/composedTrades/across/acrossWithSwaps.d.ts +0 -5
  84. package/dist/composedTrades/across/acrossWithSwaps.d.ts.map +0 -1
  85. package/dist/composedTrades/across/acrossWithSwaps.integration.spec.d.ts +0 -1
  86. package/dist/composedTrades/across/acrossWithSwaps.integration.spec.d.ts.map +0 -1
  87. package/dist/composedTrades/across/acrossWithSwaps.integration.spec.js +0 -110
  88. package/dist/composedTrades/across/acrossWithSwaps.js +0 -124
  89. package/dist/composedTrades/axelar/axelarWithSwaps.d.ts +0 -5
  90. package/dist/composedTrades/axelar/axelarWithSwaps.d.ts.map +0 -1
  91. package/dist/composedTrades/axelar/axelarWithSwaps.js +0 -126
  92. package/dist/composedTrades/gaszip/gaszipWithSwaps.d.ts +0 -5
  93. package/dist/composedTrades/gaszip/gaszipWithSwaps.d.ts.map +0 -1
  94. package/dist/composedTrades/gaszip/gaszipWithSwaps.js +0 -115
@@ -1 +1 @@
1
- {"version":3,"file":"fetchAggregatorTrade.d.ts","sourceRoot":"","sources":["../../src/aggregator/fetchAggregatorTrade.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,kBAAkB,EAIlB,YAAY,EACZ,aAAa,EAEd,MAAM,mBAAmB,CAAA;AAe1B,eAAO,MAAM,oBAAoB,GAC/B,YAAY,MAAM,EAClB,OAAO,kBAAkB,GAAG,aAAa,EACzC,aAAa,eAAe,KAC3B,OAAO,CAAC,YAAY,GAAG,SAAS,CAelC,CAAA"}
1
+ {"version":3,"file":"fetchAggregatorTrade.d.ts","sourceRoot":"","sources":["../../src/aggregator/fetchAggregatorTrade.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,kBAAkB,EAIlB,YAAY,EACZ,aAAa,EAEd,MAAM,mBAAmB,CAAA;AAe1B,eAAO,MAAM,oBAAoB,GAC/B,YAAY,MAAM,EAClB,OAAO,kBAAkB,GAAG,aAAa,EACzC,aAAa,eAAe,KAC3B,OAAO,CAAC,YAAY,GAAG,SAAS,CAelC,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { fetchAggregatorTrade as fetchAggregatorTradeWithoutConfigs, TradeAggregator, } from '@1delta/aggregators';
2
2
  import { getSwapAggregators } from '@1delta/bridge-configs';
3
+ import { getAllConfigs } from '@1delta/bridge-core';
3
4
  import { ChainType, ChainUtils, TradeType, } from '@1delta/lib-utils';
4
5
  import { fetchBridgeTrade } from '../bridge/fetchBridgeTrade';
5
6
  import { createSwapAndBridgeCalldata, requireDeltaContracts, } from '../composedTrades/utils';
@@ -76,7 +77,8 @@ const fetchSwapTrade = async (aggregator, input, controller) => {
76
77
  return fetchExactInSwapTrade(aggregator, input, controller);
77
78
  };
78
79
  const fetchExactInSwapTrade = async (aggregator, input, controller) => {
79
- if (getSwapAggregators().includes(aggregator)) {
80
+ if (getSwapAggregators().includes(aggregator) ||
81
+ getAllConfigs().some((config) => config.name === aggregator)) {
80
82
  return await fetchBridgeTrade(aggregator, { ...input, order: 'CHEAPEST' }, controller);
81
83
  }
82
84
  else {
@@ -0,0 +1,5 @@
1
+ import { AcrossBaseInput, ComposedBridgeAdapter } from '../../types';
2
+ import { AcrossRouteResponse } from './acrossRoutes';
3
+ import { AcrossWithSwapInput } from './acrossWithSwap';
4
+ export declare const AcrossAdapter: ComposedBridgeAdapter<AcrossBaseInput, AcrossWithSwapInput, AcrossRouteResponse>;
5
+ //# sourceMappingURL=acrossAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acrossAdapter.d.ts","sourceRoot":"","sources":["../../../src/composedTrades/across/acrossAdapter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,EACL,mBAAmB,EAGpB,MAAM,gBAAgB,CAAA;AACvB,OAAiC,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAIhF,eAAO,MAAM,aAAa,EAAE,qBAAqB,CAC/C,eAAe,EACf,mBAAmB,EACnB,mBAAmB,CAgEpB,CAAA"}
@@ -0,0 +1,44 @@
1
+ import { Bridge } from '@1delta/bridge-configs';
2
+ import { CurrencyHandler, nativeOnChain } from '@1delta/lib-utils';
3
+ import { getCurrencyGetter } from '../../registry';
4
+ import { fetchAcrossRoutes, selectAcrossRoute, } from './acrossRoutes';
5
+ import fetchAcrossTradeWithSwap from './acrossWithSwap';
6
+ const DUMMY_ADDRESS = '0x0000000000000000000000000000000000000001';
7
+ export const AcrossAdapter = {
8
+ async getRoute(fromChainId, toChainId, input) {
9
+ if (!input.fromCurrency || !input.toCurrency)
10
+ return undefined;
11
+ const routes = await fetchAcrossRoutes(fromChainId, toChainId);
12
+ return selectAcrossRoute(routes, input.fromCurrency, input.toCurrency);
13
+ },
14
+ getBridgeCurrencies(route, input) {
15
+ const getCurrency = getCurrencyGetter();
16
+ const fromAcrossCurrency = getCurrency(route.originChainId.toString(), route.originToken);
17
+ const toAcrossCurrency = getCurrency(route.destinationChainId.toString(), route.destinationToken);
18
+ return {
19
+ fromBridgeCurrency: fromAcrossCurrency,
20
+ toBridgeCurrency: toAcrossCurrency,
21
+ inputIsBridgeAsset: CurrencyHandler.equal(CurrencyHandler.wrapped(input.fromCurrency), fromAcrossCurrency),
22
+ outputIsBridgeAsset: CurrencyHandler.equal(CurrencyHandler.wrapped(input.toCurrency), toAcrossCurrency),
23
+ };
24
+ },
25
+ buildBridgeInput({ input, extendedAmount, bridgeSlippage, isDummy, fromBridgeCurrency, toBridgeCurrency, route, }) {
26
+ const fromCurrency = route.isNative
27
+ ? nativeOnChain(route.originChainId.toString())
28
+ : fromBridgeCurrency;
29
+ return {
30
+ ...input,
31
+ swapAmount: extendedAmount,
32
+ slippage: bridgeSlippage,
33
+ fromCurrency,
34
+ bridgeToCurrency: toBridgeCurrency,
35
+ caller: isDummy ? DUMMY_ADDRESS : input.caller,
36
+ receiver: isDummy ? DUMMY_ADDRESS : input.receiver,
37
+ };
38
+ },
39
+ async fetchBridgeTrade(bridge, input, controller) {
40
+ if (bridge !== Bridge.ACROSS)
41
+ throw new Error(`AcrossAdapter only supports Across bridge`);
42
+ return await fetchAcrossTradeWithSwap(input, controller);
43
+ },
44
+ };
@@ -1,5 +1,5 @@
1
1
  import { RawCurrency } from '@1delta/lib-utils';
2
- interface AcrossRouteResponse {
2
+ export interface AcrossRouteResponse {
3
3
  originChainId: number;
4
4
  originToken: string;
5
5
  destinationChainId: number;
@@ -13,5 +13,4 @@ export declare const fetchAcrossRoutes: (fromChainId: string, toChainId: string)
13
13
  * Enhanced route selection with clearer priority logic
14
14
  */
15
15
  export declare const selectAcrossRoute: (routes: AcrossRouteResponse[], fromCurrency: RawCurrency, toCurrency: RawCurrency) => AcrossRouteResponse | undefined;
16
- export {};
17
16
  //# sourceMappingURL=acrossRoutes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"acrossRoutes.d.ts","sourceRoot":"","sources":["../../../src/composedTrades/across/acrossRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEhE,UAAU,mBAAmB;IAC3B,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,sBAAsB,EAAE,MAAM,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;CAClB;AAKD,eAAO,MAAM,iBAAiB,GAC5B,aAAa,MAAM,EACnB,WAAW,MAAM,KAChB,OAAO,CAAC,mBAAmB,EAAE,CAK/B,CAAA;AA4DD;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,mBAAmB,EAAE,EAC7B,cAAc,WAAW,EACzB,YAAY,WAAW,KACtB,mBAAmB,GAAG,SAyBxB,CAAA"}
1
+ {"version":3,"file":"acrossRoutes.d.ts","sourceRoot":"","sources":["../../../src/composedTrades/across/acrossRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEhE,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,sBAAsB,EAAE,MAAM,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;CAClB;AAKD,eAAO,MAAM,iBAAiB,GAC5B,aAAa,MAAM,EACnB,WAAW,MAAM,KAChB,OAAO,CAAC,mBAAmB,EAAE,CAK/B,CAAA;AA4DD;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,mBAAmB,EAAE,EAC7B,cAAc,WAAW,EACzB,YAAY,WAAW,KACtB,mBAAmB,GAAG,SAyBxB,CAAA"}
@@ -1 +1,2 @@
1
+ export {};
1
2
  //# sourceMappingURL=acrossWithSwap.integration.spec.d.ts.map
@@ -1,116 +1,122 @@
1
- "use strict";
2
- // import { ChainId, Percent, TradeType } from '@1delta/base-sdk'
3
- // import { beforeEach, describe, expect, it, vi } from 'vitest'
4
- // import { USDC_ON } from '@/lib/constants/addresses'
5
- // import { getAcrossMulticallHandler } from '@/lib/constants/addresses/multicall/across'
6
- // import { CurrencyHandler } from '@/lib/services/currencyUtils'
7
- // import { nativeOnChain } from '@/lib/services/tokens'
8
- // import { RawCurrency } from '@/lib/types'
9
- // import fetchAcrossTradeWithSwap, { AcrossWithSwapInput } from './acrossWithSwap'
10
- // describe('fetchAcrossTradeWithSwap', () => {
11
- // beforeEach(() => {
12
- // vi.clearAllMocks()
13
- // })
14
- // const ACCOUNT = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
15
- // const WBTC_OP: RawCurrency = {
16
- // chainId: ChainId.OP_MAINNET,
17
- // address: '0x68f180fcCe6836688e9084f035309E29Bf0A2095',
18
- // decimals: 8,
19
- // symbol: 'WBTC',
20
- // name: 'Wrapped BTC',
21
- // }
22
- // it('Bridge Native', async () => {
23
- // // Receive Native only if receiver address is EOA
24
- // const fromCurrency = nativeOnChain(ChainId.ARBITRUM_ONE)
25
- // const toCurrency = nativeOnChain(ChainId.OP_MAINNET)
26
- // const bridgeToCurrency = CurrencyHandler.wrapped(toCurrency)
27
- // const input: AcrossWithSwapInput = {
28
- // tradeType: TradeType.EXACT_INPUT,
29
- // fromCurrency,
30
- // bridgeToCurrency,
31
- // toCurrency,
32
- // slippage: 1,
33
- // swapAmount: '1000000000000000000',
34
- // caller: ACCOUNT,
35
- // receiver: ACCOUNT,
36
- // order: 'FASTEST',
37
- // }
38
- // const { trade: result, receiver } = await fetchAcrossTradeWithSwap(input)
39
- // console.log('result', result, receiver)
40
- // expect(result).toBeDefined()
41
- // expect(result?.inputAmount.currency).toEqual(fromCurrency)
42
- // expect(result?.outputAmount.currency).toEqual(toCurrency)
43
- // expect(receiver).toEqual(ACCOUNT)
44
- // expect(result?.crossChainParams?.message).toBeUndefined()
45
- // })
46
- // it('Bridge Native -> WETH', async () => {
47
- // // Receive Wrapped Native only if receiver address is contract
48
- // const fromCurrency = nativeOnChain(ChainId.ARBITRUM_ONE)
49
- // const toCurrency = CurrencyHandler.wrapped(
50
- // nativeOnChain(ChainId.OP_MAINNET)
51
- // )
52
- // const input: AcrossWithSwapInput = {
53
- // tradeType: TradeType.EXACT_INPUT,
54
- // fromCurrency,
55
- // bridgeToCurrency: toCurrency,
56
- // toCurrency,
57
- // slippage: 1,
58
- // swapAmount: '1000000000000000000',
59
- // caller: ACCOUNT,
60
- // receiver: ACCOUNT,
61
- // order: 'FASTEST',
62
- // }
63
- // const { trade: result, receiver } = await fetchAcrossTradeWithSwap(input)
64
- // console.log('result', result, receiver)
65
- // expect(result).toBeDefined()
66
- // expect(result?.inputAmount.currency).toEqual(fromCurrency)
67
- // expect(result?.outputAmount.currency).toEqual(toCurrency)
68
- // expect(receiver).toEqual(getAcrossMulticallHandler(ChainId.OP_MAINNET))
69
- // expect(result?.crossChainParams?.message).toBeDefined()
70
- // })
71
- // it('Bridge USDC', async () => {
72
- // const fromCurrency = USDC_ON(ChainId.ARBITRUM_ONE)
73
- // const toCurrency = USDC_ON(ChainId.OP_MAINNET)
74
- // const input: AcrossWithSwapInput = {
75
- // tradeType: TradeType.EXACT_INPUT,
76
- // fromCurrency,
77
- // bridgeToCurrency: toCurrency,
78
- // toCurrency,
79
- // slippage: 1,
80
- // swapAmount: '1000000',
81
- // caller: ACCOUNT,
82
- // receiver: ACCOUNT,
83
- // order: 'FASTEST',
84
- // }
85
- // const { trade: result, receiver } = await fetchAcrossTradeWithSwap(input)
86
- // console.log('result', result, receiver)
87
- // expect(result).toBeDefined()
88
- // expect(result?.inputAmount.currency).toEqual(fromCurrency)
89
- // expect(result?.outputAmount.currency).toEqual(toCurrency)
90
- // expect(receiver).toEqual(ACCOUNT)
91
- // expect(result?.crossChainParams?.message).toBeUndefined()
92
- // })
93
- // it('Bridge + Swap', async () => {
94
- // const fromCurrency = USDC_ON(ChainId.ARBITRUM_ONE)
95
- // const bridgeToCurrency = USDC_ON(ChainId.OP_MAINNET)
96
- // const toCurrency = WBTC_OP
97
- // const input: AcrossWithSwapInput = {
98
- // tradeType: TradeType.EXACT_INPUT,
99
- // fromCurrency,
100
- // bridgeToCurrency,
101
- // toCurrency,
102
- // slippage: 1,
103
- // swapAmount: '1000000',
104
- // caller: ACCOUNT,
105
- // receiver: ACCOUNT,
106
- // order: 'FASTEST',
107
- // }
108
- // const { trade: result, receiver } = await fetchAcrossTradeWithSwap(input)
109
- // console.log('result', result, receiver)
110
- // expect(result).toBeDefined()
111
- // expect(result?.inputAmount.currency).toEqual(fromCurrency)
112
- // expect(result?.outputAmount.currency).toEqual(toCurrency)
113
- // expect(receiver).toEqual(getAcrossMulticallHandler(ChainId.OP_MAINNET))
114
- // expect(result?.crossChainParams?.message).toBeDefined()
115
- // })
116
- // }, 20000)
1
+ import { CurrencyHandler, getAcrossMulticallHandler, nativeOnChain, SupportedChainId, TradeType, } from '@1delta/lib-utils';
2
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
3
+ import fetchAcrossTradeWithSwap from './acrossWithSwap';
4
+ describe('fetchAcrossTradeWithSwap', () => {
5
+ beforeEach(() => {
6
+ vi.clearAllMocks();
7
+ });
8
+ const ACCOUNT = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045';
9
+ const WBTC_OP = {
10
+ chainId: SupportedChainId.OP_MAINNET,
11
+ address: '0x68f180fcCe6836688e9084f035309E29Bf0A2095',
12
+ decimals: 8,
13
+ symbol: 'WBTC',
14
+ name: 'Wrapped BTC',
15
+ };
16
+ const USDC_OP = {
17
+ chainId: SupportedChainId.OP_MAINNET,
18
+ address: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85',
19
+ decimals: 6,
20
+ symbol: 'USDC',
21
+ name: 'USDC Stablecoin',
22
+ };
23
+ const USDC_ARB = {
24
+ chainId: SupportedChainId.ARBITRUM_NOVA,
25
+ address: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
26
+ decimals: 6,
27
+ symbol: 'USDC',
28
+ name: 'USDC Stablecoin',
29
+ };
30
+ it('Bridge Native', async () => {
31
+ // Receive Native only if receiver address is EOA
32
+ const fromCurrency = nativeOnChain(SupportedChainId.ARBITRUM_ONE);
33
+ const toCurrency = USDC_OP;
34
+ const bridgeToCurrency = CurrencyHandler.wrapped(toCurrency);
35
+ const input = {
36
+ tradeType: TradeType.EXACT_INPUT,
37
+ fromCurrency,
38
+ bridgeToCurrency,
39
+ toCurrency,
40
+ slippage: 1,
41
+ swapAmount: '1000000000000000000',
42
+ caller: ACCOUNT,
43
+ receiver: ACCOUNT,
44
+ order: 'FASTEST',
45
+ };
46
+ const { trade: result, receiver } = await fetchAcrossTradeWithSwap(input);
47
+ console.log('result', result, receiver);
48
+ expect(result).toBeDefined();
49
+ expect(result?.inputAmount.currency).toEqual(fromCurrency);
50
+ expect(result?.outputAmount.currency).toEqual(toCurrency);
51
+ expect(receiver).toEqual(ACCOUNT);
52
+ expect(result?.crossChainParams?.message).toBeUndefined();
53
+ });
54
+ it('Bridge Native -> WETH', async () => {
55
+ // Receive Wrapped Native only if receiver address is contract
56
+ const fromCurrency = nativeOnChain(SupportedChainId.ARBITRUM_ONE);
57
+ const toCurrency = CurrencyHandler.wrapped(nativeOnChain(SupportedChainId.OP_MAINNET));
58
+ const input = {
59
+ tradeType: TradeType.EXACT_INPUT,
60
+ fromCurrency,
61
+ bridgeToCurrency: toCurrency,
62
+ toCurrency,
63
+ slippage: 1,
64
+ swapAmount: '1000000000000000000',
65
+ caller: ACCOUNT,
66
+ receiver: ACCOUNT,
67
+ order: 'FASTEST',
68
+ };
69
+ const { trade: result, receiver } = await fetchAcrossTradeWithSwap(input);
70
+ console.log('result', result, receiver);
71
+ expect(result).toBeDefined();
72
+ expect(result?.inputAmount.currency).toEqual(fromCurrency);
73
+ expect(result?.outputAmount.currency).toEqual(toCurrency);
74
+ expect(receiver).toEqual(getAcrossMulticallHandler(SupportedChainId.OP_MAINNET));
75
+ expect(result?.crossChainParams?.message).toBeDefined();
76
+ });
77
+ it('Bridge USDC', async () => {
78
+ const fromCurrency = USDC_ARB;
79
+ const toCurrency = USDC_OP;
80
+ const input = {
81
+ tradeType: TradeType.EXACT_INPUT,
82
+ fromCurrency,
83
+ bridgeToCurrency: toCurrency,
84
+ toCurrency,
85
+ slippage: 1,
86
+ swapAmount: '1000000',
87
+ caller: ACCOUNT,
88
+ receiver: ACCOUNT,
89
+ order: 'FASTEST',
90
+ };
91
+ const { trade: result, receiver } = await fetchAcrossTradeWithSwap(input);
92
+ console.log('result', result, receiver);
93
+ expect(result).toBeDefined();
94
+ expect(result?.inputAmount.currency).toEqual(fromCurrency);
95
+ expect(result?.outputAmount.currency).toEqual(toCurrency);
96
+ expect(receiver).toEqual(ACCOUNT);
97
+ expect(result?.crossChainParams?.message).toBeUndefined();
98
+ });
99
+ it('Bridge + Swap', async () => {
100
+ const fromCurrency = USDC_ARB;
101
+ const bridgeToCurrency = USDC_OP;
102
+ const toCurrency = WBTC_OP;
103
+ const input = {
104
+ tradeType: TradeType.EXACT_INPUT,
105
+ fromCurrency,
106
+ bridgeToCurrency,
107
+ toCurrency,
108
+ slippage: 1,
109
+ swapAmount: '1000000',
110
+ caller: ACCOUNT,
111
+ receiver: ACCOUNT,
112
+ order: 'FASTEST',
113
+ };
114
+ const { trade: result, receiver } = await fetchAcrossTradeWithSwap(input);
115
+ console.log('result', result, receiver);
116
+ expect(result).toBeDefined();
117
+ expect(result?.inputAmount.currency).toEqual(fromCurrency);
118
+ expect(result?.outputAmount.currency).toEqual(toCurrency);
119
+ expect(receiver).toEqual(getAcrossMulticallHandler(SupportedChainId.OP_MAINNET));
120
+ expect(result?.crossChainParams?.message).toBeDefined();
121
+ });
122
+ }, 20000);
@@ -0,0 +1,5 @@
1
+ import { AxelarBaseInput, ComposedBridgeAdapter } from '../../types';
2
+ import { AxelarRoute } from './axelarRoutes';
3
+ import { AxelarWithSwapInput } from './axelarWithSwap';
4
+ export declare const AxelarAdapter: ComposedBridgeAdapter<AxelarBaseInput, AxelarWithSwapInput, AxelarRoute>;
5
+ //# sourceMappingURL=axelarAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axelarAdapter.d.ts","sourceRoot":"","sources":["../../../src/composedTrades/axelar/axelarAdapter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAiC,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAIhF,eAAO,MAAM,aAAa,EAAE,qBAAqB,CAC/C,eAAe,EACf,mBAAmB,EACnB,WAAW,CA0DZ,CAAA"}
@@ -0,0 +1,38 @@
1
+ import { Bridge } from '@1delta/bridge-configs';
2
+ import { CurrencyHandler } from '@1delta/lib-utils';
3
+ import { getCurrencyGetter } from '../../registry';
4
+ import { fetchAxelarRoute } from './axelarRoutes';
5
+ import fetchAxelarTradeWithSwap from './axelarWithSwap';
6
+ const DUMMY_ADDRESS = '0x0000000000000000000000000000000000000001';
7
+ export const AxelarAdapter = {
8
+ async getRoute(fromChainId, toChainId) {
9
+ return fetchAxelarRoute(fromChainId, toChainId);
10
+ },
11
+ getBridgeCurrencies(route, input) {
12
+ const getCurrency = getCurrencyGetter();
13
+ const fromBridgeCurrency = getCurrency(input.fromCurrency?.chainId, route.fromBridgeToken);
14
+ const toBridgeCurrency = getCurrency(input.toCurrency?.chainId, route.toBridgeToken);
15
+ return {
16
+ fromBridgeCurrency,
17
+ toBridgeCurrency,
18
+ inputIsBridgeAsset: CurrencyHandler.equal(CurrencyHandler.wrapped(input.fromCurrency), fromBridgeCurrency),
19
+ outputIsBridgeAsset: CurrencyHandler.equal(CurrencyHandler.wrapped(input.toCurrency), toBridgeCurrency),
20
+ };
21
+ },
22
+ buildBridgeInput({ input, extendedAmount, bridgeSlippage, isDummy, fromBridgeCurrency, toBridgeCurrency, forwarder, }) {
23
+ return {
24
+ ...input,
25
+ slippage: bridgeSlippage,
26
+ swapAmount: extendedAmount,
27
+ fromCurrency: fromBridgeCurrency,
28
+ bridgeToCurrency: toBridgeCurrency,
29
+ caller: forwarder,
30
+ receiver: isDummy ? DUMMY_ADDRESS : input.receiver,
31
+ };
32
+ },
33
+ async fetchBridgeTrade(bridge, input, controller) {
34
+ if (bridge !== Bridge.AXELAR)
35
+ throw new Error(`AxelarAdapter only supports Axelar bridge`);
36
+ return fetchAxelarTradeWithSwap(input, controller);
37
+ },
38
+ };
@@ -1,7 +1,6 @@
1
- interface AxelarRoute {
1
+ export interface AxelarRoute {
2
2
  fromBridgeToken: string;
3
3
  toBridgeToken: string;
4
4
  }
5
5
  export declare function fetchAxelarRoute(fromChainId: string, toChainId: string): Promise<AxelarRoute | undefined>;
6
- export {};
7
6
  //# sourceMappingURL=axelarRoutes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"axelarRoutes.d.ts","sourceRoot":"","sources":["../../../src/composedTrades/axelar/axelarRoutes.ts"],"names":[],"mappings":"AAcA,UAAU,WAAW;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAWlC"}
1
+ {"version":3,"file":"axelarRoutes.d.ts","sourceRoot":"","sources":["../../../src/composedTrades/axelar/axelarRoutes.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,WAAW;IAC1B,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAWlC"}
@@ -0,0 +1,9 @@
1
+ import { RawCurrency } from '@1delta/lib-utils';
2
+ import { BaseBridgeInput, ComposedBridgeAdapter, ComposedBridgeInput } from '../../types';
3
+ interface Route {
4
+ fromBridgeCurrency: RawCurrency;
5
+ toBridgeCurrency: RawCurrency;
6
+ }
7
+ export declare const GaszipAdapter: ComposedBridgeAdapter<ComposedBridgeInput, BaseBridgeInput, Route>;
8
+ export {};
9
+ //# sourceMappingURL=gaszipAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaszipAdapter.d.ts","sourceRoot":"","sources":["../../../src/composedTrades/gaszip/gaszipAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAkC,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAG/E,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,aAAa,CAAA;AAIpB,UAAU,KAAK;IACb,kBAAkB,EAAE,WAAW,CAAA;IAC/B,gBAAgB,EAAE,WAAW,CAAA;CAC9B;AAED,eAAO,MAAM,aAAa,EAAE,qBAAqB,CAC/C,mBAAmB,EACnB,eAAe,EACf,KAAK,CA2DN,CAAA"}
@@ -0,0 +1,46 @@
1
+ import { Bridge } from '@1delta/bridge-configs';
2
+ import { CurrencyHandler, nativeOnChain } from '@1delta/lib-utils';
3
+ import { fetchBridgeTrade } from '../../bridge';
4
+ const DUMMY_ADDRESS = '0x0000000000000000000000000000000000000001';
5
+ export const GaszipAdapter = {
6
+ async getRoute(fromChainId, toChainId, input) {
7
+ const fromBridgeCurrency = nativeOnChain(fromChainId);
8
+ const toBridgeCurrency = nativeOnChain(toChainId);
9
+ if (!CurrencyHandler.isNative(input.toCurrency)) {
10
+ throw new Error('Gaszip only supports native output');
11
+ }
12
+ return {
13
+ fromBridgeCurrency,
14
+ toBridgeCurrency,
15
+ };
16
+ },
17
+ getBridgeCurrencies(route, input) {
18
+ const { fromBridgeCurrency, toBridgeCurrency } = route;
19
+ return {
20
+ fromBridgeCurrency,
21
+ toBridgeCurrency,
22
+ inputIsBridgeAsset: CurrencyHandler.equal(input.fromCurrency, route.fromBridgeCurrency),
23
+ outputIsBridgeAsset: true,
24
+ };
25
+ },
26
+ buildBridgeInput({ input, extendedAmount, bridgeSlippage, isDummy, fromBridgeCurrency, toBridgeCurrency, }) {
27
+ return {
28
+ tradeType: input.tradeType,
29
+ swapAmount: extendedAmount,
30
+ slippage: bridgeSlippage,
31
+ fromCurrency: fromBridgeCurrency,
32
+ toCurrency: toBridgeCurrency,
33
+ caller: isDummy ? DUMMY_ADDRESS : input.caller,
34
+ receiver: isDummy ? DUMMY_ADDRESS : input.receiver,
35
+ order: 'CHEAPEST',
36
+ };
37
+ },
38
+ async fetchBridgeTrade(bridge, input, controller) {
39
+ if (bridge !== Bridge.GASZIP)
40
+ throw new Error(`GaszipAdapter only supports Gaszip bridge`);
41
+ const trade = await fetchBridgeTrade(bridge, input, controller);
42
+ return {
43
+ trade,
44
+ };
45
+ },
46
+ };
@@ -0,0 +1,9 @@
1
+ import { RawCurrency } from '@1delta/lib-utils';
2
+ import { BaseBridgeInput, ComposedBridgeAdapter, ComposedBridgeInput } from '../../types';
3
+ interface Route {
4
+ fromBridgeCurrency: RawCurrency;
5
+ toBridgeCurrency: RawCurrency;
6
+ }
7
+ export declare const ComposableBridgeAdapter: ComposedBridgeAdapter<ComposedBridgeInput, BaseBridgeInput, Route>;
8
+ export {};
9
+ //# sourceMappingURL=composableBridgeAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composableBridgeAdapter.d.ts","sourceRoot":"","sources":["../../../src/composedTrades/general/composableBridgeAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAGhE,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,aAAa,CAAA;AAIpB,UAAU,KAAK;IACb,kBAAkB,EAAE,WAAW,CAAA;IAC/B,gBAAgB,EAAE,WAAW,CAAA;CAC9B;AAED,eAAO,MAAM,uBAAuB,EAAE,qBAAqB,CACzD,mBAAmB,EACnB,eAAe,EACf,KAAK,CA8CN,CAAA"}
@@ -0,0 +1,39 @@
1
+ import { CurrencyHandler } from '@1delta/lib-utils';
2
+ import { fetchBridgeTrade } from '../../bridge';
3
+ const DUMMY_ADDRESS = '0x0000000000000000000000000000000000000001';
4
+ export const ComposableBridgeAdapter = {
5
+ async getRoute(_fromChainId, _toChainId, input) {
6
+ if (!input.fromCurrency || !input.toCurrency)
7
+ return undefined;
8
+ const fromBridgeCurrency = input.fromCurrency;
9
+ const toBridgeCurrency = input.toCurrency;
10
+ return {
11
+ fromBridgeCurrency,
12
+ toBridgeCurrency,
13
+ };
14
+ },
15
+ getBridgeCurrencies(route, input) {
16
+ const { fromBridgeCurrency, toBridgeCurrency } = route;
17
+ return {
18
+ fromBridgeCurrency,
19
+ toBridgeCurrency,
20
+ inputIsBridgeAsset: CurrencyHandler.equal(input.fromCurrency, route.fromBridgeCurrency),
21
+ outputIsBridgeAsset: CurrencyHandler.equal(input.toCurrency, route.toBridgeCurrency),
22
+ };
23
+ },
24
+ buildBridgeInput({ input, extendedAmount, bridgeSlippage, isDummy }) {
25
+ return {
26
+ ...input,
27
+ swapAmount: extendedAmount,
28
+ slippage: bridgeSlippage,
29
+ caller: isDummy ? DUMMY_ADDRESS : input.caller,
30
+ receiver: isDummy ? DUMMY_ADDRESS : input.receiver,
31
+ };
32
+ },
33
+ async fetchBridgeTrade(bridge, input, controller) {
34
+ const trade = await fetchBridgeTrade(bridge, input, controller);
35
+ return {
36
+ trade,
37
+ };
38
+ },
39
+ };
@@ -0,0 +1,5 @@
1
+ import { Bridge } from '@1delta/bridge-configs';
2
+ import { GenericTrade } from '@1delta/lib-utils';
3
+ import { ComposedBridgeAdapter, ComposedBridgeInput } from '../../types';
4
+ export declare function composeBridgeTrade<Input extends ComposedBridgeInput, BridgeInput, Route>(bridge: Bridge, input: Input, adapter: ComposedBridgeAdapter<Input, BridgeInput, Route>, controller?: AbortController): Promise<GenericTrade | undefined>;
5
+ //# sourceMappingURL=composeBridgeTrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composeBridgeTrade.d.ts","sourceRoot":"","sources":["../../../src/composedTrades/general/composeBridgeTrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAO/C,OAAO,EAGL,YAAY,EAKb,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAEL,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,aAAa,CAAA;AAOpB,wBAAsB,kBAAkB,CACtC,KAAK,SAAS,mBAAmB,EACjC,WAAW,EACX,KAAK,EAEL,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,EACzD,UAAU,CAAC,EAAE,eAAe,GAC3B,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAqKnC"}