@paraswap/dex-lib 4.7.24-inactive-dexs-cleanup.0 → 4.7.24-inactive-dexs-cleanup.1

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 (112) hide show
  1. package/build/abi/ekubo-v3/core.json +797 -0
  2. package/build/abi/ekubo-v3/mev-capture-router.json +936 -0
  3. package/build/abi/ekubo-v3/quote-data-fetcher.json +161 -0
  4. package/build/abi/ekubo-v3/twamm-data-fetcher.json +216 -0
  5. package/build/abi/ekubo-v3/twamm.json +613 -0
  6. package/build/dex/angle-staked-stable/config.js +0 -32
  7. package/build/dex/angle-staked-stable/config.js.map +1 -1
  8. package/build/dex/dodo-v1/config.js +0 -10
  9. package/build/dex/dodo-v1/config.js.map +1 -1
  10. package/build/dex/ekubo-v3/config.d.ts +13 -0
  11. package/build/dex/ekubo-v3/config.js +23 -0
  12. package/build/dex/ekubo-v3/config.js.map +1 -0
  13. package/build/dex/ekubo-v3/ekubo-v3-pool-manager.d.ts +34 -0
  14. package/build/dex/ekubo-v3/ekubo-v3-pool-manager.js +421 -0
  15. package/build/dex/ekubo-v3/ekubo-v3-pool-manager.js.map +1 -0
  16. package/build/dex/ekubo-v3/ekubo-v3.d.ts +38 -0
  17. package/build/dex/ekubo-v3/ekubo-v3.js +274 -0
  18. package/build/dex/ekubo-v3/ekubo-v3.js.map +1 -0
  19. package/build/dex/ekubo-v3/pools/base.d.ts +42 -0
  20. package/build/dex/ekubo-v3/pools/base.js +307 -0
  21. package/build/dex/ekubo-v3/pools/base.js.map +1 -0
  22. package/build/dex/ekubo-v3/pools/full-range.d.ts +25 -0
  23. package/build/dex/ekubo-v3/pools/full-range.js +105 -0
  24. package/build/dex/ekubo-v3/pools/full-range.js.map +1 -0
  25. package/build/dex/ekubo-v3/pools/math/constants.d.ts +12 -0
  26. package/build/dex/ekubo-v3/pools/math/constants.js +16 -0
  27. package/build/dex/ekubo-v3/pools/math/constants.js.map +1 -0
  28. package/build/dex/ekubo-v3/pools/math/delta.d.ts +2 -0
  29. package/build/dex/ekubo-v3/pools/math/delta.js +51 -0
  30. package/build/dex/ekubo-v3/pools/math/delta.js.map +1 -0
  31. package/build/dex/ekubo-v3/pools/math/sqrt-ratio.d.ts +8 -0
  32. package/build/dex/ekubo-v3/pools/math/sqrt-ratio.js +113 -0
  33. package/build/dex/ekubo-v3/pools/math/sqrt-ratio.js.map +1 -0
  34. package/build/dex/ekubo-v3/pools/math/swap.d.ts +18 -0
  35. package/build/dex/ekubo-v3/pools/math/swap.js +128 -0
  36. package/build/dex/ekubo-v3/pools/math/swap.js.map +1 -0
  37. package/build/dex/ekubo-v3/pools/math/tick.d.ts +8 -0
  38. package/build/dex/ekubo-v3/pools/math/tick.js +129 -0
  39. package/build/dex/ekubo-v3/pools/math/tick.js.map +1 -0
  40. package/build/dex/ekubo-v3/pools/math/twamm/exp2.d.ts +1 -0
  41. package/build/dex/ekubo-v3/pools/math/twamm/exp2.js +86 -0
  42. package/build/dex/ekubo-v3/pools/math/twamm/exp2.js.map +1 -0
  43. package/build/dex/ekubo-v3/pools/math/twamm/sqrt-ratio.d.ts +1 -0
  44. package/build/dex/ekubo-v3/pools/math/twamm/sqrt-ratio.js +56 -0
  45. package/build/dex/ekubo-v3/pools/math/twamm/sqrt-ratio.js.map +1 -0
  46. package/build/dex/ekubo-v3/pools/mev-capture.d.ts +8 -0
  47. package/build/dex/ekubo-v3/pools/mev-capture.js +42 -0
  48. package/build/dex/ekubo-v3/pools/mev-capture.js.map +1 -0
  49. package/build/dex/ekubo-v3/pools/oracle.d.ts +8 -0
  50. package/build/dex/ekubo-v3/pools/oracle.js +18 -0
  51. package/build/dex/ekubo-v3/pools/oracle.js.map +1 -0
  52. package/build/dex/ekubo-v3/pools/pool.d.ts +56 -0
  53. package/build/dex/ekubo-v3/pools/pool.js +88 -0
  54. package/build/dex/ekubo-v3/pools/pool.js.map +1 -0
  55. package/build/dex/ekubo-v3/pools/stableswap.d.ts +22 -0
  56. package/build/dex/ekubo-v3/pools/stableswap.js +123 -0
  57. package/build/dex/ekubo-v3/pools/stableswap.js.map +1 -0
  58. package/build/dex/ekubo-v3/pools/twamm.d.ts +40 -0
  59. package/build/dex/ekubo-v3/pools/twamm.js +265 -0
  60. package/build/dex/ekubo-v3/pools/twamm.js.map +1 -0
  61. package/build/dex/ekubo-v3/pools/utils.d.ts +62 -0
  62. package/build/dex/ekubo-v3/pools/utils.js +160 -0
  63. package/build/dex/ekubo-v3/pools/utils.js.map +1 -0
  64. package/build/dex/ekubo-v3/types.d.ts +58 -0
  65. package/build/dex/ekubo-v3/types.js +3 -0
  66. package/build/dex/ekubo-v3/types.js.map +1 -0
  67. package/build/dex/ekubo-v3/utils.d.ts +10 -0
  68. package/build/dex/ekubo-v3/utils.js +54 -0
  69. package/build/dex/ekubo-v3/utils.js.map +1 -0
  70. package/build/dex/erc4626/config.js +0 -18
  71. package/build/dex/erc4626/config.js.map +1 -1
  72. package/build/dex/index.js +0 -22
  73. package/build/dex/index.js.map +1 -1
  74. package/build/dex/nerve/config.js +0 -276
  75. package/build/dex/nerve/config.js.map +1 -1
  76. package/build/dex/nerve/nerve-pool.d.ts +0 -2
  77. package/build/dex/nerve/nerve-pool.js +8 -57
  78. package/build/dex/nerve/nerve-pool.js.map +1 -1
  79. package/build/dex/solidly/config.js +10 -64
  80. package/build/dex/solidly/config.js.map +1 -1
  81. package/build/dex/solidly/forks-override/velodromeV2.js +1 -1
  82. package/build/dex/solidly/forks-override/velodromeV2.js.map +1 -1
  83. package/build/dex/solidly/solidly-stable-pool.d.ts +1 -1
  84. package/build/dex/solidly/solidly-stable-pool.js +1 -1
  85. package/build/dex/solidly/solidly-stable-pool.js.map +1 -1
  86. package/build/dex/solidly/solidly.d.ts +6 -4
  87. package/build/dex/solidly/solidly.js +119 -76
  88. package/build/dex/solidly/solidly.js.map +1 -1
  89. package/build/dex/solidly/types.d.ts +3 -0
  90. package/build/dex/stable-pool/stable-pool.js +1 -1
  91. package/build/dex/stable-pool/stable-pool.js.map +1 -1
  92. package/build/dex/trader-joe-v2.1/config.js +0 -1
  93. package/build/dex/trader-joe-v2.1/config.js.map +1 -1
  94. package/build/dex/uniswap-v2/config.js +0 -162
  95. package/build/dex/uniswap-v2/config.js.map +1 -1
  96. package/build/dex/uniswap-v2/constants.js +1 -12
  97. package/build/dex/uniswap-v2/constants.js.map +1 -1
  98. package/build/dex/uniswap-v2/uniswap-v2.d.ts +6 -4
  99. package/build/dex/uniswap-v2/uniswap-v2.js +32 -20
  100. package/build/dex/uniswap-v2/uniswap-v2.js.map +1 -1
  101. package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3.d.ts +5 -0
  102. package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3.js +11 -0
  103. package/build/dex/uniswap-v3/forks/pharaoh-v3/pharaoh-v3.js.map +1 -1
  104. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-pool.d.ts +1 -4
  105. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-pool.js +0 -30
  106. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream-pool.js.map +1 -1
  107. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.d.ts +7 -0
  108. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.js +58 -0
  109. package/build/dex/uniswap-v3/forks/velodrome-slipstream/velodrome-slipstream.js.map +1 -1
  110. package/build/dex/wombat/config.js +0 -3
  111. package/build/dex/wombat/config.js.map +1 -1
  112. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/dodo-v1/config.ts"],"names":[],"mappings":";;;AACA,+CAA0C;AAE1C,gEAAgE;AACnD,QAAA,kBAAkB,GAAmC;IAChE,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE,4CAA4C;IAC/D,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE,4CAA4C;IAC3D,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE,4CAA4C;IAChE,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE,4CAA4C;IAC/D,CAAC,mBAAO,CAAC,IAAI,CAAC,EAAE,4CAA4C;IAC5D,CAAC,mBAAO,CAAC,SAAS,CAAC,EAAE,4CAA4C;CAClE,CAAC;AAEW,QAAA,kBAAkB,GAAmC;IAChE,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE,4CAA4C;IAC/D,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE,4CAA4C;IAC3D,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE,4CAA4C;IAChE,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE,4CAA4C;IAC/D,CAAC,mBAAO,CAAC,IAAI,CAAC,EAAE,4CAA4C;IAC5D,CAAC,mBAAO,CAAC,SAAS,CAAC,EAAE,4CAA4C;CAClE,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/dodo-v1/config.ts"],"names":[],"mappings":";;;AACA,+CAA0C;AAE1C,gEAAgE;AACnD,QAAA,kBAAkB,GAAmC;IAChE,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE,4CAA4C;CAC5D,CAAC;AAEW,QAAA,kBAAkB,GAAmC;IAChE,CAAC,mBAAO,CAAC,GAAG,CAAC,EAAE,4CAA4C;CAC5D,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { Network } from '../../constants';
