@paraswap/dex-lib 2.42.27 → 2.42.29-wombat.2

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 (153) hide show
  1. package/build/abi/solidly-v3/SolidlyV3Pool.abi.json +738 -0
  2. package/build/abi/solidly-v3/SolidlyV3StateMulticall.abi.json +375 -0
  3. package/build/abi/trader-joe-v2_1/FactoryABI.json +0 -0
  4. package/build/abi/trader-joe-v2_1/PairABI.json +1493 -0
  5. package/build/abi/trader-joe-v2_1/RouterABI.json +1489 -0
  6. package/build/abi/wombat/pool-v2.json +1289 -0
  7. package/build/abi/wombat/pool-v3.json +2013 -0
  8. package/build/config.js +2 -2
  9. package/build/dex/index.js +4 -1
  10. package/build/dex/index.js.map +1 -1
  11. package/build/dex/solidly-v3/config.d.ts +9 -0
  12. package/build/dex/solidly-v3/config.js +58 -0
  13. package/build/dex/solidly-v3/config.js.map +1 -0
  14. package/build/dex/solidly-v3/constants.d.ts +27 -0
  15. package/build/dex/solidly-v3/constants.js +34 -0
  16. package/build/dex/solidly-v3/constants.js.map +1 -0
  17. package/build/dex/solidly-v3/contract-math/BitMath.d.ts +4 -0
  18. package/build/dex/solidly-v3/contract-math/BitMath.js +93 -0
  19. package/build/dex/solidly-v3/contract-math/BitMath.js.map +1 -0
  20. package/build/dex/solidly-v3/contract-math/FixedPoint128.d.ts +3 -0
  21. package/build/dex/solidly-v3/contract-math/FixedPoint128.js +8 -0
  22. package/build/dex/solidly-v3/contract-math/FixedPoint128.js.map +1 -0
  23. package/build/dex/solidly-v3/contract-math/FixedPoint96.d.ts +4 -0
  24. package/build/dex/solidly-v3/contract-math/FixedPoint96.js +9 -0
  25. package/build/dex/solidly-v3/contract-math/FixedPoint96.js.map +1 -0
  26. package/build/dex/solidly-v3/contract-math/FullMath.d.ts +4 -0
  27. package/build/dex/solidly-v3/contract-math/FullMath.js +19 -0
  28. package/build/dex/solidly-v3/contract-math/FullMath.js.map +1 -0
  29. package/build/dex/solidly-v3/contract-math/LiquidityMath.d.ts +3 -0
  30. package/build/dex/solidly-v3/contract-math/LiquidityMath.js +22 -0
  31. package/build/dex/solidly-v3/contract-math/LiquidityMath.js.map +1 -0
  32. package/build/dex/solidly-v3/contract-math/SqrtPriceMath.d.ts +10 -0
  33. package/build/dex/solidly-v3/contract-math/SqrtPriceMath.js +91 -0
  34. package/build/dex/solidly-v3/contract-math/SqrtPriceMath.js.map +1 -0
  35. package/build/dex/solidly-v3/contract-math/SwapMath.d.ts +8 -0
  36. package/build/dex/solidly-v3/contract-math/SwapMath.js +70 -0
  37. package/build/dex/solidly-v3/contract-math/SwapMath.js.map +1 -0
  38. package/build/dex/solidly-v3/contract-math/Tick.d.ts +7 -0
  39. package/build/dex/solidly-v3/contract-math/Tick.js +36 -0
  40. package/build/dex/solidly-v3/contract-math/Tick.js.map +1 -0
  41. package/build/dex/solidly-v3/contract-math/TickBitMap.d.ts +7 -0
  42. package/build/dex/solidly-v3/contract-math/TickBitMap.js +84 -0
  43. package/build/dex/solidly-v3/contract-math/TickBitMap.js.map +1 -0
  44. package/build/dex/solidly-v3/contract-math/TickMath.d.ts +8 -0
  45. package/build/dex/solidly-v3/contract-math/TickMath.js +162 -0
  46. package/build/dex/solidly-v3/contract-math/TickMath.js.map +1 -0
  47. package/build/dex/solidly-v3/contract-math/UnsafeMath.d.ts +3 -0
  48. package/build/dex/solidly-v3/contract-math/UnsafeMath.js +10 -0
  49. package/build/dex/solidly-v3/contract-math/UnsafeMath.js.map +1 -0
  50. package/build/dex/solidly-v3/contract-math/uniswap-v3-math.d.ts +31 -0
  51. package/build/dex/solidly-v3/contract-math/uniswap-v3-math.js +363 -0
  52. package/build/dex/solidly-v3/contract-math/uniswap-v3-math.js.map +1 -0
  53. package/build/dex/solidly-v3/contract-math/utils.d.ts +7 -0
  54. package/build/dex/solidly-v3/contract-math/utils.js +39 -0
  55. package/build/dex/solidly-v3/contract-math/utils.js.map +1 -0
  56. package/build/dex/solidly-v3/solidly-v3-factory.d.ts +26 -0
  57. package/build/dex/solidly-v3/solidly-v3-factory.js +44 -0
  58. package/build/dex/solidly-v3/solidly-v3-factory.js.map +1 -0
  59. package/build/dex/solidly-v3/solidly-v3-pool.d.ts +44 -0
  60. package/build/dex/solidly-v3/solidly-v3-pool.js +298 -0
  61. package/build/dex/solidly-v3/solidly-v3-pool.js.map +1 -0
  62. package/build/dex/solidly-v3/solidly-v3.d.ts +67 -0
  63. package/build/dex/solidly-v3/solidly-v3.js +590 -0
  64. package/build/dex/solidly-v3/solidly-v3.js.map +1 -0
  65. package/build/dex/solidly-v3/types.d.ts +132 -0
  66. package/build/dex/solidly-v3/types.js +9 -0
  67. package/build/dex/solidly-v3/types.js.map +1 -0
  68. package/build/dex/solidly-v3/utils.d.ts +6 -0
  69. package/build/dex/solidly-v3/utils.js +53 -0
  70. package/build/dex/solidly-v3/utils.js.map +1 -0
  71. package/build/dex/trader-joe-v2-1-2/config.d.ts +4 -0
  72. package/build/dex/trader-joe-v2-1-2/config.js +43 -0
  73. package/build/dex/trader-joe-v2-1-2/config.js.map +1 -0
  74. package/build/dex/trader-joe-v2-1-2/constants.d.ts +17 -0
  75. package/build/dex/trader-joe-v2-1-2/constants.js +19 -0
  76. package/build/dex/trader-joe-v2-1-2/constants.js.map +1 -0
  77. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.d.ts +60 -0
  78. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js +199 -0
  79. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js.map +1 -0
  80. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.d.ts +49 -0
  81. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js +269 -0
  82. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js.map +1 -0
  83. package/build/dex/trader-joe-v2-1-2/types.d.ts +81 -0
  84. package/build/dex/trader-joe-v2-1-2/types.js +9 -0
  85. package/build/dex/trader-joe-v2-1-2/types.js.map +1 -0
  86. package/build/dex/trader-joe-v2_1/config.d.ts +4 -0
  87. package/build/dex/trader-joe-v2_1/config.js +43 -0
  88. package/build/dex/trader-joe-v2_1/config.js.map +1 -0
  89. package/build/dex/trader-joe-v2_1/constants.d.ts +16 -0
  90. package/build/dex/trader-joe-v2_1/constants.js +18 -0
  91. package/build/dex/trader-joe-v2_1/constants.js.map +1 -0
  92. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.d.ts +0 -0
  93. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js +384 -0
  94. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js.map +1 -0
  95. package/build/dex/trader-joe-v2_1/types.d.ts +39 -0
  96. package/build/dex/trader-joe-v2_1/types.js +3 -0
  97. package/build/dex/trader-joe-v2_1/types.js.map +1 -0
  98. package/build/dex/wombat/types.d.ts +2 -0
  99. package/build/dex/wombat/utils.d.ts +1 -0
  100. package/build/dex/wombat/utils.js +14 -1
  101. package/build/dex/wombat/utils.js.map +1 -1
  102. package/build/dex/wombat/wombat-bmw.d.ts +2 -2
  103. package/build/dex/wombat/wombat-bmw.js +8 -25
  104. package/build/dex/wombat/wombat-bmw.js.map +1 -1
  105. package/build/dex/wombat/wombat-pool-poller.d.ts +22 -0
  106. package/build/dex/wombat/wombat-pool-poller.js +164 -0
  107. package/build/dex/wombat/wombat-pool-poller.js.map +1 -0
  108. package/build/dex/wombat/wombat-pool.d.ts +51 -17
  109. package/build/dex/wombat/wombat-pool.js +393 -112
  110. package/build/dex/wombat/wombat-pool.js.map +1 -1
  111. package/build/dex/wombat/wombat.d.ts +1 -1
  112. package/build/dex/wombat/wombat.js +12 -18
  113. package/build/dex/wombat/wombat.js.map +1 -1
  114. package/package.json +1 -1
  115. package/src/abi/solidly-v3/SolidlyV3Pool.abi.json +738 -0
  116. package/src/abi/solidly-v3/SolidlyV3StateMulticall.abi.json +375 -0
  117. package/src/abi/wombat/pool-v3.json +2013 -0
  118. package/src/config.ts +2 -2
  119. package/src/dex/index.ts +4 -1
  120. package/src/dex/solidly-v3/config.ts +64 -0
  121. package/src/dex/solidly-v3/constants.ts +42 -0
  122. package/src/dex/solidly-v3/contract-math/BitMath.ts +90 -0
  123. package/src/dex/solidly-v3/contract-math/FixedPoint128.ts +3 -0
  124. package/src/dex/solidly-v3/contract-math/FixedPoint96.ts +4 -0
  125. package/src/dex/solidly-v3/contract-math/FullMath.ts +30 -0
  126. package/src/dex/solidly-v3/contract-math/LiquidityMath.ts +17 -0
  127. package/src/dex/solidly-v3/contract-math/SqrtPriceMath.ts +226 -0
  128. package/src/dex/solidly-v3/contract-math/SwapMath.ts +139 -0
  129. package/src/dex/solidly-v3/contract-math/Tick.ts +66 -0
  130. package/src/dex/solidly-v3/contract-math/TickBitMap.ts +123 -0
  131. package/src/dex/solidly-v3/contract-math/TickMath.ts +211 -0
  132. package/src/dex/solidly-v3/contract-math/UnsafeMath.ts +5 -0
  133. package/src/dex/solidly-v3/contract-math/uniswap-v3-math.ts +570 -0
  134. package/src/dex/solidly-v3/contract-math/utils.ts +50 -0
  135. package/src/dex/solidly-v3/solidly-v3-e2e.test.ts +124 -0
  136. package/src/dex/solidly-v3/solidly-v3-events.test.ts +144 -0
  137. package/src/dex/solidly-v3/solidly-v3-factory.ts +73 -0
  138. package/src/dex/solidly-v3/solidly-v3-integration.test.ts +358 -0
  139. package/src/dex/solidly-v3/solidly-v3-pool.ts +494 -0
  140. package/src/dex/solidly-v3/solidly-v3.ts +988 -0
  141. package/src/dex/solidly-v3/types.ts +158 -0
  142. package/src/dex/solidly-v3/utils.ts +71 -0
  143. package/src/dex/uniswap-v3/uniswap-v3-events.test.ts +3 -0
  144. package/src/dex/wombat/types.ts +5 -0
  145. package/src/dex/wombat/utils.ts +20 -0
  146. package/src/dex/wombat/wombat-bmw.ts +8 -31
  147. package/src/dex/wombat/wombat-e2e.test.ts +13 -1
  148. package/src/dex/wombat/wombat-events.test.ts +147 -0
  149. package/src/dex/wombat/wombat-integration.test.ts +101 -111
  150. package/src/dex/wombat/wombat-pool.ts +620 -171
  151. package/src/dex/wombat/wombat.ts +13 -23
  152. package/tests/constants-e2e.ts +11 -1
  153. /package/src/abi/wombat/{pool.json → pool-v2.json} +0 -0
