@1delta/trade-sdk 0.1.9 → 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 (91) hide show
  1. package/dist/composedTrades/across/acrossAdapter.d.ts +5 -0
  2. package/dist/composedTrades/across/acrossAdapter.d.ts.map +1 -0
  3. package/dist/composedTrades/across/acrossAdapter.js +44 -0
  4. package/dist/composedTrades/across/acrossRoutes.d.ts +1 -2
  5. package/dist/composedTrades/across/acrossRoutes.d.ts.map +1 -1
  6. package/dist/composedTrades/across/acrossWithSwap.integration.spec.d.ts +1 -0
  7. package/dist/composedTrades/across/acrossWithSwap.integration.spec.js +122 -116
  8. package/dist/composedTrades/axelar/axelarAdapter.d.ts +5 -0
  9. package/dist/composedTrades/axelar/axelarAdapter.d.ts.map +1 -0
  10. package/dist/composedTrades/axelar/axelarAdapter.js +38 -0
  11. package/dist/composedTrades/axelar/axelarRoutes.d.ts +1 -2
  12. package/dist/composedTrades/axelar/axelarRoutes.d.ts.map +1 -1
  13. package/dist/composedTrades/gaszip/gaszipAdapter.d.ts +9 -0
  14. package/dist/composedTrades/gaszip/gaszipAdapter.d.ts.map +1 -0
  15. package/dist/composedTrades/gaszip/gaszipAdapter.js +46 -0
  16. package/dist/composedTrades/general/composableBridgeAdapter.d.ts +9 -0
  17. package/dist/composedTrades/general/composableBridgeAdapter.d.ts.map +1 -0
  18. package/dist/composedTrades/general/composableBridgeAdapter.js +39 -0
  19. package/dist/composedTrades/general/composeBridgeTrade.d.ts +5 -0
  20. package/dist/composedTrades/general/composeBridgeTrade.d.ts.map +1 -0
  21. package/dist/composedTrades/general/composeBridgeTrade.js +106 -0
  22. package/dist/composedTrades/general/index.d.ts +3 -0
  23. package/dist/composedTrades/general/index.d.ts.map +1 -0
  24. package/dist/composedTrades/general/index.js +2 -0
  25. package/dist/composedTrades/index.d.ts +3 -3
  26. package/dist/composedTrades/index.d.ts.map +1 -1
  27. package/dist/composedTrades/index.js +40 -3
  28. package/dist/composedTrades/utils/createSwapAndBridgeCalldata.d.ts.map +1 -1
  29. package/dist/composedTrades/utils/createSwapAndBridgeCalldata.js +1 -25
  30. package/dist/composedTrades/utils/index.d.ts +1 -0
  31. package/dist/composedTrades/utils/index.d.ts.map +1 -1
  32. package/dist/composedTrades/utils/index.js +1 -0
  33. package/dist/composedTrades/utils/validateContracts.d.ts +5 -0
  34. package/dist/composedTrades/utils/validateContracts.d.ts.map +1 -0
  35. package/dist/composedTrades/utils/validateContracts.js +11 -0
  36. package/dist/core.d.ts.map +1 -1
  37. package/dist/core.js +1 -13
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +1 -0
  41. package/dist/initialize.d.ts +2 -2
  42. package/dist/initialize.d.ts.map +1 -1
  43. package/dist/registry/currency.d.ts +1 -1
  44. package/dist/registry/currency.d.ts.map +1 -1
  45. package/dist/registry/currency.js +2 -1
  46. package/dist/registry/price.d.ts +1 -1
  47. package/dist/registry/price.d.ts.map +1 -1
  48. package/dist/registry/price.js +2 -1
  49. package/dist/tradeExecution/getStatusFromTrade.d.ts +20 -0
  50. package/dist/tradeExecution/getStatusFromTrade.d.ts.map +1 -0
  51. package/dist/tradeExecution/getStatusFromTrade.js +71 -0
  52. package/dist/tradeExecution/getTransactionData.d.ts +13 -0
  53. package/dist/tradeExecution/getTransactionData.d.ts.map +1 -0
  54. package/dist/tradeExecution/getTransactionData.js +50 -0
  55. package/dist/tradeExecution/index.d.ts +13 -0
  56. package/dist/tradeExecution/index.d.ts.map +1 -0
  57. package/dist/tradeExecution/index.js +150 -0
  58. package/dist/tradeExecution/isBridge.d.ts +3 -0
  59. package/dist/tradeExecution/isBridge.d.ts.map +1 -0
  60. package/dist/tradeExecution/isBridge.js +3 -0
  61. package/dist/tradeExecution/signData.d.ts +4 -0
  62. package/dist/tradeExecution/signData.d.ts.map +1 -0
  63. package/dist/tradeExecution/signData.js +21 -0
  64. package/dist/tradeExecution/trackTradeCompletion.d.ts +9 -0
  65. package/dist/tradeExecution/trackTradeCompletion.d.ts.map +1 -0
  66. package/dist/tradeExecution/trackTradeCompletion.js +75 -0
  67. package/dist/tradeExecution/types.d.ts +30 -0
  68. package/dist/tradeExecution/types.d.ts.map +1 -0
  69. package/dist/tradeExecution/types.js +1 -0
  70. package/dist/types/bridgeInput.d.ts +30 -19
  71. package/dist/types/bridgeInput.d.ts.map +1 -1
  72. package/dist/types/bridgeInput.js +1 -1
  73. package/dist/types/composedBridgeAdapter.d.ts +33 -0
  74. package/dist/types/composedBridgeAdapter.d.ts.map +1 -0
  75. package/dist/types/composedBridgeAdapter.js +1 -0
  76. package/dist/types/index.d.ts +1 -0
  77. package/dist/types/index.d.ts.map +1 -1
  78. package/dist/types/index.js +1 -0
  79. package/package.json +3 -3
  80. package/dist/composedTrades/across/acrossWithSwaps.d.ts +0 -5
  81. package/dist/composedTrades/across/acrossWithSwaps.d.ts.map +0 -1
  82. package/dist/composedTrades/across/acrossWithSwaps.integration.spec.d.ts +0 -1
  83. package/dist/composedTrades/across/acrossWithSwaps.integration.spec.d.ts.map +0 -1
  84. package/dist/composedTrades/across/acrossWithSwaps.integration.spec.js +0 -110
  85. package/dist/composedTrades/across/acrossWithSwaps.js +0 -124
  86. package/dist/composedTrades/axelar/axelarWithSwaps.d.ts +0 -5
  87. package/dist/composedTrades/axelar/axelarWithSwaps.d.ts.map +0 -1
  88. package/dist/composedTrades/axelar/axelarWithSwaps.js +0 -126
  89. package/dist/composedTrades/gaszip/gaszipWithSwaps.d.ts +0 -5
  90. package/dist/composedTrades/gaszip/gaszipWithSwaps.d.ts.map +0 -1
  91. package/dist/composedTrades/gaszip/gaszipWithSwaps.js +0 -115
