@paraswap/dex-lib 2.50.8 → 2.50.9
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/Redstone.json +739 -0
- package/build/abi/angle/stagToken.json +963 -0
- package/build/abi/angle-transmuter/MorphoOracle.json +193 -0
- package/build/abi/angle-transmuter/MorphoVault.json +2506 -0
- package/build/abi/angle-transmuter/Pyth.json +1534 -0
- package/build/abi/angle-transmuter/Transmuter.json +1711 -0
- package/build/abi/pharaoh/PharaohPool.abi.json +1582 -0
- package/build/abi/smardex/smardex-factory.json +185 -0
- package/build/abi/smardex/smardex-pool.json +578 -0
- package/build/abi/smardex/smardex-router.json +648 -0
- package/build/abi/trader-joe-v2_1/FactoryABI.json +1208 -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/trader-joe-v2_1/StateMulticall.json +193 -0
- package/build/abi/wombat/pool.json +1289 -0
- package/build/config.js +8 -7
- package/build/config.js.map +1 -1
- package/build/dex/aave-v2/tokens-avalanche.json +44 -0
- package/build/dex/aave-v2/tokens-mainnet.json +188 -0
- package/build/dex/aave-v2/tokens-polygon.json +44 -0
- package/build/dex/angle-staked-stable/angle-staked-stable-pool.d.ts +56 -0
- package/build/dex/angle-staked-stable/angle-staked-stable-pool.js +197 -0
- package/build/dex/angle-staked-stable/angle-staked-stable-pool.js.map +1 -0
- package/build/dex/angle-staked-stable/angle-staked-stable.d.ts +48 -0
- package/build/dex/angle-staked-stable/angle-staked-stable.js +222 -0
- package/build/dex/angle-staked-stable/angle-staked-stable.js.map +1 -0
- package/build/dex/angle-staked-stable/config.d.ts +4 -0
- package/build/dex/angle-staked-stable/config.js +139 -0
- package/build/dex/angle-staked-stable/config.js.map +1 -0
- package/build/dex/angle-staked-stable/types.d.ts +15 -0
- package/build/dex/angle-staked-stable/types.js +3 -0
- package/build/dex/angle-staked-stable/types.js.map +1 -0
- package/build/dex/angle-transmuter/angle-transmuter-pool.d.ts +61 -0
- package/build/dex/angle-transmuter/angle-transmuter-pool.js +415 -0
- package/build/dex/angle-transmuter/angle-transmuter-pool.js.map +1 -0
- package/build/dex/angle-transmuter/angle-transmuter.d.ts +59 -0
- package/build/dex/angle-transmuter/angle-transmuter.js +262 -0
- package/build/dex/angle-transmuter/angle-transmuter.js.map +1 -0
- package/build/dex/angle-transmuter/backedOracle.d.ts +19 -0
- package/build/dex/angle-transmuter/backedOracle.js +56 -0
- package/build/dex/angle-transmuter/backedOracle.js.map +1 -0
- package/build/dex/angle-transmuter/config.d.ts +4 -0
- package/build/dex/angle-transmuter/config.js +30 -0
- package/build/dex/angle-transmuter/config.js.map +1 -0
- package/build/dex/angle-transmuter/constants.d.ts +77 -0
- package/build/dex/angle-transmuter/constants.js +94 -0
- package/build/dex/angle-transmuter/constants.js.map +1 -0
- package/build/dex/angle-transmuter/morphoOracle.d.ts +42 -0
- package/build/dex/angle-transmuter/morphoOracle.js +179 -0
- package/build/dex/angle-transmuter/morphoOracle.js.map +1 -0
- package/build/dex/angle-transmuter/morphoVault.d.ts +19 -0
- package/build/dex/angle-transmuter/morphoVault.js +78 -0
- package/build/dex/angle-transmuter/morphoVault.js.map +1 -0
- package/build/dex/angle-transmuter/pyth.d.ts +19 -0
- package/build/dex/angle-transmuter/pyth.js +70 -0
- package/build/dex/angle-transmuter/pyth.js.map +1 -0
- package/build/dex/angle-transmuter/redstone.d.ts +20 -0
- package/build/dex/angle-transmuter/redstone.js +73 -0
- package/build/dex/angle-transmuter/redstone.js.map +1 -0
- package/build/dex/angle-transmuter/transmuter.d.ts +52 -0
- package/build/dex/angle-transmuter/transmuter.js +374 -0
- package/build/dex/angle-transmuter/transmuter.js.map +1 -0
- package/build/dex/angle-transmuter/types.d.ts +188 -0
- package/build/dex/angle-transmuter/types.js +33 -0
- package/build/dex/angle-transmuter/types.js.map +1 -0
- package/build/dex/angle-transmuter/utils.d.ts +9 -0
- package/build/dex/angle-transmuter/utils.js +252 -0
- package/build/dex/angle-transmuter/utils.js.map +1 -0
- package/build/dex/index.js +2 -0
- package/build/dex/index.js.map +1 -1
- package/build/dex/smardex/subgraph-queries.d.ts +1 -0
- package/build/dex/smardex/subgraph-queries.js +17 -0
- package/build/dex/smardex/subgraph-queries.js.map +1 -0
- package/build/dex/smardex/usd-reserves.d.ts +23 -0
- package/build/dex/smardex/usd-reserves.js +86 -0
- package/build/dex/smardex/usd-reserves.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 +47 -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 +20 -0
- package/build/dex/trader-joe-v2-1-2/constants.js +22 -0
- package/build/dex/trader-joe-v2-1-2/constants.js.map +1 -0
- package/build/dex/trader-joe-v2-1-2/math/index.d.ts +37 -0
- package/build/dex/trader-joe-v2-1-2/math/index.js +291 -0
- package/build/dex/trader-joe-v2-1-2/math/index.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 +248 -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 +53 -0
- package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js +307 -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 +82 -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 +47 -0
- package/build/dex/trader-joe-v2_1/config.js.map +1 -0
- package/build/dex/trader-joe-v2_1/constants.d.ts +20 -0
- package/build/dex/trader-joe-v2_1/constants.js +22 -0
- package/build/dex/trader-joe-v2_1/constants.js.map +1 -0
- package/build/dex/trader-joe-v2_1/math/index.d.ts +37 -0
- package/build/dex/trader-joe-v2_1/math/index.js +291 -0
- package/build/dex/trader-joe-v2_1/math/index.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/trader-joe-v2_1-pool.d.ts +60 -0
- package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js +247 -0
- package/build/dex/trader-joe-v2_1/trader-joe-v2_1-pool.js.map +1 -0
- package/build/dex/trader-joe-v2_1/trader-joe-v2_1.d.ts +53 -0
- package/build/dex/trader-joe-v2_1/trader-joe-v2_1.js +307 -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 +82 -0
- package/build/dex/trader-joe-v2_1/types.js +9 -0
- package/build/dex/trader-joe-v2_1/types.js.map +1 -0
- 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-helper/Cache.d.ts +31 -0
- package/build/dex-helper/Cache.js +106 -0
- package/build/dex-helper/Cache.js.map +1 -0
- package/build/dex-helper/RedisBatcher.d.ts +20 -0
- package/build/dex-helper/RedisBatcher.js +75 -0
- package/build/dex-helper/RedisBatcher.js.map +1 -0
- package/build/dex-helper/RedisWrapper.d.ts +37 -0
- package/build/dex-helper/RedisWrapper.js +165 -0
- package/build/dex-helper/RedisWrapper.js.map +1 -0
- package/package.json +1 -1
- package/src/abi/angle/stagToken.json +963 -0
- package/src/config.ts +8 -7
- package/src/dex/angle-staked-stable/angle-staked-stable-e2e.test.ts +146 -0
- package/src/dex/angle-staked-stable/angle-staked-stable-events.test.ts +95 -0
- package/src/dex/angle-staked-stable/angle-staked-stable-integration.test.ts +476 -0
- package/src/dex/angle-staked-stable/angle-staked-stable-pool.ts +325 -0
- package/src/dex/angle-staked-stable/angle-staked-stable.ts +312 -0
- package/src/dex/angle-staked-stable/config.ts +139 -0
- package/src/dex/angle-staked-stable/types.ts +16 -0
- package/src/dex/index.ts +2 -0
- package/tests/constants-e2e.ts +112 -1
- package/build/dex/sdai/config.d.ts +0 -11
- package/build/dex/sdai/config.js +0 -21
- package/build/dex/sdai/config.js.map +0 -1
- package/build/dex/sdai/constants.d.ts +0 -2
- package/build/dex/sdai/constants.js +0 -6
- package/build/dex/sdai/constants.js.map +0 -1
- package/build/dex/sdai/scripts/validate-state.d.ts +0 -1
- package/build/dex/sdai/scripts/validate-state.js +0 -102
- package/build/dex/sdai/scripts/validate-state.js.map +0 -1
- package/build/dex/sdai/sdai-pool.d.ts +0 -16
- package/build/dex/sdai/sdai-pool.js +0 -85
- package/build/dex/sdai/sdai-pool.js.map +0 -1
- package/build/dex/sdai/sdai.d.ts +0 -51
- package/build/dex/sdai/sdai.js +0 -172
- package/build/dex/sdai/sdai.js.map +0 -1
- package/build/dex/sdai/types.d.ts +0 -21
- package/build/dex/sdai/types.js +0 -11
- package/build/dex/sdai/types.js.map +0 -1
- package/build/dex/sdai/utils.d.ts +0 -4
- package/build/dex/sdai/utils.js +0 -39
- package/build/dex/sdai/utils.js.map +0 -1
|
@@ -0,0 +1,476 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import dotenv from 'dotenv';
|
|
3
|
+
dotenv.config();
|
|
4
|
+
|
|
5
|
+
import { Interface, Result } from '@ethersproject/abi';
|
|
6
|
+
import { DummyDexHelper } from '../../dex-helper/index';
|
|
7
|
+
import { Network, SwapSide } from '../../constants';
|
|
8
|
+
import { BI_POWS } from '../../bigint-constants';
|
|
9
|
+
import { AngleStakedStable } from './angle-staked-stable';
|
|
10
|
+
import {
|
|
11
|
+
checkPoolPrices,
|
|
12
|
+
checkPoolsLiquidity,
|
|
13
|
+
checkConstantPoolPrices,
|
|
14
|
+
} from '../../../tests/utils';
|
|
15
|
+
import { Tokens } from '../../../tests/constants-e2e';
|
|
16
|
+
import { AngleStakedStableEventPool } from './angle-staked-stable-pool';
|
|
17
|
+
|
|
18
|
+
function getReaderCalldata(
|
|
19
|
+
exchangeAddress: string,
|
|
20
|
+
readerIface: Interface,
|
|
21
|
+
amounts: bigint[],
|
|
22
|
+
funcName: string,
|
|
23
|
+
) {
|
|
24
|
+
return amounts.map(amount => ({
|
|
25
|
+
target: exchangeAddress,
|
|
26
|
+
callData: readerIface.encodeFunctionData(funcName, [amount]),
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function decodeReaderResult(
|
|
31
|
+
results: Result,
|
|
32
|
+
readerIface: Interface,
|
|
33
|
+
funcName: string,
|
|
34
|
+
) {
|
|
35
|
+
return results.map(result => {
|
|
36
|
+
const parsed = readerIface.decodeFunctionResult(funcName, result);
|
|
37
|
+
return BigInt(parsed[0]._hex);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
async function checkOnChainPricing(
|
|
42
|
+
angleStakedStable: AngleStakedStable,
|
|
43
|
+
funcName: string,
|
|
44
|
+
blockNumber: number,
|
|
45
|
+
exchangeAddress: string,
|
|
46
|
+
prices: bigint[],
|
|
47
|
+
amounts: bigint[],
|
|
48
|
+
) {
|
|
49
|
+
// Normally you can get it from angleStakedStable.Iface or from eventPool.
|
|
50
|
+
// It depends on your implementation
|
|
51
|
+
const readerIface = AngleStakedStableEventPool.angleStakedStableIface;
|
|
52
|
+
|
|
53
|
+
const readerCallData = getReaderCalldata(
|
|
54
|
+
exchangeAddress,
|
|
55
|
+
readerIface,
|
|
56
|
+
amounts.slice(1),
|
|
57
|
+
funcName,
|
|
58
|
+
);
|
|
59
|
+
const readerResult = (
|
|
60
|
+
await angleStakedStable.dexHelper.multiContract.methods
|
|
61
|
+
.aggregate(readerCallData)
|
|
62
|
+
.call({}, blockNumber)
|
|
63
|
+
).returnData;
|
|
64
|
+
|
|
65
|
+
const expectedPrices = [0n].concat(
|
|
66
|
+
decodeReaderResult(readerResult, readerIface, funcName),
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
// No exact computation because of the bigInt approx
|
|
70
|
+
for (let i = 0; i < expectedPrices.length; ++i) {
|
|
71
|
+
expect(prices[i]).toBeGreaterThanOrEqual(
|
|
72
|
+
(expectedPrices[i] * 99999n) / 100000n,
|
|
73
|
+
);
|
|
74
|
+
expect(prices[i]).toBeLessThanOrEqual(
|
|
75
|
+
(expectedPrices[i] * 100001n) / 100000n,
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
async function testPricingOnNetwork(
|
|
81
|
+
angleStakedStable: AngleStakedStable,
|
|
82
|
+
network: Network,
|
|
83
|
+
dexKey: string,
|
|
84
|
+
blockNumber: number,
|
|
85
|
+
srcTokenSymbol: string,
|
|
86
|
+
destTokenSymbol: string,
|
|
87
|
+
side: SwapSide,
|
|
88
|
+
amounts: bigint[],
|
|
89
|
+
funcNameToCheck: string,
|
|
90
|
+
) {
|
|
91
|
+
const networkTokens = Tokens[network];
|
|
92
|
+
|
|
93
|
+
const pools = await angleStakedStable.getPoolIdentifiers(
|
|
94
|
+
networkTokens[srcTokenSymbol],
|
|
95
|
+
networkTokens[destTokenSymbol],
|
|
96
|
+
side,
|
|
97
|
+
blockNumber,
|
|
98
|
+
);
|
|
99
|
+
console.log(
|
|
100
|
+
`${srcTokenSymbol} <> ${destTokenSymbol} Pool Identifiers: `,
|
|
101
|
+
pools,
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
expect(pools.length).toBeGreaterThan(0);
|
|
105
|
+
|
|
106
|
+
const poolPrices = await angleStakedStable.getPricesVolume(
|
|
107
|
+
networkTokens[srcTokenSymbol],
|
|
108
|
+
networkTokens[destTokenSymbol],
|
|
109
|
+
amounts,
|
|
110
|
+
side,
|
|
111
|
+
blockNumber,
|
|
112
|
+
pools,
|
|
113
|
+
);
|
|
114
|
+
console.log(
|
|
115
|
+
`${srcTokenSymbol} <> ${destTokenSymbol} Pool Prices: `,
|
|
116
|
+
poolPrices,
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
expect(poolPrices).not.toBeNull();
|
|
120
|
+
if (angleStakedStable.hasConstantPriceLargeAmounts) {
|
|
121
|
+
checkConstantPoolPrices(poolPrices!, amounts, dexKey);
|
|
122
|
+
} else {
|
|
123
|
+
checkPoolPrices(poolPrices!, amounts, side, dexKey);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
const exchange =
|
|
127
|
+
srcTokenSymbol === 'stEUR' || srcTokenSymbol === 'stUSD'
|
|
128
|
+
? networkTokens[srcTokenSymbol].address
|
|
129
|
+
: networkTokens[destTokenSymbol].address;
|
|
130
|
+
|
|
131
|
+
// Check if onchain pricing equals to calculated ones
|
|
132
|
+
await checkOnChainPricing(
|
|
133
|
+
angleStakedStable,
|
|
134
|
+
funcNameToCheck,
|
|
135
|
+
blockNumber,
|
|
136
|
+
exchange,
|
|
137
|
+
poolPrices![0].prices,
|
|
138
|
+
amounts,
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
describe('AngleStakedStable', () => {
|
|
143
|
+
describe('Mainnet USD', () => {
|
|
144
|
+
let blockNumber: number;
|
|
145
|
+
let angleStakedStable: AngleStakedStable;
|
|
146
|
+
const dexKey = 'AngleStakedStableUSD';
|
|
147
|
+
const network = Network.MAINNET;
|
|
148
|
+
const dexHelper = new DummyDexHelper(network);
|
|
149
|
+
|
|
150
|
+
const tokens = Tokens[network];
|
|
151
|
+
|
|
152
|
+
const srcTokenSymbolUSDEnter = 'USDA';
|
|
153
|
+
const destTokenSymbolUSDEnter = 'stUSD';
|
|
154
|
+
const funcNameSellEnter = 'previewDeposit';
|
|
155
|
+
const funcNameBuyEnter = 'previewMint';
|
|
156
|
+
|
|
157
|
+
const destTokenSymbolUSDExit = 'USDA';
|
|
158
|
+
const srcTokenSymbolUSDExit = 'stUSD';
|
|
159
|
+
const funcNameSellExit = 'previewRedeem';
|
|
160
|
+
const funcNameBuyExit = 'previewWithdraw';
|
|
161
|
+
|
|
162
|
+
const exchangeSTUSD = dexKey;
|
|
163
|
+
// const exchangeSTUSD = `${dexKey}_${tokens.stUSD.address.toLowerCase()}`;
|
|
164
|
+
|
|
165
|
+
const amountsForSell = [
|
|
166
|
+
0n,
|
|
167
|
+
1n * BI_POWS[tokens[srcTokenSymbolUSDEnter].decimals],
|
|
168
|
+
2n * BI_POWS[tokens[srcTokenSymbolUSDEnter].decimals],
|
|
169
|
+
3n * BI_POWS[tokens[srcTokenSymbolUSDEnter].decimals],
|
|
170
|
+
4n * BI_POWS[tokens[srcTokenSymbolUSDEnter].decimals],
|
|
171
|
+
5n * BI_POWS[tokens[srcTokenSymbolUSDEnter].decimals],
|
|
172
|
+
6n * BI_POWS[tokens[srcTokenSymbolUSDEnter].decimals],
|
|
173
|
+
7n * BI_POWS[tokens[srcTokenSymbolUSDEnter].decimals],
|
|
174
|
+
8n * BI_POWS[tokens[srcTokenSymbolUSDEnter].decimals],
|
|
175
|
+
9n * BI_POWS[tokens[srcTokenSymbolUSDEnter].decimals],
|
|
176
|
+
10n * BI_POWS[tokens[srcTokenSymbolUSDEnter].decimals],
|
|
177
|
+
];
|
|
178
|
+
|
|
179
|
+
const amountsForBuy = [
|
|
180
|
+
0n,
|
|
181
|
+
1n * BI_POWS[tokens[destTokenSymbolUSDEnter].decimals],
|
|
182
|
+
2n * BI_POWS[tokens[destTokenSymbolUSDEnter].decimals],
|
|
183
|
+
3n * BI_POWS[tokens[destTokenSymbolUSDEnter].decimals],
|
|
184
|
+
4n * BI_POWS[tokens[destTokenSymbolUSDEnter].decimals],
|
|
185
|
+
5n * BI_POWS[tokens[destTokenSymbolUSDEnter].decimals],
|
|
186
|
+
6n * BI_POWS[tokens[destTokenSymbolUSDEnter].decimals],
|
|
187
|
+
7n * BI_POWS[tokens[destTokenSymbolUSDEnter].decimals],
|
|
188
|
+
8n * BI_POWS[tokens[destTokenSymbolUSDEnter].decimals],
|
|
189
|
+
9n * BI_POWS[tokens[destTokenSymbolUSDEnter].decimals],
|
|
190
|
+
10n * BI_POWS[tokens[destTokenSymbolUSDEnter].decimals],
|
|
191
|
+
];
|
|
192
|
+
|
|
193
|
+
beforeAll(async () => {
|
|
194
|
+
blockNumber = await dexHelper.web3Provider.eth.getBlockNumber();
|
|
195
|
+
angleStakedStable = new AngleStakedStable(network, dexKey, dexHelper);
|
|
196
|
+
if (angleStakedStable.initializePricing) {
|
|
197
|
+
await angleStakedStable.initializePricing(blockNumber);
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
it('getPoolIdentifiers and getPricesVolume SELL - USDA', async () => {
|
|
201
|
+
await testPricingOnNetwork(
|
|
202
|
+
angleStakedStable,
|
|
203
|
+
network,
|
|
204
|
+
dexKey,
|
|
205
|
+
blockNumber,
|
|
206
|
+
srcTokenSymbolUSDEnter,
|
|
207
|
+
destTokenSymbolUSDEnter,
|
|
208
|
+
SwapSide.SELL,
|
|
209
|
+
amountsForSell,
|
|
210
|
+
funcNameSellEnter,
|
|
211
|
+
);
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
it('getPoolIdentifiers and getPricesVolume BUY - stUSD', async () => {
|
|
215
|
+
await testPricingOnNetwork(
|
|
216
|
+
angleStakedStable,
|
|
217
|
+
network,
|
|
218
|
+
dexKey,
|
|
219
|
+
blockNumber,
|
|
220
|
+
srcTokenSymbolUSDEnter,
|
|
221
|
+
destTokenSymbolUSDEnter,
|
|
222
|
+
SwapSide.BUY,
|
|
223
|
+
amountsForBuy,
|
|
224
|
+
funcNameBuyEnter,
|
|
225
|
+
);
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
it('getPoolIdentifiers and getPricesVolume SELL - stUSD', async () => {
|
|
229
|
+
await testPricingOnNetwork(
|
|
230
|
+
angleStakedStable,
|
|
231
|
+
network,
|
|
232
|
+
dexKey,
|
|
233
|
+
blockNumber,
|
|
234
|
+
srcTokenSymbolUSDExit,
|
|
235
|
+
destTokenSymbolUSDExit,
|
|
236
|
+
SwapSide.SELL,
|
|
237
|
+
amountsForSell,
|
|
238
|
+
funcNameSellExit,
|
|
239
|
+
);
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
it('getPoolIdentifiers and getPricesVolume BUY - USDA', async () => {
|
|
243
|
+
await testPricingOnNetwork(
|
|
244
|
+
angleStakedStable,
|
|
245
|
+
network,
|
|
246
|
+
dexKey,
|
|
247
|
+
blockNumber,
|
|
248
|
+
srcTokenSymbolUSDExit,
|
|
249
|
+
destTokenSymbolUSDExit,
|
|
250
|
+
SwapSide.BUY,
|
|
251
|
+
amountsForBuy,
|
|
252
|
+
funcNameBuyExit,
|
|
253
|
+
);
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
it('getTopPoolsForToken - USDA', async () => {
|
|
257
|
+
// We have to check without calling initializePricing, because
|
|
258
|
+
// pool-tracker is not calling that function
|
|
259
|
+
const newAngleStakedStable = new AngleStakedStable(
|
|
260
|
+
network,
|
|
261
|
+
dexKey,
|
|
262
|
+
dexHelper,
|
|
263
|
+
);
|
|
264
|
+
if (newAngleStakedStable.updatePoolState) {
|
|
265
|
+
await newAngleStakedStable.updatePoolState();
|
|
266
|
+
}
|
|
267
|
+
const poolLiquidity = await newAngleStakedStable.getTopPoolsForToken(
|
|
268
|
+
tokens[srcTokenSymbolUSDEnter].address,
|
|
269
|
+
10,
|
|
270
|
+
);
|
|
271
|
+
console.log(`${srcTokenSymbolUSDEnter} Top Pools:`, poolLiquidity);
|
|
272
|
+
|
|
273
|
+
if (!newAngleStakedStable.hasConstantPriceLargeAmounts) {
|
|
274
|
+
checkPoolsLiquidity(
|
|
275
|
+
poolLiquidity,
|
|
276
|
+
Tokens[network][srcTokenSymbolUSDEnter].address,
|
|
277
|
+
exchangeSTUSD,
|
|
278
|
+
);
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
it('getTopPoolsForToken - stUSD', async () => {
|
|
283
|
+
// We have to check without calling initializePricing, because
|
|
284
|
+
// pool-tracker is not calling that function
|
|
285
|
+
const newAngleStakedStable = new AngleStakedStable(
|
|
286
|
+
network,
|
|
287
|
+
dexKey,
|
|
288
|
+
dexHelper,
|
|
289
|
+
);
|
|
290
|
+
if (newAngleStakedStable.updatePoolState) {
|
|
291
|
+
await newAngleStakedStable.updatePoolState();
|
|
292
|
+
}
|
|
293
|
+
const poolLiquidity = await newAngleStakedStable.getTopPoolsForToken(
|
|
294
|
+
tokens[srcTokenSymbolUSDExit].address,
|
|
295
|
+
10,
|
|
296
|
+
);
|
|
297
|
+
console.log(`${srcTokenSymbolUSDExit} Top Pools:`, poolLiquidity);
|
|
298
|
+
|
|
299
|
+
if (!newAngleStakedStable.hasConstantPriceLargeAmounts) {
|
|
300
|
+
checkPoolsLiquidity(
|
|
301
|
+
poolLiquidity,
|
|
302
|
+
Tokens[network][srcTokenSymbolUSDExit].address,
|
|
303
|
+
exchangeSTUSD,
|
|
304
|
+
);
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
describe('Mainnet EUR', () => {
|
|
310
|
+
let blockNumber: number;
|
|
311
|
+
let angleStakedStable: AngleStakedStable;
|
|
312
|
+
const dexKey = 'AngleStakedStableEUR';
|
|
313
|
+
const network = Network.MAINNET;
|
|
314
|
+
const dexHelper = new DummyDexHelper(network);
|
|
315
|
+
|
|
316
|
+
const tokens = Tokens[network];
|
|
317
|
+
|
|
318
|
+
// Don't forget to update relevant tokens in constant-e2e.ts
|
|
319
|
+
const srcTokenSymbolEUREnter = 'EURA';
|
|
320
|
+
const destTokenSymbolEUREnter = 'stEUR';
|
|
321
|
+
const funcNameSellEnter = 'previewDeposit';
|
|
322
|
+
const funcNameBuyEnter = 'previewMint';
|
|
323
|
+
|
|
324
|
+
const srcTokenSymbolEURExit = 'stEUR';
|
|
325
|
+
const destTokenSymbolEURExit = 'EURA';
|
|
326
|
+
const funcNameSellExit = 'previewRedeem';
|
|
327
|
+
const funcNameBuyExit = 'previewWithdraw';
|
|
328
|
+
|
|
329
|
+
// const exchangeSTEUR = `${dexKey}_${tokens.stEUR.address.toLowerCase()}`;
|
|
330
|
+
const exchangeSTEUR = dexKey;
|
|
331
|
+
|
|
332
|
+
const amountsForSell = [
|
|
333
|
+
0n,
|
|
334
|
+
1n * BI_POWS[tokens[srcTokenSymbolEUREnter].decimals],
|
|
335
|
+
2n * BI_POWS[tokens[srcTokenSymbolEUREnter].decimals],
|
|
336
|
+
3n * BI_POWS[tokens[srcTokenSymbolEUREnter].decimals],
|
|
337
|
+
4n * BI_POWS[tokens[srcTokenSymbolEUREnter].decimals],
|
|
338
|
+
5n * BI_POWS[tokens[srcTokenSymbolEUREnter].decimals],
|
|
339
|
+
6n * BI_POWS[tokens[srcTokenSymbolEUREnter].decimals],
|
|
340
|
+
7n * BI_POWS[tokens[srcTokenSymbolEUREnter].decimals],
|
|
341
|
+
8n * BI_POWS[tokens[srcTokenSymbolEUREnter].decimals],
|
|
342
|
+
9n * BI_POWS[tokens[srcTokenSymbolEUREnter].decimals],
|
|
343
|
+
10n * BI_POWS[tokens[srcTokenSymbolEUREnter].decimals],
|
|
344
|
+
];
|
|
345
|
+
|
|
346
|
+
const amountsForBuy = [
|
|
347
|
+
0n,
|
|
348
|
+
1n * BI_POWS[tokens[destTokenSymbolEUREnter].decimals],
|
|
349
|
+
2n * BI_POWS[tokens[destTokenSymbolEUREnter].decimals],
|
|
350
|
+
3n * BI_POWS[tokens[destTokenSymbolEUREnter].decimals],
|
|
351
|
+
4n * BI_POWS[tokens[destTokenSymbolEUREnter].decimals],
|
|
352
|
+
5n * BI_POWS[tokens[destTokenSymbolEUREnter].decimals],
|
|
353
|
+
6n * BI_POWS[tokens[destTokenSymbolEUREnter].decimals],
|
|
354
|
+
7n * BI_POWS[tokens[destTokenSymbolEUREnter].decimals],
|
|
355
|
+
8n * BI_POWS[tokens[destTokenSymbolEUREnter].decimals],
|
|
356
|
+
9n * BI_POWS[tokens[destTokenSymbolEUREnter].decimals],
|
|
357
|
+
10n * BI_POWS[tokens[destTokenSymbolEUREnter].decimals],
|
|
358
|
+
];
|
|
359
|
+
|
|
360
|
+
beforeAll(async () => {
|
|
361
|
+
blockNumber = await dexHelper.web3Provider.eth.getBlockNumber();
|
|
362
|
+
angleStakedStable = new AngleStakedStable(network, dexKey, dexHelper);
|
|
363
|
+
if (angleStakedStable.initializePricing) {
|
|
364
|
+
await angleStakedStable.initializePricing(blockNumber);
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
|
|
368
|
+
it('getPoolIdentifiers and getPricesVolume SELL - EURA', async () => {
|
|
369
|
+
await testPricingOnNetwork(
|
|
370
|
+
angleStakedStable,
|
|
371
|
+
network,
|
|
372
|
+
dexKey,
|
|
373
|
+
blockNumber,
|
|
374
|
+
srcTokenSymbolEUREnter,
|
|
375
|
+
destTokenSymbolEUREnter,
|
|
376
|
+
SwapSide.SELL,
|
|
377
|
+
amountsForSell,
|
|
378
|
+
funcNameSellEnter,
|
|
379
|
+
);
|
|
380
|
+
});
|
|
381
|
+
|
|
382
|
+
it('getPoolIdentifiers and getPricesVolume BUY - stEUR', async () => {
|
|
383
|
+
await testPricingOnNetwork(
|
|
384
|
+
angleStakedStable,
|
|
385
|
+
network,
|
|
386
|
+
dexKey,
|
|
387
|
+
blockNumber,
|
|
388
|
+
srcTokenSymbolEUREnter,
|
|
389
|
+
destTokenSymbolEUREnter,
|
|
390
|
+
SwapSide.BUY,
|
|
391
|
+
amountsForBuy,
|
|
392
|
+
funcNameBuyEnter,
|
|
393
|
+
);
|
|
394
|
+
});
|
|
395
|
+
|
|
396
|
+
it('getPoolIdentifiers and getPricesVolume SELL - stEUR', async () => {
|
|
397
|
+
await testPricingOnNetwork(
|
|
398
|
+
angleStakedStable,
|
|
399
|
+
network,
|
|
400
|
+
dexKey,
|
|
401
|
+
blockNumber,
|
|
402
|
+
srcTokenSymbolEURExit,
|
|
403
|
+
destTokenSymbolEURExit,
|
|
404
|
+
SwapSide.SELL,
|
|
405
|
+
amountsForSell,
|
|
406
|
+
funcNameSellExit,
|
|
407
|
+
);
|
|
408
|
+
});
|
|
409
|
+
|
|
410
|
+
it('getPoolIdentifiers and getPricesVolume BUY - EURA', async () => {
|
|
411
|
+
await testPricingOnNetwork(
|
|
412
|
+
angleStakedStable,
|
|
413
|
+
network,
|
|
414
|
+
dexKey,
|
|
415
|
+
blockNumber,
|
|
416
|
+
srcTokenSymbolEURExit,
|
|
417
|
+
destTokenSymbolEURExit,
|
|
418
|
+
SwapSide.BUY,
|
|
419
|
+
amountsForBuy,
|
|
420
|
+
funcNameBuyExit,
|
|
421
|
+
);
|
|
422
|
+
});
|
|
423
|
+
|
|
424
|
+
it('getTopPoolsForToken -EURA', async () => {
|
|
425
|
+
// We have to check without calling initializePricing, because
|
|
426
|
+
// pool-tracker is not calling that function
|
|
427
|
+
const newAngleStakedStable = new AngleStakedStable(
|
|
428
|
+
network,
|
|
429
|
+
dexKey,
|
|
430
|
+
dexHelper,
|
|
431
|
+
);
|
|
432
|
+
if (newAngleStakedStable.updatePoolState) {
|
|
433
|
+
await newAngleStakedStable.updatePoolState();
|
|
434
|
+
}
|
|
435
|
+
const poolLiquidity = await newAngleStakedStable.getTopPoolsForToken(
|
|
436
|
+
tokens[srcTokenSymbolEUREnter].address,
|
|
437
|
+
10,
|
|
438
|
+
);
|
|
439
|
+
console.log(`${srcTokenSymbolEUREnter} Top Pools:`, poolLiquidity);
|
|
440
|
+
|
|
441
|
+
if (!newAngleStakedStable.hasConstantPriceLargeAmounts) {
|
|
442
|
+
checkPoolsLiquidity(
|
|
443
|
+
poolLiquidity,
|
|
444
|
+
Tokens[network][srcTokenSymbolEUREnter].address,
|
|
445
|
+
exchangeSTEUR,
|
|
446
|
+
);
|
|
447
|
+
}
|
|
448
|
+
});
|
|
449
|
+
|
|
450
|
+
it('getTopPoolsForToken - stEUR', async () => {
|
|
451
|
+
// We have to check without calling initializePricing, because
|
|
452
|
+
// pool-tracker is not calling that function
|
|
453
|
+
const newAngleStakedStable = new AngleStakedStable(
|
|
454
|
+
network,
|
|
455
|
+
dexKey,
|
|
456
|
+
dexHelper,
|
|
457
|
+
);
|
|
458
|
+
if (newAngleStakedStable.updatePoolState) {
|
|
459
|
+
await newAngleStakedStable.updatePoolState();
|
|
460
|
+
}
|
|
461
|
+
const poolLiquidity = await newAngleStakedStable.getTopPoolsForToken(
|
|
462
|
+
tokens[srcTokenSymbolEURExit].address,
|
|
463
|
+
10,
|
|
464
|
+
);
|
|
465
|
+
console.log(`${srcTokenSymbolEURExit} Top Pools:`, poolLiquidity);
|
|
466
|
+
|
|
467
|
+
if (!newAngleStakedStable.hasConstantPriceLargeAmounts) {
|
|
468
|
+
checkPoolsLiquidity(
|
|
469
|
+
poolLiquidity,
|
|
470
|
+
Tokens[network][srcTokenSymbolEURExit].address,
|
|
471
|
+
exchangeSTEUR,
|
|
472
|
+
);
|
|
473
|
+
}
|
|
474
|
+
});
|
|
475
|
+
});
|
|
476
|
+
});
|