@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.
- package/build/abi/solidly-v3/SolidlyV3Pool.abi.json +738 -0
- package/build/abi/solidly-v3/SolidlyV3StateMulticall.abi.json +375 -0
- package/build/abi/trader-joe-v2_1/FactoryABI.json +0 -0
- package/build/abi/trader-joe-v2_1/PairABI.json +1493 -0
- package/build/abi/trader-joe-v2_1/RouterABI.json +1489 -0
- package/build/abi/wombat/pool-v2.json +1289 -0
- package/build/abi/wombat/pool-v3.json +2013 -0
- package/build/config.js +2 -2
- package/build/dex/index.js +4 -1
- package/build/dex/index.js.map +1 -1
- package/build/dex/solidly-v3/config.d.ts +9 -0
- package/build/dex/solidly-v3/config.js +58 -0
- package/build/dex/solidly-v3/config.js.map +1 -0
- package/build/dex/solidly-v3/constants.d.ts +27 -0
- package/build/dex/solidly-v3/constants.js +34 -0
- package/build/dex/solidly-v3/constants.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/BitMath.d.ts +4 -0
- package/build/dex/solidly-v3/contract-math/BitMath.js +93 -0
- package/build/dex/solidly-v3/contract-math/BitMath.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/FixedPoint128.d.ts +3 -0
- package/build/dex/solidly-v3/contract-math/FixedPoint128.js +8 -0
- package/build/dex/solidly-v3/contract-math/FixedPoint128.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/FixedPoint96.d.ts +4 -0
- package/build/dex/solidly-v3/contract-math/FixedPoint96.js +9 -0
- package/build/dex/solidly-v3/contract-math/FixedPoint96.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/FullMath.d.ts +4 -0
- package/build/dex/solidly-v3/contract-math/FullMath.js +19 -0
- package/build/dex/solidly-v3/contract-math/FullMath.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/LiquidityMath.d.ts +3 -0
- package/build/dex/solidly-v3/contract-math/LiquidityMath.js +22 -0
- package/build/dex/solidly-v3/contract-math/LiquidityMath.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/SqrtPriceMath.d.ts +10 -0
- package/build/dex/solidly-v3/contract-math/SqrtPriceMath.js +91 -0
- package/build/dex/solidly-v3/contract-math/SqrtPriceMath.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/SwapMath.d.ts +8 -0
- package/build/dex/solidly-v3/contract-math/SwapMath.js +70 -0
- package/build/dex/solidly-v3/contract-math/SwapMath.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/Tick.d.ts +7 -0
- package/build/dex/solidly-v3/contract-math/Tick.js +36 -0
- package/build/dex/solidly-v3/contract-math/Tick.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/TickBitMap.d.ts +7 -0
- package/build/dex/solidly-v3/contract-math/TickBitMap.js +84 -0
- package/build/dex/solidly-v3/contract-math/TickBitMap.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/TickMath.d.ts +8 -0
- package/build/dex/solidly-v3/contract-math/TickMath.js +162 -0
- package/build/dex/solidly-v3/contract-math/TickMath.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/UnsafeMath.d.ts +3 -0
- package/build/dex/solidly-v3/contract-math/UnsafeMath.js +10 -0
- package/build/dex/solidly-v3/contract-math/UnsafeMath.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/uniswap-v3-math.d.ts +31 -0
- package/build/dex/solidly-v3/contract-math/uniswap-v3-math.js +363 -0
- package/build/dex/solidly-v3/contract-math/uniswap-v3-math.js.map +1 -0
- package/build/dex/solidly-v3/contract-math/utils.d.ts +7 -0
- package/build/dex/solidly-v3/contract-math/utils.js +39 -0
- package/build/dex/solidly-v3/contract-math/utils.js.map +1 -0
- package/build/dex/solidly-v3/solidly-v3-factory.d.ts +26 -0
- package/build/dex/solidly-v3/solidly-v3-factory.js +44 -0
- package/build/dex/solidly-v3/solidly-v3-factory.js.map +1 -0
- package/build/dex/solidly-v3/solidly-v3-pool.d.ts +44 -0
- package/build/dex/solidly-v3/solidly-v3-pool.js +298 -0
- package/build/dex/solidly-v3/solidly-v3-pool.js.map +1 -0
- package/build/dex/solidly-v3/solidly-v3.d.ts +67 -0
- package/build/dex/solidly-v3/solidly-v3.js +590 -0
- package/build/dex/solidly-v3/solidly-v3.js.map +1 -0
- package/build/dex/solidly-v3/types.d.ts +132 -0
- package/build/dex/solidly-v3/types.js +9 -0
- package/build/dex/solidly-v3/types.js.map +1 -0
- package/build/dex/solidly-v3/utils.d.ts +6 -0
- package/build/dex/solidly-v3/utils.js +53 -0
- package/build/dex/solidly-v3/utils.js.map +1 -0
- package/build/dex/trader-joe-v2-1-2/config.d.ts +4 -0
- package/build/dex/trader-joe-v2-1-2/config.js +43 -0
- package/build/dex/trader-joe-v2-1-2/config.js.map +1 -0
- package/build/dex/trader-joe-v2-1-2/constants.d.ts +17 -0
- package/build/dex/trader-joe-v2-1-2/constants.js +19 -0
- package/build/dex/trader-joe-v2-1-2/constants.js.map +1 -0
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.d.ts +60 -0
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js +199 -0
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js.map +1 -0
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.d.ts +49 -0
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js +269 -0
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js.map +1 -0
- package/build/dex/trader-joe-v2-1-2/types.d.ts +81 -0
- package/build/dex/trader-joe-v2-1-2/types.js +9 -0
- package/build/dex/trader-joe-v2-1-2/types.js.map +1 -0
- package/build/dex/trader-joe-v2_1/config.d.ts +4 -0
- package/build/dex/trader-joe-v2_1/config.js +43 -0
- package/build/dex/trader-joe-v2_1/config.js.map +1 -0
- package/build/dex/trader-joe-v2_1/constants.d.ts +16 -0
- package/build/dex/trader-joe-v2_1/constants.js +18 -0
- package/build/dex/trader-joe-v2_1/constants.js.map +1 -0
- package/build/dex/trader-joe-v2_1/trader-joe-v2.1.d.ts +0 -0
- package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js +384 -0
- package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js.map +1 -0
- package/build/dex/trader-joe-v2_1/types.d.ts +39 -0
- package/build/dex/trader-joe-v2_1/types.js +3 -0
- package/build/dex/trader-joe-v2_1/types.js.map +1 -0
- package/build/dex/wombat/types.d.ts +2 -0
- package/build/dex/wombat/utils.d.ts +1 -0
- package/build/dex/wombat/utils.js +14 -1
- package/build/dex/wombat/utils.js.map +1 -1
- package/build/dex/wombat/wombat-bmw.d.ts +2 -2
- package/build/dex/wombat/wombat-bmw.js +8 -25
- package/build/dex/wombat/wombat-bmw.js.map +1 -1
- package/build/dex/wombat/wombat-pool-poller.d.ts +22 -0
- package/build/dex/wombat/wombat-pool-poller.js +164 -0
- package/build/dex/wombat/wombat-pool-poller.js.map +1 -0
- package/build/dex/wombat/wombat-pool.d.ts +51 -17
- package/build/dex/wombat/wombat-pool.js +393 -112
- package/build/dex/wombat/wombat-pool.js.map +1 -1
- package/build/dex/wombat/wombat.d.ts +1 -1
- package/build/dex/wombat/wombat.js +12 -18
- package/build/dex/wombat/wombat.js.map +1 -1
- package/package.json +1 -1
- package/src/abi/solidly-v3/SolidlyV3Pool.abi.json +738 -0
- package/src/abi/solidly-v3/SolidlyV3StateMulticall.abi.json +375 -0
- package/src/abi/wombat/pool-v3.json +2013 -0
- package/src/config.ts +2 -2
- package/src/dex/index.ts +4 -1
- package/src/dex/solidly-v3/config.ts +64 -0
- package/src/dex/solidly-v3/constants.ts +42 -0
- package/src/dex/solidly-v3/contract-math/BitMath.ts +90 -0
- package/src/dex/solidly-v3/contract-math/FixedPoint128.ts +3 -0
- package/src/dex/solidly-v3/contract-math/FixedPoint96.ts +4 -0
- package/src/dex/solidly-v3/contract-math/FullMath.ts +30 -0
- package/src/dex/solidly-v3/contract-math/LiquidityMath.ts +17 -0
- package/src/dex/solidly-v3/contract-math/SqrtPriceMath.ts +226 -0
- package/src/dex/solidly-v3/contract-math/SwapMath.ts +139 -0
- package/src/dex/solidly-v3/contract-math/Tick.ts +66 -0
- package/src/dex/solidly-v3/contract-math/TickBitMap.ts +123 -0
- package/src/dex/solidly-v3/contract-math/TickMath.ts +211 -0
- package/src/dex/solidly-v3/contract-math/UnsafeMath.ts +5 -0
- package/src/dex/solidly-v3/contract-math/uniswap-v3-math.ts +570 -0
- package/src/dex/solidly-v3/contract-math/utils.ts +50 -0
- package/src/dex/solidly-v3/solidly-v3-e2e.test.ts +124 -0
- package/src/dex/solidly-v3/solidly-v3-events.test.ts +144 -0
- package/src/dex/solidly-v3/solidly-v3-factory.ts +73 -0
- package/src/dex/solidly-v3/solidly-v3-integration.test.ts +358 -0
- package/src/dex/solidly-v3/solidly-v3-pool.ts +494 -0
- package/src/dex/solidly-v3/solidly-v3.ts +988 -0
- package/src/dex/solidly-v3/types.ts +158 -0
- package/src/dex/solidly-v3/utils.ts +71 -0
- package/src/dex/uniswap-v3/uniswap-v3-events.test.ts +3 -0
- package/src/dex/wombat/types.ts +5 -0
- package/src/dex/wombat/utils.ts +20 -0
- package/src/dex/wombat/wombat-bmw.ts +8 -31
- package/src/dex/wombat/wombat-e2e.test.ts +13 -1
- package/src/dex/wombat/wombat-events.test.ts +147 -0
- package/src/dex/wombat/wombat-integration.test.ts +101 -111
- package/src/dex/wombat/wombat-pool.ts +620 -171
- package/src/dex/wombat/wombat.ts +13 -23
- package/tests/constants-e2e.ts +11 -1
- /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,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
|
+
}
|