@paraswap/dex-lib 4.7.5-unified-blacklist.2 → 4.7.5-unified-blacklist.3

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 (96) hide show
  1. package/build/dex/idle-dao/idle-dao.d.ts +1 -0
  2. package/build/dex/idle-dao/idle-dao.js +23 -11
  3. package/build/dex/idle-dao/idle-dao.js.map +1 -1
  4. package/build/dex/maker-psm/maker-psm-event-pool.d.ts +43 -0
  5. package/build/dex/maker-psm/maker-psm-event-pool.js +132 -0
  6. package/build/dex/maker-psm/maker-psm-event-pool.js.map +1 -0
  7. package/build/dex/maker-psm/maker-psm.d.ts +4 -41
  8. package/build/dex/maker-psm/maker-psm.js +40 -143
  9. package/build/dex/maker-psm/maker-psm.js.map +1 -1
  10. package/build/dex/simple-exchange-with-restrictions.d.ts +6 -0
  11. package/build/dex/simple-exchange-with-restrictions.js +15 -6
  12. package/build/dex/simple-exchange-with-restrictions.js.map +1 -1
  13. package/build/dex/uniswap-v4/contract-math/Position.d.ts +6 -0
  14. package/build/dex/uniswap-v4/contract-math/Position.js +29 -0
  15. package/build/dex/uniswap-v4/contract-math/Position.js.map +1 -1
  16. package/build/dex/uniswap-v4/liquidity.d.ts +9 -0
  17. package/build/dex/uniswap-v4/liquidity.js +74 -0
  18. package/build/dex/uniswap-v4/liquidity.js.map +1 -0
  19. package/package.json +1 -1
  20. package/build/abi/BProtocol.json +0 -1155
  21. package/build/abi/Jarvis.json +0 -1172
  22. package/build/abi/MStableAsset.json +0 -1545
  23. package/build/abi/OneInchLp.json +0 -1304
  24. package/build/abi/Onebit.json +0 -736
  25. package/build/abi/Shell.json +0 -1294
  26. package/build/abi/TraderJoeV2Router.json +0 -50
  27. package/build/abi/wUSDM.json +0 -757
  28. package/build/abi/zrx.v2.json +0 -1967
  29. package/build/abi/zrx.v3.json +0 -3454
  30. package/build/abi/zrx.v4.json +0 -2193
  31. package/build/dex/OneInchLp.d.ts +0 -24
  32. package/build/dex/OneInchLp.js +0 -43
  33. package/build/dex/OneInchLp.js.map +0 -1
  34. package/build/dex/bProtocol/bProtocol.d.ts +0 -15
  35. package/build/dex/bProtocol/bProtocol.js +0 -56
  36. package/build/dex/bProtocol/bProtocol.js.map +0 -1
  37. package/build/dex/bProtocol/types.d.ts +0 -11
  38. package/build/dex/bProtocol/types.js +0 -8
  39. package/build/dex/bProtocol/types.js.map +0 -1
  40. package/build/dex/jarvis.d.ts +0 -56
  41. package/build/dex/jarvis.js +0 -163
  42. package/build/dex/jarvis.js.map +0 -1
  43. package/build/dex/mStable.d.ts +0 -44
  44. package/build/dex/mStable.js +0 -75
  45. package/build/dex/mStable.js.map +0 -1
  46. package/build/dex/onebit/onebit.d.ts +0 -16
  47. package/build/dex/onebit/onebit.js +0 -61
  48. package/build/dex/onebit/onebit.js.map +0 -1
  49. package/build/dex/onebit/types.d.ts +0 -14
  50. package/build/dex/onebit/types.js +0 -8
  51. package/build/dex/onebit/types.js.map +0 -1
  52. package/build/dex/shell.d.ts +0 -25
  53. package/build/dex/shell.js +0 -41
  54. package/build/dex/shell.js.map +0 -1
  55. package/build/dex/trader-joe-v2.d.ts +0 -40
  56. package/build/dex/trader-joe-v2.js +0 -74
  57. package/build/dex/trader-joe-v2.js.map +0 -1
  58. package/build/dex/uniswap-v3/uniswap-v3-new.d.ts +0 -94
  59. package/build/dex/uniswap-v3/uniswap-v3-new.js +0 -923
  60. package/build/dex/uniswap-v3/uniswap-v3-new.js.map +0 -1
  61. package/build/dex/usual-bond/config.d.ts +0 -3
  62. package/build/dex/usual-bond/config.js +0 -13
  63. package/build/dex/usual-bond/config.js.map +0 -1
  64. package/build/dex/usual-bond/types.d.ts +0 -7
  65. package/build/dex/usual-bond/types.js +0 -3
  66. package/build/dex/usual-bond/types.js.map +0 -1
  67. package/build/dex/usual-bond/usual-bond.d.ts +0 -35
  68. package/build/dex/usual-bond/usual-bond.js +0 -176
  69. package/build/dex/usual-bond/usual-bond.js.map +0 -1
  70. package/build/dex/wusdm/config.d.ts +0 -3
  71. package/build/dex/wusdm/config.js +0 -43
  72. package/build/dex/wusdm/config.js.map +0 -1
  73. package/build/dex/wusdm/constants.d.ts +0 -2
  74. package/build/dex/wusdm/constants.js +0 -6
  75. package/build/dex/wusdm/constants.js.map +0 -1
  76. package/build/dex/wusdm/types.d.ts +0 -18
  77. package/build/dex/wusdm/types.js +0 -11
  78. package/build/dex/wusdm/types.js.map +0 -1
  79. package/build/dex/wusdm/wusdm-pool.d.ts +0 -21
  80. package/build/dex/wusdm/wusdm-pool.js +0 -74
  81. package/build/dex/wusdm/wusdm-pool.js.map +0 -1
  82. package/build/dex/wusdm/wusdm.d.ts +0 -46
  83. package/build/dex/wusdm/wusdm.js +0 -243
  84. package/build/dex/wusdm/wusdm.js.map +0 -1
  85. package/build/dex/zerox/config.d.ts +0 -2
  86. package/build/dex/zerox/config.js +0 -33
  87. package/build/dex/zerox/config.js.map +0 -1
  88. package/build/dex/zerox/index.d.ts +0 -22
  89. package/build/dex/zerox/index.js +0 -225
  90. package/build/dex/zerox/index.js.map +0 -1
  91. package/build/dex/zerox/order.d.ts +0 -88
  92. package/build/dex/zerox/order.js +0 -53
  93. package/build/dex/zerox/order.js.map +0 -1
  94. package/build/dex/zerox/types.d.ts +0 -73
  95. package/build/dex/zerox/types.js +0 -21
  96. package/build/dex/zerox/types.js.map +0 -1
