@paraswap/dex-lib 2.21.0 → 2.21.1-chronos

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 (131) hide show
  1. package/build/config.js +2 -4
  2. package/build/config.js.map +1 -1
  3. package/build/dex/balancer-v2/balancer-v2.d.ts +3 -9
  4. package/build/dex/balancer-v2/balancer-v2.js +0 -83
  5. package/build/dex/balancer-v2/balancer-v2.js.map +1 -1
  6. package/build/dex/balancer-v2/constants.d.ts +0 -4
  7. package/build/dex/balancer-v2/constants.js +1 -6
  8. package/build/dex/balancer-v2/constants.js.map +1 -1
  9. package/build/dex/balancer-v2/types.d.ts +1 -20
  10. package/build/dex/balancer-v2/types.js.map +1 -1
  11. package/build/dex/curve-v1/constants.d.ts +0 -1
  12. package/build/dex/curve-v1/constants.js +1 -2
  13. package/build/dex/curve-v1/constants.js.map +1 -1
  14. package/build/dex/curve-v1/curve-v1.d.ts +3 -9
  15. package/build/dex/curve-v1/curve-v1.js +4 -92
  16. package/build/dex/curve-v1/curve-v1.js.map +1 -1
  17. package/build/dex/curve-v1/types.d.ts +0 -24
  18. package/build/dex/curve-v1/types.js +1 -6
  19. package/build/dex/curve-v1/types.js.map +1 -1
  20. package/build/dex/curve-v1-factory/constants.d.ts +0 -1
  21. package/build/dex/curve-v1-factory/constants.js +1 -2
  22. package/build/dex/curve-v1-factory/constants.js.map +1 -1
  23. package/build/dex/curve-v1-factory/curve-v1-factory.d.ts +4 -11
  24. package/build/dex/curve-v1-factory/curve-v1-factory.js +0 -87
  25. package/build/dex/curve-v1-factory/curve-v1-factory.js.map +1 -1
  26. package/build/dex/curve-v1-factory/types.d.ts +0 -24
  27. package/build/dex/curve-v1-factory/types.js +1 -6
  28. package/build/dex/curve-v1-factory/types.js.map +1 -1
  29. package/build/dex/curve-v2.d.ts +7 -29
  30. package/build/dex/curve-v2.js +1 -91
  31. package/build/dex/curve-v2.js.map +1 -1
  32. package/build/dex/idex.d.ts +1 -1
  33. package/build/dex/index.js +2 -4
  34. package/build/dex/index.js.map +1 -1
  35. package/build/dex/pancakeswap-v3/pancakeswap-v3.d.ts +2 -2
  36. package/build/dex/pancakeswap-v3/utils.js.map +1 -1
  37. package/build/dex/quickswap/config.js +0 -8
  38. package/build/dex/quickswap/config.js.map +1 -1
  39. package/build/dex/simple-exchange.d.ts +0 -2
  40. package/build/dex/simple-exchange.js +0 -1
  41. package/build/dex/simple-exchange.js.map +1 -1
  42. package/build/dex/solidly/config.js +13 -0
  43. package/build/dex/solidly/config.js.map +1 -1
  44. package/build/dex/solidly/forks-override/chronos.d.ts +3 -0
  45. package/build/dex/solidly/forks-override/chronos.js +88 -0
  46. package/build/dex/solidly/forks-override/chronos.js.map +1 -1
  47. package/build/dex/solidly/solidly.js +1 -0
  48. package/build/dex/solidly/solidly.js.map +1 -1
  49. package/build/dex/uniswap-v2/uniswap-v2.d.ts +1 -1
  50. package/build/dex/uniswap-v2/uniswap-v2.js +1 -1
  51. package/build/dex/uniswap-v2/uniswap-v2.js.map +1 -1
  52. package/build/dex/uniswap-v3/constants.d.ts +0 -4
  53. package/build/dex/uniswap-v3/constants.js +1 -6
  54. package/build/dex/uniswap-v3/constants.js.map +1 -1
  55. package/build/dex/uniswap-v3/types.d.ts +3 -20
  56. package/build/dex/uniswap-v3/types.js.map +1 -1
  57. package/build/dex/uniswap-v3/uniswap-v3.d.ts +1 -7
  58. package/build/dex/uniswap-v3/uniswap-v3.js +1 -85
  59. package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
  60. package/build/dex/woo-fi-v2/config.js +6 -6
  61. package/build/dex/zerox/index.d.ts +1 -1
  62. package/build/dex/zerox/index.js +1 -1
  63. package/build/dex/zerox/index.js.map +1 -1
  64. package/build/implementations/local-paraswap-sdk.js +1 -5
  65. package/build/implementations/local-paraswap-sdk.js.map +1 -1
  66. package/build/router/directswap.js +1 -7
  67. package/build/router/directswap.js.map +1 -1
  68. package/build/router/index.js.map +1 -1
  69. package/build/router/payload-encoder.js +6 -16
  70. package/build/router/payload-encoder.js.map +1 -1
  71. package/build/types.d.ts +0 -2
  72. package/build/utils.d.ts +0 -2
  73. package/build/utils.js +1 -5
  74. package/build/utils.js.map +1 -1
  75. package/package.json +4 -6
  76. package/src/config.ts +2 -5
  77. package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +0 -79
  78. package/src/dex/balancer-v2/balancer-v2.ts +4 -153
  79. package/src/dex/balancer-v2/constants.ts +0 -5
  80. package/src/dex/balancer-v2/types.ts +1 -21
  81. package/src/dex/curve-v1/constants.ts +0 -2
  82. package/src/dex/curve-v1/curve-v1-e2e.test.ts +0 -57
  83. package/src/dex/curve-v1/curve-v1.ts +5 -144
  84. package/src/dex/curve-v1/types.ts +0 -26
  85. package/src/dex/curve-v1-factory/constants.ts +0 -2
  86. package/src/dex/curve-v1-factory/curve-v1-factory-e2e.test.ts +0 -1
  87. package/src/dex/curve-v1-factory/curve-v1-factory.ts +4 -140
  88. package/src/dex/curve-v1-factory/types.ts +0 -26
  89. package/src/dex/curve-v2.ts +8 -169
  90. package/src/dex/idex.ts +0 -6
  91. package/src/dex/index.ts +2 -4
  92. package/src/dex/pancakeswap-v3/pancakeswap-v3-e2e.test.ts +6 -3
  93. package/src/dex/pancakeswap-v3/pancakeswap-v3-integration.test.ts +14 -3
  94. package/src/dex/pancakeswap-v3/pancakeswap-v3.ts +3 -3
  95. package/src/dex/pancakeswap-v3/utils.ts +4 -1
  96. package/src/dex/quickswap/config.ts +0 -9
  97. package/src/dex/quickswap/quickswap-e2e.test.ts +0 -109
  98. package/src/dex/simple-exchange.ts +0 -6
  99. package/src/dex/solidly/config.ts +14 -0
  100. package/src/dex/solidly/forks-override/chronos.ts +206 -0
  101. package/src/dex/solidly/solidly-e2e.test.ts +205 -31
  102. package/src/dex/solidly/solidly-integration.test.ts +141 -0
  103. package/src/dex/solidly/solidly.ts +1 -0
  104. package/src/dex/uniswap-v2/uniswap-v2.ts +0 -6
  105. package/src/dex/uniswap-v3/constants.ts +0 -5
  106. package/src/dex/uniswap-v3/types.ts +3 -23
  107. package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +2 -100
  108. package/src/dex/uniswap-v3/uniswap-v3.ts +3 -138
  109. package/src/dex/woo-fi-v2/config.ts +6 -6
  110. package/src/dex/zerox/index.ts +0 -7
  111. package/src/implementations/local-paraswap-sdk.ts +1 -8
  112. package/src/router/directswap.ts +0 -23
  113. package/src/router/index.ts +2 -0
  114. package/src/router/payload-encoder.ts +5 -22
  115. package/src/types.ts +0 -2
  116. package/src/utils.ts +0 -5
  117. package/tests/constants-e2e.ts +9 -4
  118. package/tests/utils-e2e.ts +20 -140
  119. package/tests/utils.ts +0 -52
  120. package/src/abi/DirectSwap.json +0 -1018
  121. package/src/abi/swaap-v2/vault.json +0 -918
  122. package/src/dex/quickswap/camelot-v3.ts +0 -15
  123. package/src/dex/swaap-v2/config.ts +0 -19
  124. package/src/dex/swaap-v2/constants.ts +0 -37
  125. package/src/dex/swaap-v2/rate-fetcher.ts +0 -214
  126. package/src/dex/swaap-v2/swaap-v2-e2e.test.ts +0 -172
  127. package/src/dex/swaap-v2/swaap-v2-integration.test.ts +0 -142
  128. package/src/dex/swaap-v2/swaap-v2.ts +0 -901
  129. package/src/dex/swaap-v2/types.ts +0 -95
  130. package/src/dex/swaap-v2/utils.ts +0 -36
  131. package/src/dex/swaap-v2/validators.ts +0 -128