@@ -0,0 +1,132 @@
1
+ import { BigNumber, BytesLike } from 'ethers';
2
+ import { NumberAsString } from '../../types';
3
+ import { Address } from '../../types';
4
+ import { AbiItem } from 'web3-utils';
5
+ import { MultiResult } from '../../lib/multi-wrapper';
6
+ export declare type FactoryState = Record<string, never>;
7
+ export declare type TickInfo = {
8
+ liquidityGross: bigint;
9
+ liquidityNet: bigint;
10
+ initialized: boolean;
11
+ };
12
+ export declare type Slot0 = {
13
+ sqrtPriceX96: bigint;
14
+ tick: bigint;
15
+ fee: bigint;
16
+ };
17
+ export declare type PoolState = {
18
+ pool: string;
19
+ blockTimestamp: bigint;
20
+ tickSpacing: bigint;
21
+ slot0: Slot0;
22
+ liquidity: bigint;
23
+ maxLiquidityPerTick: bigint;
24
+ tickBitmap: Record<NumberAsString, bigint>;
25
+ ticks: Record<NumberAsString, TickInfo>;
26
+ isValid: boolean;
27
+ startTickBitmap: bigint;
28
+ lowestKnownTick: bigint;
29
+ highestKnownTick: bigint;
30
+ balance0: bigint;
31
+ balance1: bigint;
32
+ };
33
+ export declare type SolidlyV3Data = {
34
+ zeroForOne: boolean;
35
+ poolAddress: string;
36
+ isApproved?: boolean;
37
+ };
38
+ export declare type DecodeStateMultiCallFunc = (result: MultiResult<BytesLike> | BytesLike) => DecodedStateMultiCallResultWithRelativeBitmaps;
39
+ export declare type DexParams = {
40
+ quoter: Address;
41
+ factory: Address;
42
+ stateMulticall: Address;
43
+ supportedTickSpacings: bigint[];
44
+ chunksCount: number;
45
+ initRetryFrequency: number;
46
+ deployer?: Address;
47
+ subgraphURL: string;
48
+ initHash: string;
49
+ stateMultiCallAbi?: AbiItem[];
50
+ decodeStateMultiCallResultWithRelativeBitmaps?: DecodeStateMultiCallFunc;
51
+ };
52
+ export declare type UniswapV3SimpleSwapSellParam = {
53
+ path: string;
54
+ recipient: Address;
55
+ deadline: string;
56
+ amountIn: NumberAsString;
57
+ amountOutMinimum: NumberAsString;
58
+ };
59
+ export declare type UniswapV3SimpleSwapBuyParam = {
60
+ path: string;
61
+ recipient: Address;
62
+ deadline: string;
63
+ amountOut: NumberAsString;
64
+ amountInMaximum: NumberAsString;
65
+ };
66
+ export declare type UniswapV3SimpleSwapParams = UniswapV3SimpleSwapSellParam | UniswapV3SimpleSwapBuyParam;
67
+ export declare type SolidlyV3SimpleSwapParams = {
68
+ recipient: string;
69
+ zeroForOne: boolean;
70
+ amountSpecified: NumberAsString;
71
+ sqrtPriceLimitX96: NumberAsString;
72
+ };
73
+ export declare type UniswapV3Param = [
74
+ fromToken: Address,
75
+ toToken: Address,
76
+ exchange: Address,
77
+ fromAmount: NumberAsString,
78
+ toAmount: NumberAsString,
79
+ expectedAmount: NumberAsString,
80
+ feePercent: NumberAsString,
81
+ deadline: NumberAsString,
82
+ partner: Address,
83
+ isApproved: boolean,
84
+ beneficiary: Address,
85
+ path: string,
86
+ permit: string,
87
+ uuid: string
88
+ ];
89
+ export declare enum UniswapV3Functions {
90
+ exactInput = "exactInput",
91
+ exactOutput = "exactOutput"
92
+ }
93
+ export declare type TickInfoMappings = {
94
+ index: number;
95
+ value: TickInfo;
96
+ };
97
+ export declare type TickBitMapMappings = {
98
+ index: number;
99
+ value: bigint;
100
+ };
101
+ export declare type OutputResult = {
102
+ outputs: bigint[];
103
+ tickCounts: number[];
104
+ };
105
+ export declare type TickBitMapMappingsWithBigNumber = {
106
+ index: number;
107
+ value: BigNumber;
108
+ };
109
+ export declare type TickInfoWithBigNumber = {
110
+ initialized: boolean;
111
+ liquidityGross: BigNumber;
112
+ liquidityNet: BigNumber;
113
+ };
114
+ export declare type TickInfoMappingsWithBigNumber = {
115
+ index: number;
116
+ value: TickInfoWithBigNumber;
117
+ };
118
+ export declare type DecodedStateMultiCallResultWithRelativeBitmaps = {
119
+ pool: Address;
120
+ blockTimestamp: BigNumber;
121
+ slot0: {
122
+ sqrtPriceX96: BigNumber;
123
+ tick: number;
124
+ fee: number;
125
+ unlocked: boolean;
126
+ };
127
+ liquidity: BigNumber;
128
+ tickSpacing: number;
129
+ maxLiquidityPerTick: BigNumber;
130
+ tickBitmap: TickBitMapMappingsWithBigNumber[];
131
+ ticks: TickInfoMappingsWithBigNumber[];
132
+ };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UniswapV3Functions = void 0;
4
+ var UniswapV3Functions;
5
+ (function (UniswapV3Functions) {
6
+ UniswapV3Functions["exactInput"] = "exactInput";
7
+ UniswapV3Functions["exactOutput"] = "exactOutput";
8
+ })(UniswapV3Functions = exports.UniswapV3Functions || (exports.UniswapV3Functions = {}));
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/solidly-v3/types.ts"],"names":[],"mappings":";;;AAyGA,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,+CAAyB,CAAA;IACzB,iDAA2B,CAAA;AAC7B,CAAC,EAHW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAG7B"}
@@ -0,0 +1,6 @@
1
+ import { BytesLike } from 'ethers';
2
+ import { MultiResult } from '../../lib/multi-wrapper';
3
+ import { DexConfigMap } from '../../types';
4
+ import { DexParams, DecodedStateMultiCallResultWithRelativeBitmaps } from './types';
5
+ export declare function getUniswapV3DexKey(UniswapV3Config: DexConfigMap<DexParams>): string;
6
+ export declare function decodeStateMultiCallResultWithRelativeBitmaps(result: MultiResult<BytesLike> | BytesLike): DecodedStateMultiCallResultWithRelativeBitmaps;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeStateMultiCallResultWithRelativeBitmaps = exports.getUniswapV3DexKey = void 0;
4
+ const ethers_1 = require("ethers");
5
+ const ts_essentials_1 = require("ts-essentials");
6
+ const decoders_1 = require("../../lib/decoders");
7
+ function getUniswapV3DexKey(UniswapV3Config) {
8
+ const UniswapV3Keys = Object.keys(UniswapV3Config);
9
+ if (UniswapV3Keys.length !== 1) {
10
+ throw new Error(`UniswapV3 key in UniswapV3Config is not unique. Update relevant places (optimizer) or fix config issue. Received: ${JSON.stringify(UniswapV3Config, (_0, value) => (typeof value === 'bigint' ? value.toString() : value))}`);
11
+ }
12
+ return UniswapV3Keys[0].toLowerCase();
13
+ }
14
+ exports.getUniswapV3DexKey = getUniswapV3DexKey;
15
+ function decodeStateMultiCallResultWithRelativeBitmaps(result) {
16
+ const [isSuccess, toDecode] = (0, decoders_1.extractSuccessAndValue)(result);
17
+ (0, ts_essentials_1.assert)(isSuccess && toDecode !== '0x', `decodeStateMultiCallResultWithRelativeBitmaps failed to get decodable result: ${result}`);
18
+ const decoded = ethers_1.ethers.utils.defaultAbiCoder.decode([
19
+ // I don't want to pass here any interface, so I just use it in ethers format
20
+ `
21
+ tuple(
22
+ address pool,
23
+ uint256 blockTimestamp,
24
+ tuple(
25
+ uint160 sqrtPriceX96,
26
+ int24 tick,
27
+ uint24 fee,
28
+ bool unlocked,
29
+ ) slot0,
30
+ uint128 liquidity,
31
+ int24 tickSpacing,
32
+ uint128 maxLiquidityPerTick,
33
+ tuple(
34
+ int16 index,
35
+ uint256 value,
36
+ )[] tickBitmap,
37
+ tuple(
38
+ int24 index,
39
+ tuple(
40
+ uint128 liquidityGross,
41
+ int128 liquidityNet,
42
+ bool initialized,
43
+ ) value,
44
+ )[] ticks
45
+ )
46
+ `,
47
+ ], toDecode)[0];
48
+ // This conversion is not precise, because when we decode, we have more values
49
+ // But I typed only the ones that are used later
50
+ return decoded;
51
+ }
52
+ exports.decodeStateMultiCallResultWithRelativeBitmaps = decodeStateMultiCallResultWithRelativeBitmaps;
53
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/dex/solidly-v3/utils.ts"],"names":[],"mappings":";;;AAAA,mCAA2C;AAC3C,iDAAuC;AACvC,iDAA4D;AAQ5D,SAAgB,kBAAkB,CAAC,eAAwC;IACzE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACnD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9B,MAAM,IAAI,KAAK,CACb,qHAAqH,IAAI,CAAC,SAAS,CACjI,eAAe,EACf,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CACtE,EAAE,CACJ,CAAC;KACH;IAED,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACxC,CAAC;AAZD,gDAYC;AAED,SAAgB,6CAA6C,CAC3D,MAA0C;IAE1C,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,IAAA,iCAAsB,EAAC,MAAM,CAAC,CAAC;IAE7D,IAAA,sBAAM,EACJ,SAAS,IAAI,QAAQ,KAAK,IAAI,EAC9B,iFAAiF,MAAM,EAAE,CAC1F,CAAC;IAEF,MAAM,OAAO,GAAG,eAAM,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CACjD;QACE,6EAA6E;QAC7E;;;;;;;;;;;;;;;;;;;;;;;;;;KA0BD;KACA,EACD,QAAQ,CACT,CAAC,CAAC,CAAC,CAAC;IACL,8EAA8E;IAC9E,gDAAgD;IAChD,OAAO,OAAyD,CAAC;AACnE,CAAC;AA9CD,sGA8CC"}
@@ -0,0 +1,4 @@
1
+ import { DexParams } from './types';
2
+ import { DexConfigMap, AdapterMappings } from '../../types';
3
+ export declare const TraderJoeV2_1Config: DexConfigMap<DexParams>;
4
+ export declare const Adapters: Record<number, AdapterMappings>;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Adapters = exports.TraderJoeV2_1Config = void 0;
4
+ const constants_1 = require("../../constants");
5
+ exports.TraderJoeV2_1Config = {
6
+ TraderJoeV21: {
7
+ [constants_1.Network.MAINNET]: {
8
+ factoryAddress: '0xDC8d77b69155c7E68A95a4fb0f06a71FF90B943a',
9
+ routerAddress: '0x9A93a421b74F1c5755b83dD2C211614dC419C44b',
10
+ },
11
+ [constants_1.Network.ARBITRUM]: {
12
+ factoryAddress: '0x8e42f2F4101563bF679975178e880FD87d3eFd4e',
13
+ routerAddress: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
14
+ },
15
+ [constants_1.Network.BSC]: {
16
+ factoryAddress: '0x8e42f2F4101563bF679975178e880FD87d3eFd4e',
17
+ routerAddress: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
18
+ },
19
+ [constants_1.Network.AVALANCHE]: {
20
+ factoryAddress: '0x8e42f2F4101563bF679975178e880FD87d3eFd4e',
21
+ routerAddress: '0xb4315e873dBcf96Ffd0acd8EA43f689D8c20fB30',
22
+ },
23
+ },
24
+ };
25
+ exports.Adapters = {
26
+ [constants_1.Network.MAINNET]: {
27
+ [constants_1.SwapSide.SELL]: [{ name: 'Adapter04', index: 5 }],
28
+ [constants_1.SwapSide.BUY]: [{ name: 'BuyAdapter02', index: 1 }],
29
+ },
30
+ [constants_1.Network.ARBITRUM]: {
31
+ [constants_1.SwapSide.SELL]: [{ name: 'ArbitrumAdapter02', index: 4 }],
32
+ [constants_1.SwapSide.BUY]: [{ name: 'ArbitrumBuyAdapter', index: 7 }],
33
+ },
34
+ [constants_1.Network.BSC]: {
35
+ [constants_1.SwapSide.SELL]: [{ name: 'BscAdapter02', index: 5 }],
36
+ [constants_1.SwapSide.BUY]: [{ name: 'BscBuyAdapter', index: 6 }],
37
+ },
38
+ [constants_1.Network.AVALANCHE]: {
39
+ [constants_1.SwapSide.SELL]: [{ name: 'AvalancheAdapter02', index: 4 }],
40
+ [constants_1.SwapSide.BUY]: [{ name: 'AvalancheBuyAdapter', index: 5 }],
41
+ },
42
+ };
43
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/trader-joe-v2-1-2/config.ts"],"names":[],"mappings":";;;AAEA,+CAAoD;AAEvC,QAAA,mBAAmB,GAA4B;IAC1D,YAAY,EAAE;QACZ,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,cAAc,EAAE,4CAA4C;YAC5D,aAAa,EAAE,4CAA4C;SAC5D;QACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;YAClB,cAAc,EAAE,4CAA4C;YAC5D,aAAa,EAAE,4CAA4C;SAC5D;QACD,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE;YACb,cAAc,EAAE,4CAA4C;YAC5D,aAAa,EAAE,4CAA4C;SAC5D;QACD,CAAC,mBAAO,CAAC,SAAS,CAAC,EAAE;YACnB,cAAc,EAAE,4CAA4C;YAC5D,aAAa,EAAE,4CAA4C;SAC5D;KACF;CACF,CAAC;AAEW,QAAA,QAAQ,GAAoC;IACvD,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;QACjB,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAClD,CAAC,oBAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KACrD;IACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;QAClB,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC1D,CAAC,oBAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KAC3D;IACD,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE;QACb,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACrD,CAAC,oBAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KACtD;IACD,CAAC,mBAAO,CAAC,SAAS,CAAC,EAAE;QACnB,CAAC,oBAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC3D,CAAC,oBAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KAC5D;CACF,CAAC"}
@@ -0,0 +1,17 @@
1
+ export declare const TRADER_JOE_V2_CHUNKS = 10;
2
+ export declare const TRADER_JOE_V2_QUOTE_GASLIMIT = 200000;
3
+ export declare const EMPTY_POOL_CACHE_TTL: number;
4
+ export declare const POPULATED_POOL_CACHE_TTL: number;
5
+ export declare const CACHE_PREFIX = "dl";
6
+ export declare const MinLBPairAbi: {
7
+ inputs: never[];
8
+ name: string;
9
+ outputs: {
10
+ internalType: string;
11
+ name: string;
12
+ type: string;
13
+ }[];
14
+ stateMutability: string;
15
+ type: string;
16
+ }[];
17
+ export declare const SUPPORTED_BIN_STEPS: bigint[];
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SUPPORTED_BIN_STEPS = exports.MinLBPairAbi = exports.CACHE_PREFIX = exports.POPULATED_POOL_CACHE_TTL = exports.EMPTY_POOL_CACHE_TTL = exports.TRADER_JOE_V2_QUOTE_GASLIMIT = exports.TRADER_JOE_V2_CHUNKS = void 0;
4
+ exports.TRADER_JOE_V2_CHUNKS = 10;
5
+ exports.TRADER_JOE_V2_QUOTE_GASLIMIT = 200000;
6
+ exports.EMPTY_POOL_CACHE_TTL = 60 * 60;
7
+ exports.POPULATED_POOL_CACHE_TTL = 12 * 60 * 60;
8
+ exports.CACHE_PREFIX = 'dl';
9
+ exports.MinLBPairAbi = [
10
+ {
11
+ inputs: [],
12
+ name: 'getTokenX',
13
+ outputs: [{ internalType: 'contract IERC20', name: '', type: 'address' }],
14
+ stateMutability: 'view',
15
+ type: 'function',
16
+ },
17
+ ];
18
+ exports.SUPPORTED_BIN_STEPS = [1n, 2n, 5n, 10n, 15n, 20n, 25n, 50n, 100n];
19
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/dex/trader-joe-v2-1-2/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,EAAE,CAAC;AAC1B,QAAA,4BAA4B,GAAG,MAAO,CAAC;AAEvC,QAAA,oBAAoB,GAAG,EAAE,GAAG,EAAE,CAAC;AAC/B,QAAA,wBAAwB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAExC,QAAA,YAAY,GAAG,IAAI,CAAC;AAEpB,QAAA,YAAY,GAAG;IAC1B;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACzE,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACF,CAAC;AAEW,QAAA,mBAAmB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { Interface } from '@ethersproject/abi';
2
+ import { DeepReadonly } from 'ts-essentials';
3
+ import { Address, Log, Logger } from '../../types';
4
+ import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
5
+ import { IDexHelper } from '../../dex-helper/idex-helper';
6
+ import { DecodedStateMultiCallResult, PoolState } from './types';
7
+ import { MultiCallParams } from '../../lib/multi-wrapper';
8
+ export declare class TraderJoeV2_1EventPool extends StatefulEventSubscriber<PoolState> {
9
+ readonly parentName: string;
10
+ protected network: number;
11
+ protected dexHelper: IDexHelper;
12
+ private token0;
13
+ private token1;
14
+ private address;
15
+ private readonly multiStateAddress;
16
+ handlers: {
17
+ [event: string]: (event: any, state: DeepReadonly<PoolState>, log: Readonly<Log>) => DeepReadonly<PoolState> | null;
18
+ };
19
+ logDecoder: (log: Log) => any;
20
+ addressesSubscribed: string[];
21
+ readonly binStep: bigint;
22
+ private contract;
23
+ private multiState;
24
+ protected _stateRequestCallData?: MultiCallParams<bigint | DecodedStateMultiCallResult>[];
25
+ readonly poolIface: Interface;
26
+ constructor(parentName: string, network: number, dexHelper: IDexHelper, token0: Address, token1: Address, address: Address, multiStateAddress: Address, binStep: bigint, logger: Logger);
27
+ getSwapOut(): void;
28
+ getSwapIn(): void;
29
+ /**
30
+ * The function is called every time any of the subscribed
31
+ * addresses release log. The function accepts the current
32
+ * state, updates the state according to the log, and returns
33
+ * the updated state.
34
+ * @param state - Current state of event subscriber
35
+ * @param log - Log released by one of the subscribed addresses
36
+ * @returns Updates state of the event subscriber after the log
37
+ */
38
+ protected processLog(state: DeepReadonly<PoolState>, log: Readonly<Log>): DeepReadonly<PoolState> | null;
39
+ /**
40
+ * The function generates state using on-chain calls. This
41
+ * function is called to regenerate state if the event based
42
+ * system fails to fetch events and the local state is no
43
+ * more correct.
44
+ * @param blockNumber - Blocknumber for which the state should
45
+ * should be generated
46
+ * @returns state of the event subscriber at blocknumber
47
+ */
48
+ generateState(blockNumber: number): Promise<DeepReadonly<PoolState>>;
49
+ protected _getStateRequestCallData(): MultiCallParams<bigint | DecodedStateMultiCallResult>[];
50
+ handleTransferBatch(event: any, state: DeepReadonly<PoolState>, log: Readonly<Log>): DeepReadonly<PoolState> | null;
51
+ handleDepositedToBins(event: any, state: DeepReadonly<PoolState>, log: Readonly<Log>): DeepReadonly<PoolState> | null;
52
+ handleWithdrawnFromBins(event: any, state: DeepReadonly<PoolState>, log: Readonly<Log>): DeepReadonly<PoolState> | null;
53
+ handleCompositionFees(event: any, state: DeepReadonly<PoolState>, log: Readonly<Log>): DeepReadonly<PoolState> | null;
54
+ handleSwap(event: any, state: DeepReadonly<PoolState>, log: Readonly<Log>): DeepReadonly<PoolState> | null;
55
+ handleStaticFeeParametersSet(event: any, state: DeepReadonly<PoolState>, log: Readonly<Log>): DeepReadonly<PoolState> | null;
56
+ handleFlashLoan(event: any, state: DeepReadonly<PoolState>, log: Readonly<Log>): DeepReadonly<PoolState> | null;
57
+ handleForcedDecay(event: any, state: DeepReadonly<PoolState>, log: Readonly<Log>): DeepReadonly<PoolState> | null;
58
+ private decodeAmounts;
59
+ private decodeFees;
60
+ }
@@ -0,0 +1,199 @@
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.TraderJoeV2_1EventPool = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const utils_1 = require("../../utils");
9
+ const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
10
+ const PairABI_json_1 = __importDefault(require("../../abi/trader-joe-v2_1/PairABI.json"));
11
+ const UniswapMulti_abi_json_1 = __importDefault(require("../../abi/uniswap-v3/UniswapMulti.abi.json"));
12
+ const web3_eth_contract_1 = require("web3-eth-contract");
13
+ const config_1 = require("../uniswap-v3/config");
14
+ const decoders_1 = require("../../lib/decoders");
15
+ class TraderJoeV2_1EventPool extends stateful_event_subscriber_1.StatefulEventSubscriber {
16
+ constructor(parentName, network, dexHelper, token0, token1, address, multiStateAddress, binStep, logger) {
17
+ // TODO: Add pool name
18
+ super(parentName, `${token0}_${token1}_${binStep}`, dexHelper, logger);
19
+ this.parentName = parentName;
20
+ this.network = network;
21
+ this.dexHelper = dexHelper;
22
+ this.token0 = token0;
23
+ this.token1 = token1;
24
+ this.address = address;
25
+ this.multiStateAddress = multiStateAddress;
26
+ this.handlers = {};
27
+ this.poolIface = new abi_1.Interface(PairABI_json_1.default);
28
+ this.logDecoder = (log) => this.poolIface.parseLog(log);
29
+ this.addressesSubscribed = Array(1);
30
+ this.binStep = binStep;
31
+ this.token0 = token0;
32
+ this.token1 = token1;
33
+ this.multiState = new this.dexHelper.web3Provider.eth.Contract(UniswapMulti_abi_json_1.default, config_1.UniswapV3Config['UniswapV3'][network].uniswapMulticall);
34
+ this.contract = new web3_eth_contract_1.Contract(PairABI_json_1.default, address);
35
+ // Add handlers
36
+ this.handlers['TransferBatch'] = this.handleTransferBatch.bind(this);
37
+ this.handlers['DepositedToBins'] = this.handleDepositedToBins.bind(this);
38
+ this.handlers['WithdrawnFromBins'] =
39
+ this.handleWithdrawnFromBins.bind(this);
40
+ this.handlers['CompositionFees'] = this.handleCompositionFees.bind(this);
41
+ this.handlers['Swap'] = this.handleSwap.bind(this);
42
+ this.handlers['StaticFeeParametersSet'] =
43
+ this.handleStaticFeeParametersSet.bind(this);
44
+ this.handlers['FlashLoan'] = this.handleFlashLoan.bind(this);
45
+ this.handlers['ForcedDecay'] = this.handleForcedDecay.bind(this);
46
+ }
47
+ getSwapOut() { }
48
+ getSwapIn() { }
49
+ /**
50
+ * The function is called every time any of the subscribed
51
+ * addresses release log. The function accepts the current
52
+ * state, updates the state according to the log, and returns
53
+ * the updated state.
54
+ * @param state - Current state of event subscriber
55
+ * @param log - Log released by one of the subscribed addresses
56
+ * @returns Updates state of the event subscriber after the log
57
+ */
58
+ processLog(state, log) {
59
+ try {
60
+ const event = this.logDecoder(log);
61
+ if (event.name in this.handlers) {
62
+ return this.handlers[event.name](event, state, log);
63
+ }
64
+ }
65
+ catch (e) {
66
+ (0, utils_1.catchParseLogError)(e, this.logger);
67
+ }
68
+ return null;
69
+ }
70
+ /**
71
+ * The function generates state using on-chain calls. This
72
+ * function is called to regenerate state if the event based
73
+ * system fails to fetch events and the local state is no
74
+ * more correct.
75
+ * @param blockNumber - Blocknumber for which the state should
76
+ * should be generated
77
+ * @returns state of the event subscriber at blocknumber
78
+ */
79
+ async generateState(blockNumber) {
80
+ // const params = [false, 0];
81
+ // const result = await this.uniswapMulti.methods
82
+ // .getReserves(this.addressesSubscribed[0])
83
+ // .call({}, blockNumber);
84
+ // // TODO: complete me!
85
+ return {};
86
+ }
87
+ _getStateRequestCallData() {
88
+ if (!this._stateRequestCallData) {
89
+ // const callData: MultiCallParams<bigint | bigint[]>[] = [
90
+ const callData = [
91
+ {
92
+ target: this.addressesSubscribed[0],
93
+ callData: this.poolIface.encodeFunctionData('getReserves', []),
94
+ decodeFunction: (result) => {
95
+ return (0, decoders_1.generalDecoder)(result, ['uint128', 'uint128'], [0n, 0n], value => [value[0].toBigInt(), value[1].toBigInt()]);
96
+ },
97
+ },
98
+ {
99
+ target: this.addressesSubscribed[0],
100
+ callData: this.poolIface.encodeFunctionData('getActiveId', []),
101
+ decodeFunction: decoders_1.uint128ToBigNumber,
102
+ },
103
+ ];
104
+ // const callData: MultiCallParams<
105
+ // bigint | DecodedStateMultiCallResultWithRelativeBitmaps
106
+ // >[] = [
107
+ // {
108
+ // target: this.token0,
109
+ // callData: this.erc20Interface.encodeFunctionData('balanceOf', [
110
+ // this.poolAddress,
111
+ // ]),
112
+ // decodeFunction: uint256ToBigInt,
113
+ // },
114
+ // {
115
+ // target: this.token1,
116
+ // callData: this.erc20Interface.encodeFunctionData('balanceOf', [
117
+ // this.poolAddress,
118
+ // ]),
119
+ // decodeFunction: uint256ToBigInt,
120
+ // },
121
+ // {
122
+ // target: this.stateMultiContract.options.address,
123
+ // callData: this.stateMultiContract.methods
124
+ // .getFullStateWithRelativeBitmaps(
125
+ // this.factoryAddress,
126
+ // this.token0,
127
+ // this.token1,
128
+ // this.feeCode,
129
+ // this.getBitmapRangeToRequest(),
130
+ // this.getBitmapRangeToRequest(),
131
+ // )
132
+ // .encodeABI(),
133
+ // decodeFunction:
134
+ // this.decodeStateMultiCallResultWithRelativeBitmaps !== undefined
135
+ // ? this.decodeStateMultiCallResultWithRelativeBitmaps
136
+ // : decodeStateMultiCallResultWithRelativeBitmaps,
137
+ // },
138
+ // ];
139
+ this._stateRequestCallData = callData;
140
+ }
141
+ return this._stateRequestCallData;
142
+ }
143
+ handleTransferBatch(event, state, log) {
144
+ return null;
145
+ }
146
+ handleDepositedToBins(event, state, log) {
147
+ return null;
148
+ }
149
+ handleWithdrawnFromBins(event, state, log) {
150
+ return null;
151
+ }
152
+ handleCompositionFees(event, state, log) {
153
+ return null;
154
+ }
155
+ handleSwap(event, state, log) {
156
+ return null;
157
+ }
158
+ handleStaticFeeParametersSet(event, state, log) {
159
+ return null;
160
+ }
161
+ handleFlashLoan(event, state, log) {
162
+ return null;
163
+ }
164
+ handleForcedDecay(event, state, log) {
165
+ return null;
166
+ }
167
+ // private decodeAmounts(amounts: Bytes): [bigint, bigint] {
168
+ decodeAmounts(amounts) {
169
+ /**
170
+ * Decodes the amounts bytes input as 2 integers.
171
+ *
172
+ * @param amounts - amounts to decode.
173
+ * @return tuple of BigInts with the values decoded.
174
+ */
175
+ // Convert amounts to a BigInt
176
+ const amountsBigInt = BigInt(`0x${Buffer.from(amounts).toString('hex')}`);
177
+ // Read the right 128 bits of the 256 bits
178
+ const amountsX = amountsBigInt & (BigInt(2) ** BigInt(128) - BigInt(1));
179
+ // Read the left 128 bits of the 256 bits
180
+ const amountsY = amountsBigInt >> BigInt(128);
181
+ return [amountsX, amountsY];
182
+ }
183
+ // private decodeFees(feesBytes: Bytes): bigint {
184
+ decodeFees(feesBytes) {
185
+ /**
186
+ * Decode the fee value from the bytes input and return it as in integer.
187
+ * Fee values are stored in the first 128 bits of the input.
188
+ *
189
+ * @param feesBytes - Bytes containing the encoded value.
190
+ * @return Fee values.
191
+ */
192
+ // Convert feesBytes to a BigInt
193
+ const feesBigInt = BigInt(`0x${Buffer.from(feesBytes).toString('hex')}`);
194
+ // Retrieve the fee value from the right 128 bits
195
+ return feesBigInt & (BigInt(2) ** BigInt(128) - BigInt(1));
196
+ }
197
+ }
198
+ exports.TraderJoeV2_1EventPool = TraderJoeV2_1EventPool;
199
+ //# sourceMappingURL=trader-joe-v2-1-2-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trader-joe-v2-1-2-pool.js","sourceRoot":"","sources":["../../../src/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { AsyncOrSync } from 'ts-essentials';
2
+ import { Token, Address, ExchangePrices, PoolPrices, AdapterExchangeParam, SimpleExchangeParam, PoolLiquidity, Logger } from '../../types';
3
+ import { SwapSide, Network } from '../../constants';
4
+ import { IDex } from '../idex';
5
+ import { IDexHelper } from '../../dex-helper/idex-helper';
6
+ import { TraderJoeV2_1Data } from './types';
7
+ import { SimpleExchange } from '../simple-exchange';
8
+ import { TraderJoeV2_1EventPool } from './trader-joe-v2-1-2-pool';
9
+ import { Interface } from '@ethersproject/abi';
10
+ import { Contract } from 'web3-eth-contract';
11
+ export declare class TraderJoeV2_1 extends SimpleExchange implements IDex<TraderJoeV2_1Data> {
12
+ readonly network: Network;
13
+ readonly dexKey: string;
14
+ readonly dexHelper: IDexHelper;
15
+ protected adapters: import("../../types").AdapterMappings;
16
+ readonly hasConstantPriceLargeAmounts = false;
17
+ readonly needWrapNative = true;
18
+ readonly isFeeOnTransferSupported = false;
19
+ exchangeRouterInterface: Interface;
20
+ uniswapMulti: Contract;
21
+ factory: Contract;
22
+ pair: Contract;
23
+ routerAddress: string;
24
+ readonly eventPools: Record<string, TraderJoeV2_1EventPool | null>;
25
+ static dexKeysWithNetwork: {
26
+ key: string;
27
+ networks: Network[];
28
+ }[];
29
+ logger: Logger;
30
+ constructor(network: Network, dexKey: string, dexHelper: IDexHelper, adapters?: import("../../types").AdapterMappings);
31
+ initializePricing(blockNumber: number): Promise<void>;
32
+ getAdapters(side: SwapSide): {
33
+ name: string;
34
+ index: number;
35
+ }[] | null;
36
+ get supportedBinSteps(): bigint[];
37
+ getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise<string[]>;
38
+ getPricesVolume(from: Token, to: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<TraderJoeV2_1Data>>;
39
+ getPoolIdentifier(srcAddress: Address, destAddress: Address, binStep: bigint): string;
40
+ private getPool;
41
+ private _sortTokens;
42
+ private _getLoweredAddresses;
43
+ getCalldataGasCost(poolPrices: PoolPrices<TraderJoeV2_1Data>): number | number[];
44
+ getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: TraderJoeV2_1Data, side: SwapSide): AdapterExchangeParam;
45
+ getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: TraderJoeV2_1Data, side: SwapSide): Promise<SimpleExchangeParam>;
46
+ updatePoolState(): Promise<void>;
47
+ getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
48
+ releaseResources(): AsyncOrSync<void>;
49
+ }