@@ -1,4 +1,4 @@
1
- export * from './across/acrossWithSwaps';
2
- export * from './axelar/axelarWithSwaps';
3
- export * from './gaszip/gaszipWithSwaps';
1
+ import { GenericTrade } from '@1delta/lib-utils';
2
+ import { BridgeInput } from '../types';
3
+ export declare const fetchExactInBridgeTrade: (input: BridgeInput, controller: AbortController) => Promise<GenericTrade | undefined>;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composedTrades/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composedTrades/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AA8BtC,eAAO,MAAM,uBAAuB,GAClC,OAAO,WAAW,EAClB,YAAY,eAAe,KAC1B,OAAO,CAAC,YAAY,GAAG,SAAS,CAoBlC,CAAA"}
@@ -1,3 +1,40 @@
1
- export * from './across/acrossWithSwaps';
2
- export * from './axelar/axelarWithSwaps';
3
- export * from './gaszip/gaszipWithSwaps';
1
+ import { Bridge } from '@1delta/bridge-configs';
2
+ import { fetchBridgeTrade as fetchBridgeTradeInternal } from '../bridge';
3
+ import { AcrossAdapter } from './across/acrossAdapter';
4
+ import { AxelarAdapter } from './axelar/axelarAdapter';
5
+ import { GaszipAdapter } from './gaszip/gaszipAdapter';
6
+ import { ComposableBridgeAdapter, composeBridgeTrade } from './general';
7
+ const composedAdapters = {
8
+ [Bridge.ACROSS]: AcrossAdapter,
9
+ [Bridge.AXELAR]: AxelarAdapter,
10
+ [Bridge.GASZIP]: GaszipAdapter,
11
+ };
12
+ const composableBridgeSet = new Set([
13
+ Bridge.BUTTER,
14
+ // takes too long, should work though
15
+ Bridge.CROSSCURVE,
16
+ // cannot be called by contracts
17
+ // Bridge.LAYERSWAP,
18
+ Bridge.LIFI,
19
+ // untested
20
+ // Bridge.ORBITER,
21
+ // untested
22
+ // Bridge.SQUID_V1,
23
+ Bridge.SQUID_V2,
24
+ Bridge.STARGATE_BUS,
25
+ Bridge.STARGATE_TAXI,
26
+ Bridge.SYMBIOSIS,
27
+ Bridge.XY,
28
+ ]);
29
+ export const fetchExactInBridgeTrade = async (input, controller) => {
30
+ const { bridge, input: internalInput } = input;
31
+ const adapter = composedAdapters[bridge];
32
+ if (bridge === Bridge.ACROSS) {
33
+ console.log('Adapter is AcrossAdapter', adapter, internalInput);
34
+ }
35
+ if (adapter)
36
+ return composeBridgeTrade(bridge, internalInput, adapter, controller);
37
+ if (composableBridgeSet.has(bridge))
38
+ return composeBridgeTrade(bridge, internalInput, ComposableBridgeAdapter, controller);
39
+ return fetchBridgeTradeInternal(bridge, internalInput, controller);
40
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"createSwapAndBridgeCalldata.d.ts","sourceRoot":"","sources":["../../../src/composedTrades/utils/createSwapAndBridgeCalldata.ts"],"names":[],"mappings":"AAcA,OAAO,EAQL,aAAa,EAIb,aAAa,EACb,YAAY,EAGb,MAAM,mBAAmB,CAAA;AAK1B,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,aAAa,EAAE,EACvB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,OAAO,EACd,WAAW,GAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAO,EACvD,WAAW,GAAE,OAAc,EAC3B,SAAS,GAAE,OAAe,EAC1B,QAAQ,GAAE,YAAY,EAAO,EAC7B,SAAS,GAAE,aAAa,EAAO;;;;GAiThC"}
1
+ {"version":3,"file":"createSwapAndBridgeCalldata.d.ts","sourceRoot":"","sources":["../../../src/composedTrades/utils/createSwapAndBridgeCalldata.ts"],"names":[],"mappings":"AAcA,OAAO,EAQL,aAAa,EAIb,aAAa,EACb,YAAY,EAGb,MAAM,mBAAmB,CAAA;AAK1B,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,aAAa,EAAE,EACvB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,OAAO,EACd,WAAW,GAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAO,EACvD,WAAW,GAAE,OAAc,EAC3B,SAAS,GAAE,OAAe,EAC1B,QAAQ,GAAE,YAAY,EAAO,EAC7B,SAAS,GAAE,aAAa,EAAO;;;;GAiRhC"}
@@ -1,6 +1,6 @@
1
1
  import { Bridge } from '@1delta/bridge-configs';