2
+ import { DexConfigMap } from '../../types';
3
+ import { DexParams } from './types';
4
+ export declare const DEX_KEY = "EkuboV3";
5
+ export declare const CORE_ADDRESS = "0x00000000000014aA86C5d3c41765bb24e11bd701";
6
+ export declare const ORACLE_ADDRESS = "0x517E506700271AEa091b02f42756F5E174Af5230";
7
+ export declare const MEV_CAPTURE_ADDRESS = "0x5555fF9Ff2757500BF4EE020DcfD0210CFfa41Be";
8
+ export declare const TWAMM_ADDRESS = "0xd4F1060cB9c1A13e1d2d20379b8aa2cF7541eD9b";
9
+ export declare const QUOTE_DATA_FETCHER_ADDRESS = "0x5a3f0f1da4ac0c4b937d5685f330704c8e8303f1";
10
+ export declare const TWAMM_DATA_FETCHER_ADDRESS = "0xc07e5b80750247c8b5d7234a9c79dfc58785392b";
11
+ export declare const ROUTER_ADDRESS = "0xd26f20001a72a18C002b00e6710000d68700ce00";
12
+ export type EkuboSupportedNetwork = Network.MAINNET | Network.ARBITRUM;
13
+ export declare const EKUBO_V3_CONFIG: DexConfigMap<DexParams>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EKUBO_V3_CONFIG = exports.ROUTER_ADDRESS = exports.TWAMM_DATA_FETCHER_ADDRESS = exports.QUOTE_DATA_FETCHER_ADDRESS = exports.TWAMM_ADDRESS = exports.MEV_CAPTURE_ADDRESS = exports.ORACLE_ADDRESS = exports.CORE_ADDRESS = exports.DEX_KEY = void 0;
4
+ const constants_1 = require("../../constants");
5
+ exports.DEX_KEY = 'EkuboV3';
6
+ exports.CORE_ADDRESS = '0x00000000000014aA86C5d3c41765bb24e11bd701';
7
+ exports.ORACLE_ADDRESS = '0x517E506700271AEa091b02f42756F5E174Af5230';
8
+ exports.MEV_CAPTURE_ADDRESS = '0x5555fF9Ff2757500BF4EE020DcfD0210CFfa41Be';
9
+ exports.TWAMM_ADDRESS = '0xd4F1060cB9c1A13e1d2d20379b8aa2cF7541eD9b';
10
+ exports.QUOTE_DATA_FETCHER_ADDRESS = '0x5a3f0f1da4ac0c4b937d5685f330704c8e8303f1';
11
+ exports.TWAMM_DATA_FETCHER_ADDRESS = '0xc07e5b80750247c8b5d7234a9c79dfc58785392b';
12
+ exports.ROUTER_ADDRESS = '0xd26f20001a72a18C002b00e6710000d68700ce00';
13
+ exports.EKUBO_V3_CONFIG = {
14
+ [exports.DEX_KEY]: {
15
+ [constants_1.Network.MAINNET]: {
16
+ subgraphId: '6MLKVikss1iYdhhggAR1w6Vqw2Z386AqNLMZYr8qaeG9',
17
+ },
18
+ [constants_1.Network.ARBITRUM]: {
19
+ subgraphId: 'FdPuN6GM73kviG7XfLG72yHKqFczeSd4yzEXeBxESvtG',
20
+ },
21
+ },
22
+ };
23
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/ekubo-v3/config.ts"],"names":[],"mappings":";;;AAAA,+CAA0C;AAI7B,QAAA,OAAO,GAAG,SAAS,CAAC;AAEpB,QAAA,YAAY,GAAG,4CAA4C,CAAC;AAC5D,QAAA,cAAc,GAAG,4CAA4C,CAAC;AAC9D,QAAA,mBAAmB,GAAG,4CAA4C,CAAC;AACnE,QAAA,aAAa,GAAG,4CAA4C,CAAC;AAC7D,QAAA,0BAA0B,GACrC,4CAA4C,CAAC;AAClC,QAAA,0BAA0B,GACrC,4CAA4C,CAAC;AAClC,QAAA,cAAc,GAAG,4CAA4C,CAAC;AAI9D,QAAA,eAAe,GAA4B;IACtD,CAAC,eAAO,CAAC,EAAE;QACT,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,UAAU,EAAE,8CAA8C;SAC3D;QACD,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;YAClB,UAAU,EAAE,8CAA8C;SAC3D;KACF;CACuE,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { EkuboContracts } from './types';
2
+ import { BlockHeader } from 'web3-eth';
3
+ import { Log, Logger, Token } from '../../types';
4
+ import { EventSubscriber, IDexHelper } from '../../dex-helper';
5
+ import { IEkuboPool } from './pools/pool';
6
+ import { PoolTypeConfig } from './pools/utils';
7
+ export declare class EkuboV3PoolManager implements EventSubscriber {
8
+ readonly parentName: string;
9
+ private readonly logger;
10
+ private readonly dexHelper;
11
+ private readonly contracts;
12
+ private readonly subgraphId;
13
+ readonly name = "PoolManager";
14
+ isTracking: () => boolean;
15
+ readonly poolsByBI: Map<bigint, IEkuboPool<PoolTypeConfig>>;
16
+ readonly poolsByString: Map<string, IEkuboPool<PoolTypeConfig>>;
17
+ private readonly poolIdParsers;
18
+ private readonly poolInitializedFragment;
19
+ private readonly poolInitializedTopicHash;
20
+ constructor(parentName: string, logger: Logger, dexHelper: IDexHelper, contracts: EkuboContracts, subgraphId: string);
21
+ update(logs: Readonly<Log>[], blockHeaders: Readonly<{
22
+ [blockNumber: number]: Readonly<BlockHeader>;
23
+ }>, blockNumberForMissingStateRegen?: number): Promise<void>;
24
+ restart(blockNumber: number): void;
25
+ rollback(blockNumber: number): void;
26
+ invalidate(): void;
27
+ private fetchCanonicalSubgraphPoolKeys;
28
+ updatePools(blockNumber: number, subscribe: boolean): Promise<void>;
29
+ getQuotePools(tokenA: Token, tokenB: Token, limitPools: string[] | undefined): Promise<Iterable<IEkuboPool<PoolTypeConfig>>>;
30
+ setPool(pool: IEkuboPool<PoolTypeConfig>): void;
31
+ private deletePool;
32
+ private clearPools;
33
+ private handlePoolInitialized;
34
+ }
@@ -0,0 +1,421 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EkuboV3PoolManager = void 0;
4
+ const utils_1 = require("./pools/utils");
5
+ const utils_2 = require("./utils");
6
+ const sqrt_ratio_1 = require("./pools/math/sqrt-ratio");
7
+ const utils_3 = require("ethers/lib/utils");
8
+ const config_1 = require("./config");
9
+ const constants_1 = require("../../constants");
10
+ const full_range_1 = require("./pools/full-range");
11
+ const stableswap_1 = require("./pools/stableswap");
12
+ const base_1 = require("./pools/base");
13
+ const oracle_1 = require("./pools/oracle");
14
+ const mev_capture_1 = require("./pools/mev-capture");
15
+ const twamm_1 = require("./pools/twamm");
16
+ const SUBGRAPH_QUERY = `query ($coreAddress: Bytes!, $extensions: [Bytes!]) {
17
+ _meta {
18
+ block {
19
+ hash
20
+ number
21
+ }
22
+ }
23
+ poolInitializations(
24
+ where: {coreAddress: $coreAddress, extension_in: $extensions}, orderBy: blockNumber
25
+ ) {
26
+ blockNumber
27
+ blockHash
28
+ tickSpacing
29
+ stableswapCenterTick
30
+ stableswapAmplification
31
+ extension
32
+ fee
33
+ poolId
34
+ token0
35
+ token1
36
+ }
37
+ }`;
38
+ const MIN_BITMAPS_SEARCHED = 2;
39
+ const MAX_BATCH_SIZE = 100;
40
+ const MAX_SUBGRAPH_RETRIES = 10;
41
+ const SUBGRAPH_RETRY_INTERVAL_MS = 3000;
42
+ // The only attached EventSubscriber of this integration that will forward all relevant logs to the pools and handle pool initialization events
43
+ class EkuboV3PoolManager {
44
+ parentName;
45
+ logger;
46
+ dexHelper;
47
+ contracts;
48
+ subgraphId;
49
+ name = 'PoolManager';
50
+ isTracking = () => false;
51
+ poolsByBI = new Map();
52
+ poolsByString = new Map();
53
+ poolIdParsers;
54
+ poolInitializedFragment;
55
+ poolInitializedTopicHash;
56
+ constructor(parentName, logger, dexHelper, contracts, subgraphId) {
57
+ this.parentName = parentName;
58
+ this.logger = logger;
59
+ this.dexHelper = dexHelper;
60
+ this.contracts = contracts;
61
+ this.subgraphId = subgraphId;
62
+ const { core: { contract: coreContract, interface: coreIface }, twamm: { contract: twammContract, interface: twammIface }, } = contracts;
63
+ this.poolInitializedFragment = coreIface.getEvent('PoolInitialized');
64
+ this.poolInitializedTopicHash = coreIface.getEventTopic('PoolInitialized');
65
+ this.poolIdParsers = {
66
+ [coreContract.address]: new Map([
67
+ ['', parsePoolIdByLogDataOffsetFn(20)],
68
+ [
69
+ coreIface.getEventTopic('PositionUpdated'),
70
+ parsePoolIdByLogDataOffsetFn(32),
71
+ ],
72
+ ]),
73
+ [twammContract.address]: new Map([
74
+ ['', parsePoolIdByLogDataOffsetFn(0)],
75
+ [
76
+ twammIface.getEventTopic('OrderUpdated'),
77
+ data => new utils_1.PoolKey(BigInt((0, utils_3.hexDataSlice)(data, 64, 96)), BigInt((0, utils_3.hexDataSlice)(data, 96, 128)), new utils_1.PoolConfig(BigInt(config_1.TWAMM_ADDRESS), BigInt((0, utils_3.hexDataSlice)(data, 128, 136)), utils_1.StableswapPoolTypeConfig.fullRangeConfig())).stringId,
78
+ ],
79
+ ]),
80
+ };
81
+ }
82
+ async update(logs, blockHeaders, blockNumberForMissingStateRegen) {
83
+ const poolsLogs = new Map();
84
+ for (const log of logs) {
85
+ const contractParsers = this.poolIdParsers[log.address];
86
+ if (typeof contractParsers === 'undefined') {
87
+ continue;
88
+ }
89
+ const eventId = log.topics.at(0) ?? '';
90
+ const poolIdParser = contractParsers.get(eventId);
91
+ if (typeof poolIdParser !== 'undefined') {
92
+ const poolId = poolIdParser(log.data);
93
+ const pool = typeof poolId === 'bigint'
94
+ ? this.poolsByBI.get(poolId)
95
+ : this.poolsByString.get(poolId);
96
+ if (typeof pool === 'undefined') {
97
+ this.logger.warn(`Pool ID ${(0, utils_3.hexZeroPad)((0, utils_3.hexValue)(poolId), 32)} not found in pool map`);
98
+ continue;
99
+ }
100
+ const poolLogs = poolsLogs.get(pool) ?? [];
101
+ poolLogs.push(log);
102
+ poolsLogs.set(pool, poolLogs);
103
+ }
104
+ else if (log.address === this.contracts.core.contract.address &&
105
+ log.topics[0] === this.poolInitializedTopicHash) {
106
+ const blockHeader = blockHeaders[log.blockNumber];
107
+ if (typeof blockHeader === 'undefined') {
108
+ this.logger.error(`Ignoring pool initialization because block header for block ${log.blockNumber} is not available`);
109
+ continue;
110
+ }
111
+ try {
112
+ await this.handlePoolInitialized(this.contracts.core.interface.decodeEventLog(this.poolInitializedFragment, log.data, log.topics), blockHeader);
113
+ }
114
+ catch (err) {
115
+ this.logger.error('Failed to handle pool initialization:', err);
116
+ }
117
+ }
118
+ }
119
+ await Promise.all(poolsLogs
120
+ .entries()
121
+ .map(([pool, logs]) => pool.update(logs, blockHeaders, blockNumberForMissingStateRegen)));
122
+ }
123
+ restart(blockNumber) {
124
+ for (const pool of this.poolsByBI.values()) {
125
+ pool.restart(blockNumber);
126
+ }
127
+ }
128
+ rollback(blockNumber) {
129
+ for (const pool of this.poolsByBI.values()) {
130
+ if (pool.initializationBlockNumber() > blockNumber) {
131
+ this.deletePool(pool);
132
+ }
133
+ else {
134
+ pool.rollback(blockNumber);
135
+ }
136
+ }
137
+ }
138
+ invalidate() {
139
+ for (const pool of this.poolsByBI.values()) {
140
+ pool.invalidate();
141
+ }
142
+ }
143
+ async fetchCanonicalSubgraphPoolKeys(maxBlockNumber, subscribeToBlockManager) {
144
+ let poolKeys = null;
145
+ let subscribedBlockNumber = null;
146
+ try {
147
+ const { _meta: { block: { number: subgraphBlockNumber, hash: subgraphBlockHash }, }, poolInitializations, } = (await this.dexHelper.httpRequest.querySubgraph(this.subgraphId, {
148
+ query: SUBGRAPH_QUERY,
149
+ variables: {
150
+ coreAddress: config_1.CORE_ADDRESS,
151
+ extensions: [
152
+ constants_1.NULL_ADDRESS,
153
+ config_1.ORACLE_ADDRESS,
154
+ config_1.TWAMM_ADDRESS,
155
+ config_1.MEV_CAPTURE_ADDRESS,
156
+ ],
157
+ },
158
+ }, {})).data;
159
+ if (subscribeToBlockManager) {
160
+ const blockNumber = Math.min(subgraphBlockNumber, maxBlockNumber);
161
+ this.dexHelper.blockManager.subscribeToLogs(this, [
162
+ this.contracts.core.contract.address,
163
+ this.contracts.twamm.contract.address,
164
+ ], blockNumber);
165
+ subscribedBlockNumber = blockNumber;
166
+ }
167
+ // Just check the existence of the latest known block by hash in the canonical chain.
168
+ // This, together with the pool manager being subscribed before this check, ensures that
169
+ // we can consistently transition from the subgraph to the RPC state.
170
+ try {
171
+ await this.dexHelper.provider.getBlock(subgraphBlockHash);
172
+ }
173
+ catch (err) {
174
+ this.logger.warn('Failed to transition from subgraph to RPC state (possible reorg):', err);
175
+ return {
176
+ poolKeys: null,
177
+ subscribedBlockNumber,
178
+ };
179
+ }
180
+ // Remove pools initialized at a block > maxBlockNumber
181
+ while (true) {
182
+ const lastElem = poolInitializations.at(-1);
183
+ if (typeof lastElem === 'undefined' ||
184
+ Number(lastElem.blockNumber) <= maxBlockNumber) {
185
+ break;
186
+ }
187
+ poolInitializations.pop();
188
+ }
189
+ poolKeys = poolInitializations.flatMap(info => {
190
+ let poolTypeConfig;
191
+ if (info.tickSpacing !== null) {
192
+ poolTypeConfig = new utils_1.ConcentratedPoolTypeConfig(info.tickSpacing);
193
+ }
194
+ else if (info.stableswapAmplification !== null &&
195
+ info.stableswapCenterTick !== null) {
196
+ poolTypeConfig = new utils_1.StableswapPoolTypeConfig(info.stableswapCenterTick, info.stableswapAmplification);
197
+ }
198
+ else {
199
+ this.logger.error(`Pool ${info.poolId} has an unknown pool type config`);
200
+ return [];
201
+ }
202
+ return [
203
+ {
204
+ key: new utils_1.PoolKey(BigInt(info.token0), BigInt(info.token1), new utils_1.PoolConfig(BigInt(info.extension), BigInt(info.fee), poolTypeConfig), BigInt(info.poolId)),
205
+ initBlockNumber: Number(info.blockNumber),
206
+ },
207
+ ];
208
+ });
209
+ }
210
+ catch (err) {
211
+ this.logger.error('Subgraph pool key retrieval failed:', err);
212
+ }
213
+ finally {
214
+ return {
215
+ poolKeys,
216
+ subscribedBlockNumber,
217
+ };
218
+ }
219
+ }
220
+ async updatePools(blockNumber, subscribe) {
221
+ let attempt = 0;
222
+ let maxBlockNumber = blockNumber;
223
+ let poolKeys = null;
224
+ let mustActivateSubscription = subscribe;
225
+ do {
226
+ attempt++;
227
+ const res = await this.fetchCanonicalSubgraphPoolKeys(maxBlockNumber, mustActivateSubscription);
228
+ if (res.subscribedBlockNumber !== null) {
229
+ mustActivateSubscription = false;
230
+ maxBlockNumber = res.subscribedBlockNumber;
231
+ }
232
+ if (res.poolKeys === null) {
233
+ await new Promise(resolve => setTimeout(resolve, SUBGRAPH_RETRY_INTERVAL_MS));
234
+ }
235
+ else {
236
+ poolKeys = res.poolKeys;
237
+ }
238
+ } while (poolKeys === null && attempt <= MAX_SUBGRAPH_RETRIES);
239
+ if (poolKeys === null) {
240
+ this.logger.error(`Subgraph initialization failed after ${MAX_SUBGRAPH_RETRIES} attempts`);
241
+ return;
242
+ }
243
+ if (!subscribe) {
244
+ this.clearPools();
245
+ }
246
+ const [twammPoolKeys, otherPoolKeys] = poolKeys.reduce(([twammPoolKeys, otherPoolKeys], poolKeyWithInitBlockNumber) => {
247
+ if (poolKeyWithInitBlockNumber.key.config.extension ===
248
+ BigInt(config_1.TWAMM_ADDRESS)) {
249
+ twammPoolKeys.push(poolKeyWithInitBlockNumber);
250
+ }
251
+ else {
252
+ otherPoolKeys.push(poolKeyWithInitBlockNumber);
253
+ }
254
+ return [twammPoolKeys, otherPoolKeys];
255
+ }, [[], []]);
256
+ const promises = [];
257
+ const commonArgs = [
258
+ this.parentName,
259
+ this.dexHelper,
260
+ this.logger,
261
+ this.contracts,
262
+ ];
263
+ const addPool = async (constructor, initialState, initBlockNumber, poolKey) => {
264
+ const pool = new constructor(...commonArgs, initBlockNumber, poolKey);
265
+ if (subscribe) {
266
+ await pool.initialize(blockNumber, { state: initialState });
267
+ }
268
+ else {
269
+ pool.setState(initialState ?? (await pool.generateState(blockNumber)), blockNumber);
270
+ }
271
+ this.setPool(pool);
272
+ };
273
+ for (let batchStart = 0; batchStart < otherPoolKeys.length; batchStart += MAX_BATCH_SIZE) {
274
+ const batch = otherPoolKeys.slice(batchStart, batchStart + MAX_BATCH_SIZE);
275
+ promises.push(this.contracts.core.quoteDataFetcher.getQuoteData(batch.map(({ key }) => key.toAbi()), MIN_BITMAPS_SEARCHED, {
276
+ blockTag: blockNumber,
277
+ })
278
+ .then(async (fetchedData) => {
279
+ await Promise.all(fetchedData.map(async (data, i) => {
280
+ const { key: poolKey, initBlockNumber } = otherPoolKeys[batchStart + i];
281
+ const { extension } = poolKey.config;
282
+ try {
283
+ if ((0, utils_1.isStableswapKey)(poolKey)) {
284
+ switch (extension) {
285
+ case 0n:
286
+ poolKey.config.poolTypeConfig.isFullRange()
287
+ ? await addPool(full_range_1.FullRangePool, full_range_1.FullRangePoolState.fromQuoter(data), initBlockNumber, poolKey)
288
+ : await addPool(stableswap_1.StableswapPool, full_range_1.FullRangePoolState.fromQuoter(data), initBlockNumber, poolKey);
289
+ break;
290
+ case BigInt(config_1.ORACLE_ADDRESS):
291
+ await addPool(oracle_1.OraclePool, full_range_1.FullRangePoolState.fromQuoter(data), initBlockNumber, poolKey);
292
+ break;
293
+ default:
294
+ throw new Error(`Unknown pool extension ${(0, utils_3.hexZeroPad)((0, utils_3.hexlify)(extension), 20)}`);
295
+ }
296
+ }
297
+ else if ((0, utils_1.isConcentratedKey)(poolKey)) {
298
+ switch (extension) {
299
+ case 0n:
300
+ await addPool(base_1.BasePool, base_1.BasePoolState.fromQuoter(data), initBlockNumber, poolKey);
301
+ break;
302
+ case BigInt(config_1.MEV_CAPTURE_ADDRESS):
303
+ await addPool(mev_capture_1.MevCapturePool, base_1.BasePoolState.fromQuoter(data), initBlockNumber, poolKey);
304
+ break;
305
+ default:
306
+ throw new Error(`Unknown pool extension ${(0, utils_3.hexZeroPad)((0, utils_3.hexlify)(extension), 20)}`);
307
+ }
308
+ }
309
+ else {
310
+ throw new Error(`Unknown pool key type config in pool key ${poolKey}`);
311
+ }
312
+ }
313
+ catch (err) {
314
+ this.logger.error(`Failed to construct pool ${poolKey.stringId}: ${err}`);
315
+ }
316
+ }));
317
+ })
318
+ .catch((err) => {
319
+ this.logger.error(`Fetching batch failed. Pool keys: ${batch.map(({ key }) => key.stringId)}. Error: ${err}`);
320
+ }));
321
+ }
322
+ promises.push(...twammPoolKeys.map(async ({ key, initBlockNumber }) => {
323
+ // The TWAMM data fetcher doesn't allow fetching state for multiple pools at once, so we just let `generateState` work to avoid duplicating logic
324
+ try {
325
+ await addPool(twamm_1.TwammPool, undefined, initBlockNumber, key);
326
+ }
327
+ catch (err) {
328
+ this.logger.error(`Failed to construct pool ${key.stringId}: ${err}`);
329
+ }
330
+ }));
331
+ await Promise.all(promises);
332
+ }
333
+ async getQuotePools(tokenA, tokenB, limitPools) {
334
+ const [token0, token1] = (0, utils_2.convertAndSortTokens)(tokenA, tokenB);
335
+ let unfilteredPools;
336
+ if (typeof limitPools === 'undefined') {
337
+ unfilteredPools = this.poolsByBI.values();
338
+ }
339
+ else {
340
+ unfilteredPools = Iterator.from(limitPools.flatMap(stringId => {
341
+ let pool = this.poolsByString.get(stringId);
342
+ if (typeof pool === 'undefined') {
343
+ this.logger.error(`Requested pool ${stringId} doesn't exist`);
344
+ return [];
345
+ }
346
+ return [pool];
347
+ }));
348
+ }
349
+ return unfilteredPools.filter(pool => pool.key.token0 === token0 && pool.key.token1 === token1);
350
+ }
351
+ setPool(pool) {
352
+ const key = pool.key;
353
+ this.poolsByBI.set(key.numId, pool);
354
+ this.poolsByString.set(key.stringId, pool);
355
+ }
356
+ deletePool(pool) {
357
+ const key = pool.key;
358
+ this.poolsByBI.delete(key.numId);
359
+ this.poolsByString.delete(key.stringId);
360
+ }
361
+ clearPools() {
362
+ this.poolsByBI.clear();
363
+ this.poolsByString.clear();
364
+ }
365
+ async handlePoolInitialized(ev, blockHeader) {
366
+ const poolKey = utils_1.PoolKey.fromAbi(ev.poolKey);
367
+ const { extension } = poolKey.config;
368
+ const blockNumber = blockHeader.number;
369
+ const state = {
370
+ sqrtRatio: (0, sqrt_ratio_1.floatSqrtRatioToFixed)(BigInt(ev.sqrtRatio)),
371
+ tick: ev.tick,
372
+ blockHeader,
373
+ };
374
+ const commonArgs = [
375
+ this.parentName,
376
+ this.dexHelper,
377
+ this.logger,
378
+ this.contracts,
379
+ blockNumber,
380
+ ];
381
+ const addPool = async (constructor, poolKey, initialState) => {
382
+ const pool = new constructor(...commonArgs, poolKey);
383
+ await pool.initialize(blockNumber, { state: initialState });
384
+ this.setPool(pool);
385
+ };
386
+ if ((0, utils_1.isStableswapKey)(poolKey)) {
387
+ switch (extension) {
388
+ case 0n:
389
+ const fullRangeState = full_range_1.FullRangePoolState.fromPoolInitialization(state);
390
+ return poolKey.config.poolTypeConfig.isFullRange()
391
+ ? addPool(full_range_1.FullRangePool, poolKey, fullRangeState)
392
+ : addPool(stableswap_1.StableswapPool, poolKey, fullRangeState);
393
+ case BigInt(config_1.ORACLE_ADDRESS):
394
+ return addPool(oracle_1.OraclePool, poolKey, full_range_1.FullRangePoolState.fromPoolInitialization(state));
395
+ case BigInt(config_1.TWAMM_ADDRESS):
396
+ return addPool(twamm_1.TwammPool, poolKey, twamm_1.TwammPoolState.fromPoolInitialization(state));
397
+ default:
398
+ this.logger.debug(`Ignoring unknown pool extension ${(0, utils_3.hexZeroPad)((0, utils_3.hexlify)(extension), 20)} for stableswap pool`);
399
+ }
400
+ }
401
+ else if ((0, utils_1.isConcentratedKey)(poolKey)) {
402
+ const basePoolState = base_1.BasePoolState.fromPoolInitialization(state);
403
+ switch (extension) {
404
+ case 0n:
405
+ return addPool(base_1.BasePool, poolKey, basePoolState);
406
+ case BigInt(config_1.MEV_CAPTURE_ADDRESS):
407
+ return addPool(mev_capture_1.MevCapturePool, poolKey, basePoolState);
408
+ default:
409
+ this.logger.debug(`Ignoring unknown pool extension ${(0, utils_3.hexZeroPad)((0, utils_3.hexlify)(extension), 20)} for concentrated pool`);
410
+ }
411
+ }
412
+ else {
413
+ this.logger.error(`Unknown pool key type config in pool key ${poolKey}`);
414
+ }
415
+ }
416
+ }
417
+ exports.EkuboV3PoolManager = EkuboV3PoolManager;
418
+ function parsePoolIdByLogDataOffsetFn(offset) {
419
+ return data => BigInt((0, utils_3.hexDataSlice)(data, offset, offset + 32));
420
+ }
421
+ //# sourceMappingURL=ekubo-v3-pool-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ekubo-v3-pool-manager.js","sourceRoot":"","sources":["../../../src/dex/ekubo-v3/ekubo-v3-pool-manager.ts"],"names":[],"mappings":";;;AAOA,yCAQuB;AACvB,mCAA+C;AAC/C,wDAAgE;AAChE,4CAA+E;AAC/E,qCAKkB;AAClB,+CAA+C;AAC/C,mDAAuE;AACvE,mDAAoD;AACpD,uCAAuD;AACvD,2CAA4C;AAC5C,qDAAqD;AACrD,yCAA0D;AAE1D,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;EAqBrB,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAChC,MAAM,0BAA0B,GAAG,IAAI,CAAC;AAOxC,+IAA+I;AAC/I,MAAa,kBAAkB;IAgBX;IACC;IACA;IACA;IACA;IAnBH,IAAI,GAAG,aAAa,CAAC;IAE9B,UAAU,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC;IAEhB,SAAS,GAAG,IAAI,GAAG,EAAsC,CAAC;IAC1D,aAAa,GAAG,IAAI,GAAG,EAAsC,CAAC;IAE7D,aAAa,CAG5B;IACe,uBAAuB,CAAC;IACxB,wBAAwB,CAAC;IAE1C,YACkB,UAAkB,EACjB,MAAc,EACd,SAAqB,EACrB,SAAyB,EACzB,UAAkB;QAJnB,eAAU,GAAV,UAAU,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAAY;QACrB,cAAS,GAAT,SAAS,CAAgB;QACzB,eAAU,GAAV,UAAU,CAAQ;QAEnC,MAAM,EACJ,IAAI,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,EACtD,KAAK,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,GAC1D,GAAG,SAAS,CAAC;QAEd,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QACrE,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAE3E,IAAI,CAAC,aAAa,GAAG;YACnB,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC;gBAC9B,CAAC,EAAE,EAAE,4BAA4B,CAAC,EAAE,CAAC,CAAC;gBACtC;oBACE,SAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC;oBAC1C,4BAA4B,CAAC,EAAE,CAAC;iBACjC;aACF,CAAC;YACF,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,CAG9B;gBACA,CAAC,EAAE,EAAE,4BAA4B,CAAC,CAAC,CAAC,CAAC;gBACrC;oBACE,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC;oBACxC,IAAI,CAAC,EAAE,CACL,IAAI,eAAO,CACT,MAAM,CAAC,IAAA,oBAAY,EAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAClC,MAAM,CAAC,IAAA,oBAAY,EAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EACnC,IAAI,kBAAU,CACZ,MAAM,CAAC,sBAAa,CAAC,EACrB,MAAM,CAAC,IAAA,oBAAY,EAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EACpC,gCAAwB,CAAC,eAAe,EAAE,CAC3C,CACF,CAAC,QAAQ;iBACb;aACF,CAAC;SACH,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,MAAM,CACjB,IAAqB,EACrB,YAAwE,EACxE,+BAAwC;QAExC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAqC,CAAC;QAE/D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACxD,IAAI,OAAO,eAAe,KAAK,WAAW,EAAE,CAAC;gBAC3C,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAElD,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;gBACxC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEtC,MAAM,IAAI,GACR,OAAO,MAAM,KAAK,QAAQ;oBACxB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;oBAC5B,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAErC,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,CAAC;oBAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,WAAW,IAAA,kBAAU,EAAC,IAAA,gBAAQ,EAAC,MAAM,CAAC,EAAE,EAAE,CAAC,wBAAwB,CACpE,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAE3C,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnB,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAChC,CAAC;iBAAM,IACL,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO;gBACpD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,wBAAwB,EAC/C,CAAC;gBACD,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAClD,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE,CAAC;oBACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,+DAA+D,GAAG,CAAC,WAAW,mBAAmB,CAClG,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,qBAAqB,CAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAC1C,IAAI,CAAC,uBAAuB,EAC5B,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,MAAM,CACX,EACD,WAAW,CACZ,CAAC;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CACf,SAAS;aACN,OAAO,EAAE;aACT,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CACpB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,+BAA+B,CAAC,CACjE,CACJ,CAAC;IACJ,CAAC;IAEM,OAAO,CAAC,WAAmB;QAChC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAEM,QAAQ,CAAC,WAAmB;QACjC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,yBAAyB,EAAE,GAAG,WAAW,EAAE,CAAC;gBACnD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAEM,UAAU;QACf,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,8BAA8B,CAC1C,cAAsB,EACtB,uBAAgC;QAShC,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,qBAAqB,GAAG,IAAI,CAAC;QAEjC,IAAI,CAAC;YACH,MAAM,EACJ,KAAK,EAAE,EACL,KAAK,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAChE,EACD,mBAAmB,GACpB,GAAG,CACF,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,aAAa,CAsB5C,IAAI,CAAC,UAAU,EACf;gBACE,KAAK,EAAE,cAAc;gBACrB,SAAS,EAAE;oBACT,WAAW,EAAE,qBAAY;oBACzB,UAAU,EAAE;wBACV,wBAAY;wBACZ,uBAAc;wBACd,sBAAa;wBACb,4BAAmB;qBACpB;iBACF;aACF,EACD,EAAE,CACH,CACF,CAAC,IAAI,CAAC;YAEP,IAAI,uBAAuB,EAAE,CAAC;gBAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;gBAElE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,CACzC,IAAI,EACJ;oBACE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO;oBACpC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO;iBACtC,EACD,WAAW,CACZ,CAAC;gBAEF,qBAAqB,GAAG,WAAW,CAAC;YACtC,CAAC;YAED,qFAAqF;YACrF,wFAAwF;YACxF,qEAAqE;YACrE,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAC5D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,mEAAmE,EACnE,GAAG,CACJ,CAAC;gBAEF,OAAO;oBACL,QAAQ,EAAE,IAAI;oBACd,qBAAqB;iBACtB,CAAC;YACJ,CAAC;YAED,uDAAuD;YACvD,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,QAAQ,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,IACE,OAAO,QAAQ,KAAK,WAAW;oBAC/B,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,cAAc,EAC9C,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,mBAAmB,CAAC,GAAG,EAAE,CAAC;YAC5B,CAAC;YAED,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC5C,IAAI,cAAc,CAAC;gBAEnB,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;oBAC9B,cAAc,GAAG,IAAI,kCAA0B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACpE,CAAC;qBAAM,IACL,IAAI,CAAC,uBAAuB,KAAK,IAAI;oBACrC,IAAI,CAAC,oBAAoB,KAAK,IAAI,EAClC,CAAC;oBACD,cAAc,GAAG,IAAI,gCAAwB,CAC3C,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,uBAAuB,CAC7B,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,QAAQ,IAAI,CAAC,MAAM,kCAAkC,CACtD,CAAC;oBACF,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAED,OAAO;oBACL;wBACE,GAAG,EAAE,IAAI,eAAO,CACd,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EACnB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EACnB,IAAI,kBAAU,CACZ,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EACtB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAChB,cAAc,CACf,EACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CACpB;wBACD,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;qBAC1C;iBACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC;gBAAS,CAAC;YACT,OAAO;gBACL,QAAQ;gBACR,qBAAqB;aACtB,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,WAAmB,EACnB,SAAkB;QAElB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,cAAc,GAAG,WAAW,CAAC;QACjC,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,wBAAwB,GAAG,SAAS,CAAC;QAEzC,GAAG,CAAC;YACF,OAAO,EAAE,CAAC;YAEV,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,8BAA8B,CACnD,cAAc,EACd,wBAAwB,CACzB,CAAC;YAEF,IAAI,GAAG,CAAC,qBAAqB,KAAK,IAAI,EAAE,CAAC;gBACvC,wBAAwB,GAAG,KAAK,CAAC;gBACjC,cAAc,GAAG,GAAG,CAAC,qBAAqB,CAAC;YAC7C,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAC1B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAC1B,UAAU,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAChD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC1B,CAAC;QACH,CAAC,QAAQ,QAAQ,KAAK,IAAI,IAAI,OAAO,IAAI,oBAAoB,EAAE;QAE/D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,wCAAwC,oBAAoB,WAAW,CACxE,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;QAED,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,MAAM,CAQpD,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE,0BAA0B,EAAE,EAAE;YAC7D,IACE,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS;gBAC/C,MAAM,CAAC,sBAAa,CAAC,EACrB,CAAC;gBACD,aAAa,CAAC,IAAI,CAChB,0BAAkF,CACnF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACjD,CAAC;YAED,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QACxC,CAAC,EACD,CAAC,EAAE,EAAE,EAAE,CAAC,CACT,CAAC;QAEF,MAAM,QAAQ,GAAoB,EAAE,CAAC;QAErC,MAAM,UAAU,GAAG;YACjB,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,MAAM;YACX,IAAI,CAAC,SAAS;SACN,CAAC;QAEX,MAAM,OAAO,GAAG,KAAK,EAKnB,WAEC,EACD,YAAyC,EACzC,eAAuB,EACvB,OAAmB,EACJ,EAAE;YACjB,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,GAAG,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;YAEtE,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,CACX,YAAY,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,EACvD,WAAW,CACZ,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,KACE,IAAI,UAAU,GAAG,CAAC,EAClB,UAAU,GAAG,aAAa,CAAC,MAAM,EACjC,UAAU,IAAI,cAAc,EAC5B,CAAC;YACD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAC/B,UAAU,EACV,UAAU,GAAG,cAAc,CAC5B,CAAC;YAEF,QAAQ,CAAC,IAAI,CAET,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAC/C,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EACnC,oBAAoB,EACpB;gBACE,QAAQ,EAAE,WAAW;aACtB,CAEJ;iBACE,IAAI,CAAC,KAAK,EAAC,WAAW,EAAC,EAAE;gBACxB,MAAM,OAAO,CAAC,GAAG,CACf,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;oBAChC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,GACrC,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;oBAChC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;oBAErC,IAAI,CAAC;wBACH,IAAI,IAAA,uBAAe,EAAC,OAAO,CAAC,EAAE,CAAC;4BAC7B,QAAQ,SAAS,EAAE,CAAC;gCAClB,KAAK,EAAE;oCACL,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE;wCACzC,CAAC,CAAC,MAAM,OAAO,CACX,0BAAa,EACb,+BAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,EACnC,eAAe,EACf,OAAO,CACR;wCACH,CAAC,CAAC,MAAM,OAAO,CACX,2BAAc,EACd,+BAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,EACnC,eAAe,EACf,OAAO,CACR,CAAC;oCACN,MAAM;gCACR,KAAK,MAAM,CAAC,uBAAc,CAAC;oCACzB,MAAM,OAAO,CACX,mBAAU,EACV,+BAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,EACnC,eAAe,EACf,OAAO,CACR,CAAC;oCACF,MAAM;gCACR;oCACE,MAAM,IAAI,KAAK,CACb,0BAA0B,IAAA,kBAAU,EAClC,IAAA,eAAO,EAAC,SAAS,CAAC,EAClB,EAAE,CACH,EAAE,CACJ,CAAC;4BACN,CAAC;wBACH,CAAC;6BAAM,IAAI,IAAA,yBAAiB,EAAC,OAAO,CAAC,EAAE,CAAC;4BACtC,QAAQ,SAAS,EAAE,CAAC;gCAClB,KAAK,EAAE;oCACL,MAAM,OAAO,CACX,eAAQ,EACR,oBAAa,CAAC,UAAU,CAAC,IAAI,CAAC,EAC9B,eAAe,EACf,OAAO,CACR,CAAC;oCACF,MAAM;gCACR,KAAK,MAAM,CAAC,4BAAmB,CAAC;oCAC9B,MAAM,OAAO,CACX,4BAAc,EACd,oBAAa,CAAC,UAAU,CAAC,IAAI,CAAC,EAC9B,eAAe,EACf,OAAO,CACR,CAAC;oCACF,MAAM;gCACR;oCACE,MAAM,IAAI,KAAK,CACb,0BAA0B,IAAA,kBAAU,EAClC,IAAA,eAAO,EAAC,SAAS,CAAC,EAClB,EAAE,CACH,EAAE,CACJ,CAAC;4BACN,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,MAAM,IAAI,KAAK,CACb,4CAA4C,OAAO,EAAE,CACtD,CAAC;wBACJ,CAAC;oBACH,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,4BAA4B,OAAO,CAAC,QAAQ,KAAK,GAAG,EAAE,CACvD,CAAC;oBACJ,CAAC;gBACH,CAAC,CAAC,CACH,CAAC;YACJ,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;gBAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,qCAAqC,KAAK,CAAC,GAAG,CAC5C,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAC1B,YAAY,GAAG,EAAE,CACnB,CAAC;YACJ,CAAC,CAAC,CACL,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,IAAI,CACX,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE;YACtD,iJAAiJ;YACjJ,IAAI,CAAC;gBACH,MAAM,OAAO,CAIX,iBAAS,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,GAAG,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC,CAAC;YACxE,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,MAAa,EACb,MAAa,EACb,UAAgC;QAEhC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAA,4BAAoB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAE9D,IAAI,eAA2D,CAAC;QAChE,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,CAAC;YACtC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,QAAQ,CAAC,IAAI,CAC7B,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAC5B,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAE5C,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,CAAC;oBAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,QAAQ,gBAAgB,CAAC,CAAC;oBAC9D,OAAO,EAAE,CAAC;gBACZ,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QAED,OAAO,eAAe,CAAC,MAAM,CAC3B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CACjE,CAAC;IACJ,CAAC;IAEM,OAAO,CAAC,IAAgC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAErB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEO,UAAU,CAAC,IAAgC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAErB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,qBAAqB,CACjC,EAAU,EACV,WAAkC;QAElC,MAAM,OAAO,GAAG,eAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QACrC,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;QACvC,MAAM,KAAK,GAAG;YACZ,SAAS,EAAE,IAAA,kCAAqB,EAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,WAAW;SACZ,CAAC;QAEF,MAAM,UAAU,GAAG;YACjB,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,MAAM;YACX,IAAI,CAAC,SAAS;YACd,WAAW;SACH,CAAC;QAEX,MAAM,OAAO,GAAG,KAAK,EAKnB,WAAqE,EACrE,OAAmB,EACnB,YAAyC,EAC1B,EAAE;YACjB,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,IAAI,IAAA,uBAAe,EAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,QAAQ,SAAS,EAAE,CAAC;gBAClB,KAAK,EAAE;oBACL,MAAM,cAAc,GAClB,+BAAkB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;oBACnD,OAAO,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE;wBAChD,CAAC,CAAC,OAAO,CAAC,0BAAa,EAAE,OAAO,EAAE,cAAc,CAAC;wBACjD,CAAC,CAAC,OAAO,CAAC,2BAAc,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;gBACvD,KAAK,MAAM,CAAC,uBAAc,CAAC;oBACzB,OAAO,OAAO,CACZ,mBAAU,EACV,OAAO,EACP,+BAAkB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CACjD,CAAC;gBACJ,KAAK,MAAM,CAAC,sBAAa,CAAC;oBACxB,OAAO,OAAO,CACZ,iBAAS,EACT,OAAO,EACP,sBAAc,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAC7C,CAAC;gBACJ;oBACE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,mCAAmC,IAAA,kBAAU,EAC3C,IAAA,eAAO,EAAC,SAAS,CAAC,EAClB,EAAE,CACH,sBAAsB,CACxB,CAAC;YACN,CAAC;QACH,CAAC;aAAM,IAAI,IAAA,yBAAiB,EAAC,OAAO,CAAC,EAAE,CAAC;YACtC,MAAM,aAAa,GAAG,oBAAa,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAElE,QAAQ,SAAS,EAAE,CAAC;gBAClB,KAAK,EAAE;oBACL,OAAO,OAAO,CAAC,eAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;gBACnD,KAAK,MAAM,CAAC,4BAAmB,CAAC;oBAC9B,OAAO,OAAO,CAAC,4BAAc,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;gBACzD;oBACE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,mCAAmC,IAAA,kBAAU,EAC3C,IAAA,eAAO,EAAC,SAAS,CAAC,EAClB,EAAE,CACH,wBAAwB,CAC1B,CAAC;YACN,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,OAAO,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;CACF;AAzpBD,gDAypBC;AAED,SAAS,4BAA4B,CACnC,MAAc;IAEd,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAA,oBAAY,EAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { Interface } from '@ethersproject/abi';
2
+ import { Network, SwapSide } from '../../constants';
3
+ import { IDexHelper } from '../../dex-helper/idex-helper';
4
+ import { Context, IDex } from '../idex';
5
+ import { AdapterExchangeParam, Address, DexExchangeParam, ExchangePrices, NumberAsString, PoolLiquidity, PoolPrices, Token } from '../../types';
6
+ import { SimpleExchange } from '../simple-exchange';
7
+ import { EkuboData } from './types';
8
+ export declare class EkuboV3 extends SimpleExchange implements IDex<EkuboData> {
9
+ readonly network: Network;
10
+ readonly dexKey: string;
11
+ readonly dexHelper: IDexHelper;
12
+ static readonly dexKeysWithNetwork: {
13
+ key: string;
14
+ networks: Network[];
15
+ }[];
16
+ readonly hasConstantPriceLargeAmounts = false;
17
+ readonly needWrapNative = false;
18
+ readonly isFeeOnTransferSupported = false;
19
+ readonly routerIface: Interface;
20
+ private readonly logger;
21
+ private readonly config;
22
+ private readonly poolManager;
23
+ private readonly contracts;
24
+ private decimals;
25
+ constructor(network: Network, dexKey: string, dexHelper: IDexHelper);
26
+ initializePricing(blockNumber: number): Promise<void>;
27
+ getPoolIdentifiers(srcToken: Token, destToken: Token, _side: SwapSide, _blockNumber: number): Promise<string[]>;
28
+ getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<EkuboData>>;
29
+ getDexParam(_srcToken: Address, _destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: EkuboData, side: SwapSide, _context: Context, _executorAddress: Address): DexExchangeParam;
30
+ updatePoolState(): Promise<void>;
31
+ getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
32
+ getAdapters(_side: SwapSide): {
33
+ name: string;
34
+ index: number;
35
+ }[] | null;
36
+ getCalldataGasCost(_poolPrices: PoolPrices<EkuboData>): number | number[];
37
+ getAdapterParam(_srcToken: string, _destToken: string, _srcAmount: string, _destAmount: string, _data: EkuboData, _side: SwapSide): AdapterExchangeParam;
38
+ }