@paraswap/dex-lib 2.35.7-multiple-dex-base-chain.2 → 2.35.7-worker-pool.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.
- package/build/abi/quickPerps/fast-price-events.json +70 -0
- package/build/abi/quickPerps/fast-price-feed.json +748 -0
- package/build/abi/quickPerps/reader.json +313 -0
- package/build/abi/quickPerps/vault-price-feed.json +477 -0
- package/build/abi/quickPerps/vault.json +1953 -0
- package/build/config.js +2 -2
- package/build/dex/algebra/algebra.d.ts +4 -2
- package/build/dex/algebra/algebra.js +16 -3
- package/build/dex/algebra/algebra.js.map +1 -1
- package/build/dex/balancer-v2/config.js +1 -9
- package/build/dex/balancer-v2/config.js.map +1 -1
- package/build/dex/index.js +0 -2
- package/build/dex/index.js.map +1 -1
- package/build/dex/maverick-v1/config.js +0 -9
- package/build/dex/maverick-v1/config.js.map +1 -1
- package/build/dex/maverick-v1/maverick-v1.js +2 -11
- package/build/dex/maverick-v1/maverick-v1.js.map +1 -1
- package/build/dex/pancakeswap-v3/config.js +0 -17
- package/build/dex/pancakeswap-v3/config.js.map +1 -1
- package/build/dex/pancakeswap-v3/pancakeswap-v3.d.ts +3 -2
- package/build/dex/pancakeswap-v3/pancakeswap-v3.js +15 -3
- package/build/dex/pancakeswap-v3/pancakeswap-v3.js.map +1 -1
- package/build/dex/solidly/config.js +1 -22
- package/build/dex/solidly/config.js.map +1 -1
- package/build/dex/solidly/solidly.js +0 -1
- package/build/dex/solidly/solidly.js.map +1 -1
- package/build/dex/{ramses-v2 → test-dex}/config.d.ts +1 -1
- package/build/dex/test-dex/config.js +15 -0
- package/build/dex/test-dex/config.js.map +1 -0
- package/build/dex/test-dex/test-dex-pool.d.ts +39 -0
- package/build/dex/test-dex/test-dex-pool.js +63 -0
- package/build/dex/test-dex/test-dex-pool.js.map +1 -0
- package/build/dex/test-dex/test-dex.d.ts +37 -0
- package/build/dex/test-dex/test-dex.js +126 -0
- package/build/dex/test-dex/test-dex.js.map +1 -0
- package/build/dex/test-dex/types.d.ts +6 -0
- package/build/dex/{pancakeswap-v3 → test-dex}/types.js.map +1 -1
- package/build/dex/uniswap-v3/config.js +0 -12
- package/build/dex/uniswap-v3/config.js.map +1 -1
- package/build/dex/uniswap-v3/uniswap-v3.d.ts +3 -2
- package/build/dex/uniswap-v3/uniswap-v3.js +15 -3
- package/build/dex/uniswap-v3/uniswap-v3.js.map +1 -1
- package/build/dex/woo-fi-v2/config.js +0 -13
- package/build/dex/woo-fi-v2/config.js.map +1 -1
- package/build/dex/woo-fi-v2/woo-fi-math.d.ts +16 -0
- package/build/dex/woo-fi-v2/woo-fi-math.js +137 -0
- package/build/dex/woo-fi-v2/woo-fi-math.js.map +1 -0
- package/build/dex-helper/dummy-dex-helper.d.ts +1 -0
- package/build/dex-helper/dummy-dex-helper.js +3 -0
- package/build/dex-helper/dummy-dex-helper.js.map +1 -1
- package/build/dex-helper/idex-helper.d.ts +1 -0
- package/build/workers.d.ts +0 -0
- package/build/workers.js +2 -0
- package/build/workers.js.map +1 -0
- package/package.json +1 -1
- package/src/config.ts +2 -2
- package/src/dex/algebra/algebra.ts +11 -5
- package/src/dex/balancer-v2/balancer-v2-e2e.test.ts +1 -122
- package/src/dex/balancer-v2/config.ts +1 -10
- package/src/dex/index.ts +0 -2
- package/src/dex/maverick-v1/config.ts +0 -10
- package/src/dex/maverick-v1/maverick-v1-e2e.test.ts +1 -121
- package/src/dex/maverick-v1/maverick-v1.ts +2 -12
- package/src/dex/pancakeswap-v3/config.ts +0 -19
- package/src/dex/pancakeswap-v3/pancakeswap-v3-e2e.test.ts +0 -120
- package/src/dex/pancakeswap-v3/pancakeswap-v3.ts +10 -5
- package/src/dex/solidly/config.ts +1 -24
- package/src/dex/solidly/solidly-e2e.test.ts +0 -88
- package/src/dex/solidly/solidly-integration.test.ts +0 -66
- package/src/dex/solidly/solidly.ts +0 -1
- package/src/dex/uniswap-v3/config.ts +0 -13
- package/src/dex/uniswap-v3/uniswap-v3-e2e.test.ts +4 -25
- package/src/dex/uniswap-v3/uniswap-v3-integration.test.ts +0 -142
- package/src/dex/uniswap-v3/uniswap-v3.ts +10 -5
- package/src/dex/woo-fi-v2/config.ts +0 -13
- package/src/dex/woo-fi-v2/woo-fi-v2-e2e.test.ts +0 -64
- package/src/dex-helper/dummy-dex-helper.ts +13 -0
- package/src/dex-helper/idex-helper.ts +7 -0
- package/tests/constants-e2e.ts +0 -30
- package/tests/utils-e2e.ts +0 -1
- package/.idea/aws.xml +0 -17
- package/.idea/codeStyles/Project.xml +0 -19
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/paraswap-dex-lib.iml +0 -9
- package/.idea/vcs.xml +0 -6
- package/build/abi/aerodrome/aerodrome-pool-factory.json +0 -586
- package/build/abi/algebra/AlgebraPool.abi.json +0 -727
- package/build/abi/curve-v1/StableSwapFRXETH.json +0 -889
- package/build/abi/curve-v1/StableSwapWBETH.json +0 -1223
- package/build/abi/sushiswap-v3/QuoterV2.json +0 -267
- package/build/abi/sushiswap-v3/RouterProcessor3.json +0 -289
- package/build/abi/wBETH.json +0 -1527
- package/build/dex/algebra/algebra-pool.d.ts +0 -46
- package/build/dex/algebra/algebra-pool.js +0 -336
- package/build/dex/algebra/algebra-pool.js.map +0 -1
- package/build/dex/curve-v1/pools/frxETHpool.d.ts +0 -7
- package/build/dex/curve-v1/pools/frxETHpool.js +0 -27
- package/build/dex/curve-v1/pools/frxETHpool.js.map +0 -1
- package/build/dex/curve-v1/pools/wbETHpool.d.ts +0 -29
- package/build/dex/curve-v1/pools/wbETHpool.js +0 -408
- package/build/dex/curve-v1/pools/wbETHpool.js.map +0 -1
- package/build/dex/pancakeswap-v3/types.d.ts +0 -14
- package/build/dex/ramses-v2/config.js +0 -28
- package/build/dex/ramses-v2/config.js.map +0 -1
- package/build/dex/ramses-v2/constants.d.ts +0 -28
- package/build/dex/ramses-v2/constants.js +0 -35
- package/build/dex/ramses-v2/constants.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/BitMath.d.ts +0 -4
- package/build/dex/ramses-v2/contract-math/BitMath.js +0 -93
- package/build/dex/ramses-v2/contract-math/BitMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/FixedPoint128.d.ts +0 -3
- package/build/dex/ramses-v2/contract-math/FixedPoint128.js +0 -8
- package/build/dex/ramses-v2/contract-math/FixedPoint128.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/FixedPoint96.d.ts +0 -4
- package/build/dex/ramses-v2/contract-math/FixedPoint96.js +0 -9
- package/build/dex/ramses-v2/contract-math/FixedPoint96.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/FullMath.d.ts +0 -4
- package/build/dex/ramses-v2/contract-math/FullMath.js +0 -19
- package/build/dex/ramses-v2/contract-math/FullMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/LiquidityMath.d.ts +0 -3
- package/build/dex/ramses-v2/contract-math/LiquidityMath.js +0 -22
- package/build/dex/ramses-v2/contract-math/LiquidityMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/Oracle.d.ts +0 -10
- package/build/dex/ramses-v2/contract-math/Oracle.js +0 -133
- package/build/dex/ramses-v2/contract-math/Oracle.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/SqrtPriceMath.d.ts +0 -10
- package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js +0 -91
- package/build/dex/ramses-v2/contract-math/SqrtPriceMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/SwapMath.d.ts +0 -8
- package/build/dex/ramses-v2/contract-math/SwapMath.js +0 -70
- package/build/dex/ramses-v2/contract-math/SwapMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/Tick.d.ts +0 -7
- package/build/dex/ramses-v2/contract-math/Tick.js +0 -45
- package/build/dex/ramses-v2/contract-math/Tick.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/TickBitMap.d.ts +0 -8
- package/build/dex/ramses-v2/contract-math/TickBitMap.js +0 -87
- package/build/dex/ramses-v2/contract-math/TickBitMap.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/TickMath.d.ts +0 -8
- package/build/dex/ramses-v2/contract-math/TickMath.js +0 -162
- package/build/dex/ramses-v2/contract-math/TickMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/UnsafeMath.d.ts +0 -3
- package/build/dex/ramses-v2/contract-math/UnsafeMath.js +0 -10
- package/build/dex/ramses-v2/contract-math/UnsafeMath.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/uniswap-v3-math.d.ts +0 -18
- package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js +0 -392
- package/build/dex/ramses-v2/contract-math/uniswap-v3-math.js.map +0 -1
- package/build/dex/ramses-v2/contract-math/utils.d.ts +0 -3
- package/build/dex/ramses-v2/contract-math/utils.js +0 -16
- package/build/dex/ramses-v2/contract-math/utils.js.map +0 -1
- package/build/dex/ramses-v2/ramses-v2-pool.d.ts +0 -42
- package/build/dex/ramses-v2/ramses-v2-pool.js +0 -307
- package/build/dex/ramses-v2/ramses-v2-pool.js.map +0 -1
- package/build/dex/ramses-v2/ramses-v2.d.ts +0 -61
- package/build/dex/ramses-v2/ramses-v2.js +0 -690
- package/build/dex/ramses-v2/ramses-v2.js.map +0 -1
- package/build/dex/ramses-v2/types.d.ts +0 -154
- package/build/dex/ramses-v2/types.js +0 -9
- package/build/dex/ramses-v2/types.js.map +0 -1
- package/build/dex/ramses-v2/utils.d.ts +0 -6
- package/build/dex/ramses-v2/utils.js +0 -71
- package/build/dex/ramses-v2/utils.js.map +0 -1
- package/build/dex/solidly/forks-override/aerodrome.d.ts +0 -14
- package/build/dex/solidly/forks-override/aerodrome.js +0 -48
- package/build/dex/solidly/forks-override/aerodrome.js.map +0 -1
- package/build/dex/sushiswap-v3/config.d.ts +0 -4
- package/build/dex/sushiswap-v3/config.js +0 -132
- package/build/dex/sushiswap-v3/config.js.map +0 -1
- package/build/dex/sushiswap-v3/constants.d.ts +0 -4
- package/build/dex/sushiswap-v3/constants.js +0 -32
- package/build/dex/sushiswap-v3/constants.js.map +0 -1
- package/build/dex/sushiswap-v3/sushiswap-v3-original.d.ts +0 -56
- package/build/dex/sushiswap-v3/sushiswap-v3-original.js +0 -598
- package/build/dex/sushiswap-v3/sushiswap-v3-original.js.map +0 -1
- package/build/dex/sushiswap-v3/sushiswap-v3-pool.d.ts +0 -1
- package/build/dex/sushiswap-v3/sushiswap-v3-pool.js +0 -6
- package/build/dex/sushiswap-v3/sushiswap-v3-pool.js.map +0 -1
- package/build/dex/sushiswap-v3/sushiswap-v3.d.ts +0 -21
- package/build/dex/sushiswap-v3/sushiswap-v3.js +0 -58
- package/build/dex/sushiswap-v3/sushiswap-v3.js.map +0 -1
- package/build/dex/sushiswap-v3/token.d.ts +0 -6
- package/build/dex/sushiswap-v3/token.js +0 -23
- package/build/dex/sushiswap-v3/token.js.map +0 -1
- package/build/dex/sushiswap-v3/types.d.ts +0 -15
- package/build/dex/sushiswap-v3/types.js +0 -18
- package/build/dex/sushiswap-v3/types.js.map +0 -1
- package/src/abi/aerodrome/aerodrome-pool-factory.json +0 -586
- package/src/dex/solidly/forks-override/aerodrome.ts +0 -57
- /package/build/dex/{pancakeswap-v3 → test-dex}/types.js +0 -0
|
@@ -14,12 +14,6 @@ export const MaverickV1Config: DexConfigMap<DexParams> = {
|
|
|
14
14
|
routerAddress: '0x4a585e0f7c18e2c414221d6402652d5e0990e5f8',
|
|
15
15
|
poolInspectorAddress: '0xaA5BF61a664109e959D69C38734d4EA7dF74e456',
|
|
16
16
|
},
|
|
17
|
-
[Network.BASE]: {
|
|
18
|
-
subgraphURL:
|
|
19
|
-
'https://api.studio.thegraph.com/query/42519/maverick-base/version/latest',
|
|
20
|
-
routerAddress: '0x32AED3Bce901DA12ca8489788F3A99fCe1056e14',
|
|
21
|
-
poolInspectorAddress: '0x65A3AD03Be97619284bA7AA1E3Ca05638B9d6364',
|
|
22
|
-
},
|
|
23
17
|
},
|
|
24
18
|
};
|
|
25
19
|
|
|
@@ -28,8 +22,4 @@ export const Adapters: Record<number, AdapterMappings> = {
|
|
|
28
22
|
[SwapSide.SELL]: [{ name: 'Adapter04', index: 2 }],
|
|
29
23
|
[SwapSide.BUY]: [{ name: 'BuyAdapter', index: 8 }],
|
|
30
24
|
},
|
|
31
|
-
[Network.BASE]: {
|
|
32
|
-
[SwapSide.SELL]: [{ name: 'BaseAdapter01', index: 2 }],
|
|
33
|
-
[SwapSide.BUY]: [{ name: 'BaseBuyAdapter', index: 2 }],
|
|
34
|
-
},
|
|
35
25
|
};
|
|
@@ -11,109 +11,10 @@ import { Network, ContractMethod, SwapSide } from '../../constants';
|
|
|
11
11
|
import { StaticJsonRpcProvider } from '@ethersproject/providers';
|
|
12
12
|
import { generateConfig } from '../../config';
|
|
13
13
|
|
|
14
|
-
function testForNetwork(
|
|
15
|
-
network: Network,
|
|
16
|
-
dexKey: string,
|
|
17
|
-
tokenASymbol: string,
|
|
18
|
-
tokenBSymbol: string,
|
|
19
|
-
tokenAAmount: string,
|
|
20
|
-
tokenBAmount: string,
|
|
21
|
-
nativeTokenAmount: string,
|
|
22
|
-
slippage?: number | undefined,
|
|
23
|
-
) {
|
|
24
|
-
const provider = new StaticJsonRpcProvider(
|
|
25
|
-
generateConfig(network).privateHttpProvider,
|
|
26
|
-
network,
|
|
27
|
-
);
|
|
28
|
-
const tokens = Tokens[network];
|
|
29
|
-
const holders = Holders[network];
|
|
30
|
-
const nativeTokenSymbol = NativeTokenSymbols[network];
|
|
31
|
-
|
|
32
|
-
const sideToContractMethods = new Map([
|
|
33
|
-
[
|
|
34
|
-
SwapSide.SELL,
|
|
35
|
-
[
|
|
36
|
-
ContractMethod.simpleSwap,
|
|
37
|
-
ContractMethod.multiSwap,
|
|
38
|
-
ContractMethod.megaSwap,
|
|
39
|
-
],
|
|
40
|
-
],
|
|
41
|
-
[
|
|
42
|
-
SwapSide.BUY,
|
|
43
|
-
[
|
|
44
|
-
ContractMethod.simpleBuy,
|
|
45
|
-
ContractMethod.buy,
|
|
46
|
-
],
|
|
47
|
-
],
|
|
48
|
-
]);
|
|
49
|
-
|
|
50
|
-
describe(`${network}`, () => {
|
|
51
|
-
sideToContractMethods.forEach((contractMethods, side) =>
|
|
52
|
-
describe(`${side}`, () => {
|
|
53
|
-
contractMethods.forEach((contractMethod: ContractMethod) => {
|
|
54
|
-
describe(`${contractMethod}`, () => {
|
|
55
|
-
it(`${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
|
|
56
|
-
await testE2E(
|
|
57
|
-
tokens[nativeTokenSymbol],
|
|
58
|
-
tokens[tokenASymbol],
|
|
59
|
-
holders[nativeTokenSymbol],
|
|
60
|
-
side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
|
|
61
|
-
side,
|
|
62
|
-
dexKey,
|
|
63
|
-
contractMethod,
|
|
64
|
-
network,
|
|
65
|
-
provider,
|
|
66
|
-
undefined,
|
|
67
|
-
undefined,
|
|
68
|
-
undefined,
|
|
69
|
-
slippage,
|
|
70
|
-
);
|
|
71
|
-
});
|
|
72
|
-
it(`${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
|
|
73
|
-
await testE2E(
|
|
74
|
-
tokens[tokenASymbol],
|
|
75
|
-
tokens[nativeTokenSymbol],
|
|
76
|
-
holders[tokenASymbol],
|
|
77
|
-
side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
|
|
78
|
-
side,
|
|
79
|
-
dexKey,
|
|
80
|
-
contractMethod,
|
|
81
|
-
network,
|
|
82
|
-
provider,
|
|
83
|
-
undefined,
|
|
84
|
-
undefined,
|
|
85
|
-
undefined,
|
|
86
|
-
slippage,
|
|
87
|
-
);
|
|
88
|
-
});
|
|
89
|
-
it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
|
|
90
|
-
await testE2E(
|
|
91
|
-
tokens[tokenASymbol],
|
|
92
|
-
tokens[tokenBSymbol],
|
|
93
|
-
holders[tokenASymbol],
|
|
94
|
-
side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
|
|
95
|
-
side,
|
|
96
|
-
dexKey,
|
|
97
|
-
contractMethod,
|
|
98
|
-
network,
|
|
99
|
-
provider,
|
|
100
|
-
undefined,
|
|
101
|
-
undefined,
|
|
102
|
-
undefined,
|
|
103
|
-
slippage,
|
|
104
|
-
);
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
}),
|
|
109
|
-
);
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
|
|
113
14
|
describe('MaverickV1 E2E', () => {
|
|
114
15
|
const dexKey = 'MaverickV1';
|
|
115
16
|
|
|
116
|
-
describe('MAINNET', () => {
|
|
17
|
+
describe('MaverickV1 MAINNET', () => {
|
|
117
18
|
const network = Network.MAINNET;
|
|
118
19
|
const tokens = Tokens[network];
|
|
119
20
|
const holders = Holders[network];
|
|
@@ -220,25 +121,4 @@ describe('MaverickV1 E2E', () => {
|
|
|
220
121
|
);
|
|
221
122
|
});
|
|
222
123
|
});
|
|
223
|
-
|
|
224
|
-
describe('BASE', () => {
|
|
225
|
-
const network = Network.BASE;
|
|
226
|
-
|
|
227
|
-
const tokenASymbol: string = 'USDbC';
|
|
228
|
-
const tokenBSymbol: string = 'MAV';
|
|
229
|
-
|
|
230
|
-
const tokenAAmount: string = '1111100000';
|
|
231
|
-
const tokenBAmount: string = '1100000000000000000';
|
|
232
|
-
const nativeTokenAmount = '100000000000000000';
|
|
233
|
-
|
|
234
|
-
testForNetwork(
|
|
235
|
-
network,
|
|
236
|
-
dexKey,
|
|
237
|
-
tokenASymbol,
|
|
238
|
-
tokenBSymbol,
|
|
239
|
-
tokenAAmount,
|
|
240
|
-
tokenBAmount,
|
|
241
|
-
nativeTokenAmount,
|
|
242
|
-
);
|
|
243
|
-
});
|
|
244
124
|
});
|
|
@@ -78,7 +78,6 @@ export class MaverickV1
|
|
|
78
78
|
|
|
79
79
|
async setupEventPools(blockNumber: number) {
|
|
80
80
|
const pools = await this.fetchAllSubgraphPools();
|
|
81
|
-
|
|
82
81
|
await Promise.all(
|
|
83
82
|
pools.map(async (pool: any) => {
|
|
84
83
|
const eventPool = new MaverickV1EventPool(
|
|
@@ -182,17 +181,8 @@ export class MaverickV1
|
|
|
182
181
|
getCalldataGasCost(
|
|
183
182
|
poolPrices: PoolPrices<MaverickV1Data>,
|
|
184
183
|
): number | number[] {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
const arr = new Array(poolPrices.prices.length);
|
|
188
|
-
poolPrices.prices.forEach((p, index) => {
|
|
189
|
-
if (p == 0n) {
|
|
190
|
-
arr[index] = 0;
|
|
191
|
-
} else {
|
|
192
|
-
arr[index] = gasCost;
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
|
-
return arr;
|
|
184
|
+
// TODO: update if there is any payload in getAdapterParam
|
|
185
|
+
return CALLDATA_GAS_COST.DEX_NO_PAYLOAD;
|
|
196
186
|
}
|
|
197
187
|
|
|
198
188
|
// Returns pool prices for amounts.
|
|
@@ -53,21 +53,6 @@ export const PancakeswapV3Config: DexConfigMap<DexParams> = {
|
|
|
53
53
|
subgraphURL:
|
|
54
54
|
'https://api.studio.thegraph.com/query/45376/exchange-v3-arbitrum/version/latest',
|
|
55
55
|
},
|
|
56
|
-
[Network.BASE]: {
|
|
57
|
-
factory: '0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865',
|
|
58
|
-
deployer: '0x41ff9AA7e16B8B1a8a8dc4f0eFacd93D02d071c9',
|
|
59
|
-
quoter: '0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997',
|
|
60
|
-
router: '0x1b81D678ffb9C0263b24A97847620C99d213eB14',
|
|
61
|
-
supportedFees: PANCAKE_SUPPORTED_FEES,
|
|
62
|
-
stateMulticall: '0xeBF40A40CA3D4310Bf53048F48e860656e1D7C81',
|
|
63
|
-
uniswapMulticall: '0x091e99cb1C49331a94dD62755D168E941AbD0693',
|
|
64
|
-
chunksCount: 10,
|
|
65
|
-
initRetryFrequency: 30,
|
|
66
|
-
initHash:
|
|
67
|
-
'0x6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e2',
|
|
68
|
-
subgraphURL:
|
|
69
|
-
'https://api.studio.thegraph.com/query/45376/exchange-v3-base/version/latest',
|
|
70
|
-
},
|
|
71
56
|
},
|
|
72
57
|
};
|
|
73
58
|
|
|
@@ -84,8 +69,4 @@ export const Adapters: Record<number, AdapterMappings> = {
|
|
|
84
69
|
[SwapSide.SELL]: [{ name: 'ArbitrumAdapter01', index: 3 }],
|
|
85
70
|
[SwapSide.BUY]: [{ name: 'ArbitrumBuyAdapter', index: 2 }],
|
|
86
71
|
},
|
|
87
|
-
[Network.BASE]: {
|
|
88
|
-
[SwapSide.SELL]: [{ name: 'BaseAdapter01', index: 1 }],
|
|
89
|
-
[SwapSide.BUY]: [{ name: 'BaseBuyAdapter', index: 1 }],
|
|
90
|
-
},
|
|
91
72
|
};
|
|
@@ -11,105 +11,6 @@ import { Network, ContractMethod, SwapSide } from '../../constants';
|
|
|
11
11
|
import { StaticJsonRpcProvider } from '@ethersproject/providers';
|
|
12
12
|
import { generateConfig } from '../../config';
|
|
13
13
|
|
|
14
|
-
function testForNetwork(
|
|
15
|
-
network: Network,
|
|
16
|
-
dexKey: string,
|
|
17
|
-
tokenASymbol: string,
|
|
18
|
-
tokenBSymbol: string,
|
|
19
|
-
tokenAAmount: string,
|
|
20
|
-
tokenBAmount: string,
|
|
21
|
-
nativeTokenAmount: string,
|
|
22
|
-
slippage?: number | undefined,
|
|
23
|
-
) {
|
|
24
|
-
const provider = new StaticJsonRpcProvider(
|
|
25
|
-
generateConfig(network).privateHttpProvider,
|
|
26
|
-
network,
|
|
27
|
-
);
|
|
28
|
-
const tokens = Tokens[network];
|
|
29
|
-
const holders = Holders[network];
|
|
30
|
-
const nativeTokenSymbol = NativeTokenSymbols[network];
|
|
31
|
-
|
|
32
|
-
const sideToContractMethods = new Map([
|
|
33
|
-
[
|
|
34
|
-
SwapSide.SELL,
|
|
35
|
-
[
|
|
36
|
-
ContractMethod.simpleSwap,
|
|
37
|
-
ContractMethod.multiSwap,
|
|
38
|
-
ContractMethod.megaSwap,
|
|
39
|
-
],
|
|
40
|
-
],
|
|
41
|
-
[
|
|
42
|
-
SwapSide.BUY,
|
|
43
|
-
[
|
|
44
|
-
ContractMethod.simpleBuy,
|
|
45
|
-
ContractMethod.buy,
|
|
46
|
-
],
|
|
47
|
-
],
|
|
48
|
-
]);
|
|
49
|
-
|
|
50
|
-
describe(`${network}`, () => {
|
|
51
|
-
sideToContractMethods.forEach((contractMethods, side) =>
|
|
52
|
-
describe(`${side}`, () => {
|
|
53
|
-
contractMethods.forEach((contractMethod: ContractMethod) => {
|
|
54
|
-
describe(`${contractMethod}`, () => {
|
|
55
|
-
it(`${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
|
|
56
|
-
await testE2E(
|
|
57
|
-
tokens[nativeTokenSymbol],
|
|
58
|
-
tokens[tokenASymbol],
|
|
59
|
-
holders[nativeTokenSymbol],
|
|
60
|
-
side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
|
|
61
|
-
side,
|
|
62
|
-
dexKey,
|
|
63
|
-
contractMethod,
|
|
64
|
-
network,
|
|
65
|
-
provider,
|
|
66
|
-
undefined,
|
|
67
|
-
undefined,
|
|
68
|
-
undefined,
|
|
69
|
-
slippage,
|
|
70
|
-
);
|
|
71
|
-
});
|
|
72
|
-
it(`${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
|
|
73
|
-
await testE2E(
|
|
74
|
-
tokens[tokenASymbol],
|
|
75
|
-
tokens[nativeTokenSymbol],
|
|
76
|
-
holders[tokenASymbol],
|
|
77
|
-
side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
|
|
78
|
-
side,
|
|
79
|
-
dexKey,
|
|
80
|
-
contractMethod,
|
|
81
|
-
network,
|
|
82
|
-
provider,
|
|
83
|
-
undefined,
|
|
84
|
-
undefined,
|
|
85
|
-
undefined,
|
|
86
|
-
slippage,
|
|
87
|
-
);
|
|
88
|
-
});
|
|
89
|
-
it(`${tokenASymbol} -> ${tokenBSymbol}`, async () => {
|
|
90
|
-
await testE2E(
|
|
91
|
-
tokens[tokenASymbol],
|
|
92
|
-
tokens[tokenBSymbol],
|
|
93
|
-
holders[tokenASymbol],
|
|
94
|
-
side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
|
|
95
|
-
side,
|
|
96
|
-
dexKey,
|
|
97
|
-
contractMethod,
|
|
98
|
-
network,
|
|
99
|
-
provider,
|
|
100
|
-
undefined,
|
|
101
|
-
undefined,
|
|
102
|
-
undefined,
|
|
103
|
-
slippage,
|
|
104
|
-
);
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
}),
|
|
109
|
-
);
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
|
|
113
14
|
describe('PancakeswapV3 E2E', () => {
|
|
114
15
|
const dexKey = 'PancakeswapV3';
|
|
115
16
|
|
|
@@ -406,25 +307,4 @@ describe('PancakeswapV3 E2E', () => {
|
|
|
406
307
|
}),
|
|
407
308
|
);
|
|
408
309
|
});
|
|
409
|
-
|
|
410
|
-
describe('PancakeswapV3 Base', () => {
|
|
411
|
-
const network = Network.BASE;
|
|
412
|
-
|
|
413
|
-
const tokenASymbol: string = 'USDbC';
|
|
414
|
-
const tokenBSymbol: string = 'DAI';
|
|
415
|
-
|
|
416
|
-
const tokenAAmount: string = '11111000000';
|
|
417
|
-
const tokenBAmount: string = '210000000000000000';
|
|
418
|
-
const nativeTokenAmount = '110000000000000000000';
|
|
419
|
-
|
|
420
|
-
testForNetwork(
|
|
421
|
-
network,
|
|
422
|
-
dexKey,
|
|
423
|
-
tokenASymbol,
|
|
424
|
-
tokenBSymbol,
|
|
425
|
-
tokenAAmount,
|
|
426
|
-
tokenBAmount,
|
|
427
|
-
nativeTokenAmount,
|
|
428
|
-
);
|
|
429
|
-
});
|
|
430
310
|
});
|
|
@@ -608,20 +608,25 @@ export class PancakeswapV3
|
|
|
608
608
|
const balanceDestToken =
|
|
609
609
|
_destAddress === pool.token0 ? state.balance0 : state.balance1;
|
|
610
610
|
|
|
611
|
-
const unitResult = this.
|
|
611
|
+
const unitResult = await this.dexHelper.executeOnWorkerPool<
|
|
612
|
+
ReturnType<typeof this.getOutputs>
|
|
613
|
+
>(this.dexKey, 'getOutputs', [
|
|
612
614
|
state,
|
|
613
615
|
[unitAmount],
|
|
614
616
|
zeroForOne,
|
|
615
617
|
side,
|
|
616
618
|
balanceDestToken,
|
|
617
|
-
);
|
|
618
|
-
|
|
619
|
+
]);
|
|
620
|
+
|
|
621
|
+
const pricesResult = await this.dexHelper.executeOnWorkerPool<
|
|
622
|
+
ReturnType<typeof this.getOutputs>
|
|
623
|
+
>(this.dexKey, 'getOutputs', [
|
|
619
624
|
state,
|
|
620
625
|
_amounts,
|
|
621
626
|
zeroForOne,
|
|
622
627
|
side,
|
|
623
628
|
balanceDestToken,
|
|
624
|
-
);
|
|
629
|
+
]);
|
|
625
630
|
|
|
626
631
|
if (!pricesResult) {
|
|
627
632
|
this.logger.debug('Prices or unit is not calculated');
|
|
@@ -911,7 +916,7 @@ export class PancakeswapV3
|
|
|
911
916
|
return newConfig;
|
|
912
917
|
}
|
|
913
918
|
|
|
914
|
-
|
|
919
|
+
getOutputs(
|
|
915
920
|
state: DeepReadonly<PoolState>,
|
|
916
921
|
amounts: bigint[],
|
|
917
922
|
zeroForOne: boolean,
|
|
@@ -83,17 +83,6 @@ export const SolidlyConfig: DexConfigMap<DexParams> = {
|
|
|
83
83
|
feeCode: 0,
|
|
84
84
|
},
|
|
85
85
|
},
|
|
86
|
-
Aerodrome: {
|
|
87
|
-
[Network.BASE]: {
|
|
88
|
-
// There is no subgraph for Aerodrome
|
|
89
|
-
factoryAddress: '0x420DD381b31aEf6683db6B902084cB0FFECe40Da',
|
|
90
|
-
router: '0xDCf4EE5B700e2a5Fec458e06B763A4a3E3004494',
|
|
91
|
-
initCode:
|
|
92
|
-
'0x1a8f01f7eab324003d9388f229ea17991eee9c9d14586f429799f3656790eba0',
|
|
93
|
-
poolGasCost: 180 * 1000,
|
|
94
|
-
feeCode: 0,
|
|
95
|
-
},
|
|
96
|
-
},
|
|
97
86
|
Cone: {
|
|
98
87
|
[Network.BSC]: {
|
|
99
88
|
subgraphURL: 'https://api.thegraph.com/subgraphs/name/cone-exchange/cone',
|
|
@@ -168,15 +157,6 @@ export const SolidlyConfig: DexConfigMap<DexParams> = {
|
|
|
168
157
|
feeCode: 0,
|
|
169
158
|
poolGasCost: 180 * 1000,
|
|
170
159
|
},
|
|
171
|
-
[Network.BASE]: {
|
|
172
|
-
factoryAddress: '0xed8db60acc29e14bc867a497d94ca6e3ceb5ec04',
|
|
173
|
-
router: '0xDCf4EE5B700e2a5Fec458e06B763A4a3E3004494',
|
|
174
|
-
initCode:
|
|
175
|
-
'0x7ba31a081e879b8e7f06d4e8bf5ee26b5c2680669c5701f4cdbdcde51727b275',
|
|
176
|
-
feeCode: 0,
|
|
177
|
-
feeFactor: 1e18,
|
|
178
|
-
poolGasCost: 180 * 1000,
|
|
179
|
-
},
|
|
180
160
|
},
|
|
181
161
|
};
|
|
182
162
|
|
|
@@ -185,7 +165,7 @@ export const Adapters: Record<number, AdapterMappings> = {
|
|
|
185
165
|
[SwapSide.SELL]: [{ name: 'PolygonAdapter02', index: 3 }], // dystopia
|
|
186
166
|
},
|
|
187
167
|
[Network.FANTOM]: {
|
|
188
|
-
[SwapSide.SELL]: [{ name: 'FantomAdapter01', index: 10 }], // solidly
|
|
168
|
+
[SwapSide.SELL]: [{ name: 'FantomAdapter01', index: 10 }], // solidly + spiritSwapV2 + Equalizer
|
|
189
169
|
},
|
|
190
170
|
[Network.OPTIMISM]: {
|
|
191
171
|
[SwapSide.SELL]: [{ name: 'OptimismAdapter01', index: 8 }], // velodrome
|
|
@@ -202,7 +182,4 @@ export const Adapters: Record<number, AdapterMappings> = {
|
|
|
202
182
|
[Network.ARBITRUM]: {
|
|
203
183
|
[SwapSide.SELL]: [{ name: 'ArbitrumAdapter02', index: 1 }], // chronos, ramses
|
|
204
184
|
},
|
|
205
|
-
[Network.BASE]: {
|
|
206
|
-
[SwapSide.SELL]: [{ name: 'BaseAdapter01', index: 3 }], // aerodrome, equalizer
|
|
207
|
-
}
|
|
208
185
|
};
|
|
@@ -1404,92 +1404,4 @@ describe('Solidly E2E', () => {
|
|
|
1404
1404
|
);
|
|
1405
1405
|
});
|
|
1406
1406
|
});
|
|
1407
|
-
|
|
1408
|
-
describe('Base', () => {
|
|
1409
|
-
const network = Network.BASE;
|
|
1410
|
-
|
|
1411
|
-
describe('Aerodrome', () => {
|
|
1412
|
-
const dexKey = 'Aerodrome';
|
|
1413
|
-
const tokenASymbol: string = 'USDbC';
|
|
1414
|
-
const tokenBSymbol: string = 'DAI';
|
|
1415
|
-
|
|
1416
|
-
const tokenAAmount: string = '1111100000';
|
|
1417
|
-
const tokenBAmount: string = '100000000000000000';
|
|
1418
|
-
const nativeTokenAmount = '100000000000000000';
|
|
1419
|
-
|
|
1420
|
-
testForNetwork(
|
|
1421
|
-
network,
|
|
1422
|
-
dexKey,
|
|
1423
|
-
tokenASymbol,
|
|
1424
|
-
tokenBSymbol,
|
|
1425
|
-
tokenAAmount,
|
|
1426
|
-
tokenBAmount,
|
|
1427
|
-
nativeTokenAmount,
|
|
1428
|
-
);
|
|
1429
|
-
});
|
|
1430
|
-
|
|
1431
|
-
describe('Equalizer', () => {
|
|
1432
|
-
const dexKey = 'Equalizer';
|
|
1433
|
-
const network = Network.BASE;
|
|
1434
|
-
|
|
1435
|
-
const tokenASymbol: string = 'USDbC';
|
|
1436
|
-
const tokenAAmount: string = '1111100000';
|
|
1437
|
-
const nativeTokenAmount = '110000000000000000';
|
|
1438
|
-
|
|
1439
|
-
const provider = new StaticJsonRpcProvider(
|
|
1440
|
-
generateConfig(network).privateHttpProvider,
|
|
1441
|
-
network,
|
|
1442
|
-
);
|
|
1443
|
-
const tokens = Tokens[network];
|
|
1444
|
-
const holders = Holders[network];
|
|
1445
|
-
const nativeTokenSymbol = NativeTokenSymbols[network];
|
|
1446
|
-
|
|
1447
|
-
// TODO: Add any direct swap contractMethod name if it exists
|
|
1448
|
-
const sideToContractMethods = new Map([
|
|
1449
|
-
[
|
|
1450
|
-
SwapSide.SELL,
|
|
1451
|
-
[
|
|
1452
|
-
ContractMethod.simpleSwap,
|
|
1453
|
-
ContractMethod.multiSwap,
|
|
1454
|
-
ContractMethod.megaSwap,
|
|
1455
|
-
],
|
|
1456
|
-
],
|
|
1457
|
-
]);
|
|
1458
|
-
|
|
1459
|
-
sideToContractMethods.forEach((contractMethods, side) =>
|
|
1460
|
-
describe(`${side}`, () => {
|
|
1461
|
-
contractMethods.forEach((contractMethod: ContractMethod) => {
|
|
1462
|
-
describe(`${contractMethod}`, () => {
|
|
1463
|
-
it(`${nativeTokenSymbol} -> ${tokenASymbol}`, async () => {
|
|
1464
|
-
await testE2E(
|
|
1465
|
-
tokens[nativeTokenSymbol],
|
|
1466
|
-
tokens[tokenASymbol],
|
|
1467
|
-
holders[nativeTokenSymbol],
|
|
1468
|
-
side === SwapSide.SELL ? nativeTokenAmount : tokenAAmount,
|
|
1469
|
-
side,
|
|
1470
|
-
dexKey,
|
|
1471
|
-
contractMethod,
|
|
1472
|
-
network,
|
|
1473
|
-
provider,
|
|
1474
|
-
);
|
|
1475
|
-
});
|
|
1476
|
-
it(`${tokenASymbol} -> ${nativeTokenSymbol}`, async () => {
|
|
1477
|
-
await testE2E(
|
|
1478
|
-
tokens[tokenASymbol],
|
|
1479
|
-
tokens[nativeTokenSymbol],
|
|
1480
|
-
holders[tokenASymbol],
|
|
1481
|
-
side === SwapSide.SELL ? tokenAAmount : nativeTokenAmount,
|
|
1482
|
-
side,
|
|
1483
|
-
dexKey,
|
|
1484
|
-
contractMethod,
|
|
1485
|
-
network,
|
|
1486
|
-
provider,
|
|
1487
|
-
);
|
|
1488
|
-
});
|
|
1489
|
-
});
|
|
1490
|
-
});
|
|
1491
|
-
}),
|
|
1492
|
-
);
|
|
1493
|
-
});
|
|
1494
|
-
});
|
|
1495
1407
|
});
|
|
@@ -1202,70 +1202,4 @@ describe('Solidly integration tests', () => {
|
|
|
1202
1202
|
});
|
|
1203
1203
|
});
|
|
1204
1204
|
});
|
|
1205
|
-
|
|
1206
|
-
describe('Base', () => {
|
|
1207
|
-
const network = Network.BASE;
|
|
1208
|
-
const dexHelper = new DummyDexHelper(network);
|
|
1209
|
-
const checkOnChainPricing = constructCheckOnChainPricing(dexHelper);
|
|
1210
|
-
|
|
1211
|
-
describe('Equalizer', () => {
|
|
1212
|
-
const dexKey = 'Equalizer';
|
|
1213
|
-
const equalizer = new Equalizer(network, dexKey, dexHelper);
|
|
1214
|
-
|
|
1215
|
-
describe('UniswapV2 like pool', function () {
|
|
1216
|
-
const TokenASymbol = 'USDbC';
|
|
1217
|
-
const tokenA = Tokens[network][TokenASymbol];
|
|
1218
|
-
const TokenBSymbol = 'ETH';
|
|
1219
|
-
const tokenB = Tokens[network][TokenBSymbol];
|
|
1220
|
-
|
|
1221
|
-
const amounts = amounts18;
|
|
1222
|
-
|
|
1223
|
-
it('getPoolIdentifiers and getPricesVolume', async function () {
|
|
1224
|
-
const blocknumber = await dexHelper.web3Provider.eth.getBlockNumber();
|
|
1225
|
-
const pools = await equalizer.getPoolIdentifiers(
|
|
1226
|
-
tokenA,
|
|
1227
|
-
tokenB,
|
|
1228
|
-
SwapSide.SELL,
|
|
1229
|
-
blocknumber,
|
|
1230
|
-
);
|
|
1231
|
-
console.log(
|
|
1232
|
-
`${TokenASymbol} <> ${TokenBSymbol} Pool Identifiers: `,
|
|
1233
|
-
pools,
|
|
1234
|
-
);
|
|
1235
|
-
|
|
1236
|
-
expect(pools.length).toBeGreaterThan(0);
|
|
1237
|
-
|
|
1238
|
-
const poolPrices = await equalizer.getPricesVolume(
|
|
1239
|
-
tokenA,
|
|
1240
|
-
tokenB,
|
|
1241
|
-
amounts,
|
|
1242
|
-
SwapSide.SELL,
|
|
1243
|
-
blocknumber,
|
|
1244
|
-
pools,
|
|
1245
|
-
);
|
|
1246
|
-
console.log(
|
|
1247
|
-
`${TokenASymbol} <> ${TokenBSymbol} Pool Prices: `,
|
|
1248
|
-
poolPrices,
|
|
1249
|
-
);
|
|
1250
|
-
|
|
1251
|
-
expect(poolPrices).not.toBeNull();
|
|
1252
|
-
checkPoolPrices(poolPrices!, amounts, SwapSide.SELL, dexKey);
|
|
1253
|
-
|
|
1254
|
-
// Check if onchain pricing equals to calculated ones
|
|
1255
|
-
|
|
1256
|
-
for (const poolPrice of poolPrices || []) {
|
|
1257
|
-
await checkOnChainPricing(
|
|
1258
|
-
equalizer,
|
|
1259
|
-
'getAmountOut',
|
|
1260
|
-
blocknumber,
|
|
1261
|
-
poolPrice.prices,
|
|
1262
|
-
poolPrice.poolAddresses![0],
|
|
1263
|
-
tokenA.address,
|
|
1264
|
-
amounts,
|
|
1265
|
-
);
|
|
1266
|
-
}
|
|
1267
|
-
});
|
|
1268
|
-
});
|
|
1269
|
-
});
|
|
1270
|
-
});
|
|
1271
1205
|
});
|
|
@@ -210,19 +210,6 @@ export const UniswapV3Config: DexConfigMap<DexParams> = {
|
|
|
210
210
|
subgraphURL:
|
|
211
211
|
'https://api.thegraph.com/subgraphs/name/sushi-v3/v3-optimism',
|
|
212
212
|
},
|
|
213
|
-
[Network.BASE]: {
|
|
214
|
-
factory: '0xc35DADB65012eC5796536bD9864eD8773aBc74C4',
|
|
215
|
-
quoter: '0xb1E835Dc2785b52265711e17fCCb0fd018226a6e',
|
|
216
|
-
router: '0xCc0e85901f33D375FcdD9a888B05Df9616F68277',
|
|
217
|
-
supportedFees: SUPPORTED_FEES,
|
|
218
|
-
stateMulticall: '0x7160f736c52e1e78e92FD4eE4D73e21A7Cf4F950',
|
|
219
|
-
uniswapMulticall: '0x091e99cb1C49331a94dD62755D168E941AbD0693',
|
|
220
|
-
chunksCount: 10,
|
|
221
|
-
initRetryFrequency: 10,
|
|
222
|
-
initHash: `0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54`,
|
|
223
|
-
subgraphURL:
|
|
224
|
-
'https://api.studio.thegraph.com/query/32073/v3-base/v0.0.1',
|
|
225
|
-
},
|
|
226
213
|
},
|
|
227
214
|
ChronosV3: {
|
|
228
215
|
[Network.ARBITRUM]: {
|
|
@@ -424,16 +424,16 @@ describe('UniswapV3 E2E', () => {
|
|
|
424
424
|
[
|
|
425
425
|
SwapSide.SELL,
|
|
426
426
|
[
|
|
427
|
-
ContractMethod.simpleSwap,
|
|
427
|
+
// ContractMethod.simpleSwap,
|
|
428
428
|
ContractMethod.multiSwap,
|
|
429
|
-
ContractMethod.megaSwap,
|
|
429
|
+
// ContractMethod.megaSwap,
|
|
430
430
|
],
|
|
431
431
|
],
|
|
432
432
|
[
|
|
433
433
|
SwapSide.BUY,
|
|
434
434
|
[
|
|
435
|
-
ContractMethod.simpleBuy,
|
|
436
|
-
ContractMethod.buy
|
|
435
|
+
// ContractMethod.simpleBuy,
|
|
436
|
+
// ContractMethod.buy
|
|
437
437
|
],
|
|
438
438
|
],
|
|
439
439
|
]);
|
|
@@ -1094,26 +1094,5 @@ describe('UniswapV3 E2E', () => {
|
|
|
1094
1094
|
nativeTokenAmount,
|
|
1095
1095
|
);
|
|
1096
1096
|
});
|
|
1097
|
-
|
|
1098
|
-
describe('BASE', () => {
|
|
1099
|
-
const network = Network.BASE;
|
|
1100
|
-
|
|
1101
|
-
const tokenASymbol: string = 'USDbC';
|
|
1102
|
-
const tokenBSymbol: string = 'DAI';
|
|
1103
|
-
|
|
1104
|
-
const tokenAAmount: string = '111110000';
|
|
1105
|
-
const tokenBAmount: string = '110000000000000000';
|
|
1106
|
-
const nativeTokenAmount = '1100000000000000000';
|
|
1107
|
-
|
|
1108
|
-
testForNetwork(
|
|
1109
|
-
network,
|
|
1110
|
-
dexKey,
|
|
1111
|
-
tokenASymbol,
|
|
1112
|
-
tokenBSymbol,
|
|
1113
|
-
tokenAAmount,
|
|
1114
|
-
tokenBAmount,
|
|
1115
|
-
nativeTokenAmount,
|
|
1116
|
-
);
|
|
1117
|
-
});
|
|
1118
1097
|
});
|
|
1119
1098
|
});
|