@@ -38,5 +38,6 @@ export declare class IdleDao extends SimpleExchange implements IDex<IdleDaoData>
38
38
  getCalldataGasCost(poolPrices: PoolPrices<IdleDaoData>): number | number[];
39
39
  getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: IdleDaoData, side: SwapSide): AdapterExchangeParam;
40
40
  getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: IdleDaoData, side: SwapSide, _: Context, executorAddress: Address): DexExchangeParam;
41
+ updatePoolState(): Promise<void>;
41
42
  getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
42
43
  }
@@ -242,25 +242,36 @@ class IdleDao extends simple_exchange_1.SimpleExchange {
242
242
  skipApproval: data.fromIdleToken,
243
243
  };
244
244
  }
245
- async getTopPoolsForToken(tokenAddress, limit) {
245
+ async updatePoolState() {
246
246
  await this.initializeTokens();
247
+ }
248
+ async getTopPoolsForToken(tokenAddress, limit) {
247
249
  const idleTokens = (0, tokens_1.getPoolsByTokenAddress)(this.network, tokenAddress);
248
250
  if (idleTokens.length > 0) {
249
- return idleTokens
250
- .map((idleToken) => ({
251
- // liquidity is infinite, tokens are minted when swapping for idle tokens
252
- liquidityUSD: 1e8,
253
- exchange: this.dexKey,
254
- address: idleToken.cdoAddress,
255
- connectorTokens: [(0, tokens_1.getTokenFromIdleToken)(idleToken)],
256
- }))
257
- .slice(0, limit);
251
+ const poolMap = {};
252
+ idleTokens.forEach((idleToken) => {
253
+ const cdoAddress = idleToken.cdoAddress;
254
+ const token = (0, tokens_1.getTokenFromIdleToken)(idleToken);
255
+ if (!poolMap[cdoAddress]) {
256
+ poolMap[cdoAddress] = {
257
+ exchange: this.dexKey,
258
+ address: cdoAddress,
259
+ connectorTokens: [token],
260
+ liquidityUSD: constants_1.UNLIMITED_USD_LIQUIDITY,
261
+ };
262
+ }
263
+ else {
264
+ if (!poolMap[cdoAddress].connectorTokens.some(t => t.address.toLowerCase() === token.address.toLowerCase())) {
265
+ poolMap[cdoAddress].connectorTokens.push(token);
266
+ }
267
+ }
268
+ });
269
+ return Object.values(poolMap);
258
270
  }
259
271
  const idleToken = (0, tokens_1.getIdleTokenByAddress)(this.network, tokenAddress.toLowerCase());
260
272
  if (idleToken) {
261
273
  return [
262
274
  {
263
- liquidityUSD: 1e9,
264
275
  exchange: this.dexKey,
265
276
  address: idleToken.cdoAddress,
266
277
  connectorTokens: [
@@ -269,6 +280,7 @@ class IdleDao extends simple_exchange_1.SimpleExchange {
269
280
  decimals: idleToken.decimals,
270
281
  },
271
282
  ],
283
+ liquidityUSD: constants_1.UNLIMITED_USD_LIQUIDITY,
272
284
  },
273
285
  ];
274
286
  }
@@ -1 +1 @@
1
- {"version":3,"file":"idle-dao.js","sourceRoot":"","sources":["../../../src/dex/idle-dao/idle-dao.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"idle-dao.js","sourceRoot":"","sources":["../../../src/dex/idle-dao/idle-dao.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { DeepReadonly } from 'ts-essentials';
2
+ import { Address, Log, Logger } from '../../types';
3
+ import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
4
+ import { IDexHelper } from '../../dex-helper/idex-helper';
5
+ import { PoolState, PoolConfig } from './types';
6
+ export declare class MakerPsmEventPool extends StatefulEventSubscriber<PoolState> {
7
+ protected network: number;
8
+ protected dexHelper: IDexHelper;
9
+ poolConfig: PoolConfig;
10
+ protected vatAddress: Address;
11
+ handlers: {
12
+ [event: string]: (event: any, pool: PoolState, log: Log) => PoolState;
13
+ };
14
+ logDecoder: (log: Log) => any;
15
+ to18ConversionFactor: bigint;
16
+ bytes32Tout: string;
17
+ bytes32Tin: string;
18
+ constructor(parentName: string, network: number, dexHelper: IDexHelper, logger: Logger, poolConfig: PoolConfig, vatAddress: Address);
19
+ handleFile(event: any, pool: PoolState, log: Log): PoolState;
20
+ handleSellGem(event: any, pool: PoolState, log: Log): PoolState;
21
+ handleBuyGem(event: any, pool: PoolState, log: Log): PoolState;
22
+ getIdentifier(): string;
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
+ * @returns Updates state of the event subscriber after the log
31
+ */
32
+ protected processLog(state: DeepReadonly<PoolState>, log: Readonly<Log>): DeepReadonly<PoolState> | null;
33
+ /**
34
+ * The function generates state using on-chain calls. This
35
+ * function is called to regenerate state if the event based
36
+ * system fails to fetch events and the local state is no
37
+ * more correct.
38
+ * @param blockNumber - Blocknumber for which the state should
39
+ * should be generated
40
+ * @returns state of the event subscriber at blocknumber
41
+ */
42
+ generateState(blockNumber: number): Promise<Readonly<PoolState>>;
43
+ }
@@ -0,0 +1,132 @@
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.MakerPsmEventPool = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
9
+ const utils_1 = require("../../utils");
10
+ const psm_json_1 = __importDefault(require("../../abi/maker-psm/psm.json"));
11
+ const vat_json_1 = __importDefault(require("../../abi/maker-psm/vat.json"));
12
+ const vatInterface = new abi_1.Interface(vat_json_1.default);
13
+ const psmInterface = new abi_1.Interface(psm_json_1.default);
14
+ const bigIntify = (b) => BigInt(b.toString());
15
+ async function getOnChainState(multiContract, poolConfigs, vatAddress, blockNumber) {
16
+ const callData = poolConfigs
17
+ .map(c => [
18
+ {
19
+ target: c.psmAddress,
20
+ callData: psmInterface.encodeFunctionData('tin', []),
21
+ },
22
+ {
23
+ target: c.psmAddress,
24
+ callData: psmInterface.encodeFunctionData('tout', []),
25
+ },
26
+ {
27
+ target: vatAddress,
28
+ callData: vatInterface.encodeFunctionData('ilks', [c.identifier]),
29
+ },
30
+ ])
31
+ .flat();
32
+ const res = await multiContract.methods
33
+ .aggregate(callData)
34
+ .call({}, blockNumber);
35
+ let i = 0;
36
+ return poolConfigs.map(c => {
37
+ const tin = bigIntify(psmInterface.decodeFunctionResult('tin', res.returnData[i++])[0]);
38
+ const tout = bigIntify(psmInterface.decodeFunctionResult('tout', res.returnData[i++])[0]);
39
+ const ilks = vatInterface.decodeFunctionResult('ilks', res.returnData[i++]);
40
+ const Art = bigIntify(ilks.Art);
41
+ const line = bigIntify(ilks.line);
42
+ const rate = bigIntify(ilks.rate);
43
+ return {
44
+ tin,
45
+ tout,
46
+ Art,
47
+ line,
48
+ rate,
49
+ };
50
+ });
51
+ }
52
+ class MakerPsmEventPool extends stateful_event_subscriber_1.StatefulEventSubscriber {
53
+ network;
54
+ dexHelper;
55
+ poolConfig;
56
+ vatAddress;
57
+ handlers = {};
58
+ logDecoder;
59
+ to18ConversionFactor;
60
+ bytes32Tout = '0x746f757400000000000000000000000000000000000000000000000000000000'; // bytes32('tout')
61
+ bytes32Tin = '0x74696e0000000000000000000000000000000000000000000000000000000000'; // bytes32('tin')
62
+ constructor(parentName, network, dexHelper, logger, poolConfig, vatAddress) {
63
+ super(parentName, poolConfig.identifier, dexHelper, logger);
64
+ this.network = network;
65
+ this.dexHelper = dexHelper;
66
+ this.poolConfig = poolConfig;
67
+ this.vatAddress = vatAddress;
68
+ this.logDecoder = (log) => psmInterface.parseLog(log);
69
+ this.addressesSubscribed = [poolConfig.psmAddress];
70
+ this.to18ConversionFactor = (0, utils_1.getBigIntPow)(18 - poolConfig.gem.decimals);
71
+ // Add handlers
72
+ this.handlers['File'] = this.handleFile.bind(this);
73
+ this.handlers['SellGem'] = this.handleSellGem.bind(this);
74
+ this.handlers['BuyGem'] = this.handleBuyGem.bind(this);
75
+ }
76
+ handleFile(event, pool, log) {
77
+ if (event.args.what === this.bytes32Tin) {
78
+ pool.tin = bigIntify(event.args.data);
79
+ }
80
+ else if (event.args.what === this.bytes32Tout) {
81
+ pool.tout = bigIntify(event.args.data);
82
+ }
83
+ return pool;
84
+ }
85
+ handleSellGem(event, pool, log) {
86
+ pool.Art += bigIntify(event.args.value) * this.to18ConversionFactor;
87
+ return pool;
88
+ }
89
+ handleBuyGem(event, pool, log) {
90
+ pool.Art -= bigIntify(event.args.value) * this.to18ConversionFactor;
91
+ return pool;
92
+ }
93
+ getIdentifier() {
94
+ return `${this.parentName}_${this.poolConfig.psmAddress}`.toLowerCase();
95
+ }
96
+ /**
97
+ * The function is called every time any of the subscribed
98
+ * addresses release log. The function accepts the current
99
+ * state, updates the state according to the log, and returns
100
+ * the updated state.
101
+ * @param state - Current state of event subscriber
102
+ * @param log - Log released by one of the subscribed addresses
103
+ * @returns Updates state of the event subscriber after the log
104
+ */
105
+ processLog(state, log) {
106
+ try {
107
+ const event = this.logDecoder(log);
108
+ if (event.name in this.handlers) {
109
+ return this.handlers[event.name](event, state, log);
110
+ }
111
+ return state;
112
+ }
113
+ catch (e) {
114
+ this.logger.error(`Error_${this.parentName}_processLog could not parse the log with topic ${log.topics}:`, e);
115
+ return null;
116
+ }
117
+ }
118
+ /**
119
+ * The function generates state using on-chain calls. This
120
+ * function is called to regenerate state if the event based
121
+ * system fails to fetch events and the local state is no
122
+ * more correct.
123
+ * @param blockNumber - Blocknumber for which the state should
124
+ * should be generated
125
+ * @returns state of the event subscriber at blocknumber
126
+ */
127
+ async generateState(blockNumber) {
128
+ return (await getOnChainState(this.dexHelper.multiContract, [this.poolConfig], this.vatAddress, blockNumber))[0];
129
+ }
130
+ }
131
+ exports.MakerPsmEventPool = MakerPsmEventPool;
132
+ //# sourceMappingURL=maker-psm-event-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maker-psm-event-pool.js","sourceRoot":"","sources":["../../../src/dex/maker-psm/maker-psm-event-pool.ts"],"names":[],"mappings":"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"}
@@ -1,50 +1,11 @@
1
- import { DeepReadonly } from 'ts-essentials';
2
- import { Token, Address, ExchangePrices, PoolPrices, Log, AdapterExchangeParam, SimpleExchangeParam, PoolLiquidity, Logger, NumberAsString, DexExchangeParam, ExchangeTxInfo, PreprocessTransactionOptions } from '../../types';
1
+ import { Token, Address, ExchangePrices, PoolPrices, AdapterExchangeParam, SimpleExchangeParam, PoolLiquidity, Logger, NumberAsString, DexExchangeParam, ExchangeTxInfo, PreprocessTransactionOptions } from '../../types';
3
2
  import { SwapSide, Network } from '../../constants';
4
- import { StatefulEventSubscriber } from '../../stateful-event-subscriber';
5
3
  import { IDex } from '../../dex/idex';
6
4
  import { IDexHelper } from '../../dex-helper/idex-helper';
7
5
  import { MakerPsmData, PoolState, PoolConfig, MakerPsmDirectPayload } from './types';
8
6
  import { SimpleExchange } from '../simple-exchange';
9
7
  import { OptimalSwapExchange } from '@paraswap/core';
10
- export declare class MakerPsmEventPool extends StatefulEventSubscriber<PoolState> {
11
- protected network: number;
12
- protected dexHelper: IDexHelper;
13
- poolConfig: PoolConfig;
14
- protected vatAddress: Address;
15
- handlers: {
16
- [event: string]: (event: any, pool: PoolState, log: Log) => PoolState;
17
- };
18
- logDecoder: (log: Log) => any;
19
- to18ConversionFactor: bigint;
20
- bytes32Tout: string;
21
- bytes32Tin: string;
22
- constructor(parentName: string, network: number, dexHelper: IDexHelper, logger: Logger, poolConfig: PoolConfig, vatAddress: Address);
23
- handleFile(event: any, pool: PoolState, log: Log): PoolState;
24
- handleSellGem(event: any, pool: PoolState, log: Log): PoolState;
25
- handleBuyGem(event: any, pool: PoolState, log: Log): PoolState;
26
- getIdentifier(): string;
27
- /**
28
- * The function is called every time any of the subscribed
29
- * addresses release log. The function accepts the current
30
- * state, updates the state according to the log, and returns
31
- * the updated state.
32
- * @param state - Current state of event subscriber
33
- * @param log - Log released by one of the subscribed addresses
34
- * @returns Updates state of the event subscriber after the log
35
- */
36
- protected processLog(state: DeepReadonly<PoolState>, log: Readonly<Log>): DeepReadonly<PoolState> | null;
37
- /**
38
- * The function generates state using on-chain calls. This
39
- * function is called to regenerate state if the event based
40
- * system fails to fetch events and the local state is no
41
- * more correct.
42
- * @param blockNumber - Blocknumber for which the state should
43
- * should be generated
44
- * @returns state of the event subscriber at blocknumber
45
- */
46
- generateState(blockNumber: number): Promise<Readonly<PoolState>>;
47
- }
8
+ import { MakerPsmEventPool } from './maker-psm-event-pool';
48
9
  export declare class MakerPsm extends SimpleExchange implements IDex<MakerPsmData, MakerPsmDirectPayload> {
49
10
  protected network: Network;
50
11
  protected dexHelper: IDexHelper;
@@ -75,6 +36,7 @@ export declare class MakerPsm extends SimpleExchange implements IDex<MakerPsmDat
75
36
  }, dai?: Token, vatAddress?: Address, poolConfigs?: PoolConfig[]);
76
37
  static getDirectFunctionNameV6(): string[];
77
38
  initializePricing(blockNumber: number): Promise<void>;
39
+ private initializeEventPools;
78
40
  getAdapters(side: SwapSide): {
79
41
  name: string;
80
42
  index: number;
@@ -99,5 +61,6 @@ export declare class MakerPsm extends SimpleExchange implements IDex<MakerPsmDat
99
61
  encoder: (...params: (string | MakerPsmDirectPayload)[]) => string;
100
62
  networkFee: string;
101
63
  };
64
+ updatePoolState(): Promise<void>;
102
65
  getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
103
66
  }
@@ -36,143 +36,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.MakerPsm = exports.MakerPsmEventPool = void 0;
39
+ exports.MakerPsm = void 0;
40
40
  const abi_1 = require("@ethersproject/abi");
41
41
  const constants_1 = require("../../constants");
42
42
  const CALLDATA_GAS_COST = __importStar(require("../../calldata-gas-cost"));
43
- const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
44
43
  const utils_1 = require("../../utils");
45
44
  const simple_exchange_1 = require("../simple-exchange");
46
45
  const config_1 = require("./config");
47
46
  const psm_json_1 = __importDefault(require("../../abi/maker-psm/psm.json"));
48
- const vat_json_1 = __importDefault(require("../../abi/maker-psm/vat.json"));
49
47
  const bigint_constants_1 = require("../../bigint-constants");
50
48
  const types_1 = require("../../executor/types");
51
49
  const bytes_1 = require("@ethersproject/bytes");
52
50
  const core_1 = require("@paraswap/core");
53
51
  const ethers_1 = require("ethers");
54
- const vatInterface = new abi_1.Interface(vat_json_1.default);
52
+ const maker_psm_event_pool_1 = require("./maker-psm-event-pool");
55
53
  const psmInterface = new abi_1.Interface(psm_json_1.default);
56
54
  const WAD = bigint_constants_1.BI_POWS[18];
57
- const bigIntify = (b) => BigInt(b.toString());
58
55
  const ceilDiv = (a, b) => (a + b - 1n) / b;
59
- async function getOnChainState(multiContract, poolConfigs, vatAddress, blockNumber) {
60
- const callData = poolConfigs
61
- .map(c => [
62
- {
63
- target: c.psmAddress,
64
- callData: psmInterface.encodeFunctionData('tin', []),
65
- },
66
- {
67
- target: c.psmAddress,
68
- callData: psmInterface.encodeFunctionData('tout', []),
69
- },
70
- {
71
- target: vatAddress,
72
- callData: vatInterface.encodeFunctionData('ilks', [c.identifier]),
73
- },
74
- ])
75
- .flat();
76
- const res = await multiContract.methods
77
- .aggregate(callData)
78
- .call({}, blockNumber);
79
- let i = 0;
80
- return poolConfigs.map(c => {
81
- const tin = bigIntify(psmInterface.decodeFunctionResult('tin', res.returnData[i++])[0]);
82
- const tout = bigIntify(psmInterface.decodeFunctionResult('tout', res.returnData[i++])[0]);
83
- const ilks = vatInterface.decodeFunctionResult('ilks', res.returnData[i++]);
84
- const Art = bigIntify(ilks.Art);
85
- const line = bigIntify(ilks.line);
86
- const rate = bigIntify(ilks.rate);
87
- return {
88
- tin,
89
- tout,
90
- Art,
91
- line,
92
- rate,
93
- };
94
- });
95
- }
96
- class MakerPsmEventPool extends stateful_event_subscriber_1.StatefulEventSubscriber {
97
- network;
98
- dexHelper;
99
- poolConfig;
100
- vatAddress;
101
- handlers = {};
102
- logDecoder;
103
- to18ConversionFactor;
104
- bytes32Tout = '0x746f757400000000000000000000000000000000000000000000000000000000'; // bytes32('tout')
105
- bytes32Tin = '0x74696e0000000000000000000000000000000000000000000000000000000000'; // bytes32('tin')
106
- constructor(parentName, network, dexHelper, logger, poolConfig, vatAddress) {
107
- super(parentName, poolConfig.identifier, dexHelper, logger);
108
- this.network = network;
109
- this.dexHelper = dexHelper;
110
- this.poolConfig = poolConfig;
111
- this.vatAddress = vatAddress;
112
- this.logDecoder = (log) => psmInterface.parseLog(log);
113
- this.addressesSubscribed = [poolConfig.psmAddress];
114
- this.to18ConversionFactor = (0, utils_1.getBigIntPow)(18 - poolConfig.gem.decimals);
115
- // Add handlers
116
- this.handlers['File'] = this.handleFile.bind(this);
117
- this.handlers['SellGem'] = this.handleSellGem.bind(this);
118
- this.handlers['BuyGem'] = this.handleBuyGem.bind(this);
119
- }
120
- handleFile(event, pool, log) {
121
- if (event.args.what === this.bytes32Tin) {
122
- pool.tin = bigIntify(event.args.data);
123
- }
124
- else if (event.args.what === this.bytes32Tout) {
125
- pool.tout = bigIntify(event.args.data);
126
- }
127
- return pool;
128
- }
129
- handleSellGem(event, pool, log) {
130
- pool.Art += bigIntify(event.args.value) * this.to18ConversionFactor;
131
- return pool;
132
- }
133
- handleBuyGem(event, pool, log) {
134
- pool.Art -= bigIntify(event.args.value) * this.to18ConversionFactor;
135
- return pool;
136
- }
137
- getIdentifier() {
138
- return `${this.parentName}_${this.poolConfig.psmAddress}`.toLowerCase();
139
- }
140
- /**
141
- * The function is called every time any of the subscribed
142
- * addresses release log. The function accepts the current
143
- * state, updates the state according to the log, and returns
144
- * the updated state.
145
- * @param state - Current state of event subscriber
146
- * @param log - Log released by one of the subscribed addresses
147
- * @returns Updates state of the event subscriber after the log
148
- */
149
- processLog(state, log) {
150
- try {
151
- const event = this.logDecoder(log);
152
- if (event.name in this.handlers) {
153
- return this.handlers[event.name](event, state, log);
154
- }
155
- return state;
156
- }
157
- catch (e) {
158
- this.logger.error(`Error_${this.parentName}_processLog could not parse the log with topic ${log.topics}:`, e);
159
- return null;
160
- }
161
- }
162
- /**
163
- * The function generates state using on-chain calls. This
164
- * function is called to regenerate state if the event based
165
- * system fails to fetch events and the local state is no
166
- * more correct.
167
- * @param blockNumber - Blocknumber for which the state should
168
- * should be generated
169
- * @returns state of the event subscriber at blocknumber
170
- */
171
- async generateState(blockNumber) {
172
- return (await getOnChainState(this.dexHelper.multiContract, [this.poolConfig], this.vatAddress, blockNumber))[0];
173
- }
174
- }
175
- exports.MakerPsmEventPool = MakerPsmEventPool;
176
56
  class MakerPsm extends simple_exchange_1.SimpleExchange {
177
57
  network;
178
58
  dexHelper;
@@ -196,18 +76,23 @@ class MakerPsm extends simple_exchange_1.SimpleExchange {
196
76
  this.poolConfigs = poolConfigs;
197
77
  this.logger = dexHelper.getLogger(dexKey);
198
78
  this.eventPools = {};
199
- poolConfigs.forEach(p => (this.eventPools[p.gem.address.toLowerCase()] = new MakerPsmEventPool(dexKey, network, dexHelper, this.logger, p, this.vatAddress)));
79
+ poolConfigs.forEach(p => (this.eventPools[p.gem.address.toLowerCase()] = new maker_psm_event_pool_1.MakerPsmEventPool(dexKey, network, dexHelper, this.logger, p, this.vatAddress)));
200
80
  }
201
81
  static getDirectFunctionNameV6() {
202
82
  return [core_1.ContractMethodV6.swapExactAmountInOutOnMakerPSM];
203
83
  }
204
84
  async initializePricing(blockNumber) {
205
- const poolStates = await getOnChainState(this.dexHelper.multiContract, this.poolConfigs, this.vatAddress, blockNumber);
206
- await Promise.all(this.poolConfigs.map(async (p, i) => {
207
- const eventPool = this.eventPools[p.gem.address.toLowerCase()];
208
- await eventPool.initialize(blockNumber, {
209
- state: poolStates[i],
210
- });
85
+ await this.initializeEventPools(blockNumber);
86
+ }
87
+ async initializeEventPools(blockNumber, subscribe = true) {
88
+ await Promise.all(Object.values(this.eventPools).map(async (eventPool) => {
89
+ if (subscribe) {
90
+ await eventPool.initialize(blockNumber);
91
+ }
92
+ else {
93
+ const state = await eventPool.generateState(blockNumber);
94
+ eventPool.setState(state, blockNumber);
95
+ }
211
96
  }));
212
97
  }
213
98
  // Returns the list of contract adapters (name and index)
@@ -460,33 +345,45 @@ class MakerPsm extends simple_exchange_1.SimpleExchange {
460
345
  };
461
346
  return { params: payload, encoder, networkFee: '0' };
462
347
  }
348
+ async updatePoolState() {
349
+ const blockNumber = await this.dexHelper.web3Provider.eth.getBlockNumber();
350
+ await this.initializeEventPools(blockNumber, false);
351
+ }
463
352
  // Returns list of top pools based on liquidity. Max
464
353
  // limit number pools should be returned.
465
354
  async getTopPoolsForToken(tokenAddress, limit) {
466
- const _tokenAddress = tokenAddress.toLowerCase();
355
+ const token = tokenAddress.toLowerCase();
356
+ const isDAI = this.dai.address.toLowerCase() === token;
467
357
  // Liquidity depends on the swapping side hence we simply use the min
468
358
  // Its always in terms of stable coin hence liquidityUSD = liquidity
469
359
  const minLiq = (poolState) => {
470
360
  const buyLimit = poolState.Art;
471
361
  const sellLimit = (poolState.line - poolState.Art * poolState.rate) / poolState.rate;
472
- return (2 *
473
- parseInt(((buyLimit > sellLimit ? sellLimit : buyLimit) / bigint_constants_1.BI_POWS[18]).toString()));
362
+ const minLimit = buyLimit < sellLimit ? buyLimit : sellLimit;
363
+ const liquidity = Number(minLimit) / Number(bigint_constants_1.BI_POWS[18]);
364
+ return liquidity > 0 ? 2 * liquidity : 0;
474
365
  };
475
- const isDai = _tokenAddress === this.dai.address;
476
- const validPoolConfigs = isDai
366
+ const validPoolConfigs = isDAI
477
367
  ? this.poolConfigs
478
- : this.eventPools[_tokenAddress]
479
- ? [this.eventPools[_tokenAddress].poolConfig]
368
+ : this.eventPools[token]
369
+ ? [this.eventPools[token].poolConfig]
480
370
  : [];
481
371
  if (!validPoolConfigs.length)
482
372
  return [];
483
- const poolStates = await getOnChainState(this.dexHelper.multiContract, validPoolConfigs, this.vatAddress, 'latest');
484
- return validPoolConfigs.map((p, i) => ({
485
- exchange: this.dexKey,
486
- address: p.psmAddress,
487
- liquidityUSD: minLiq(poolStates[i]),
488
- connectorTokens: [isDai ? p.gem : this.dai],
489
- }));
373
+ const pools = validPoolConfigs.map(config => {
374
+ const eventPoolKey = config.gem.address.toLowerCase();
375
+ const eventPool = this.eventPools[eventPoolKey];
376
+ const state = eventPool?.getStaleState();
377
+ if (!state)
378
+ return null;
379
+ return {
380
+ exchange: this.dexKey,
381
+ address: config.psmAddress,
382
+ liquidityUSD: minLiq(state),
383
+ connectorTokens: [isDAI ? config.gem : this.dai],
384
+ };
385
+ });
386
+ return pools.filter(p => !!p).slice(0, limit);
490
387
  }
491
388
  }
492
389
  exports.MakerPsm = MakerPsm;