@@ -11,6 +11,7 @@ import { Interface, Result } from '@ethersproject/abi';
11
11
  import solidlyPairABI from '../../abi/solidly/SolidlyPair.json';
12
12
  import { SpiritSwapV2 } from './forks-override/spiritSwapV2';
13
13
  import { Cone } from './forks-override/cone';
14
+ import { Chronos } from './forks-override/chronos';
14
15
 
15
16
  const amounts18 = [0n, BI_POWS[18], 2000000000000000000n];
16
17
  const amounts6 = [0n, BI_POWS[6], 2000000n];
@@ -628,4 +629,144 @@ describe('Solidly integration tests', () => {
628
629
  });
629
630
  });
630
631
  });
632
+
633
+ describe('Arbitrum', () => {
634
+ const network = Network.ARBITRUM;
635
+ const dexHelper = new DummyDexHelper(network);
636
+ const checkOnChainPricing = constructCheckOnChainPricing(dexHelper);
637
+
638
+ describe('Chronos', function () {
639
+ const dexKey = 'Chronos';
640
+ const chronos = new Chronos(network, dexKey, dexHelper);
641
+
642
+ describe('UniswapV2 like pool', function () {
643
+ const TokenASymbol = 'USDC';
644
+ const tokenA = Tokens[network][TokenASymbol];
645
+ const TokenBSymbol = 'WETH';
646
+ const tokenB = Tokens[network][TokenBSymbol];
647
+
648
+ const amounts = amounts18;
649
+
650
+ it('getPoolIdentifiers and getPricesVolume', async function () {
651
+ const blocknumber = await dexHelper.web3Provider.eth.getBlockNumber();
652
+ const pools = await chronos.getPoolIdentifiers(
653
+ tokenA,
654
+ tokenB,
655
+ SwapSide.SELL,
656
+ blocknumber,
657
+ );
658
+ console.log(
659
+ `${TokenASymbol} <> ${TokenBSymbol} Pool Identifiers: `,
660
+ pools,
661
+ );
662
+
663
+ expect(pools.length).toBeGreaterThan(0);
664
+
665
+ const poolPrices = await chronos.getPricesVolume(
666
+ tokenA,
667
+ tokenB,
668
+ amounts,
669
+ SwapSide.SELL,
670
+ blocknumber,
671
+ pools,
672
+ );
673
+ console.log(
674
+ `${TokenASymbol} <> ${TokenBSymbol} Pool Prices: `,
675
+ poolPrices,
676
+ );
677
+
678
+ expect(poolPrices).not.toBeNull();
679
+ checkPoolPrices(poolPrices!, amounts, SwapSide.SELL, dexKey);
680
+
681
+ // Check if onchain pricing equals to calculated ones
682
+
683
+ for (const i in poolPrices || []) {
684
+ await checkOnChainPricing(
685
+ chronos,
686
+ 'getAmountOut',
687
+ blocknumber,
688
+ poolPrices![i].prices,
689
+ poolPrices![i].poolAddresses![0],
690
+ tokenA.address,
691
+ amounts,
692
+ );
693
+ }
694
+ });
695
+
696
+ it('getTopPoolsForToken', async function () {
697
+ const poolLiquidity = await chronos.getTopPoolsForToken(
698
+ tokenA.address,
699
+ 10,
700
+ );
701
+ console.log(`${TokenASymbol} Top Pools:`, poolLiquidity);
702
+
703
+ checkPoolsLiquidity(poolLiquidity, tokenA.address, dexKey);
704
+ });
705
+ });
706
+
707
+ describe('Curve like stable pool', function () {
708
+ const TokenASymbol = 'USDT';
709
+ const tokenA = Tokens[network][TokenASymbol];
710
+ const TokenBSymbol = 'USDC';
711
+ const tokenB = Tokens[network][TokenBSymbol];
712
+
713
+ const amounts = amounts6;
714
+
715
+ it('getPoolIdentifiers and getPricesVolume', async function () {
716
+ const blocknumber = await dexHelper.web3Provider.eth.getBlockNumber();
717
+ const pools = await chronos.getPoolIdentifiers(
718
+ tokenA,
719
+ tokenB,
720
+ SwapSide.SELL,
721
+ blocknumber,
722
+ );
723
+ console.log(
724
+ `${TokenASymbol} <> ${TokenBSymbol} Pool Identifiers: `,
725
+ pools,
726
+ );
727
+
728
+ expect(pools.length).toBeGreaterThan(0);
729
+
730
+ const poolPrices = await chronos.getPricesVolume(
731
+ tokenA,
732
+ tokenB,
733
+ amounts,
734
+ SwapSide.SELL,
735
+ blocknumber,
736
+ pools,
737
+ );
738
+ console.log(
739
+ `${TokenASymbol} <> ${TokenBSymbol} Pool Prices: `,
740
+ poolPrices,
741
+ );
742
+
743
+ expect(poolPrices).not.toBeNull();
744
+ checkPoolPrices(poolPrices!, amounts, SwapSide.SELL, dexKey);
745
+
746
+ // Check if onchain pricing equals to calculated ones
747
+ for (const i in poolPrices || []) {
748
+ await checkOnChainPricing(
749
+ chronos,
750
+ 'getAmountOut',
751
+ blocknumber,
752
+ poolPrices![i].prices,
753
+ poolPrices![i].poolAddresses![0],
754
+ tokenA.address,
755
+ amounts,
756
+ );
757
+ }
758
+ });
759
+
760
+ it('getTopPoolsForToken', async function () {
761
+ const poolLiquidity = await chronos.getTopPoolsForToken(
762
+ tokenA.address,
763
+ 10,
764
+ );
765
+ console.log(`${TokenASymbol} Top Pools:`, poolLiquidity);
766
+
767
+ checkPoolsLiquidity(poolLiquidity, tokenA.address, dexKey);
768
+ });
769
+ });
770
+ });
771
+ });
631
772
  });
