@paraswap/dex-lib 2.42.30 → 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 (83) hide show
  1. package/build/abi/smardex/smardex-factory.json +185 -0
  2. package/build/abi/smardex/smardex-pool.json +578 -0
  3. package/build/abi/smardex/smardex-router.json +648 -0
  4. package/build/abi/trader-joe-v2_1/FactoryABI.json +0 -0
  5. package/build/abi/trader-joe-v2_1/PairABI.json +1493 -0
  6. package/build/abi/trader-joe-v2_1/RouterABI.json +1489 -0
  7. package/build/abi/wombat/pool-v2.json +1289 -0
  8. package/build/abi/wombat/pool-v3.json +2013 -0
  9. package/build/dex/index.js +2 -2
  10. package/build/dex/index.js.map +1 -1
  11. package/build/dex/smardex/subgraph-queries.d.ts +1 -0
  12. package/build/dex/smardex/subgraph-queries.js +17 -0
  13. package/build/dex/smardex/subgraph-queries.js.map +1 -0
  14. package/build/dex/smardex/usd-reserves.d.ts +23 -0
  15. package/build/dex/smardex/usd-reserves.js +86 -0
  16. package/build/dex/smardex/usd-reserves.js.map +1 -0
  17. package/build/dex/trader-joe-v2-1-2/config.d.ts +4 -0
  18. package/build/dex/trader-joe-v2-1-2/config.js +43 -0
  19. package/build/dex/trader-joe-v2-1-2/config.js.map +1 -0
  20. package/build/dex/trader-joe-v2-1-2/constants.d.ts +17 -0
  21. package/build/dex/trader-joe-v2-1-2/constants.js +19 -0
  22. package/build/dex/trader-joe-v2-1-2/constants.js.map +1 -0
  23. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.d.ts +60 -0
  24. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js +199 -0
  25. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2-pool.js.map +1 -0
  26. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.d.ts +49 -0
  27. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js +269 -0
  28. package/build/dex/trader-joe-v2-1-2/trader-joe-v2-1-2.js.map +1 -0
  29. package/build/dex/trader-joe-v2-1-2/types.d.ts +81 -0
  30. package/build/dex/trader-joe-v2-1-2/types.js +9 -0
  31. package/build/dex/trader-joe-v2-1-2/types.js.map +1 -0
  32. package/build/dex/trader-joe-v2_1/config.d.ts +4 -0
  33. package/build/dex/trader-joe-v2_1/config.js +43 -0
  34. package/build/dex/trader-joe-v2_1/config.js.map +1 -0
  35. package/build/dex/trader-joe-v2_1/constants.d.ts +16 -0
  36. package/build/dex/trader-joe-v2_1/constants.js +18 -0
  37. package/build/dex/trader-joe-v2_1/constants.js.map +1 -0
  38. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.d.ts +0 -0
  39. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js +384 -0
  40. package/build/dex/trader-joe-v2_1/trader-joe-v2.1.js.map +1 -0
  41. package/build/dex/trader-joe-v2_1/types.d.ts +39 -0
  42. package/build/dex/trader-joe-v2_1/types.js +3 -0
  43. package/build/dex/trader-joe-v2_1/types.js.map +1 -0
  44. package/build/dex/wombat/utils.d.ts +1 -0
  45. package/build/dex/wombat/utils.js +14 -1
  46. package/build/dex/wombat/utils.js.map +1 -1
  47. package/build/dex/wombat/wombat-bmw.d.ts +2 -2
  48. package/build/dex/wombat/wombat-bmw.js +8 -25
  49. package/build/dex/wombat/wombat-bmw.js.map +1 -1
  50. package/build/dex/wombat/wombat-pool-poller.d.ts +22 -0
  51. package/build/dex/wombat/wombat-pool-poller.js +164 -0
  52. package/build/dex/wombat/wombat-pool-poller.js.map +1 -0
  53. package/build/dex/wombat/wombat-pool.d.ts +51 -17
  54. package/build/dex/wombat/wombat-pool.js +398 -112
  55. package/build/dex/wombat/wombat-pool.js.map +1 -1
  56. package/build/dex/wombat/wombat.d.ts +1 -1
  57. package/build/dex/wombat/wombat.js +12 -18
  58. package/build/dex/wombat/wombat.js.map +1 -1
  59. package/package.json +1 -1
  60. package/src/abi/wombat/pool-v3.json +2013 -0
  61. package/src/dex/camelot/camelot-pool-discovery.test.ts +149 -0
  62. package/src/dex/index.ts +2 -2
  63. package/src/dex/wombat/utils.ts +20 -0
  64. package/src/dex/wombat/wombat-bmw.ts +8 -31
  65. package/src/dex/wombat/wombat-e2e.test.ts +13 -1
  66. package/src/dex/wombat/wombat-events.test.ts +147 -0
  67. package/src/dex/wombat/wombat-integration.test.ts +70 -111
  68. package/src/dex/wombat/wombat-pool.ts +623 -171
  69. package/src/dex/wombat/wombat.ts +13 -23
  70. package/tests/constants-e2e.ts +11 -1
  71. package/build/abi/algebra/AlgebraPool.abi.json +0 -727
  72. package/build/abi/uniswap-v3/UniswapV3Quoter.abi.json +0 -193
  73. package/build/dex/algebra/algebra-pool.d.ts +0 -46
  74. package/build/dex/algebra/algebra-pool.js +0 -336
  75. package/build/dex/algebra/algebra-pool.js.map +0 -1
  76. package/build/dex/quickswap/camelot-v3.d.ts +0 -6
  77. package/build/dex/quickswap/camelot-v3.js +0 -19
  78. package/build/dex/quickswap/camelot-v3.js.map +0 -1
  79. package/build/dex/quickswap/zyberswap-v3.d.ts +0 -6
  80. package/build/dex/quickswap/zyberswap-v3.js +0 -19
  81. package/build/dex/quickswap/zyberswap-v3.js.map +0 -1
  82. package/build/dex/uniswap-v2/rebase-tokens.json +0 -7
  83. /package/src/abi/wombat/{pool.json → pool-v2.json} +0 -0