2
2
  import { encodeAcrossBridgeNative, encodeAcrossBridgeToken, encodeApprove, encodeExternalCall, encodeGasZipEvmBridge, encodeSquidRouterCall, encodeStargateV2BridgeSimpleTaxi, encodeSweep, encodeTransferIn, encodeTryExternalCall, SweepType, } from '@1delta/calldatalib';
3
- import { buildMetaSwapParams, CurrencyHandler, DeltaCallType, encodeComposerCompose, getDeltaComposerProxyAddress, getForwarderAddress, LendingCall, minimumAmountInFromAmount, packCommands, TradeUtils, } from '@1delta/lib-utils';
3
+ import { buildMetaSwapParams, CurrencyHandler, encodeComposerCompose, getDeltaComposerProxyAddress, getForwarderAddress, minimumAmountInFromAmount, packCommands, TradeUtils, } from '@1delta/lib-utils';
4
4
  import { encodePacked, pad } from 'viem';
5
5
  import { createDeltaCalls } from '../../deltaCall';
6
6
  export async function createSwapAndBridgeCalldata(trades, account, bridgeReceiver, sweep, fundsToPull = [], catchRevert = true, sweepDust = false, preCalls = [], postCalls = []) {
@@ -136,30 +136,6 @@ export async function createSwapAndBridgeCalldata(trades, account, bridgeReceive
136
136
  else
137
137
  transferInCommands.push(encodeTransferIn(address, forwarder, amount));
138
138
  }
139
- const nativeWithdrawOrBorrowCalls = preCalls.filter((c) => c.callType === DeltaCallType.LENDING &&
140
- (c.lendingAction === LendingCall.DeltaCallLendingAction.WITHDRAW ||
141
- c.lendingAction === LendingCall.DeltaCallLendingAction.BORROW) &&
142
- CurrencyHandler.isNativeAddress(c.tokenAddress, sourceChainId));
143
- if (nativeWithdrawOrBorrowCalls.length > 0) {
144
- const bridgeTrade = trades.find((t) => t.aggregator === Bridge.AXELAR ||
145
- t.aggregator === Bridge.STARGATE_TAXI ||
146
- t.aggregator === Bridge.GASZIP);
147
- let requiredBridgeFee = 0n;
148
- if (bridgeTrade?.crossChainParams) {
149
- if (bridgeTrade.aggregator === Bridge.AXELAR) {
150
- requiredBridgeFee = safeBigInt(bridgeTrade.crossChainParams.totalFeeInNative);
151
- }
152
- else {
153
- requiredBridgeFee = safeBigInt(bridgeTrade.crossChainParams.nativeFee);
154
- }
155
- }
156
- if (requiredBridgeFee > 0n) {
157
- value = requiredBridgeFee;
158
- }
159
- else {
160
- value = 0n;
161
- }
162
- }
163
139
  const preCommands = preComposerCommands.length > 0 ? preComposerCommands : transferInCommands;
164
140
  const calldata = encodeComposerCompose(packCommands([
165
141
  ...preCommands,
@@ -2,4 +2,5 @@ export * from './createSwapAndBridgeCalldata';
2
2
  export * from './fetchBridgeAndGasTrade';
3
3
  export * from './multichainUtils';
4
4
  export * from './requireDeltaContracts';
5
+ export * from './validateContracts';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/composedTrades/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/composedTrades/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAA;AAC7C,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,qBAAqB,CAAA"}
@@ -2,3 +2,4 @@ export * from './createSwapAndBridgeCalldata';
2
2
  export * from './fetchBridgeAndGasTrade';
3
3
  export * from './multichainUtils';
4
4
  export * from './requireDeltaContracts';
5
+ export * from './validateContracts';
@@ -0,0 +1,5 @@
1
+ export declare const validateContracts: (chainId: string) => {
2
+ forwarder: string;
3
+ composer: string;
4
+ };
5
+ //# sourceMappingURL=validateContracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateContracts.d.ts","sourceRoot":"","sources":["../../../src/composedTrades/utils/validateContracts.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM;;;CAQhD,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { getDeltaComposerProxyAddress, getForwarderAddress, } from '@1delta/lib-utils';
2
+ // Extract contract address validation
3
+ export const validateContracts = (chainId) => {
4
+ const forwarder = getForwarderAddress(chainId);
5
+ if (!forwarder)
6
+ throw new Error('Forwarder contract not found');
7
+ const composer = getDeltaComposerProxyAddress(chainId);
8
+ if (!composer)
9
+ throw new Error('Composer proxy contract not found');
10
+ return { forwarder, composer };
11
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,YAAY,EAEb,MAAM,mBAAmB,CAAA;AAU1B,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAGrC,eAAO,MAAM,gBAAgB,GAC3B,OAAO,WAAW,EAClB,YAAY,eAAe,KAC1B,OAAO,CAAC,YAAY,GAAG,SAAS,CA0BlC,CAAA;AAmBD,eAAO,MAAM,kBAAkB,GAC7B,SAAS,MAAM,EACf,OAAO,SAAS,EAAE,EAClB,OAAO,MAAM,EACb,mBAAmB;IACjB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;CACjB,KACA,kBAOF,CAAA"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,YAAY,EAEb,MAAM,mBAAmB,CAAA;AAI1B,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAGrC,eAAO,MAAM,gBAAgB,GAC3B,OAAO,WAAW,EAClB,YAAY,eAAe,KAC1B,OAAO,CAAC,YAAY,GAAG,SAAS,CA0BlC,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC7B,SAAS,MAAM,EACf,OAAO,SAAS,EAAE,EAClB,OAAO,MAAM,EACb,mBAAmB;IACjB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;CACjB,KACA,kBAOF,CAAA"}
package/dist/core.js CHANGED
@@ -1,8 +1,6 @@
1
1
  import { Bridge } from '@1delta/bridge-configs';
2
2
  import { TradeType, } from '@1delta/lib-utils';
3
- import { isProductionEnv } from '@1delta/lib-utils';
4
- import { fetchBridgeTrade as fetchBridgeTradeInternal } from './bridge';
5
- import { fetchAcrossTradeWithSwaps, fetchAxelarTradeWithSwaps, fetchGaszipTradeWithSwaps, } from './composedTrades';
3
+ import { fetchExactInBridgeTrade } from './composedTrades';
6
4
  import { createDeltaCallsCalldata } from './deltaCall';
7
5
  import { reverseQuote } from './utils';
8
6
  export const fetchBridgeTrade = async (input, controller) => {
@@ -24,16 +22,6 @@ export const fetchBridgeTrade = async (input, controller) => {
24
22
  };
25
23
  return fetchExactInBridgeTrade(bridgeInput, controller);
26
24
  };
27
- const fetchExactInBridgeTrade = async (input, controller) => {
28
- const { bridge, input: internalInput } = input;
29
- if (bridge === Bridge.ACROSS)
30
- return fetchAcrossTradeWithSwaps(internalInput, controller);
31
- if (bridge === Bridge.AXELAR)
32
- return fetchAxelarTradeWithSwaps(internalInput, controller);
33
- if (bridge === Bridge.GASZIP && !isProductionEnv())
34
- return fetchGaszipTradeWithSwaps(internalInput, controller);
35
- return fetchBridgeTradeInternal(bridge, internalInput, controller);
36
- };
37
25
  export const assembleDeltaCalls = (chainId, calls, value, sweepTokensProps) => {
38
26
  const { calldata, to } = createDeltaCallsCalldata(chainId, calls, sweepTokensProps);
39
27
  return { calldata, to, value: value.toString() };
package/dist/index.d.ts CHANGED
@@ -3,6 +3,8 @@ export { fetchBridgeTrade as fetchBridgeTradeWithoutComposed } from './bridge';
3
3
  export * from './core';
4
4
  export * from './initialize';
5
5
  export type { getCurrencyGetter, getPriceGetter } from './registry';
6
+ export * from './tradeExecution';
7
+ export type { ApprovalInfo } from './tradeExecution/types';
6
8
  export type { BridgeInput } from './types';
7
9
  export { TradeAggregator } from '@1delta/aggregators';
8
10
  export { Bridge, getBridges, getCowSwapSlippage, getSwapAggregators, } from '@1delta/bridge-configs';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,EAAE,gBAAgB,IAAI,+BAA+B,EAAE,MAAM,UAAU,CAAA;AAC9E,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AACnE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EACL,MAAM,EACN,UAAU,EACV,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EACV,MAAM,IAAI,YAAY,EACtB,MAAM,IAAI,YAAY,GACvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,aAAa,EACb,SAAS,IAAI,eAAe,GAC7B,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,4BAA4B,GAC7B,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,EAAE,gBAAgB,IAAI,+BAA+B,EAAE,MAAM,UAAU,CAAA;AAC9E,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AACnE,cAAc,kBAAkB,CAAA;AAChC,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EACL,MAAM,EACN,UAAU,EACV,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EACV,MAAM,IAAI,YAAY,EACtB,MAAM,IAAI,YAAY,GACvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,aAAa,EACb,SAAS,IAAI,eAAe,GAC7B,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,4BAA4B,GAC7B,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA"}
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@ export { fetchAggregatorTrade, getAvailableAggregators } from './aggregator';
2
2
  export { fetchBridgeTrade as fetchBridgeTradeWithoutComposed } from './bridge';
3
3
  export * from './core';
4
4
  export * from './initialize';
5
+ export * from './tradeExecution';
5
6
  export { TradeAggregator } from '@1delta/aggregators';
6
7
  export { Bridge, getBridges, getCowSwapSlippage, getSwapAggregators, } from '@1delta/bridge-configs';
7
8
  export { getBridgeIcon, getStatus as getBridgeStatus, } from '@1delta/bridge-core';
@@ -5,8 +5,8 @@ import { CurrencyGetter, PriceGetter } from '@1delta/lib-utils';
5
5
  import { WalletClient } from 'viem';
6
6
  type SdkConfig = {
7
7
  isProductionEnv: boolean;
8
- priceGetter: PriceGetter;
9
- currencyGetter: CurrencyGetter;
8
+ priceGetter?: PriceGetter;
9
+ currencyGetter?: CurrencyGetter;
10
10
  loadChainData?: boolean;
11
11
  loadSquidData?: boolean;
12
12
  load1deltaConfigs?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"initialize.d.ts","sourceRoot":"","sources":["../src/initialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EACL,MAAM,EAGP,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAEL,cAAc,EACd,WAAW,EAEZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAWnC,KAAK,SAAS,GAAG;IACf,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,EAAE,WAAW,CAAA;IACxB,cAAc,EAAE,cAAc,CAAA;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,mBAAmB,CAAC,EAAE,eAAe,EAAE,CAAA;IACvC,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAClC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;CAChD,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,UAAU,GAAU,QAAQ,SAAS,KAAG,OAAO,CAAC,IAAI,CA0BhE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,cAAc,YAAY,SAEzD,CAAA"}
1
+ {"version":3,"file":"initialize.d.ts","sourceRoot":"","sources":["../src/initialize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EACL,MAAM,EAGP,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAEL,cAAc,EACd,WAAW,EAEZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAWnC,KAAK,SAAS,GAAG;IACf,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,mBAAmB,CAAC,EAAE,eAAe,EAAE,CAAA;IACvC,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAClC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;CAChD,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,UAAU,GAAU,QAAQ,SAAS,KAAG,OAAO,CAAC,IAAI,CA0BhE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,cAAc,YAAY,SAEzD,CAAA"}
@@ -1,4 +1,4 @@
1
1
  import { CurrencyGetter } from '@1delta/lib-utils';
2
- export declare function registerCurrencyGetter(currencyGetter: CurrencyGetter): void;
2
+ export declare function registerCurrencyGetter(currencyGetter?: CurrencyGetter): void;
3
3
  export declare function getCurrencyGetter(): CurrencyGetter;
4
4
  //# sourceMappingURL=currency.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["../../src/registry/currency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAIlD,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,cAAc,QAEpE;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAkBlD"}
1
+ {"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["../../src/registry/currency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAIlD,wBAAgB,sBAAsB,CAAC,cAAc,CAAC,EAAE,cAAc,QAErE;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAkBlD"}
@@ -1,6 +1,7 @@
1
1
  const registry = [];
2
2
  export function registerCurrencyGetter(currencyGetter) {
3
- registry.push(currencyGetter);
3
+ if (currencyGetter)
4
+ registry.push(currencyGetter);
4
5
  }
5
6
  export function getCurrencyGetter() {
6
7
  return (chainId, tokenAddress) => {
@@ -1,4 +1,4 @@
1
1
  import { PriceGetter } from '@1delta/lib-utils';
2
- export declare function registerPriceGetter(priceGetter: PriceGetter): void;
2
+ export declare function registerPriceGetter(priceGetter?: PriceGetter): void;
3
3
  export declare function getPriceGetter(): PriceGetter;
4
4
  //# sourceMappingURL=price.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"price.d.ts","sourceRoot":"","sources":["../../src/registry/price.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAI/C,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,WAAW,QAE3D;AAED,wBAAgB,cAAc,IAAI,WAAW,CAiB5C"}
1
+ {"version":3,"file":"price.d.ts","sourceRoot":"","sources":["../../src/registry/price.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAI/C,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW,QAE5D;AAED,wBAAgB,cAAc,IAAI,WAAW,CAiB5C"}
@@ -1,6 +1,7 @@
1
1
  const registry = [];
2
2
  export function registerPriceGetter(priceGetter) {
3
- registry.push(priceGetter);
3
+ if (priceGetter)
4
+ registry.push(priceGetter);
4
5
  }
5
6
  export function getPriceGetter() {
6
7
  return (priceQueries) => {
@@ -0,0 +1,20 @@
1
+ import { Status as BridgeStatus } from '@1delta/bridge-core';
2
+ import { GenericTrade } from '@1delta/lib-utils';
3
+ import { PublicClient } from 'viem';
4
+ /**
5
+ * Provide a current status from a trade
6
+ * @param fromHash tx hash on source chain
7
+ * @param trade trade object
8
+ * @returns status object
9
+ */
10
+ export declare function getStatusFromTrade(fromHash: string, trade: GenericTrade, publicClient?: PublicClient): Promise<{
11
+ fromHash?: string | undefined;
12
+ toHash?: string | undefined;
13
+ message?: string;
14
+ statusInfo: {
15
+ status: BridgeStatus;
16
+ message?: string;
17
+ bridgeResponseResult?: any;
18
+ };
19
+ } | null>;
20
+ //# sourceMappingURL=getStatusFromTrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getStatusFromTrade.d.ts","sourceRoot":"","sources":["../../src/tradeExecution/getStatusFromTrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,IAAI,YAAY,EACvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAmB,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAInC;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,YAAY,EACnB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC;IACT,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAE3B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE;QACV,MAAM,EAAE,YAAY,CAAA;QACpB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,oBAAoB,CAAC,EAAE,GAAG,CAAA;KAC3B,CAAA;CACF,GAAG,IAAI,CAAC,CA0ER"}
@@ -0,0 +1,71 @@
1
+ import { getStatus as getBridgeStatus, } from '@1delta/bridge-core';
2
+ import { getViemProvider } from '@1delta/lib-utils';
3
+ import { isBridge } from './isBridge';
4
+ /**
5
+ * Provide a current status from a trade
6
+ * @param fromHash tx hash on source chain
7
+ * @param trade trade object
8
+ * @returns status object
9
+ */
10
+ export async function getStatusFromTrade(fromHash, trade, publicClient) {
11
+ const provider = publicClient ??
12
+ (await getViemProvider({ chainId: trade.inputAmount.currency.chainId }));
13
+ if (!isBridge(trade)) {
14
+ const receipt = await provider
15
+ ?.getTransactionReceipt({ hash: fromHash })
16
+ .catch(() => null);
17
+ if (!receipt) {
18
+ return {
19
+ fromHash,
20
+ toHash: fromHash,
21
+ statusInfo: {
22
+ status: 'PENDING',
23
+ },
24
+ };
25
+ }
26
+ if (receipt.status === 'success') {
27
+ return {
28
+ fromHash,
29
+ toHash: fromHash,
30
+ statusInfo: {
31
+ status: 'DONE',
32
+ },
33
+ };
34
+ }
35
+ if (receipt.status === 'reverted') {
36
+ return {
37
+ fromHash,
38
+ toHash: fromHash,
39
+ statusInfo: {
40
+ message: 'Transaction reverted.',
41
+ status: 'FAILED',
42
+ },
43
+ };
44
+ }
45
+ return {
46
+ fromHash,
47
+ toHash: fromHash,
48
+ statusInfo: {
49
+ status: 'PENDING',
50
+ },
51
+ };
52
+ }
53
+ const srcReceipt = await provider
54
+ ?.getTransactionReceipt({ hash: fromHash })
55
+ .catch(() => null);
56
+ if (srcReceipt && srcReceipt.status === 'reverted') {
57
+ return {
58
+ fromHash,
59
+ toHash: fromHash,
60
+ statusInfo: {
61
+ message: 'Source chain transaction reverted.',
62
+ status: 'FAILED',
63
+ },
64
+ };
65
+ }
66
+ return await getBridgeStatus(trade.aggregator, {
67
+ fromChainId: trade.inputAmount.currency.chainId,
68
+ toChainId: trade.outputAmount.currency.chainId,
69
+ fromHash,
70
+ }, trade.crossChainParams);
71
+ }
@@ -0,0 +1,13 @@
1
+ import { GenericTrade } from '@1delta/lib-utils';
2
+ import { Address, Hex } from 'viem';
3
+ /**
4
+ * Build txn from trade
5
+ * We need to move this to the SDK
6
+ * @param trade sdk object that generates calldata via `assemble`
7
+ */
8
+ export declare function getTransactionData(trade: GenericTrade): Promise<{
9
+ to: Address;
10
+ data: Hex;
11
+ value: bigint;
12
+ } | null>;
13
+ //# sourceMappingURL=getTransactionData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTransactionData.d.ts","sourceRoot":"","sources":["../../src/tradeExecution/getTransactionData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAEnC;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC;IACrE,EAAE,EAAE,OAAO,CAAA;IACX,IAAI,EAAE,GAAG,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;CACd,GAAG,IAAI,CAAC,CAiDR"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Build txn from trade
3
+ * We need to move this to the SDK
4
+ * @param trade sdk object that generates calldata via `assemble`
5
+ */
6
+ export async function getTransactionData(trade) {
7
+ if (!trade)
8
+ return null;
9
+ if ('assemble' in trade &&
10
+ trade.assemble &&
11
+ typeof trade.assemble === 'function') {
12
+ const assembled = await trade.assemble();
13
+ const assembledItems = Array.isArray(assembled) ? assembled : [assembled];
14
+ for (const item of assembledItems) {
15
+ if (item && 'EVM' in item && item.EVM) {
16
+ const tx = item.EVM;
17
+ const calldata = tx.calldata ?? tx.data;
18
+ const toAddress = (tx.to ?? trade.target);
19
+ if (!toAddress) {
20
+ throw new Error('Missing transaction target address');
21
+ }
22
+ return {
23
+ to: toAddress,
24
+ data: calldata,
25
+ value: tx.value ?? 0n,
26
+ };
27
+ }
28
+ if (item && item.transaction) {
29
+ const tx = item.transaction;
30
+ const calldata = tx.calldata ?? tx.data;
31
+ if (tx && calldata && tx.to) {
32
+ return {
33
+ to: tx.to,
34
+ data: calldata,
35
+ value: tx.value ?? 0n,
36
+ };
37
+ }
38
+ }
39
+ if (item && item.to && (item.calldata || item.data)) {
40
+ const calldata = item.calldata ?? item.data;
41
+ return {
42
+ to: item.to,
43
+ data: calldata,
44
+ value: item.value ?? 0n,
45
+ };
46
+ }
47
+ }
48
+ }
49
+ throw new Error('No assemble function found');
50
+ }
@@ -0,0 +1,13 @@
1
+ import { GenericTrade } from '@1delta/lib-utils';
2
+ import type { PublicClient, WalletClient } from 'viem';
3
+ import { ExecutionTracker, ApprovalInfo } from './types';
4
+ export declare function executeTrade(args: {
5
+ trade: GenericTrade;
6
+ account: string;
7
+ walletClient: WalletClient;
8
+ publicClient: PublicClient;
9
+ needsApproval: boolean;
10
+ approvals?: ApprovalInfo[];
11
+ }): ExecutionTracker;
12
+ export * from './types';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tradeExecution/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAO,YAAY,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAO3D,OAAO,EAAkB,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAExE,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,KAAK,EAAE,YAAY,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,YAAY,CAAA;IAC1B,YAAY,EAAE,YAAY,CAAA;IAC1B,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,YAAY,EAAE,CAAA;CAC3B,GAAG,gBAAgB,CAiMnB;AAED,cAAc,SAAS,CAAA"}
@@ -0,0 +1,150 @@
1
+ import { createApproveTransaction } from '@1delta/calldata-sdk';
2
+ import { zeroAddress } from 'viem';
3
+ import { getTransactionData } from './getTransactionData';
4
+ import { isBridge } from './isBridge';
5
+ import { signEvmDataOrMessage } from './signData';
6
+ import { trackTradeCompletion } from './trackTradeCompletion';
7
+ export function executeTrade(args) {
8
+ const listeners = new Set();
9
+ let cancelled = false;
10
+ const emit = (event) => {
11
+ listeners.forEach((l) => l(event));
12
+ };
13
+ const tracker = {
14
+ on: (listener) => listeners.add(listener),
15
+ off: (listener) => listeners.delete(listener),
16
+ cancel: () => {
17
+ cancelled = true;
18
+ },
19
+ done: null,
20
+ };
21
+ tracker.done = (async () => {
22
+ await Promise.resolve(); // required for listeners to be registered before event emitting
23
+ try {
24
+ // -----------------------------------------------------
25
+ // 1. APPROVAL
26
+ // -----------------------------------------------------
27
+ const chain = args.walletClient.chain;
28
+ if (!chain)
29
+ throw new Error('Missing chain on walletClient');
30
+ if (args.approvals && args.approvals.length > 0) {
31
+ for (const approval of args.approvals) {
32
+ if (approval.needsApproval && approval.token !== zeroAddress) {
33
+ emit({ type: 'approval:start' });
34
+ let approvalTxHash;
35
+ if (approval.approvalTransaction) {
36
+ const tx = approval.approvalTransaction;
37
+ if (!tx.to || !tx.data)
38
+ throw new Error('Invalid approvalTransaction');
39
+ approvalTxHash = await args.walletClient.sendTransaction({
40
+ to: tx.to,
41
+ data: tx.data,
42
+ value: tx.value ?? 0n,
43
+ account: args.account,
44
+ chain,
45
+ });
46
+ }
47
+ else {
48
+ const approveTx = createApproveTransaction(String(chain.id), args.account, approval.spender, approval.token, approval.requiredAmount);
49
+ approvalTxHash = await args.walletClient.sendTransaction({
50
+ to: approveTx.to,
51
+ data: approveTx.data,
52
+ value: approveTx.value ?? 0n,
53
+ account: args.account,
54
+ chain,
55
+ });
56
+ }
57
+ emit({ type: 'approval:sent', txHash: approvalTxHash });
58
+ await args.publicClient.waitForTransactionReceipt({
59
+ hash: approvalTxHash,
60
+ });
61
+ emit({ type: 'approval:confirmed', txHash: approvalTxHash });
62
+ if (cancelled)
63
+ throw new Error('Cancelled');
64
+ }
65
+ }
66
+ }
67
+ const spender = args.trade?.approvalTarget || args.trade?.target;
68
+ if (args.needsApproval &&
69
+ args.trade?.inputAmount.currency.address !== zeroAddress) {
70
+ if (!spender)
71
+ throw new Error('Missing approval target');
72
+ emit({ type: 'approval:start' });
73
+ const approveTx = createApproveTransaction(String(chain.id), args.account, spender, args.trade?.inputAmount.currency.address, args.trade?.inputAmount.amount);
74
+ const approvalTxHash = await args.walletClient.sendTransaction({
75
+ to: approveTx.to,
76
+ data: approveTx.data,
77
+ value: approveTx.value ?? 0n,
78
+ account: args.account,
79
+ chain,
80
+ });
81
+ emit({ type: 'approval:sent', txHash: approvalTxHash });
82
+ await args.publicClient.waitForTransactionReceipt({
83
+ hash: approvalTxHash,
84
+ });
85
+ emit({ type: 'approval:confirmed', txHash: approvalTxHash });
86
+ }
87
+ if (cancelled)
88
+ throw new Error('Cancelled');
89
+ // -----------------------------------------------------
90
+ // 2. SIGN + SEND MAIN TRANSACTION / Execute Order
91
+ // -----------------------------------------------------
92
+ let txHash;
93
+ if (args.trade && args.trade.order) {
94
+ emit({ type: 'tx:signing' });
95
+ const orderSignature = args.trade.order.dataToSign
96
+ ? await signEvmDataOrMessage(args.walletClient, args.account, args.trade.order.dataToSign)
97
+ : undefined;
98
+ await args.trade.order.broadcastIntent(orderSignature);
99
+ const result = await args.trade.order.trackIntent();
100
+ if (!result.EVM?.hash)
101
+ throw new Error('Transaction hash not found');
102
+ txHash = result.EVM.hash;
103
+ }
104
+ else {
105
+ emit({ type: 'tx:signing' });
106
+ const txData = await getTransactionData(args.trade);
107
+ if (!txData)
108
+ throw new Error('Transaction creation failed');
109
+ txHash = await args.walletClient.sendTransaction({
110
+ ...txData,
111
+ account: args.account,
112
+ chain,
113
+ });
114
+ }
115
+ emit({ type: 'tx:sent', src: txHash });
116
+ const receipt = await args.publicClient.waitForTransactionReceipt({
117
+ hash: txHash,
118
+ });
119
+ if (receipt.status === 'reverted') {
120
+ emit({
121
+ type: 'error',
122
+ error: new Error('Source chain transaction failed (reverted)'),
123
+ src: txHash,
124
+ });
125
+ return { srcHash: txHash, completed: false };
126
+ }
127
+ emit({ type: 'tx:confirmed', src: txHash });
128
+ // -----------------------------------------------------
129
+ // 3. BRIDGE TRACKING
130
+ // -----------------------------------------------------
131
+ if (isBridge(args.trade)) {
132
+ emit({ type: 'tracking', srcHash: txHash });
133
+ const eventSummary = await trackTradeCompletion(txHash, args.trade, emit);
134
+ emit(eventSummary);
135
+ return { srcHash: txHash, dstHash: eventSummary.dst, completed: true };
136
+ }
137
+ // -----------------------------------------------------
138
+ // 4. NO BRIDGE → DONE
139
+ // -----------------------------------------------------
140
+ emit({ type: 'done', src: txHash });
141
+ return { srcHash: txHash, completed: true };
142
+ }
143
+ catch (error) {
144
+ emit({ type: 'error', error });
145
+ return { completed: false };
146
+ }
147
+ })();
148
+ return tracker;
149
+ }
150
+ export * from './types';
@@ -0,0 +1,3 @@
1
+ import { GenericTrade } from '@1delta/lib-utils';
2
+ export declare function isBridge(trade?: GenericTrade): boolean;
3
+ //# sourceMappingURL=isBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isBridge.d.ts","sourceRoot":"","sources":["../../src/tradeExecution/isBridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,wBAAgB,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,WAE5C"}
@@ -0,0 +1,3 @@
1
+ export function isBridge(trade) {
2
+ return trade?.inputAmount.currency.chainId !== trade?.outputAmount.currency.chainId;
3
+ }
@@ -0,0 +1,4 @@
1
+ import { EvmSignInputs } from '@1delta/lib-utils';
2
+ import { WalletClient } from 'viem';
3
+ export declare function signEvmDataOrMessage(walletClient: WalletClient, account: string, inputs: EvmSignInputs): Promise<`0x${string}`>;
4
+ //# sourceMappingURL=signData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signData.d.ts","sourceRoot":"","sources":["../../src/tradeExecution/signData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAW,YAAY,EAAE,MAAM,MAAM,CAAA;AAE5C,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,0BAwBtB"}