@paraswap/dex-lib 2.42.30-smardex → 2.42.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/build/dex/index.js +2 -2
  2. package/build/dex/index.js.map +1 -1
  3. package/build/dex/smardex/config.js +0 -7
  4. package/build/dex/smardex/config.js.map +1 -1
  5. package/build/dex/smardex/constants.d.ts +1 -1
  6. package/build/dex/smardex/constants.js +2 -2
  7. package/build/dex/smardex/constants.js.map +1 -1
  8. package/build/dex/smardex/sdk/utils.js.map +1 -1
  9. package/build/dex/smardex/smardex-event-pool.d.ts +2 -2
  10. package/build/dex/smardex/smardex-event-pool.js +9 -11
  11. package/build/dex/smardex/smardex-event-pool.js.map +1 -1
  12. package/build/dex/smardex/smardex.d.ts +1 -6
  13. package/build/dex/smardex/smardex.js +95 -52
  14. package/build/dex/smardex/smardex.js.map +1 -1
  15. package/build/dex/smardex/types.d.ts +1 -12
  16. package/build/dex/wombat/utils.d.ts +1 -0
  17. package/build/dex/wombat/utils.js +14 -1
  18. package/build/dex/wombat/utils.js.map +1 -1
  19. package/build/dex/wombat/wombat-bmw.d.ts +2 -2
  20. package/build/dex/wombat/wombat-bmw.js +8 -25
  21. package/build/dex/wombat/wombat-bmw.js.map +1 -1
  22. package/build/dex/wombat/wombat-pool.d.ts +51 -17
  23. package/build/dex/wombat/wombat-pool.js +398 -112
  24. package/build/dex/wombat/wombat-pool.js.map +1 -1
  25. package/build/dex/wombat/wombat.d.ts +1 -1
  26. package/build/dex/wombat/wombat.js +12 -18
  27. package/build/dex/wombat/wombat.js.map +1 -1
  28. package/package.json +1 -1
  29. package/src/abi/smardex/layer-1/smardex-factory.json +242 -0
  30. package/src/abi/smardex/layer-1/smardex-pool.json +506 -0
  31. package/src/abi/wombat/pool-v3.json +2013 -0
  32. package/src/dex/index.ts +2 -2
  33. package/src/dex/smardex/config.ts +0 -8
  34. package/src/dex/smardex/constants.ts +1 -1
  35. package/src/dex/smardex/sdk/utils.ts +2 -0
  36. package/src/dex/smardex/smardex-e2e.test.ts +21 -22
  37. package/src/dex/smardex/smardex-event-pool.ts +9 -11
  38. package/src/dex/smardex/smardex-events.test.ts +15 -27
  39. package/src/dex/smardex/smardex-integration.test.ts +1 -7
  40. package/src/dex/smardex/smardex.ts +118 -70
  41. package/src/dex/smardex/types.ts +1 -11
  42. package/src/dex/wombat/utils.ts +20 -0
  43. package/src/dex/wombat/wombat-bmw.ts +8 -31
  44. package/src/dex/wombat/wombat-e2e.test.ts +13 -1
  45. package/src/dex/wombat/wombat-events.test.ts +147 -0
  46. package/src/dex/wombat/wombat-integration.test.ts +70 -111
  47. package/src/dex/wombat/wombat-pool.ts +623 -171
  48. package/src/dex/wombat/wombat.ts +13 -23
  49. package/tests/constants-e2e.ts +11 -7
  50. package/src/dex/smardex/subgraph-queries.ts +0 -16
  51. package/src/dex/smardex/usd-reserves.ts +0 -137
  52. /package/src/abi/smardex/{smardex-router.json → all/smardex-router.json} +0 -0
  53. /package/src/abi/smardex/{smardex-factory.json → layer-2/smardex-factory.json} +0 -0
  54. /package/src/abi/smardex/{smardex-pool.json → layer-2/smardex-pool.json} +0 -0
  55. /package/src/abi/wombat/{pool.json → pool-v2.json} +0 -0
