@paraswap/dex-lib 2.49.2 → 2.50.0

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 (151) hide show
  1. package/build/abi/algebra/AlgebraPool.abi.json +727 -0
  2. package/build/abi/uniswap-v3/AlienBaseV3Router.abi.json +52 -0
  3. package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +193 -0
  4. package/build/dex/algebra/algebra-pool-v1_1.d.ts +3 -2
  5. package/build/dex/algebra/algebra-pool-v1_1.js +3 -2
  6. package/build/dex/algebra/algebra-pool-v1_1.js.map +1 -1
  7. package/build/dex/algebra/algebra-pool-v1_9_bidirectional_fee.d.ts +16 -0
  8. package/build/dex/algebra/algebra-pool-v1_9_bidirectional_fee.js +26 -0
  9. package/build/dex/algebra/algebra-pool-v1_9_bidirectional_fee.js.map +1 -0
  10. package/build/dex/algebra/algebra-pool-v1_9_directional_fee.d.ts +54 -0
  11. package/build/dex/algebra/algebra-pool-v1_9_directional_fee.js +356 -0
  12. package/build/dex/algebra/algebra-pool-v1_9_directional_fee.js.map +1 -0
  13. package/build/dex/algebra/algebra-pool.d.ts +46 -0
  14. package/build/dex/algebra/algebra-pool.js +336 -0
  15. package/build/dex/algebra/algebra-pool.js.map +1 -0
  16. package/build/dex/algebra/algebra.d.ts +2 -1
  17. package/build/dex/algebra/algebra.js +6 -1
  18. package/build/dex/algebra/algebra.js.map +1 -1
  19. package/build/dex/algebra/config.js +16 -0
  20. package/build/dex/algebra/config.js.map +1 -1
  21. package/build/dex/algebra/types.d.ts +1 -1
  22. package/build/dex/quickswap/camelot-v3.d.ts +6 -0
  23. package/build/dex/quickswap/camelot-v3.js +19 -0
  24. package/build/dex/quickswap/camelot-v3.js.map +1 -0
  25. package/build/dex/quickswap/zyberswap-v3.d.ts +6 -0
  26. package/build/dex/quickswap/zyberswap-v3.js +19 -0
  27. package/build/dex/quickswap/zyberswap-v3.js.map +1 -0
  28. package/build/dex/uniswap-v2/rebase-tokens.json +7 -0
  29. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.d.ts +17 -0
  30. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js +64 -0
  31. package/build/dex/uniswap-v3/forks/alien-v3/alien-v3.js.map +1 -0
  32. package/package.json +1 -1
  33. package/src/dex/algebra/algebra-e2e.test.ts +22 -0
  34. package/src/dex/algebra/algebra-pool-v1_1.ts +3 -2
  35. package/src/dex/algebra/algebra-pool-v1_9_bidirectional_fee.ts +55 -0
  36. package/src/dex/algebra/algebra.ts +12 -3
  37. package/src/dex/algebra/config.ts +18 -0
  38. package/src/dex/algebra/types.ts +1 -1
  39. package/build/abi/Redstone.json +0 -739
  40. package/build/abi/angle/stagToken.json +0 -963
  41. package/build/abi/angle-transmuter/MorphoOracle.json +0 -193
  42. package/build/abi/angle-transmuter/MorphoVault.json +0 -2506
  43. package/build/abi/angle-transmuter/Pyth.json +0 -1534
  44. package/build/abi/angle-transmuter/Transmuter.json +0 -1711
  45. package/build/abi/pharaoh/PharaohPool.abi.json +0 -1582
  46. package/build/abi/smardex/smardex-factory.json +0 -185
  47. package/build/abi/smardex/smardex-pool.json +0 -578
  48. package/build/abi/smardex/smardex-router.json +0 -648
  49. package/build/abi/trader-joe-v2_1/FactoryABI.json +0 -1208
  50. package/build/abi/trader-joe-v2_1/PairABI.json +0 -1493
  51. package/build/abi/trader-joe-v2_1/RouterABI.json +0 -1489
  52. package/build/abi/trader-joe-v2_1/StateMulticall.json +0 -193
  53. package/build/dex/angle-staked-stable/angle-staked-stable-pool.d.ts +0 -55
  54. package/build/dex/angle-staked-stable/angle-staked-stable-pool.js +0 -183
  55. package/build/dex/angle-staked-stable/angle-staked-stable-pool.js.map +0 -1
  56. package/build/dex/angle-staked-stable/angle-staked-stable.d.ts +0 -50
  57. package/build/dex/angle-staked-stable/angle-staked-stable.js +0 -280
  58. package/build/dex/angle-staked-stable/angle-staked-stable.js.map +0 -1
  59. package/build/dex/angle-staked-stable/config.d.ts +0 -4
  60. package/build/dex/angle-staked-stable/config.js +0 -46
  61. package/build/dex/angle-staked-stable/config.js.map +0 -1
  62. package/build/dex/angle-staked-stable/types.d.ts +0 -17
  63. package/build/dex/angle-staked-stable/types.js +0 -3
  64. package/build/dex/angle-staked-stable/types.js.map +0 -1
  65. package/build/dex/angle-transmuter/angle-transmuter-pool.d.ts +0 -61
  66. package/build/dex/angle-transmuter/angle-transmuter-pool.js +0 -415
  67. package/build/dex/angle-transmuter/angle-transmuter-pool.js.map +0 -1
  68. package/build/dex/angle-transmuter/angle-transmuter.d.ts +0 -59
  69. package/build/dex/angle-transmuter/angle-transmuter.js +0 -262
  70. package/build/dex/angle-transmuter/angle-transmuter.js.map +0 -1
  71. package/build/dex/angle-transmuter/backedOracle.d.ts +0 -19
  72. package/build/dex/angle-transmuter/backedOracle.js +0 -56
  73. package/build/dex/angle-transmuter/backedOracle.js.map +0 -1
  74. package/build/dex/angle-transmuter/config.d.ts +0 -4
  75. package/build/dex/angle-transmuter/config.js +0 -30
  76. package/build/dex/angle-transmuter/config.js.map +0 -1
  77. package/build/dex/angle-transmuter/constants.d.ts +0 -77
  78. package/build/dex/angle-transmuter/constants.js +0 -94
  79. package/build/dex/angle-transmuter/constants.js.map +0 -1
  80. package/build/dex/angle-transmuter/morphoOracle.d.ts +0 -42
  81. package/build/dex/angle-transmuter/morphoOracle.js +0 -179
  82. package/build/dex/angle-transmuter/morphoOracle.js.map +0 -1
  83. package/build/dex/angle-transmuter/morphoVault.d.ts +0 -19
  84. package/build/dex/angle-transmuter/morphoVault.js +0 -78
  85. package/build/dex/angle-transmuter/morphoVault.js.map +0 -1
  86. package/build/dex/angle-transmuter/pyth.d.ts +0 -19
  87. package/build/dex/angle-transmuter/pyth.js +0 -70
  88. package/build/dex/angle-transmuter/pyth.js.map +0 -1
  89. package/build/dex/angle-transmuter/redstone.d.ts +0 -20
  90. package/build/dex/angle-transmuter/redstone.js +0 -73
  91. package/build/dex/angle-transmuter/redstone.js.map +0 -1
  92. package/build/dex/angle-transmuter/transmuter.d.ts +0 -52
  93. package/build/dex/angle-transmuter/transmuter.js +0 -374
  94. package/build/dex/angle-transmuter/transmuter.js.map +0 -1
  95. package/build/dex/angle-transmuter/types.d.ts +0 -188
  96. package/build/dex/angle-transmuter/types.js +0 -33
  97. package/build/dex/angle-transmuter/types.js.map +0 -1
  98. package/build/dex/angle-transmuter/utils.d.ts +0 -9
  99. package/build/dex/angle-transmuter/utils.js +0 -252
  100. package/build/dex/angle-transmuter/utils.js.map +0 -1
  101. package/build/dex/smardex/subgraph-queries.d.ts +0 -1
  102. package/build/dex/smardex/subgraph-queries.js +0 -17
  103. package/build/dex/smardex/subgraph-queries.js.map +0 -1
  104. package/build/dex/smardex/usd-reserves.d.ts +0 -23
  105. package/build/dex/smardex/usd-reserves.js +0 -86
  106. package/build/dex/smardex/usd-reserves.js.map +0 -1
  107. package/build/dex/trader-joe-v2-1-2/config.d.ts +0 -4
  108. package/build/dex/trader-joe-v2-1-2/config.js +0 -47
  109. package/build/dex/trader-joe-v2-1-2/config.js.map +0 -1
  110. package/build/dex/trader-joe-v2-1-2/constants.d.ts +0 -20
  111. package/build/dex/trader-joe-v2-1-2/constants.js +0 -22
  112. package/build/dex/trader-joe-v2-1-2/constants.js.map +0 -1
  113. package/build/dex/trader-joe-v2-1-2/math/index.d.ts +0 -37
  114. package/build/dex/trader-joe-v2-1-2/math/index.js +0 -291
  115. package/build/dex/trader-joe-v2-1-2/math/index.js.map +0 -1
  116. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.d.ts +0 -60
  117. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js +0 -248
  118. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js.map +0 -1
  119. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.d.ts +0 -53
  120. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js +0 -307
  121. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js.map +0 -1
  122. package/build/dex/trader-joe-v2-1-2/types.d.ts +0 -82
  123. package/build/dex/trader-joe-v2-1-2/types.js +0 -9
  124. package/build/dex/trader-joe-v2-1-2/types.js.map +0 -1
  125. package/build/dex/trader-joe-v2_1/config.d.ts +0 -4
  126. package/build/dex/trader-joe-v2_1/config.js +0 -47
  127. package/build/dex/trader-joe-v2_1/config.js.map +0 -1
  128. package/build/dex/trader-joe-v2_1/constants.d.ts +0 -20
  129. package/build/dex/trader-joe-v2_1/constants.js +0 -22
  130. package/build/dex/trader-joe-v2_1/constants.js.map +0 -1
  131. package/build/dex/trader-joe-v2_1/math/index.d.ts +0 -37
  132. package/build/dex/trader-joe-v2_1/math/index.js +0 -291
  133. package/build/dex/trader-joe-v2_1/math/index.js.map +0 -1
  134. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.d.ts +0 -0
  135. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js +0 -384
  136. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js.map +0 -1
  137. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.d.ts +0 -60
  138. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js +0 -247
  139. package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js.map +0 -1
  140. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.d.ts +0 -53
  141. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js +0 -307
  142. package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js.map +0 -1
  143. package/build/dex/trader-joe-v2_1/types.d.ts +0 -82
  144. package/build/dex/trader-joe-v2_1/types.js +0 -9
  145. package/build/dex/trader-joe-v2_1/types.js.map +0 -1
  146. package/build/dex/wombat/wombat-pool-poller.d.ts +0 -22
  147. package/build/dex/wombat/wombat-pool-poller.js +0 -164
  148. package/build/dex/wombat/wombat-pool-poller.js.map +0 -1
  149. package/build/dex-helper/RedisBatcher.d.ts +0 -20
  150. package/build/dex-helper/RedisBatcher.js +0 -75
  151. package/build/dex-helper/RedisBatcher.js.map +0 -1