@@ -71,6 +71,7 @@ export class Solidly extends UniswapV2 {
71
71
  'SolidlyV2',
72
72
  'Thena',
73
73
  'SoliSnek',
74
+ 'Chronos',
74
75
  ]),
75
76
  );
76
77
 
@@ -788,15 +788,9 @@ export class UniswapV2
788
788
  destToken: Address,
789
789
  srcAmount: NumberAsString,
790
790
  destAmount: NumberAsString,
791
- expectedAmount: NumberAsString,
792
791
  _data: UniswapData,
793
792
  side: SwapSide,
794
793
  permit: string,
795
- uuid: string,
796
- feePercent: NumberAsString,
797
- deadline: NumberAsString,
798
- partner: string,
799
- beneficiary: string,
800
794
  contractMethod?: string,
801
795
  ): TxInfo<UniswapParam> {
802
796
  if (!contractMethod) throw new Error(`contractMethod need to be passed`);
@@ -34,8 +34,3 @@ export const ZERO_ORACLE_OBSERVATION = {
34
34
  export const OUT_OF_RANGE_ERROR_POSTFIX = `INVALID_TICK_BIT_MAP_RANGES`;
35
35
 
36
36
  export const DEFAULT_POOL_INIT_CODE_HASH = `0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54`;
37
-
38
- export enum DirectMethods {
39
- directSell = 'directUniV3Swap',
40
- directBuy = 'directUniV3Buy',
41
- }
@@ -57,7 +57,6 @@ export type UniswapV3Data = {
57
57
  tokenOut: Address;
58
58
  fee: NumberAsString;
59
59
  }[];
60
- isApproved?: boolean;
61
60
  };
62
61
 
63
62
  export type DexParams = {
@@ -73,7 +72,7 @@ export type DexParams = {
73
72
  initHash: string;
74
73
  };
75
74
 
76
- export type UniswapV3SimpleSwapSellParam = {
75
+ export type UniswapV3SellParam = {
77
76
  path: string;
78
77
  recipient: Address;
79
78
  deadline: string;
@@ -81,7 +80,7 @@ export type UniswapV3SimpleSwapSellParam = {
81
80
  amountOutMinimum: NumberAsString;
82
81
  };
83
82
 
84
- export type UniswapV3SimpleSwapBuyParam = {
83
+ export type UniswapV3BuyParam = {
85
84
  path: string;
86
85
  recipient: Address;
87
86
  deadline: string;
@@ -89,26 +88,7 @@ export type UniswapV3SimpleSwapBuyParam = {
89
88
  amountInMaximum: NumberAsString;
90
89
  };
91
90
 
92
- export type UniswapV3SimpleSwapParams =
93
- | UniswapV3SimpleSwapSellParam
94
- | UniswapV3SimpleSwapBuyParam;
95
-
96
- export type UniswapV3Param = [
97
- fromToken: Address,
98
- toToken: Address,
99
- exchange: Address,
100
- fromAmount: NumberAsString,
101
- toAmount: NumberAsString,
102
- expectedAmount: NumberAsString,
103
- feePercent: NumberAsString,
104
- deadline: NumberAsString,
105
- partner: Address,
106
- isApproved: boolean,
107
- beneficiary: Address,
108
- path: string,
109
- permit: string,
110
- uuid: string,
111
- ];
91
+ export type UniswapV3Param = UniswapV3SellParam | UniswapV3BuyParam;
112
92
 
113
93
  export enum UniswapV3Functions {
114
94
  exactInput = 'exactInput',
@@ -49,20 +49,6 @@ describe('UniswapV3 E2E', () => {
49
49
  provider,
50
50
  );
51
51
  });
52
-
53
- it('directSwap SELL WETH -> USDC', async () => {
54
- await testE2E(
55
- tokens['WETH'],
56
- tokens['USDC'],
57
- holders['WETH'],
58
- '1000000000000000000',
59
- SwapSide.SELL,
60
- dexKey,
61
- ContractMethod.directUniV3Swap,
62
- network,
63
- provider,
64
- );
65
- });
66
52
  });
67
53
 
68
54
  describe('UniswapV3 POLYGON', () => {
@@ -78,7 +64,7 @@ describe('UniswapV3 E2E', () => {
78
64
  const tokenBSymbol: string = 'WETH';
79
65
  const nativeTokenSymbol = NativeTokenSymbols[network];
80
66
 
81
- const tokenAAmount: string = '11000000';
67
+ const tokenAAmount: string = '11111000000';
82
68
  const tokenBAmount: string = '11000000000000000000';
83
69
  const nativeTokenAmount = '11000000000000000000';
84
70
 
@@ -89,17 +75,9 @@ describe('UniswapV3 E2E', () => {
89
75
  ContractMethod.simpleSwap,
90
76
  ContractMethod.multiSwap,
91
77
  ContractMethod.megaSwap,
92
- ContractMethod.directUniV3Swap,
93
- ],
94
- ],
95
- [
96
- SwapSide.BUY,
97
- [
98
- ContractMethod.simpleBuy,
99
- ContractMethod.buy,
100
- ContractMethod.directUniV3Buy,
101
78
  ],
102
79
  ],
80
+ [SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
103
81
  ]);
104
82
 
105
83
  sideToContractMethods.forEach((contractMethods, side) =>
@@ -224,80 +202,4 @@ describe('UniswapV3 E2E', () => {
224
202
  }),
225
203
  );
226
204
  });
227
-
228
- describe('UniswapV3 Optimism', () => {
229
- const network = Network.OPTIMISM;
230
- const tokens = Tokens[network];
231
- const holders = Holders[network];
232
- const provider = new StaticJsonRpcProvider(
233
- generateConfig(network).privateHttpProvider,
234
- network,
235
- );
236
-
237
- const tokenASymbol: string = 'OP';
238
- const tokenBSymbol: string = 'ETH';
239
- const nativeTokenSymbol = NativeTokenSymbols[network];
240
-
241
- const tokenAAmount: string = '1000000000000000000';
242
- const tokenBAmount: string = '1000000000000000000';
243
- const nativeTokenAmount = '1000000000000000000';
244
-
245
- const sideToContractMethods = new Map([
246
- [
247
- SwapSide.SELL,
248
- [
249
- ContractMethod.simpleSwap,
250
- ContractMethod.multiSwap,
251
- ContractMethod.megaSwap,
252
- ],
253
- ],
254
- [SwapSide.BUY, [ContractMethod.simpleBuy, ContractMethod.buy]],
255
- ]);
256
-
257
- sideToContractMethods.forEach((contractMethods, side) =>
258
- contractMethods.forEach((contractMethod: ContractMethod) => {
259
- describe(`${contractMethod}`, () => {
260
- it(`${network} ${side} ${contractMethod} ${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
261
- await testE2E(
262
- tokens[nativeTokenSymbol],
263
- tokens[tokenASymbol],
264
- holders[nativeTokenSymbol],
265
- side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
266
- side,
267
- dexKey,
268
- contractMethod,
269
- network,
270
- provider,
271
- );
272
- });
273
- it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
274
- await testE2E(
275
- tokens[tokenASymbol],
276
- tokens[nativeTokenSymbol],
277
- holders[tokenASymbol],
278
- side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
279
- side,
280
- dexKey,
281
- contractMethod,
282
- network,
283
- provider,
284
- );
285
- });
286
- it(`${network} ${side} ${contractMethod} ${tokenASymbol} -> ${tokenBSymbol}`, async () => {
287
- await testE2E(
288
- tokens[tokenASymbol],
289
- tokens[tokenBSymbol],
290
- holders[tokenASymbol],
291
- side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
292
- side,
293
- dexKey,
294
- contractMethod,
295
- network,
296
- provider,
297
- );
298
- });
299
- });
300
- }),
301
- );
302
- });
303
205
  });
@@ -11,9 +11,6 @@ import {
11
11
  Logger,
12
12
  NumberAsString,
13
13
  PoolPrices,
14
- TxInfo,
15
- PreprocessTransactionOptions,
16
- ExchangeTxInfo,
17
14
  } from '../../types';
18
15
  import { SwapSide, Network, CACHE_PREFIX } from '../../constants';
19
16
  import * as CALLDATA_GAS_COST from '../../calldata-gas-cost';
@@ -22,7 +19,6 @@ import {
22
19
  getDexKeysWithNetwork,
23
20
  interpolate,
24
21
  isTruthy,
25
- uuidToBytes16,
26
22
  } from '../../utils';
27
23
  import { IDex } from '../../dex/idex';
28
24
  import { IDexHelper } from '../../dex-helper/idex-helper';
@@ -33,7 +29,6 @@ import {
33
29
  UniswapV3Data,
34
30
  UniswapV3Functions,
35
31
  UniswapV3Param,
36
- UniswapV3SimpleSwapParams,
37
32
  } from './types';
38
33
  import {
39
34
  getLocalDeadlineAsFriendlyPlaceholder,
@@ -44,16 +39,14 @@ import { UniswapV3EventPool } from './uniswap-v3-pool';
44
39
  import UniswapV3RouterABI from '../../abi/uniswap-v3/UniswapV3Router.abi.json';
45
40
  import UniswapV3QuoterABI from '../../abi/uniswap-v3/UniswapV3Quoter.abi.json';
46
41
  import UniswapV3MultiABI from '../../abi/uniswap-v3/UniswapMulti.abi.json';
47
- import DirectSwapABI from '../../abi/DirectSwap.json';
48
42
  import UniswapV3StateMulticallABI from '../../abi/uniswap-v3/UniswapV3StateMulticall.abi.json';
49
43
  import {
50
- DirectMethods,
51
44
  UNISWAPV3_EFFICIENCY_FACTOR,
52
45
  UNISWAPV3_POOL_SEARCH_OVERHEAD,
53
46
  UNISWAPV3_TICK_BASE_OVERHEAD,
54
47
  UNISWAPV3_TICK_GAS_COST,
55
48
  } from './constants';
56
- import { assert, DeepReadonly } from 'ts-essentials';
49
+ import { DeepReadonly } from 'ts-essentials';
57
50
  import { uniswapV3Math } from './contract-math/uniswap-v3-math';
58
51
  import { Contract } from 'web3-eth-contract';
59
52
  import { AbiItem } from 'web3-utils';
@@ -63,7 +56,6 @@ import {
63
56
  DEFAULT_ID_ERC20,
64
57
  DEFAULT_ID_ERC20_AS_STRING,
65
58
  } from '../../lib/tokens/types';
66
- import { OptimalSwapExchange } from '@paraswap/core';
67
59
 
68
60
  type PoolPairsInfo = {
69
61
  token0: Address;
@@ -85,8 +77,6 @@ export class UniswapV3
85
77
  readonly hasConstantPriceLargeAmounts = false;
86
78
  readonly needWrapNative = true;
87
79
 
88
- readonly directSwapIface = new Interface(DirectSwapABI);
89
-
90
80
  intervalTask?: NodeJS.Timeout;
91
81
 
92
82
  public static dexKeysWithNetwork: { key: string; networks: Network[] }[] =
@@ -123,7 +113,7 @@ export class UniswapV3
123
113
  // To receive revert reasons
124
114
  this.dexHelper.web3Provider.eth.handleRevert = false;
125
115
 
126
- // Normalize once all config addresses and use across all scenarios
116
+ // Normalise once all config addresses and use across all scenarios
127
117
  this.config = this._toLowerForAllConfigAddresses();
128
118
 
129
119
  this.notExistingPoolSetKey =
@@ -459,7 +449,6 @@ export class UniswapV3
459
449
  fee: pool.feeCodeAsString,
460
450
  },
461
451
  ],
462
- exchange: pool.poolAddress,
463
452
  },
464
453
  poolIdentifier: this.getPoolIdentifier(
465
454
  pool.token0,
@@ -742,130 +731,6 @@ export class UniswapV3
742
731
  return arr;
743
732
  }
744
733
 
745
- getTokenFromAddress(address: Address): Token {
746
- // In this Dex decimals are not used
747
- return { address, decimals: 0 };
748
- }
749
-
750
- async preProcessTransaction(
751
- optimalSwapExchange: OptimalSwapExchange<UniswapV3Data>,
752
- srcToken: Token,
753
- _0: Token,
754
- _1: SwapSide,
755
- options: PreprocessTransactionOptions,
756
- ): Promise<[OptimalSwapExchange<UniswapV3Data>, ExchangeTxInfo]> {
757
- if (!options.isDirectMethod) {
758
- return [
759
- optimalSwapExchange,
760
- {
761
- deadline: BigInt(getLocalDeadlineAsFriendlyPlaceholder()),
762
- },
763
- ];
764
- }
765
-
766
- assert(
767
- optimalSwapExchange.data !== undefined,
768
- `preProcessTransaction: data field is missing`,
769
- );
770
-
771
- let isApproved: boolean | undefined;
772
-
773
- try {
774
- this.erc20Contract.options.address =
775
- this.dexHelper.config.wrapETH(srcToken).address;
776
- const allowance = await this.erc20Contract.methods
777
- .allowance(this.augustusAddress, this.config.router)
778
- .call(undefined, 'latest');
779
- isApproved =
780
- BigInt(allowance.toString()) >= BigInt(optimalSwapExchange.srcAmount);
781
- } catch (e) {
782
- this.logger.error(
783
- `preProcessTransaction failed to retrieve allowance info: `,
784
- e,
785
- );
786
- }
787
-
788
- return [
789
- {
790
- ...optimalSwapExchange,
791
- data: {
792
- ...optimalSwapExchange.data,
793
- isApproved,
794
- },
795
- },
796
- {
797
- deadline: BigInt(getLocalDeadlineAsFriendlyPlaceholder()),
798
- },
799
- ];
800
- }
801
-
802
- getDirectParam(
803
- srcToken: Address,
804
- destToken: Address,
805
- srcAmount: NumberAsString,
806
- destAmount: NumberAsString,
807
- expectedAmount: NumberAsString,
808
- data: UniswapV3Data,
809
- side: SwapSide,
810
- permit: string,
811
- uuid: string,
812
- feePercent: NumberAsString,
813
- deadline: NumberAsString,
814
- partner: string,
815
- beneficiary: string,
816
- contractMethod?: string,
817
- ): TxInfo<UniswapV3Param> {
818
- if (
819
- contractMethod !== DirectMethods.directSell &&
820
- contractMethod !== DirectMethods.directBuy
821
- ) {
822
- throw new Error(`Invalid contract method ${contractMethod}`);
823
- }
824
-
825
- let isApproved: boolean = !!data.isApproved;
826
- if (data.isApproved === undefined) {
827
- this.logger.warn(`isApproved is undefined, defaulting to false`);
828
- }
829
-
830
- const path = this._encodePath(data.path, side);
831
-
832
- const swapParams: UniswapV3Param = [
833
- srcToken,
834
- destToken,
835
- this.config.router,
836
- srcAmount,
837
- destAmount,
838
- expectedAmount,
839
- feePercent,
840
- deadline,
841
- partner,
842
- isApproved,
843
- beneficiary,
844
- path,
845
- permit,
846
- uuidToBytes16(uuid),
847
- ];
848
-
849
- const encoder = (...params: UniswapV3Param) => {
850
- return this.directSwapIface.encodeFunctionData(
851
- side === SwapSide.SELL
852
- ? DirectMethods.directSell
853
- : DirectMethods.directBuy,
854
- [params],
855
- );
856
- };
857
-
858
- return {
859
- params: swapParams,
860
- encoder,
861
- networkFee: '0',
862
- };
863
- }
864
-
865
- static getDirectFunctionName(): string[] {
866
- return [DirectMethods.directSell, DirectMethods.directBuy];
867
- }
868
-
869
734
  async getSimpleParam(
870
735
  srcToken: string,
871
736
  destToken: string,
@@ -880,7 +745,7 @@ export class UniswapV3
880
745
  : UniswapV3Functions.exactOutput;
881
746
 
882
747
  const path = this._encodePath(data.path, side);
883
- const swapFunctionParams: UniswapV3SimpleSwapParams =
748
+ const swapFunctionParams: UniswapV3Param =
884
749
  side === SwapSide.SELL
885
750
  ? {
886
751
  recipient: this.augustusAddress,
@@ -6,7 +6,7 @@ export const WooFiV2Config: DexConfigMap<DexParams> = {
6
6
  WooFiV2: {
7
7
  [Network.OPTIMISM]: {
8
8
  wooPPV2Address: '0xd1778F9DF3eee5473A9640f13682e3846f61fEbC',
9
- wooOracleV2Address: '0xd589484d3A27B7Ce5C2C7F829EB2e1D163f95817',
9
+ wooOracleV2Address: '0x464959aD46e64046B891F562cFF202a465D522F3',
10
10
  integrationHelperAddress: '0x96329d66074EB8386Ae8bFD6698B2E3FDA87e15E',
11
11
  // USDC
12
12
  quoteToken: {
@@ -16,7 +16,7 @@ export const WooFiV2Config: DexConfigMap<DexParams> = {
16
16
  },
17
17
  [Network.BSC]: {
18
18
  wooPPV2Address: '0x59dE3B49314Bf5067719364A2Cb43e8525ab93FA',
19
- wooOracleV2Address: '0x72dc7fa5eeb901a34173C874A7333c8d1b34bca9',
19
+ wooOracleV2Address: '0x4B11B9BfAafA840c436a1ddDc13D3738C8ebfD62',
20
20
  integrationHelperAddress: '0xAA9c15cd603428cA8ddD45e933F8EfE3Afbcc173',
21
21
  // USDT
22
22
  quoteToken: {
@@ -26,7 +26,7 @@ export const WooFiV2Config: DexConfigMap<DexParams> = {
26
26
  },
27
27
  [Network.POLYGON]: {
28
28
  wooPPV2Address: '0x7081A38158BD050Ae4a86e38E0225Bc281887d7E',
29
- wooOracleV2Address: '0x31aE608cBadD1214D6A3d5dcf49E45Fb18E2a48E',
29
+ wooOracleV2Address: '0xeFF23B4bE1091b53205E35f3AfCD9C7182bf3062',
30
30
  integrationHelperAddress: '0x7Ba560eB735AbDCf9a3a5692272652A0cc81850d',
31
31
  // USDC
32
32
  quoteToken: {
@@ -36,7 +36,7 @@ export const WooFiV2Config: DexConfigMap<DexParams> = {
36
36
  },
37
37
  [Network.FANTOM]: {
38
38
  wooPPV2Address: '0x286ab107c5E9083dBed35A2B5fb0242538F4f9bf',
39
- wooOracleV2Address: '0xB1d022F8F3e43868DaaDfa7040e63781C16aB4A6',
39
+ wooOracleV2Address: '0x8840e26e0ebf7D100A0644DD8576DC62B03cbf04',
40
40
  integrationHelperAddress: '0x6641959FE5EED7166F2254cF04b0d20c96776D9A',
41
41
  // USDC
42
42
  quoteToken: {
@@ -46,7 +46,7 @@ export const WooFiV2Config: DexConfigMap<DexParams> = {
46
46
  },
47
47
  [Network.ARBITRUM]: {
48
48
  wooPPV2Address: '0xeFF23B4bE1091b53205E35f3AfCD9C7182bf3062',
49
- wooOracleV2Address: '0x73504eaCB100c7576146618DC306c97454CB3620',
49
+ wooOracleV2Address: '0x37a9dE70b6734dFCA54395D8061d9411D9910739',
50
50
  integrationHelperAddress: '0x28D2B949024FE50627f1EbC5f0Ca3Ca721148E40',
51
51
  // USDC
52
52
  quoteToken: {
@@ -56,7 +56,7 @@ export const WooFiV2Config: DexConfigMap<DexParams> = {
56
56
  },
57
57
  [Network.AVALANCHE]: {
58
58
  wooPPV2Address: '0x3b3E4b4741e91aF52d0e9ad8660573E951c88524',
59
- wooOracleV2Address: '0xc13843aE0D2C5ca9E0EfB93a78828446D8173d19',
59
+ wooOracleV2Address: '0x9ACA557590F5020BDA4Ba63065Fc3A1253Bf8000',
60
60
  integrationHelperAddress: '0x020630613E296c3E9b06186f630D1bF97A2B6Ad1',
61
61
  // USDC
62
62
  quoteToken: {
@@ -269,16 +269,9 @@ export class ZeroX
269
269
  destToken: Address,
270
270
  srcAmount: NumberAsString,
271
271
  destAmount: NumberAsString,
272
- expectedAmount: NumberAsString,
273
272
  data: ZeroXData,
274
273
  side: SwapSide,
275
274
  permit: string,
276
- uuid: string,
277
- feePercent: NumberAsString,
278
- deadline: NumberAsString,
279
- partner: string,
280
- beneficiary: string,
281
- contractMethod?: string,
282
275
  ): TxInfo<ZeroXParam> {
283
276
  const usePermit = permit !== '0x';
284
277
  const encoder = (...params: ZeroXParam) => {
@@ -17,8 +17,6 @@ import {
17
17
  } from '../types';
18
18
  import { SwapSide, NULL_ADDRESS, ContractMethod } from '../constants';
19
19
  import { LimitOrderExchange } from '../dex/limit-order-exchange';
20
- import { v4 as uuid } from 'uuid';
21
- import { DirectContractMethods } from '@paraswap/core/build/constants';
22
20
 
23
21
  export interface IParaSwapSDK {
24
22
  getPrices(
@@ -207,8 +205,6 @@ export class LocalParaswapSDK implements IParaSwapSDK {
207
205
  : priceRoute.srcAmount,
208
206
  );
209
207
 
210
- const contractMethod = priceRoute.contractMethod;
211
-
212
208
  // Call preprocessTransaction for each exchange before we build transaction
213
209
  try {
214
210
  priceRoute.bestRoute = await Promise.all(
@@ -238,9 +234,6 @@ export class LocalParaswapSDK implements IParaSwapSDK {
238
234
  {
239
235
  slippageFactor,
240
236
  txOrigin: userAddress,
241
- isDirectMethod: DirectContractMethods.includes(
242
- contractMethod as ContractMethod,
243
- ),
244
237
  },
245
238
  );
246
239
 
@@ -271,7 +264,7 @@ export class LocalParaswapSDK implements IParaSwapSDK {
271
264
  partnerAddress: NULL_ADDRESS,
272
265
  partnerFeePercent: '0',
273
266
  deadline: deadline.toString(),
274
- uuid: uuid(),
267
+ uuid: '00000000-0000-0000-0000-000000000000',
275
268
  });
276
269
  }
277
270
  }