@@ -5,100 +5,168 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.WombatPool = void 0;
7
7
  const abi_1 = require("@ethersproject/abi");
8
- const lodash_1 = __importDefault(require("lodash"));
9
- const stateful_rpc_poller_1 = require("../../lib/stateful-rpc-poller/stateful-rpc-poller");
10
- const state_polling_manager_1 = require("../../lib/stateful-rpc-poller/state-polling-manager");
11
- const utils_1 = require("../../lib/stateful-rpc-poller/utils");
12
- const decoders_1 = require("../../lib/decoders");
13
- const pool_json_1 = __importDefault(require("../../abi/wombat/pool.json"));
8
+ const utils_1 = require("../../utils");
9
+ const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
10
+ const pool_v2_json_1 = __importDefault(require("../../abi/wombat/pool-v2.json"));
11
+ const pool_v3_json_1 = __importDefault(require("../../abi/wombat/pool-v3.json"));
14
12
  const asset_json_1 = __importDefault(require("../../abi/wombat/asset.json"));
15
13
  const utils_2 = require("./utils");
16
- class WombatPool extends stateful_rpc_poller_1.StatefulRpcPoller {
17
- constructor(dexKey, poolIdentifier, dexHelper, poolAddress, asset2TokenMap) {
18
- const callbacks = (0, utils_1.pollingManagerCbExtractor)(state_polling_manager_1.StatePollingManager.getInstance(dexHelper));
19
- super(dexKey, poolIdentifier, dexHelper, 0, 0, false, callbacks);
14
+ const CLEAR_RPC_CALL_COUNT_INTERVAL = 1000 * 60 * 5; // 5 minutes
15
+ class WombatPool extends stateful_event_subscriber_1.StatefulEventSubscriber {
16
+ constructor(dexKey, name, network, dexHelper, logger, poolAddress) {
17
+ super(dexKey, `${network}_${name}`, dexHelper, logger);
18
+ this.network = network;
19
+ this.dexHelper = dexHelper;
20
20
  this.poolAddress = poolAddress;
21
- this.asset2TokenMap = asset2TokenMap;
21
+ this.rpcCallCount = 0;
22
+ this.handlers = {};
23
+ this.poolInterface = WombatPool.poolV2Interface;
24
+ this.blankState = {
25
+ asset: {},
26
+ underlyingAddresses: [],
27
+ params: {
28
+ paused: false,
29
+ ampFactor: 0n,
30
+ haircutRate: 0n,
31
+ startCovRatio: 0n,
32
+ endCovRatio: 0n,
33
+ },
34
+ };
35
+ this.addressesSubscribed = [this.poolAddress];
36
+ // users-actions handlers
37
+ this.handlers['Swap'] = this.handleSwap.bind(this);
38
+ this.handlers['SwapV2'] = this.handleSwapV2.bind(this);
39
+ // admin-actions handlers
40
+ this.handlers['SetAmpFactor'] = this.handleSetAmpFactor.bind(this);
41
+ this.handlers['SetHaircutRate'] = this.handleSetHaircutRate.bind(this);
42
+ this.handlers['AssetAdded'] = this.handleAssetAdded.bind(this);
43
+ this.handlers['AssetRemoved'] = this.handleAssetRemoved.bind(this);
44
+ this.handlers['FillPool'] = this.handleFillPool.bind(this);
45
+ this.handlers['Paused'] = this.handlePaused.bind(this);
46
+ this.handlers['Unpaused'] = this.handleUnpaused.bind(this);
47
+ this.handlers['PausedAsset'] = this.handlePausedAsset.bind(this);
48
+ this.handlers['UnpausedAsset'] = this.handleUnpausedAsset.bind(this);
49
+ this.eventRefetched = ['Deposit', 'Withdraw'];
50
+ setInterval(() => {
51
+ this.rpcCallCount = 0;
52
+ }, CLEAR_RPC_CALL_COUNT_INTERVAL);
53
+ }
54
+ async initialize(blockNumber, options) {
55
+ const poolContract = new this.dexHelper.web3Provider.eth.Contract(pool_v3_json_1.default, this.poolAddress);
56
+ try {
57
+ await poolContract.methods.withdrawalHaircutRate().call({}, blockNumber);
58
+ this.poolInterface = WombatPool.poolV3Interface;
59
+ }
60
+ catch (e) {
61
+ this.logger.info(`no public variable withdrawalHaircutRate in pool ${this.poolAddress}, this is v2 pool`);
62
+ }
63
+ await super.initialize(blockNumber, options);
64
+ }
65
+ async processBlockLogs(state, logs, blockHeader) {
66
+ let nextState = null;
67
+ for (const log of logs) {
68
+ try {
69
+ const event = this.poolInterface.parseLog(log);
70
+ if (this.eventRefetched.includes(event.name)) {
71
+ // if the state is refetched, no need to deal with the left logs in the block
72
+ return await this.generateState(log.blockNumber);
73
+ }
74
+ }
75
+ catch (e) {
76
+ (0, utils_1.catchParseLogError)(e, this.logger);
77
+ }
78
+ const retState = await this.processLog(nextState || state, log, blockHeader);
79
+ if (retState) {
80
+ nextState = retState;
81
+ }
82
+ }
83
+ return nextState;
22
84
  }
23
- _getFetchStateMultiCalls() {
24
- const params = [];
25
- params.push({
85
+ /**
86
+ * The function is called every time any of the subscribed
87
+ * addresses release log. The function accepts the current
88
+ * state, updates the state according to the log, and returns
89
+ * the updated state.
90
+ * @param state - Current state of event subscriber
91
+ * @param log - Log released by one of the subscribed addresses
92
+ * @param blockHeader
93
+ * @returns Updates state of the event subscriber after the log
94
+ */
95
+ async processLog(state, log, blockHeader) {
96
+ try {
97
+ const event = this.poolInterface.parseLog(log);
98
+ if (event.name in this.handlers) {
99
+ return await this.handlers[event.name](event, state, log);
100
+ }
101
+ }
102
+ catch (e) {
103
+ (0, utils_1.catchParseLogError)(e, this.logger);
104
+ }
105
+ return null;
106
+ }
107
+ /**
108
+ * The function generates state using on-chain calls. This
109
+ * function is called to regenerate state if the event based
110
+ * system fails to fetch events and the local state is no
111
+ * more correct.
112
+ * @param blockNumber - Blocknumber for which the state should
113
+ * should be generated
114
+ * @returns state of the event subscriber at blocknumber
115
+ */
116
+ async generateState(blockNumber) {
117
+ this.rpcCallCount++;
118
+ if (this.rpcCallCount > 1) {
119
+ this.logger.warn(`WombatPool generateState excessive RPC call. Name: ${this.name}. Called ${this.rpcCallCount} times during ${CLEAR_RPC_CALL_COUNT_INTERVAL / 1000}s interval`);
120
+ }
121
+ let multiCallInputs = [];
122
+ // 1.A generate pool params requests
123
+ // paused
124
+ multiCallInputs.push({
26
125
  target: this.poolAddress,
27
- callData: WombatPool.poolInterface.encodeFunctionData('paused'),
28
- decodeFunction: decoders_1.booleanDecode,
126
+ callData: this.poolInterface.encodeFunctionData('paused'),
29
127
  });
30
- params.push({
128
+ // ampFactor
129
+ multiCallInputs.push({
31
130
  target: this.poolAddress,
32
- callData: WombatPool.poolInterface.encodeFunctionData('ampFactor'),
33
- decodeFunction: decoders_1.uint256ToBigInt,
131
+ callData: this.poolInterface.encodeFunctionData('ampFactor'),
34
132
  });
35
- params.push({
133
+ // haircutRate
134
+ multiCallInputs.push({
36
135
  target: this.poolAddress,
37
- callData: WombatPool.poolInterface.encodeFunctionData('haircutRate'),
38
- decodeFunction: decoders_1.uint256ToBigInt,
136
+ callData: this.poolInterface.encodeFunctionData('haircutRate'),
39
137
  });
40
- params.push({
138
+ // startCovRatio
139
+ multiCallInputs.push({
41
140
  target: this.poolAddress,
42
- callData: WombatPool.poolInterface.encodeFunctionData('startCovRatio'),
43
- decodeFunction: decoders_1.uint256ToBigInt,
141
+ callData: this.poolInterface.encodeFunctionData('startCovRatio'),
44
142
  });
45
- params.push({
143
+ // endCovRatio
144
+ multiCallInputs.push({
46
145
  target: this.poolAddress,
47
- callData: WombatPool.poolInterface.encodeFunctionData('endCovRatio'),
48
- decodeFunction: decoders_1.uint256ToBigInt,
146
+ callData: this.poolInterface.encodeFunctionData('endCovRatio'),
49
147
  });
50
- params.push({
148
+ // tokens
149
+ multiCallInputs.push({
51
150
  target: this.poolAddress,
52
- callData: WombatPool.poolInterface.encodeFunctionData('getTokens'),
53
- decodeFunction: decoders_1.addressArrayDecode,
54
- });
55
- this.asset2TokenMap.forEach((token, asset) => {
56
- params.push({
57
- target: this.poolAddress,
58
- callData: WombatPool.poolInterface.encodeFunctionData('isPaused', [
59
- token,
60
- ]),
61
- decodeFunction: decoders_1.booleanDecode,
62
- });
63
- params.push({
64
- target: asset,
65
- callData: WombatPool.assetInterface.encodeFunctionData('cash'),
66
- decodeFunction: utils_2.uint120ToBigInt,
67
- });
68
- params.push({
69
- target: asset,
70
- callData: WombatPool.assetInterface.encodeFunctionData('liability'),
71
- decodeFunction: utils_2.uint120ToBigInt,
72
- });
73
- params.push({
74
- target: asset,
75
- callData: WombatPool.assetInterface.encodeFunctionData('underlyingTokenDecimals'),
76
- decodeFunction: decoders_1.uint8ToNumber,
77
- });
78
- params.push({
79
- target: asset,
80
- callData: WombatPool.assetInterface.encodeFunctionData('getRelativePrice'),
81
- decodeFunction: decoders_1.uint256ToBigInt,
82
- });
83
- });
84
- return params;
85
- }
86
- _parseStateFromMultiResults(multiOutputs) {
87
- const [paused, ampFactor, haircutRate, startCovRatio, endCovRatio, tokens, ...remained] = multiOutputs;
88
- const assetTokenArray = Array.from(this.asset2TokenMap.entries());
89
- const token2AssetStates = new Map();
90
- lodash_1.default.chunk(remained, 5).forEach((chunk, i) => {
91
- const [paused, cash, liability, underlyingTokenDecimals, relativePrice] = chunk;
92
- const [asset, token] = assetTokenArray[i];
93
- token2AssetStates.set(token, {
94
- address: asset,
95
- paused,
96
- cash,
97
- liability,
98
- underlyingTokenDecimals,
99
- relativePrice,
100
- });
151
+ callData: this.poolInterface.encodeFunctionData('getTokens'),
101
152
  });
153
+ // 1.B. invoke multicall
154
+ let returnData = [];
155
+ if (multiCallInputs.length) {
156
+ returnData = (await this.dexHelper.multiContract.methods
157
+ .aggregate(multiCallInputs)
158
+ .call({}, blockNumber)).returnData;
159
+ }
160
+ let i = 0;
161
+ // 1.C. decode pool params
162
+ const paused = Boolean(this.poolInterface.decodeFunctionResult('paused', returnData[i++])[0]);
163
+ const ampFactor = BigInt(this.poolInterface.decodeFunctionResult('ampFactor', returnData[i++])[0]);
164
+ const haircutRate = BigInt(this.poolInterface.decodeFunctionResult('haircutRate', returnData[i++])[0]);
165
+ const startCovRatio = BigInt(this.poolInterface.decodeFunctionResult('startCovRatio', returnData[i++])[0]);
166
+ const endCovRatio = BigInt(this.poolInterface.decodeFunctionResult('endCovRatio', returnData[i++])[0]);
167
+ const tokens = this.poolInterface
168
+ .decodeFunctionResult('getTokens', returnData[i++])[0]
169
+ .map((tokenAddress) => tokenAddress.toLowerCase());
102
170
  const poolState = {
103
171
  params: {
104
172
  paused,
@@ -110,55 +178,273 @@ class WombatPool extends stateful_rpc_poller_1.StatefulRpcPoller {
110
178
  underlyingAddresses: tokens,
111
179
  asset: {},
112
180
  };
113
- const isMainPool = Array.from(token2AssetStates.values()).filter(assetState => assetState.relativePrice === undefined).length > 0;
114
- for (const token of poolState.underlyingAddresses) {
115
- if (!token2AssetStates.has(token)) {
116
- // this happens when asset has been added to pool but is not added to BMW yet
117
- continue;
118
- }
119
- poolState.asset[token] = token2AssetStates.get(token);
181
+ // 2.A. generate requests for getting asset addresses
182
+ multiCallInputs = tokens.map((tokenAddress) => ({
183
+ target: this.poolAddress,
184
+ callData: this.poolInterface.encodeFunctionData('addressOfAsset', [
185
+ tokenAddress,
186
+ ]),
187
+ }));
188
+ // 2.B. invoke multicall
189
+ returnData = (await this.dexHelper.multiContract.methods
190
+ .aggregate(multiCallInputs)
191
+ .call({}, blockNumber)).returnData;
192
+ // 2.C. decode asset addresses
193
+ const assets = returnData.map(data => {
194
+ return this.poolInterface.decodeFunctionResult('addressOfAsset', data)[0];
195
+ });
196
+ // 3. get asset states
197
+ const assetState = await this.getAssetState(this.poolAddress, assets.map(asset => asset.toLowerCase()), tokens, blockNumber);
198
+ const isMainPool = assetState.filter(asset => asset.relativePrice === undefined).length > 0;
199
+ for (let j = 0; j < tokens.length; j++) {
120
200
  if (isMainPool) {
121
- poolState.asset[token].relativePrice = undefined;
201
+ assetState[j].relativePrice = undefined;
122
202
  }
203
+ poolState.asset[tokens[j]] = assetState[j];
123
204
  }
124
205
  return poolState;
125
206
  }
126
- async fetchLatestStateFromRpc() {
127
- const multiCalls = this.getFetchStateWithBlockInfoMultiCalls();
128
- try {
129
- const lastUpdatedAtMs = Date.now();
130
- const aggregatedResults = (await this.dexHelper.multiWrapper.tryAggregate(false, multiCalls, undefined, undefined,
131
- // multiCalls includes calls asset.isPaused, asset.getRelativePrice
132
- // some of the contracts don't have these methods, so prevent logging errors
133
- false));
134
- return this.parseStateFromMultiResultsWithBlockInfo(aggregatedResults, lastUpdatedAtMs);
207
+ handleSwap(event, state, log) {
208
+ const fromTokenAddress = event.args.fromToken.toString().toLowerCase();
209
+ const fromAmount = BigInt(event.args.fromAmount.toString());
210
+ const toTokenAddress = event.args.toToken.toString().toLowerCase();
211
+ const toAmount = BigInt(event.args.toAmount.toString());
212
+ if (!state.underlyingAddresses.includes(fromTokenAddress) ||
213
+ !state.underlyingAddresses.includes(toTokenAddress)) {
214
+ return null;
135
215
  }
136
- catch (e) {
137
- this._logMessageWithSuppression('ERROR_FETCHING_STATE_FROM_RPC', e);
216
+ let idealToAmount;
217
+ const fromAmountInt256 = (0, utils_2.convertUint256ToInt256)(fromAmount);
218
+ if (fromAmountInt256 > 0) {
219
+ idealToAmount = (0, utils_2.wdiv)(toAmount, utils_2.WAD - state.params.haircutRate);
138
220
  }
139
- return null;
221
+ else {
222
+ this.logger.warn(`pool ${this.poolAddress} swap from a negative amount ${fromAmountInt256} at block ${log.blockNumber} should not happen`);
223
+ const haircut = (0, utils_2.wmul)(-fromAmount, state.params.haircutRate);
224
+ idealToAmount = toAmount + haircut;
225
+ }
226
+ const fromAmountInWad = (0, utils_2.toWad)(fromAmount, BigInt(state.asset[fromTokenAddress].underlyingTokenDecimals));
227
+ const toAmountInWad = (0, utils_2.toWad)(idealToAmount, BigInt(state.asset[toTokenAddress].underlyingTokenDecimals));
228
+ return {
229
+ ...state,
230
+ asset: {
231
+ ...state.asset,
232
+ [fromTokenAddress]: {
233
+ ...state.asset[fromTokenAddress],
234
+ cash: state.asset[fromTokenAddress].cash + fromAmountInWad,
235
+ },
236
+ [toTokenAddress]: {
237
+ ...state.asset[toTokenAddress],
238
+ cash: state.asset[toTokenAddress].cash - toAmountInWad,
239
+ },
240
+ },
241
+ };
140
242
  }
141
- parseStateFromMultiResultsWithBlockInfo(multiOutputs, lastUpdatedAtMs) {
142
- const [blockNumber, ...outputsForAbstract] = multiOutputs.map((m, i) => {
143
- return m.returnData;
144
- });
243
+ handleSwapV2(event, state, _log) {
244
+ const fromTokenAddress = event.args.fromToken.toString().toLowerCase();
245
+ const fromAmount = BigInt(event.args.fromAmount.toString());
246
+ const toTokenAddress = event.args.toToken.toString().toLowerCase();
247
+ const toAmount = BigInt(event.args.toAmount.toString());
248
+ const toTokenFee = BigInt(event.args.toTokenFee.toString());
249
+ if (!state.underlyingAddresses.includes(fromTokenAddress) ||
250
+ !state.underlyingAddresses.includes(toTokenAddress)) {
251
+ return null;
252
+ }
253
+ const fromAmountInWad = (0, utils_2.toWad)(fromAmount, BigInt(state.asset[fromTokenAddress].underlyingTokenDecimals));
254
+ const toAmountInWad = (0, utils_2.toWad)(toAmount + toTokenFee, BigInt(state.asset[toTokenAddress].underlyingTokenDecimals));
255
+ return {
256
+ ...state,
257
+ asset: {
258
+ ...state.asset,
259
+ [fromTokenAddress]: {
260
+ ...state.asset[fromTokenAddress],
261
+ cash: state.asset[fromTokenAddress].cash + fromAmountInWad,
262
+ },
263
+ [toTokenAddress]: {
264
+ ...state.asset[toTokenAddress],
265
+ cash: state.asset[toTokenAddress].cash - toAmountInWad,
266
+ },
267
+ },
268
+ };
269
+ }
270
+ handleSetAmpFactor(event, state, _log) {
271
+ const ampFactor = BigInt(event.args.value.toString());
272
+ return {
273
+ ...state,
274
+ params: {
275
+ ...state.params,
276
+ ampFactor,
277
+ },
278
+ };
279
+ }
280
+ handleSetHaircutRate(event, state, _log) {
281
+ const haircutRate = BigInt(event.args.value.toString());
282
+ return {
283
+ ...state,
284
+ params: {
285
+ ...state.params,
286
+ haircutRate,
287
+ },
288
+ };
289
+ }
290
+ async handleAssetAdded(event, state, log) {
291
+ const token = event.args.token.toString().toLowerCase();
292
+ const asset = event.args.asset.toString().toLowerCase();
293
+ if (state.underlyingAddresses.includes(token)) {
294
+ return null;
295
+ }
296
+ const assetState = await this.getAssetState(this.poolAddress, [asset], [token], log.blockNumber);
297
+ const poolState = {
298
+ ...state,
299
+ underlyingAddresses: [...state.underlyingAddresses, token],
300
+ asset: {
301
+ ...state.asset,
302
+ [token]: assetState[0],
303
+ },
304
+ };
305
+ const isMainPool = Object.values(poolState.asset).filter(asset => asset.relativePrice === undefined).length > 0;
306
+ if (isMainPool) {
307
+ for (const underlyingAddress of poolState.underlyingAddresses) {
308
+ poolState.asset[underlyingAddress] = {
309
+ ...poolState.asset[underlyingAddress],
310
+ relativePrice: undefined,
311
+ };
312
+ }
313
+ }
314
+ return poolState;
315
+ }
316
+ async handleAssetRemoved(event, state, _log) {
317
+ const token = event.args.token.toString().toLowerCase();
318
+ if (!state.underlyingAddresses.includes(token)) {
319
+ return null;
320
+ }
321
+ return {
322
+ ...state,
323
+ underlyingAddresses: state.underlyingAddresses.filter(underlyingAddress => underlyingAddress !== token),
324
+ asset: {
325
+ ...state.asset,
326
+ [token]: undefined,
327
+ },
328
+ };
329
+ }
330
+ async handleFillPool(event, state, _log) {
331
+ const token = event.args.token.toString().toLowerCase();
332
+ const amount = BigInt(event.args.amount.toString());
333
+ if (!state.underlyingAddresses.includes(token)) {
334
+ return null;
335
+ }
336
+ return {
337
+ ...state,
338
+ asset: {
339
+ ...state.asset,
340
+ [token]: {
341
+ ...state.asset[token],
342
+ cash: state.asset[token].cash + amount,
343
+ },
344
+ },
345
+ };
346
+ }
347
+ async handlePaused(event, state, _log) {
348
+ return {
349
+ ...state,
350
+ params: {
351
+ ...state.params,
352
+ paused: true,
353
+ },
354
+ };
355
+ }
356
+ async handleUnpaused(event, state, _log) {
357
+ return {
358
+ ...state,
359
+ params: {
360
+ ...state.params,
361
+ paused: false,
362
+ },
363
+ };
364
+ }
365
+ async handlePausedAsset(event, state, _log) {
366
+ const token = event.args.token.toString();
367
+ if (!state.underlyingAddresses.includes(token)) {
368
+ return null;
369
+ }
145
370
  return {
146
- value: this._parseStateFromMultiResults(outputsForAbstract),
147
- blockNumber,
148
- lastUpdatedAtMs,
371
+ ...state,
372
+ asset: {
373
+ ...state.asset,
374
+ [token]: {
375
+ ...state.asset[token],
376
+ paused: true,
377
+ },
378
+ },
149
379
  };
150
380
  }
151
- addAssets(asset2TokenMap) {
152
- for (const [asset, token] of asset2TokenMap) {
153
- if (this.asset2TokenMap.has(asset)) {
154
- continue;
381
+ async handleUnpausedAsset(event, state, _log) {
382
+ const token = event.args.token.toString();
383
+ if (!state.underlyingAddresses.includes(token)) {
384
+ return null;
385
+ }
386
+ return {
387
+ ...state,
388
+ asset: {
389
+ ...state.asset,
390
+ [token]: {
391
+ ...state.asset[token],
392
+ paused: true,
393
+ },
394
+ },
395
+ };
396
+ }
397
+ async getAssetState(pool, assets, tokens, blockNumber) {
398
+ const assetStates = [];
399
+ const multiCallInputs = [];
400
+ const methods = [
401
+ 'cash',
402
+ 'liability',
403
+ 'underlyingTokenDecimals',
404
+ 'getRelativePrice',
405
+ ];
406
+ for (let i = 0; i < assets.length; i++) {
407
+ const asset = assets[i];
408
+ const token = tokens[i];
409
+ multiCallInputs.push({
410
+ target: pool,
411
+ callData: this.poolInterface.encodeFunctionData('isPaused', [token]),
412
+ });
413
+ for (const method of methods) {
414
+ multiCallInputs.push({
415
+ target: asset,
416
+ callData: WombatPool.assetInterface.encodeFunctionData(method),
417
+ });
418
+ }
419
+ }
420
+ const returnData = await this.dexHelper.multiContract.methods
421
+ .tryAggregate(false, multiCallInputs)
422
+ .call({}, blockNumber);
423
+ for (let i = 0; i < assets.length * (methods.length + 1); i += methods.length + 1) {
424
+ const paused = returnData[i].success
425
+ ? Boolean(this.poolInterface.decodeFunctionResult('isPaused', returnData[i].returnData)[0])
426
+ : false;
427
+ const cash = BigInt(WombatPool.assetInterface.decodeFunctionResult(methods[0], returnData[i + 1].returnData)[0]);
428
+ const liability = BigInt(WombatPool.assetInterface.decodeFunctionResult(methods[1], returnData[i + 2].returnData)[0]);
429
+ const underlyingTokenDecimals = WombatPool.assetInterface.decodeFunctionResult(methods[2], returnData[i + 3].returnData)[0];
430
+ let relativePrice;
431
+ if (returnData[i + 4].success) {
432
+ relativePrice = BigInt(WombatPool.assetInterface.decodeFunctionResult(methods[3], returnData[i + 4].returnData)[0]);
155
433
  }
156
- this.asset2TokenMap.set(asset, token);
157
- this._cachedMultiCallData = undefined;
434
+ assetStates.push({
435
+ address: assets[i / (methods.length + 1)],
436
+ paused,
437
+ cash,
438
+ liability,
439
+ underlyingTokenDecimals,
440
+ relativePrice,
441
+ });
158
442
  }
443
+ return assetStates;
159
444
  }
160
445
  }
161
446
  exports.WombatPool = WombatPool;
162
- WombatPool.poolInterface = new abi_1.Interface(pool_json_1.default);
447
+ WombatPool.poolV2Interface = new abi_1.Interface(pool_v2_json_1.default);
448
+ WombatPool.poolV3Interface = new abi_1.Interface(pool_v3_json_1.default);
163
449
  WombatPool.assetInterface = new abi_1.Interface(asset_json_1.default);
164
450
  //# sourceMappingURL=wombat-pool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wombat-pool.js","sourceRoot":"","sources":["../../../src/dex/wombat/wombat-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wombat-pool.js","sourceRoot":"","sources":["../../../src/dex/wombat/wombat-pool.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,7 @@ export declare class Wombat extends SimpleExchange implements IDex<WombatData> {
39
39
  constructor(network: Network, dexKey: string, dexHelper: IDexHelper, adapters?: import("../../types").AdapterMappings);
40
40
  init(blockNumber: number): Promise<void>;
41
41
  initializePricing(blockNumber: number): Promise<void>;
42
- onAssetAdded: (pool: Address, asset2TokenMap: Map<Address, Address>, blockNumber: number) => Promise<void>;
42
+ onAssetAdded: (pool: Address, blockNumber: number) => Promise<void>;
43
43
  getAdapters(side: SwapSide): {
44
44
  name: string;
45
45
  index: number;