@@ -0,0 +1,164 @@
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.WombatPool = void 0;
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"));
14
+ const asset_json_1 = __importDefault(require("../../abi/wombat/asset.json"));
15
+ 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);
20
+ this.poolAddress = poolAddress;
21
+ this.asset2TokenMap = asset2TokenMap;
22
+ }
23
+ _getFetchStateMultiCalls() {
24
+ const params = [];
25
+ params.push({
26
+ target: this.poolAddress,
27
+ callData: WombatPool.poolInterface.encodeFunctionData('paused'),
28
+ decodeFunction: decoders_1.booleanDecode,
29
+ });
30
+ params.push({
31
+ target: this.poolAddress,
32
+ callData: WombatPool.poolInterface.encodeFunctionData('ampFactor'),
33
+ decodeFunction: decoders_1.uint256ToBigInt,
34
+ });
35
+ params.push({
36
+ target: this.poolAddress,
37
+ callData: WombatPool.poolInterface.encodeFunctionData('haircutRate'),
38
+ decodeFunction: decoders_1.uint256ToBigInt,
39
+ });
40
+ params.push({
41
+ target: this.poolAddress,
42
+ callData: WombatPool.poolInterface.encodeFunctionData('startCovRatio'),
43
+ decodeFunction: decoders_1.uint256ToBigInt,
44
+ });
45
+ params.push({
46
+ target: this.poolAddress,
47
+ callData: WombatPool.poolInterface.encodeFunctionData('endCovRatio'),
48
+ decodeFunction: decoders_1.uint256ToBigInt,
49
+ });
50
+ params.push({
51
+ 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
+ });
101
+ });
102
+ const poolState = {
103
+ params: {
104
+ paused,
105
+ ampFactor,
106
+ haircutRate,
107
+ startCovRatio,
108
+ endCovRatio,
109
+ },
110
+ underlyingAddresses: tokens,
111
+ asset: {},
112
+ };
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);
120
+ if (isMainPool) {
121
+ poolState.asset[token].relativePrice = undefined;
122
+ }
123
+ }
124
+ return poolState;
125
+ }
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);
135
+ }
136
+ catch (e) {
137
+ this._logMessageWithSuppression('ERROR_FETCHING_STATE_FROM_RPC', e);
138
+ }
139
+ return null;
140
+ }
141
+ parseStateFromMultiResultsWithBlockInfo(multiOutputs, lastUpdatedAtMs) {
142
+ const [blockNumber, ...outputsForAbstract] = multiOutputs.map((m, i) => {
143
+ return m.returnData;
144
+ });
145
+ return {
146
+ value: this._parseStateFromMultiResults(outputsForAbstract),
147
+ blockNumber,
148
+ lastUpdatedAtMs,
149
+ };
150
+ }
151
+ addAssets(asset2TokenMap) {
152
+ for (const [asset, token] of asset2TokenMap) {
153
+ if (this.asset2TokenMap.has(asset)) {
154
+ continue;
155
+ }
156
+ this.asset2TokenMap.set(asset, token);
157
+ this._cachedMultiCallData = undefined;
158
+ }
159
+ }
160
+ }
161
+ exports.WombatPool = WombatPool;
162
+ WombatPool.poolInterface = new abi_1.Interface(pool_json_1.default);
163
+ WombatPool.assetInterface = new abi_1.Interface(asset_json_1.default);
164
+ //# sourceMappingURL=wombat-pool-poller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wombat-pool-poller.js","sourceRoot":"","sources":["../../../src/dex/wombat/wombat-pool-poller.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,56 @@
1
1
  import { Interface } from '@ethersproject/abi';