@@ -0,0 +1,17 @@
1
+ import { Network, SwapSide } from '../../../../constants';
2
+ import { IDexHelper } from '../../../../dex-helper';
3
+ import { DexConfigMap, SimpleExchangeParam } from '../../../../types';
4
+ import { DexParams, UniswapV3Data } from '../../types';
5
+ import { UniswapV3 } from '../../uniswap-v3';
6
+ export declare const AlienBaseV3Config: DexConfigMap<DexParams>;
7
+ export declare class AlienV3 extends UniswapV3 {
8
+ protected network: Network;
9
+ protected dexHelper: IDexHelper;
10
+ static dexKeysWithNetwork: {
11
+ key: string;
12
+ networks: Network[];
13
+ }[];
14
+ constructor(network: Network, dexKey: string, dexHelper: IDexHelper);
15
+ static getDirectFunctionName(): string[];
16
+ getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: UniswapV3Data, side: SwapSide): Promise<SimpleExchangeParam>;
17
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AlienV3 = exports.AlienBaseV3Config = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const constants_1 = require("../../../../constants");
9
+ const utils_1 = require("../../../../utils");
10
+ const types_1 = require("../../types");
11
+ const uniswap_v3_1 = require("../../uniswap-v3");
12
+ const AlienBaseV3Router_abi_json_1 = __importDefault(require("../../../../abi/uniswap-v3/AlienBaseV3Router.abi.json"));
13
+ exports.AlienBaseV3Config = {
14
+ AlienV3: {
15
+ [constants_1.Network.BASE]: {
16
+ factory: '0x0Fd83557b2be93617c9C1C1B6fd549401C74558C',
17
+ quoter: '0x4fDBD73aD4B1DDde594BF05497C15f76308eFfb9',
18
+ router: '0xB20C411FC84FBB27e78608C24d0056D974ea9411',
19
+ supportedFees: [10000n, 3000n, 750n, 200n],
20
+ stateMulticall: '0x7160f736c52e1e78e92FD4eE4D73e21A7Cf4F950',
21
+ uniswapMulticall: '0x091e99cb1C49331a94dD62755D168E941AbD0693',
22
+ chunksCount: 10,
23
+ initRetryFrequency: 10,
24
+ initHash: `0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54`,
25
+ subgraphURL: 'https://api.studio.thegraph.com/query/59130/v3alb/0.3',
26
+ },
27
+ },
28
+ };
29
+ class AlienV3 extends uniswap_v3_1.UniswapV3 {
30
+ constructor(network, dexKey, dexHelper) {
31
+ super(network, dexKey, dexHelper, {}, new abi_1.Interface(AlienBaseV3Router_abi_json_1.default), undefined, exports.AlienBaseV3Config[dexKey][network]);
32
+ this.network = network;
33
+ this.dexHelper = dexHelper;
34
+ }
35
+ static getDirectFunctionName() {
36
+ return [];
37
+ }
38
+ async getSimpleParam(srcToken, destToken, srcAmount, destAmount, data, side) {
39
+ const swapFunction = side === constants_1.SwapSide.SELL
40
+ ? types_1.UniswapV3Functions.exactInput
41
+ : types_1.UniswapV3Functions.exactOutput;
42
+ const path = this._encodePath(data.path, side);
43
+ const swapFunctionParams = side === constants_1.SwapSide.SELL
44
+ ? {
45
+ recipient: this.augustusAddress,
46
+ amountIn: srcAmount,
47
+ amountOutMinimum: destAmount,
48
+ path,
49
+ }
50
+ : {
51
+ recipient: this.augustusAddress,
52
+ amountOut: destAmount,
53
+ amountInMaximum: srcAmount,
54
+ path,
55
+ };
56
+ const swapData = this.routerIface.encodeFunctionData(swapFunction, [
57
+ swapFunctionParams,
58
+ ]);
59
+ return this.buildSimpleParamWithoutWETHConversion(srcToken, srcAmount, destToken, destAmount, swapData, this.config.router);
60
+ }
61
+ }
62
+ exports.AlienV3 = AlienV3;
63
+ AlienV3.dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(exports.AlienBaseV3Config);
64
+ //# sourceMappingURL=alien-v3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alien-v3.js","sourceRoot":"","sources":["../../../../../src/dex/uniswap-v3/forks/alien-v3/alien-v3.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA+C;AAC/C,qDAA0D;AAG1D,6CAA0D;AAC1D,uCAMqB;AACrB,iDAA6C;AAC7C,uHAAyF;AAE5E,QAAA,iBAAiB,GAA4B;IACxD,OAAO,EAAE;QACP,CAAC,mBAAO,CAAC,IAAI,CAAC,EAAE;YACd,OAAO,EAAE,4CAA4C;YACrD,MAAM,EAAE,4CAA4C;YACpD,MAAM,EAAE,4CAA4C;YACpD,aAAa,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;YAC1C,cAAc,EAAE,4CAA4C;YAC5D,gBAAgB,EAAE,4CAA4C;YAC9D,WAAW,EAAE,EAAE;YACf,kBAAkB,EAAE,EAAE;YACtB,QAAQ,EAAE,oEAAoE;YAC9E,WAAW,EAAE,uDAAuD;SACrE;KACF;CACF,CAAC;AAMF,MAAa,OAAQ,SAAQ,sBAAS;IAIpC,YACY,OAAgB,EAC1B,MAAc,EACJ,SAAqB;QAE/B,KAAK,CACH,OAAO,EACP,MAAM,EACN,SAAS,EACT,EAAE,EACF,IAAI,eAAS,CAAC,oCAAoB,CAAC,EACnC,SAAS,EACT,yBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CACnC,CAAC;QAZQ,YAAO,GAAP,OAAO,CAAS;QAEhB,cAAS,GAAT,SAAS,CAAY;IAWjC,CAAC;IAED,MAAM,CAAC,qBAAqB;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,IAAmB,EACnB,IAAc;QAEd,MAAM,YAAY,GAChB,IAAI,KAAK,oBAAQ,CAAC,IAAI;YACpB,CAAC,CAAC,0BAAkB,CAAC,UAAU;YAC/B,CAAC,CAAC,0BAAkB,CAAC,WAAW,CAAC;QAErC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,kBAAkB,GACtB,IAAI,KAAK,oBAAQ,CAAC,IAAI;YACpB,CAAC,CAAC;gBACE,SAAS,EAAE,IAAI,CAAC,eAAe;gBAC/B,QAAQ,EAAE,SAAS;gBACnB,gBAAgB,EAAE,UAAU;gBAC5B,IAAI;aACL;YACH,CAAC,CAAC;gBACE,SAAS,EAAE,IAAI,CAAC,eAAe;gBAC/B,SAAS,EAAE,UAAU;gBACrB,eAAe,EAAE,SAAS;gBAC1B,IAAI;aACL,CAAC;QAER,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,YAAY,EAAE;YACjE,kBAAkB;SACnB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,qCAAqC,CAC/C,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,QAAQ,EACR,IAAI,CAAC,MAAM,CAAC,MAAM,CACnB,CAAC;IACJ,CAAC;;AAjEH,0BAkEC;AAjEe,0BAAkB,GAC9B,IAAA,6BAAqB,EAAC,yBAAiB,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraswap/dex-lib",
3
- "version": "2.49.2",
3
+ "version": "2.50.0",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",
@@ -296,4 +296,26 @@ describe('Algebra', () => {
296
296
  );
297
297
  });
298
298
  });
299
+
300
+ describe('SwapBased', () => {
301
+ const dexKey = 'SwapBased';
302
+ const network = Network.BASE;
303
+
304
+ const tokenASymbol: string = 'USDC';
305
+ const tokenBSymbol: string = 'WETH';
306
+
307
+ const tokenAAmount: string = '1000000000';
308
+ const tokenBAmount: string = '1000000000000000000';
309
+ const nativeTokenAmount = '1000000000000000000';
310
+
311
+ testForNetwork(
312
+ network,
313
+ dexKey,
314
+ tokenASymbol,
315
+ tokenBSymbol,
316
+ tokenAAmount,
317
+ tokenBAmount,
318
+ nativeTokenAmount,
319
+ );
320
+ });
299
321
  });
@@ -53,7 +53,7 @@ const MAX_BATCH_SIZE = 100;
53
53
  const MAX_NUMBER_OF_BATCH_REQUEST_HALVING = 3;
54
54
 
55
55
  export class AlgebraEventPoolV1_1 extends StatefulEventSubscriber<PoolStateV1_1> {
56
- handlers: {
56
+ protected handlers: {
57
57
  [event: string]: (
58
58
  event: any,
59
59
  state: DeepReadonly<PoolStateV1_1>,
@@ -95,6 +95,7 @@ export class AlgebraEventPoolV1_1 extends StatefulEventSubscriber<PoolStateV1_1>
95
95
  readonly poolInitCodeHash: string,
96
96
  readonly poolDeployer: string,
97
97
  private readonly forceManualStateGeneration: boolean = false,
98
+ private readonly areTicksCompressed: boolean = true,
98
99
  ) {
99
100
  super(parentName, `${token0}_${token1}`, dexHelper, logger, true, mapKey);
100
101
  this.token0 = token0.toLowerCase();
@@ -648,7 +649,7 @@ export class AlgebraEventPoolV1_1 extends StatefulEventSubscriber<PoolStateV1_1>
648
649
  isValid: true,
649
650
  balance0,
650
651
  balance1,
651
- areTicksCompressed: true,
652
+ areTicksCompressed: this.areTicksCompressed,
652
653
  };
653
654
  }
654
655
 
@@ -0,0 +1,55 @@
1
+ import { Interface } from '@ethersproject/abi';
2
+ import { Contract } from 'web3-eth-contract';
3
+ import { IDexHelper } from '../../dex-helper/idex-helper';
4
+ import { Address, BlockHeader, Log, Logger } from '../../types';
5
+ import { bigIntify } from '../../utils';
6
+ import { AlgebraEventPoolV1_1 } from './algebra-pool-v1_1';
7
+ import { PoolStateV1_1 } from './types';
8
+
9
+ export class AlgebraEventPoolV1_9_bidirectional_fee extends AlgebraEventPoolV1_1 {
10
+ constructor(
11
+ readonly dexHelper: IDexHelper,
12
+ parentName: string,
13
+ readonly stateMultiContract: Contract,
14
+ readonly erc20Interface: Interface,
15
+ protected readonly factoryAddress: Address,
16
+ token0: Address,
17
+ token1: Address,
18
+ logger: Logger,
19
+ mapKey: string = '',
20
+ readonly poolInitCodeHash: string,
21
+ readonly poolDeployer: string,
22
+ ) {
23
+ super(
24
+ dexHelper,
25
+ parentName,
26
+ stateMultiContract,
27
+ erc20Interface,
28
+ factoryAddress,
29
+ token0,
30
+ token1,
31
+ logger,
32
+ mapKey,
33
+ poolInitCodeHash,
34
+ poolDeployer,
35
+ false, // forceManualStateGeneration; mainly for zkEVM
36
+ false, // areTicksCompressed
37
+ );
38
+
39
+ this.handlers['TickSpacing'] = this.handleTickSpacing.bind(this);
40
+ }
41
+
42
+ handleTickSpacing(
43
+ event: any,
44
+ pool: PoolStateV1_1,
45
+ log: Log,
46
+ blockHeader: BlockHeader,
47
+ ) {
48
+ const newTickSpacing = bigIntify(event.args.newTickSpacing);
49
+
50
+ pool.tickSpacing = newTickSpacing;
51
+ pool.blockTimestamp = bigIntify(blockHeader.timestamp);
52
+
53
+ return pool;
54
+ }
55
+ }
@@ -49,6 +49,7 @@ import { AlgebraEventPoolV1_1 } from './algebra-pool-v1_1';
49
49
  import { AlgebraEventPoolV1_9 } from './algebra-pool-v1_9';
50
50
  import { AlgebraFactory, OnPoolCreatedCallback } from './algebra-factory';
51
51
  import { applyTransferFee } from '../../lib/token-transfer-fee';
52
+ import { AlgebraEventPoolV1_9_bidirectional_fee } from './algebra-pool-v1_9_bidirectional_fee';
52
53
 
53
54
  type PoolPairsInfo = {
54
55
  token0: Address;
@@ -69,7 +70,10 @@ const MAX_STALE_STATE_BLOCK_AGE = {
69
70
  [Network.ZKEVM]: 150, // approximately 3min
70
71
  };
71
72
 
72
- type IAlgebraEventPool = AlgebraEventPoolV1_1 | AlgebraEventPoolV1_9;
73
+ type IAlgebraEventPool =
74
+ | AlgebraEventPoolV1_1
75
+ | AlgebraEventPoolV1_9
76
+ | AlgebraEventPoolV1_9_bidirectional_fee;
73
77
 
74
78
  export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
75
79
  private readonly factory: AlgebraFactory;
@@ -95,7 +99,8 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
95
99
 
96
100
  private AlgebraPoolImplem:
97
101
  | typeof AlgebraEventPoolV1_1
98
- | typeof AlgebraEventPoolV1_9;
102
+ | typeof AlgebraEventPoolV1_9
103
+ | typeof AlgebraEventPoolV1_9_bidirectional_fee;
99
104
 
100
105
  readonly SRC_TOKEN_DEX_TRANSFERS = 1;
101
106
  readonly DEST_TOKEN_DEX_TRANSFERS = 1;
@@ -132,7 +137,11 @@ export class Algebra extends SimpleExchange implements IDex<AlgebraData> {
132
137
  `${CACHE_PREFIX}_${network}_${dexKey}_not_existings_pool_set`.toLowerCase();
133
138
 
134
139
  this.AlgebraPoolImplem =
135
- config.version === 'v1.1' ? AlgebraEventPoolV1_1 : AlgebraEventPoolV1_9;
140
+ config.version === 'v1.1'
141
+ ? AlgebraEventPoolV1_1
142
+ : config.version === 'v1.9-bidirectional-fee'
143
+ ? AlgebraEventPoolV1_9_bidirectional_fee
144
+ : AlgebraEventPoolV1_9;
136
145
 
137
146
  this.factory = new AlgebraFactory(
138
147
  dexHelper,
@@ -86,6 +86,24 @@ export const AlgebraConfig: DexConfigMap<DexParams> = {
86
86
  forceRPC: true,
87
87
  },
88
88
  },
89
+ SwapBasedV3: {
90
+ [Network.BASE]: {
91
+ factory: '0xC207628E5e2b59E9C690071e68c7C1c4193b0252',
92
+ router: '0xd58f563a7d6150a2575c74065cb18f53ec2e9d07',
93
+ quoter: '0x64F477C68049B554113Bab6526038bcF5643136c',
94
+ initHash:
95
+ '0xbce37a54eab2fcd71913a0d40723e04238970e7fc1159bfd58ad5b79531697e7',
96
+ chunksCount: 10,
97
+ initRetryFrequency: 10,
98
+ algebraStateMulticall: '0x23d574867597c7A980024d8b83a74b6Ca6E08A7B',
99
+ subgraphURL:
100
+ 'https://api.thegraph.com/subgraphs/name/chimpydev/swapbase/graphql',
101
+ uniswapMulticall: '0xce512f490Bf09C4544A12a7264750B28FbE9AD76',
102
+ deployer: '0xe4DFd4ad723B5DB11aa41D53603dB03B117eC690',
103
+ version: 'v1.9-bidirectional-fee',
104
+ forceRPC: true,
105
+ },
106
+ },
89
107
  };
90
108
 
91
109
  export const Adapters: Record<number, AdapterMappings> = {
@@ -84,7 +84,7 @@ export type DexParams = {
84
84
  deployer: Address;
85
85
  subgraphURL: string;
86
86
  initHash: string;
87
- version: 'v1.1' | 'v1.9';
87
+ version: 'v1.1' | 'v1.9' | 'v1.9-bidirectional-fee';
88
88
  forceRPC?: boolean;
89
89
  forceManualStateGenerate?: boolean;
90
90
  };