2
- import { Address } from '@paraswap/core';
3
- import { MultiCallParams, MultiResult } from '../../lib/multi-wrapper';
2
+ import { AsyncOrSync, DeepReadonly } from 'ts-essentials';
3
+ import { Address, Log, Logger } from '../../types';
4
+ import { InitializeStateOptions, StatefulEventSubscriber } from '../../stateful-event-subscriber';
4
5
  import { IDexHelper } from '../../dex-helper';
5
- import { StatefulRpcPoller } from '../../lib/stateful-rpc-poller/stateful-rpc-poller';
6
- import { ObjWithUpdateInfo } from '../../lib/stateful-rpc-poller/types';
7
- import { MulticallResultOutputs, PoolState } from './types';
8
- export declare class WombatPool extends StatefulRpcPoller<PoolState, MulticallResultOutputs> {
6
+ import { BlockHeader } from 'web3-eth';
7
+ import { PoolState } from './types';
8
+ export declare class WombatPool extends StatefulEventSubscriber<PoolState> {
9
+ protected network: number;
10
+ protected dexHelper: IDexHelper;
9
11
  protected poolAddress: Address;
10
- protected asset2TokenMap: Map<Address, Address>;
11
- static readonly poolInterface: Interface;
12
+ static readonly poolV2Interface: Interface;
13
+ static readonly poolV3Interface: Interface;
12
14
  static readonly assetInterface: Interface;
13
- constructor(dexKey: string, poolIdentifier: string, dexHelper: IDexHelper, poolAddress: Address, asset2TokenMap: Map<Address, Address>);
14
- protected _getFetchStateMultiCalls(): MultiCallParams<MulticallResultOutputs>[];
15
- protected _parseStateFromMultiResults(multiOutputs: MulticallResultOutputs[]): PoolState;
16
- fetchLatestStateFromRpc(): Promise<ObjWithUpdateInfo<PoolState> | null>;
17
- parseStateFromMultiResultsWithBlockInfo(multiOutputs: [
18
- MultiResult<number>,
19
- ...MultiResult<MulticallResultOutputs>[]
20
- ], lastUpdatedAtMs: number): ObjWithUpdateInfo<PoolState>;
21
- addAssets(asset2TokenMap: Map<Address, Address>): void;
15
+ private rpcCallCount;
16
+ private handlers;
17
+ private poolInterface;
18
+ private eventRefetched;
19
+ blankState: PoolState;
20
+ constructor(dexKey: string, name: string, network: number, dexHelper: IDexHelper, logger: Logger, poolAddress: Address);
21
+ initialize(blockNumber: number, options?: InitializeStateOptions<PoolState>): Promise<void>;
22
+ protected processBlockLogs(state: DeepReadonly<PoolState>, logs: Readonly<Log>[], blockHeader: Readonly<BlockHeader>): Promise<DeepReadonly<PoolState> | null>;
23
+ /**
24
+ * The function is called every time any of the subscribed
25
+ * addresses release log. The function accepts the current
26
+ * state, updates the state according to the log, and returns
27
+ * the updated state.
28
+ * @param state - Current state of event subscriber
29
+ * @param log - Log released by one of the subscribed addresses
30
+ * @param blockHeader
31
+ * @returns Updates state of the event subscriber after the log
32
+ */
33
+ protected processLog(state: DeepReadonly<PoolState>, log: Readonly<Log>, blockHeader: Readonly<BlockHeader>): Promise<DeepReadonly<PoolState> | null>;
34
+ /**
35
+ * The function generates state using on-chain calls. This
36
+ * function is called to regenerate state if the event based
37
+ * system fails to fetch events and the local state is no
38
+ * more correct.
39
+ * @param blockNumber - Blocknumber for which the state should
40
+ * should be generated
41
+ * @returns state of the event subscriber at blocknumber
42
+ */
43
+ generateState(blockNumber: number): Promise<DeepReadonly<PoolState>>;
44
+ handleSwap(event: any, state: DeepReadonly<PoolState>, log: Readonly<Log>): AsyncOrSync<DeepReadonly<PoolState> | null>;
45
+ handleSwapV2(event: any, state: DeepReadonly<PoolState>, _log: Readonly<Log>): AsyncOrSync<DeepReadonly<PoolState> | null>;
46
+ handleSetAmpFactor(event: any, state: DeepReadonly<PoolState>, _log: Readonly<Log>): AsyncOrSync<DeepReadonly<PoolState> | null>;
47
+ handleSetHaircutRate(event: any, state: DeepReadonly<PoolState>, _log: Readonly<Log>): AsyncOrSync<DeepReadonly<PoolState> | null>;
48
+ handleAssetAdded(event: any, state: DeepReadonly<PoolState>, log: Readonly<Log>): Promise<DeepReadonly<PoolState> | null>;
49
+ handleAssetRemoved(event: any, state: DeepReadonly<PoolState>, _log: Readonly<Log>): Promise<DeepReadonly<PoolState> | null>;
50
+ handleFillPool(event: any, state: DeepReadonly<PoolState>, _log: Readonly<Log>): Promise<DeepReadonly<PoolState> | null>;
51
+ handlePaused(event: any, state: DeepReadonly<PoolState>, _log: Readonly<Log>): Promise<DeepReadonly<PoolState> | null>;
52
+ handleUnpaused(event: any, state: DeepReadonly<PoolState>, _log: Readonly<Log>): Promise<DeepReadonly<PoolState> | null>;
53
+ handlePausedAsset(event: any, state: DeepReadonly<PoolState>, _log: Readonly<Log>): Promise<DeepReadonly<PoolState> | null>;
54
+ handleUnpausedAsset(event: any, state: DeepReadonly<PoolState>, _log: Readonly<Log>): Promise<DeepReadonly<PoolState> | null>;
55
+ private getAssetState;
22
56
  }