@paraswap/dex-lib 2.33.4-balancer-v2-multihop.2 → 2.33.4-base-support.0

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 (115) hide show
  1. package/build/config.js +26 -0
  2. package/build/config.js.map +1 -1
  3. package/build/constants.d.ts +2 -1
  4. package/build/constants.js +2 -1
  5. package/build/constants.js.map +1 -1
  6. package/build/dex/balancer-v2/optimizer.d.ts +0 -1
  7. package/build/dex/balancer-v2/optimizer.js +21 -29
  8. package/build/dex/balancer-v2/optimizer.js.map +1 -1
  9. package/build/dex/pancakeswap-v3/types.d.ts +137 -0
  10. package/build/dex/pancakeswap-v3/types.js +9 -0
  11. package/build/dex/pancakeswap-v3/types.js.map +1 -0
  12. package/build/dex/uniswap-v3/config.js +12 -0
  13. package/build/dex/uniswap-v3/config.js.map +1 -1
  14. package/build/dex/weth/config.js +3 -0
  15. package/build/dex/weth/config.js.map +1 -1
  16. package/build/web3-provider.d.ts +3 -0
  17. package/build/web3-provider.js +13 -0
  18. package/build/web3-provider.js.map +1 -0
  19. package/package.json +1 -1
  20. package/src/config.ts +29 -0
  21. package/src/constants.ts +2 -1
  22. package/src/dex/balancer-v2/optimizer.ts +23 -38
  23. package/src/dex/uniswap-v3/config.ts +13 -0
  24. package/src/dex/weth/config.ts +3 -0
  25. package/build/abi/algebra/AlgebraFactory-v1_1.abi.json +0 -250
  26. package/build/abi/api3-proxy.json +0 -46
  27. package/build/abi/api3-server-v1.json +0 -463
  28. package/build/abi/quick-perps/fast-price-events.json +0 -70
  29. package/build/abi/quick-perps/fast-price-feed.json +0 -741
  30. package/build/abi/quick-perps/reader.json +0 -313
  31. package/build/abi/quick-perps/vault-price-feed.json +0 -323
  32. package/build/abi/quick-perps/vault.json +0 -1953
  33. package/build/abi/quickPerps/fast-price-events.json +0 -70
  34. package/build/abi/quickPerps/fast-price-feed.json +0 -748
  35. package/build/abi/quickPerps/reader.json +0 -313
  36. package/build/abi/quickPerps/vault-price-feed.json +0 -477
  37. package/build/abi/quickPerps/vault.json +0 -1953
  38. package/build/abi/woo-fi/WooFeeManager.abi.json +0 -318
  39. package/build/abi/woo-fi/WooPP.abi.json +0 -548
  40. package/build/abi/woo-fi/Wooracle.abi.json +0 -260
  41. package/build/dex/aave-v3/tokens/arbitrum.json +0 -50
  42. package/build/dex/aave-v3/tokens/avalanche.json +0 -74
  43. package/build/dex/aave-v3/tokens/fantom.json +0 -62
  44. package/build/dex/aave-v3/tokens/optimism.json +0 -50
  45. package/build/dex/aave-v3/tokens/polygon.json +0 -116
  46. package/build/dex/quick-perps/config.d.ts +0 -11
  47. package/build/dex/quick-perps/config.js +0 -27
  48. package/build/dex/quick-perps/config.js.map +0 -1
  49. package/build/dex/quick-perps/fast-price-feed.d.ts +0 -26
  50. package/build/dex/quick-perps/fast-price-feed.js +0 -176
  51. package/build/dex/quick-perps/fast-price-feed.js.map +0 -1
  52. package/build/dex/quick-perps/pool.d.ts +0 -21
  53. package/build/dex/quick-perps/pool.js +0 -210
  54. package/build/dex/quick-perps/pool.js.map +0 -1
  55. package/build/dex/quick-perps/quick-perps.d.ts +0 -52
  56. package/build/dex/quick-perps/quick-perps.js +0 -205
  57. package/build/dex/quick-perps/quick-perps.js.map +0 -1
  58. package/build/dex/quick-perps/types.d.ts +0 -98
  59. package/build/dex/quick-perps/types.js +0 -3
  60. package/build/dex/quick-perps/types.js.map +0 -1
  61. package/build/dex/quick-perps/usdq.d.ts +0 -15
  62. package/build/dex/quick-perps/usdq.js +0 -61
  63. package/build/dex/quick-perps/usdq.js.map +0 -1
  64. package/build/dex/quick-perps/vault-price-feed.d.ts +0 -43
  65. package/build/dex/quick-perps/vault-price-feed.js +0 -194
  66. package/build/dex/quick-perps/vault-price-feed.js.map +0 -1
  67. package/build/dex/quick-perps/vault-utils.d.ts +0 -8
  68. package/build/dex/quick-perps/vault-utils.js +0 -41
  69. package/build/dex/quick-perps/vault-utils.js.map +0 -1
  70. package/build/dex/quick-perps/vault.d.ts +0 -46
  71. package/build/dex/quick-perps/vault.js +0 -166
  72. package/build/dex/quick-perps/vault.js.map +0 -1
  73. package/build/dex/quickswap/camelot-v3.d.ts +0 -6
  74. package/build/dex/quickswap/camelot-v3.js +0 -19
  75. package/build/dex/quickswap/camelot-v3.js.map +0 -1
  76. package/build/dex/quickswap-v3.d.ts +0 -21
  77. package/build/dex/quickswap-v3.js +0 -40
  78. package/build/dex/quickswap-v3.js.map +0 -1
  79. package/build/dex/test-dex/config.d.ts +0 -4
  80. package/build/dex/test-dex/config.js +0 -15
  81. package/build/dex/test-dex/config.js.map +0 -1
  82. package/build/dex/test-dex/test-dex-pool.d.ts +0 -39
  83. package/build/dex/test-dex/test-dex-pool.js +0 -63
  84. package/build/dex/test-dex/test-dex-pool.js.map +0 -1
  85. package/build/dex/test-dex/test-dex.d.ts +0 -37
  86. package/build/dex/test-dex/test-dex.js +0 -126
  87. package/build/dex/test-dex/test-dex.js.map +0 -1
  88. package/build/dex/test-dex/types.d.ts +0 -6
  89. package/build/dex/test-dex/types.js +0 -3
  90. package/build/dex/test-dex/types.js.map +0 -1
  91. package/build/dex/woo-fi/config.d.ts +0 -4
  92. package/build/dex/woo-fi/config.js +0 -141
  93. package/build/dex/woo-fi/config.js.map +0 -1
  94. package/build/dex/woo-fi/constants.d.ts +0 -5
  95. package/build/dex/woo-fi/constants.js +0 -20
  96. package/build/dex/woo-fi/constants.js.map +0 -1
  97. package/build/dex/woo-fi/types.d.ts +0 -48
  98. package/build/dex/woo-fi/types.js +0 -3
  99. package/build/dex/woo-fi/types.js.map +0 -1
  100. package/build/dex/woo-fi/woo-fi-decimal-math.d.ts +0 -14
  101. package/build/dex/woo-fi/woo-fi-decimal-math.js +0 -42
  102. package/build/dex/woo-fi/woo-fi-decimal-math.js.map +0 -1
  103. package/build/dex/woo-fi/woo-fi-math.d.ts +0 -31
  104. package/build/dex/woo-fi/woo-fi-math.js +0 -300
  105. package/build/dex/woo-fi/woo-fi-math.js.map +0 -1
  106. package/build/dex/woo-fi/woo-fi.d.ts +0 -65
  107. package/build/dex/woo-fi/woo-fi.js +0 -480
  108. package/build/dex/woo-fi/woo-fi.js.map +0 -1
  109. package/build/dex/woo-fi-v2/woo-fi-math.d.ts +0 -16
  110. package/build/dex/woo-fi-v2/woo-fi-math.js +0 -137
  111. package/build/dex/woo-fi-v2/woo-fi-math.js.map +0 -1
  112. package/build/lib/api3-feed.d.ts +0 -26
  113. package/build/lib/api3-feed.js +0 -82
  114. package/build/lib/api3-feed.js.map +0 -1
  115. package/src/dex/balancer-v2/balancer-v2-optimizer.test.ts +0 -226
@@ -1,26 +0,0 @@
1
- import { Interface } from '@ethersproject/abi';
2
- import { DeepReadonly } from 'ts-essentials';
3
- import { PartialEventSubscriber } from '../../composed-event-subscriber';
4
- import { Address, MultiCallInput, MultiCallOutput, Logger, Log, BlockHeader } from '../../types';
5
- import { FastPriceFeedConfig, FastPriceFeedState } from './types';
6
- import { Lens } from '../../lens';
7
- export declare class FastPriceFeed<State> extends PartialEventSubscriber<State, FastPriceFeedState> {
8
- private fastPriceFeedAddress;
9
- private tokenAddresses;
10
- static readonly interface: Interface;
11
- static readonly fastPriceEventsInterface: Interface;
12
- BASIS_POINTS_DIVISOR: bigint;
13
- protected priceDuration: number;
14
- protected maxDeviationBasisPoints: bigint;
15
- protected favorFastPrice: Record<string, boolean>;
16
- private spreadBasisPointsIfInactive;
17
- private spreadBasisPointsIfChainError;
18
- private maxPriceUpdateDelay;
19
- constructor(fastPriceFeedAddress: Address, fastPriceEventsAddress: Address, tokenAddresses: Address[], config: FastPriceFeedConfig, lens: Lens<DeepReadonly<State>, DeepReadonly<FastPriceFeedState>>, logger: Logger);
20
- processLog(state: DeepReadonly<FastPriceFeedState>, log: Readonly<Log>, blockHeader: Readonly<BlockHeader>): DeepReadonly<FastPriceFeedState> | null;
21
- getPrice(_state: DeepReadonly<State>, _token: Address, _refPrice: bigint, _maximize: boolean): bigint;
22
- static getConfigMulticallInputs(fastPriceFeedAddress: Address, tokenAddresses: Address[]): MultiCallInput[];
23
- static getConfig(multicallOutputs: MultiCallOutput[], tokenAddresses: Address[]): FastPriceFeedConfig;
24
- getGenerateStateMultiCallInputs(): MultiCallInput[];
25
- generateState(multicallOutputs: MultiCallOutput[], blockNumber?: number | 'latest'): DeepReadonly<FastPriceFeedState>;
26
- }
@@ -1,176 +0,0 @@
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.FastPriceFeed = void 0;
7
- const lodash_1 = __importDefault(require("lodash"));
8
- const abi_1 = require("@ethersproject/abi");
9
- const composed_event_subscriber_1 = require("../../composed-event-subscriber");
10
- const fast_price_feed_json_1 = __importDefault(require("../../abi/quick-perps/fast-price-feed.json"));
11
- const fast_price_events_json_1 = __importDefault(require("../../abi/quick-perps/fast-price-events.json"));
12
- class FastPriceFeed extends composed_event_subscriber_1.PartialEventSubscriber {
13
- constructor(fastPriceFeedAddress, fastPriceEventsAddress, tokenAddresses, config, lens, logger) {
14
- super([fastPriceEventsAddress], lens, logger);
15
- this.fastPriceFeedAddress = fastPriceFeedAddress;
16
- this.tokenAddresses = tokenAddresses;
17
- this.BASIS_POINTS_DIVISOR = 10000n;
18
- this.priceDuration = config.priceDuration;
19
- this.maxDeviationBasisPoints = config.maxDeviationBasisPoints;
20
- this.favorFastPrice = config.favorFastPrice;
21
- this.spreadBasisPointsIfInactive = config.spreadBasisPointsIfInactive;
22
- this.spreadBasisPointsIfChainError = config.spreadBasisPointsIfChainError;
23
- this.maxPriceUpdateDelay = config.maxPriceUpdateDelay;
24
- }
25
- processLog(state, log, blockHeader) {
26
- try {
27
- const parsed = FastPriceFeed.fastPriceEventsInterface.parseLog(log);
28
- switch (parsed.name) {
29
- case 'PriceUpdate': {
30
- const _state = lodash_1.default.cloneDeep(state);
31
- _state.lastUpdatedAt =
32
- typeof blockHeader.timestamp === 'string'
33
- ? parseInt(blockHeader.timestamp)
34
- : blockHeader.timestamp;
35
- const tokenAddress = parsed.args.token.toLowerCase();
36
- if (tokenAddress in state.prices)
37
- _state.prices[tokenAddress] = BigInt(parsed.args.price.toString());
38
- return _state;
39
- }
40
- default:
41
- return null;
42
- }
43
- }
44
- catch (e) {
45
- this.logger.error('Failed to parse log', e);
46
- return null;
47
- }
48
- }
49
- getPrice(_state, _token, _refPrice, _maximize) {
50
- const state = this.lens.get()(_state);
51
- const timestamp = Math.floor(Date.now() / 1000);
52
- if (timestamp > state.lastUpdatedAt + this.maxPriceUpdateDelay) {
53
- if (_maximize) {
54
- return ((_refPrice *
55
- (this.BASIS_POINTS_DIVISOR + this.spreadBasisPointsIfChainError)) /
56
- this.BASIS_POINTS_DIVISOR);
57
- }
58
- return ((_refPrice *
59
- (this.BASIS_POINTS_DIVISOR - this.spreadBasisPointsIfChainError)) /
60
- this.BASIS_POINTS_DIVISOR);
61
- }
62
- if (timestamp > state.lastUpdatedAt + this.priceDuration) {
63
- if (_maximize) {
64
- return ((_refPrice *
65
- (this.BASIS_POINTS_DIVISOR + this.spreadBasisPointsIfInactive)) /
66
- this.BASIS_POINTS_DIVISOR);
67
- }
68
- return ((_refPrice *
69
- (this.BASIS_POINTS_DIVISOR - this.spreadBasisPointsIfInactive)) /
70
- this.BASIS_POINTS_DIVISOR);
71
- }
72
- const fastPrice = state.prices[_token];
73
- if (fastPrice === 0n)
74
- return _refPrice;
75
- let diffBasisPoints = _refPrice > fastPrice ? _refPrice - fastPrice : fastPrice - _refPrice;
76
- diffBasisPoints = (diffBasisPoints * this.BASIS_POINTS_DIVISOR) / _refPrice;
77
- // create a spread between the _refPrice and the fastPrice if the maxDeviationBasisPoints is exceeded
78
- // or if watchers have flagged an issue with the fast price
79
- const hasSpread = !this.favorFastPrice[_token] ||
80
- diffBasisPoints > this.maxDeviationBasisPoints;
81
- if (hasSpread) {
82
- // return the higher of the two prices
83
- if (_maximize) {
84
- return _refPrice > fastPrice ? _refPrice : fastPrice;
85
- }
86
- // return the lower of the two prices
87
- return _refPrice < fastPrice ? _refPrice : fastPrice;
88
- }
89
- return fastPrice;
90
- }
91
- static getConfigMulticallInputs(fastPriceFeedAddress, tokenAddresses) {
92
- return [
93
- {
94
- target: fastPriceFeedAddress,
95
- callData: FastPriceFeed.interface.encodeFunctionData('priceDuration'),
96
- },
97
- {
98
- target: fastPriceFeedAddress,
99
- callData: FastPriceFeed.interface.encodeFunctionData('maxDeviationBasisPoints'),
100
- },
101
- {
102
- target: fastPriceFeedAddress,
103
- callData: FastPriceFeed.interface.encodeFunctionData('spreadBasisPointsIfInactive'),
104
- },
105
- {
106
- target: fastPriceFeedAddress,
107
- callData: FastPriceFeed.interface.encodeFunctionData('spreadBasisPointsIfChainError'),
108
- },
109
- {
110
- target: fastPriceFeedAddress,
111
- callData: FastPriceFeed.interface.encodeFunctionData('maxPriceUpdateDelay'),
112
- },
113
- ...tokenAddresses.map(t => ({
114
- target: fastPriceFeedAddress,
115
- callData: FastPriceFeed.interface.encodeFunctionData('favorFastPrice', [
116
- t,
117
- ]),
118
- })),
119
- ];
120
- }
121
- static getConfig(multicallOutputs, tokenAddresses) {
122
- return {
123
- priceDuration: parseInt(FastPriceFeed.interface
124
- .decodeFunctionResult('priceDuration', multicallOutputs[0])[0]
125
- .toString()),
126
- maxDeviationBasisPoints: BigInt(FastPriceFeed.interface
127
- .decodeFunctionResult('maxDeviationBasisPoints', multicallOutputs[1])[0]
128
- .toString()),
129
- spreadBasisPointsIfInactive: BigInt(FastPriceFeed.interface
130
- .decodeFunctionResult('spreadBasisPointsIfInactive', multicallOutputs[2])[0]
131
- .toString()),
132
- spreadBasisPointsIfChainError: BigInt(FastPriceFeed.interface
133
- .decodeFunctionResult('spreadBasisPointsIfChainError', multicallOutputs[3])[0]
134
- .toString()),
135
- maxPriceUpdateDelay: parseInt(FastPriceFeed.interface
136
- .decodeFunctionResult('maxPriceUpdateDelay', multicallOutputs[4])[0]
137
- .toString()),
138
- favorFastPrice: multicallOutputs
139
- .slice(5)
140
- .reduce((acc, curr, i) => {
141
- acc[tokenAddresses[i]] = FastPriceFeed.interface.decodeFunctionResult('favorFastPrice', curr)[0];
142
- return acc;
143
- }, {}),
144
- };
145
- }
146
- getGenerateStateMultiCallInputs() {
147
- const pricesEntries = this.tokenAddresses.map((t) => ({
148
- target: this.fastPriceFeedAddress,
149
- callData: FastPriceFeed.interface.encodeFunctionData('prices', [t]),
150
- }));
151
- return [
152
- ...pricesEntries,
153
- {
154
- target: this.fastPriceFeedAddress,
155
- callData: FastPriceFeed.interface.encodeFunctionData('lastUpdatedAt'),
156
- },
157
- ];
158
- }
159
- generateState(multicallOutputs, blockNumber) {
160
- let fastPriceFeedState = {
161
- prices: {},
162
- lastUpdatedAt: 0,
163
- };
164
- this.tokenAddresses.forEach((t, i) => (fastPriceFeedState.prices[t] = BigInt(FastPriceFeed.interface
165
- .decodeFunctionResult('prices', multicallOutputs[i])[0]
166
- .toString())));
167
- fastPriceFeedState.lastUpdatedAt = parseInt(FastPriceFeed.interface
168
- .decodeFunctionResult('lastUpdatedAt', multicallOutputs[this.tokenAddresses.length])[0]
169
- .toString());
170
- return fastPriceFeedState;
171
- }
172
- }
173
- exports.FastPriceFeed = FastPriceFeed;
174
- FastPriceFeed.interface = new abi_1.Interface(fast_price_feed_json_1.default);
175
- FastPriceFeed.fastPriceEventsInterface = new abi_1.Interface(fast_price_events_json_1.default);
176
- //# sourceMappingURL=fast-price-feed.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fast-price-feed.js","sourceRoot":"","sources":["../../../src/dex/quick-perps/fast-price-feed.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import { Address } from '../../types';
2
- import { ComposedEventSubscriber } from '../../composed-event-subscriber';
3
- import { IDexHelper } from '../../dex-helper/idex-helper';
4
- import { PoolState, DexParams, PoolConfig } from './types';
5
- import { Vault } from './vault';
6
- import { Contract } from 'web3-eth-contract';
7
- export declare class QuickPerpsEventPool extends ComposedEventSubscriber<PoolState> {
8
- protected network: number;
9
- protected dexHelper: IDexHelper;
10
- PRICE_PRECISION: bigint;
11
- USDQ_DECIMALS: number;
12
- BASIS_POINTS_DIVISOR: bigint;
13
- vault: Vault<PoolState>;
14
- reader: Contract;
15
- constructor(parentName: string, network: number, dexHelper: IDexHelper, config: PoolConfig);
16
- getStateOrGenerate(blockNumber: number): Promise<Readonly<PoolState>>;
17
- getMaxAmountIn(_tokenIn: Address, _tokenOut: Address): Promise<bigint>;
18
- getAmountOut(_tokenIn: Address, _tokenOut: Address, _amountsIn: bigint[], blockNumber: number): Promise<bigint[] | null>;
19
- static getWhitelistedTokens(vaultAddress: Address, blockNumber: number | 'latest', multiContract: Contract): Promise<string[]>;
20
- static getConfig(dexParams: DexParams, blockNumber: number | 'latest', multiContract: Contract): Promise<PoolConfig>;
21
- }
@@ -1,210 +0,0 @@
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.QuickPerpsEventPool = void 0;
7
- const lens_1 = require("../../lens");
8
- const composed_event_subscriber_1 = require("../../composed-event-subscriber");
9
- const api3_feed_1 = require("../../lib/api3-feed");
10
- const fast_price_feed_1 = require("./fast-price-feed");
11
- const vault_price_feed_1 = require("./vault-price-feed");
12
- const vault_1 = require("./vault");
13
- const usdq_1 = require("./usdq");
14
- const reader_json_1 = __importDefault(require("../../abi/quick-perps/reader.json"));
15
- const MAX_AMOUNT_IN_CACHE_TTL = 5 * 60;
16
- class QuickPerpsEventPool extends composed_event_subscriber_1.ComposedEventSubscriber {
17
- constructor(parentName, network, dexHelper, config) {
18
- const api3ServerV1Map = Object.entries(config.api3ServerV1).reduce((acc, [key, value]) => {
19
- acc[key] = new api3_feed_1.Api3FeedSubscriber(value.proxy, value.api3ServerV1, value.dataFeedId, (0, lens_1.lens)().primaryPrices[key], dexHelper.getLogger(`${key} Api3FeedSubscriber for ${parentName}-${network}`));
20
- return acc;
21
- }, {});
22
- const fastPriceFeed = new fast_price_feed_1.FastPriceFeed(config.fastPriceFeed, config.fastPriceEvents, config.tokenAddresses, config.fastPriceFeedConfig, (0, lens_1.lens)().secondaryPrices, dexHelper.getLogger(`${parentName}-${network} fastPriceFeed`));
23
- const vaultPriceFeed = new vault_price_feed_1.VaultPriceFeed(config.vaultPriceFeedConfig, api3ServerV1Map, fastPriceFeed);
24
- const usdq = new usdq_1.USDQ(config.usdqAddress, (0, lens_1.lens)().usdq, dexHelper.getLogger(`${parentName}-${network} USDQ`));
25
- const vault = new vault_1.Vault(config.vaultAddress, config.tokenAddresses, config.vaultConfig, vaultPriceFeed, usdq, (0, lens_1.lens)().vault, dexHelper.getLogger(`${parentName}-${network} vault`));
26
- super(parentName, 'pool', dexHelper.getLogger(`${parentName}-${network}`), dexHelper, [...Object.values(api3ServerV1Map), fastPriceFeed, usdq, vault], {
27
- primaryPrices: {},
28
- secondaryPrices: {
29
- lastUpdatedAt: 0,
30
- prices: {},
31
- },
32
- vault: {
33
- usdqAmounts: {},
34
- },
35
- usdq: {
36
- totalSupply: 0n,
37
- },
38
- });
39
- this.network = network;
40
- this.dexHelper = dexHelper;
41
- this.PRICE_PRECISION = 10n ** 30n;
42
- this.USDQ_DECIMALS = 18;
43
- this.BASIS_POINTS_DIVISOR = 10000n;
44
- this.vault = vault;
45
- this.reader = new this.dexHelper.web3Provider.eth.Contract(reader_json_1.default, config.readerAddress);
46
- }
47
- async getStateOrGenerate(blockNumber) {
48
- const evenState = this.getState(blockNumber);
49
- if (evenState)
50
- return evenState;
51
- const onChainState = await this.generateState(blockNumber);
52
- this.setState(onChainState, blockNumber);
53
- return onChainState;
54
- }
55
- async getMaxAmountIn(_tokenIn, _tokenOut) {
56
- const cacheKey = `maxAmountIn_${_tokenIn}_${_tokenOut}`;
57
- const maxAmountCached = await this.dexHelper.cache.get(this.parentName, this.network, cacheKey);
58
- if (maxAmountCached)
59
- return BigInt(maxAmountCached);
60
- const maxAmount = await this.reader.methods
61
- .getMaxAmountIn(this.vault.vaultAddress, _tokenIn, _tokenOut)
62
- .call();
63
- this.dexHelper.cache.setex(this.parentName, this.network, cacheKey, MAX_AMOUNT_IN_CACHE_TTL, maxAmount);
64
- return BigInt(maxAmount);
65
- }
66
- // Reference to the original implementation
67
- // https://github.com/gmx-io/gmx-contracts/blob/master/contracts/peripherals/Reader.sol#L71
68
- async getAmountOut(_tokenIn, _tokenOut, _amountsIn, blockNumber) {
69
- const maxAmountIn = await this.getMaxAmountIn(_tokenIn, _tokenOut);
70
- const state = await this.getStateOrGenerate(blockNumber);
71
- const priceIn = this.vault.getMinPrice(state, _tokenIn);
72
- const priceOut = this.vault.getMaxPrice(state, _tokenOut);
73
- const tokenInDecimals = this.vault.tokenDecimals[_tokenIn];
74
- const tokenOutDecimals = this.vault.tokenDecimals[_tokenOut];
75
- const isStableSwap = this.vault.stableTokens[_tokenIn] && this.vault.stableTokens[_tokenOut];
76
- const baseBps = isStableSwap
77
- ? this.vault.stableSwapFeeBasisPoints
78
- : this.vault.swapFeeBasisPoints;
79
- const taxBps = isStableSwap
80
- ? this.vault.stableTaxBasisPoints
81
- : this.vault.taxBasisPoints;
82
- const USDQUnit = BigInt(10 ** this.USDQ_DECIMALS);
83
- const tokenInUnit = BigInt(10 ** tokenInDecimals);
84
- const tokenOutUnit = BigInt(10 ** tokenOutDecimals);
85
- return _amountsIn.map(_amountIn => {
86
- if (_amountIn > maxAmountIn)
87
- return 0n;
88
- let feeBasisPoints;
89
- {
90
- let usdqAmount = (_amountIn * priceIn) / this.PRICE_PRECISION;
91
- usdqAmount = (usdqAmount * USDQUnit) / tokenInUnit;
92
- const feesBasisPoints0 = this.vault.getFeeBasisPoints(state, _tokenIn, usdqAmount, baseBps, taxBps, true);
93
- const feesBasisPoints1 = this.vault.getFeeBasisPoints(state, _tokenOut, usdqAmount, baseBps, taxBps, false);
94
- // use the higher of the two fee basis points
95
- feeBasisPoints =
96
- feesBasisPoints0 > feesBasisPoints1
97
- ? feesBasisPoints0
98
- : feesBasisPoints1;
99
- }
100
- let amountOut = (_amountIn * priceIn) / priceOut;
101
- amountOut = (amountOut * tokenOutUnit) / tokenInUnit;
102
- const amountOutAfterFees = (amountOut * (this.BASIS_POINTS_DIVISOR - feeBasisPoints)) /
103
- this.BASIS_POINTS_DIVISOR;
104
- return amountOutAfterFees;
105
- });
106
- }
107
- static async getWhitelistedTokens(vaultAddress, blockNumber, multiContract) {
108
- // get tokens count
109
- const tokenCountResult = (await multiContract.methods
110
- .aggregate([
111
- {
112
- callData: vault_1.Vault.interface.encodeFunctionData('allWhitelistedTokensLength'),
113
- target: vaultAddress,
114
- },
115
- ])
116
- .call({}, blockNumber)).returnData;
117
- const tokensCount = parseInt(vault_1.Vault.interface
118
- .decodeFunctionResult('allWhitelistedTokensLength', tokenCountResult[0])
119
- .toString());
120
- // get tokens
121
- const getTokensCalldata = new Array(tokensCount).fill(0).map((_, i) => {
122
- return {
123
- callData: vault_1.Vault.interface.encodeFunctionData('allWhitelistedTokens', [
124
- i,
125
- ]),
126
- target: vaultAddress,
127
- };
128
- });
129
- const tokensResult = (await multiContract.methods
130
- .aggregate(getTokensCalldata)
131
- .call({}, blockNumber)).returnData;
132
- const tokens = tokensResult.map((t) => vault_1.Vault.interface
133
- .decodeFunctionResult('allWhitelistedTokens', t)[0]
134
- .toLowerCase());
135
- return tokens;
136
- }
137
- static async getConfig(dexParams, blockNumber, multiContract) {
138
- const tokens = await this.getWhitelistedTokens(dexParams.vault, blockNumber, multiContract);
139
- // get price chainlink price feed
140
- const getPriceFeedCalldata = tokens.map(t => {
141
- return {
142
- callData: vault_price_feed_1.VaultPriceFeed.interface.encodeFunctionData('priceFeedProxies', [t]),
143
- target: dexParams.priceFeed,
144
- };
145
- });
146
- const priceFeedResult = (await multiContract.methods
147
- .aggregate(getPriceFeedCalldata)
148
- .call({}, blockNumber)).returnData;
149
- const priceFeeds = priceFeedResult.map((p) => vault_price_feed_1.VaultPriceFeed.interface
150
- .decodeFunctionResult('priceFeedProxies', p)[0]
151
- .toString()
152
- .toLowerCase());
153
- // get config for all event listeners
154
- let multicallSlices = [];
155
- let multiCallData = [];
156
- let i = 0;
157
- for (let priceFeed of priceFeeds) {
158
- const api3ServerAddressCallData = api3_feed_1.Api3FeedSubscriber.getApi3ServerV1MultiCallInput(priceFeed);
159
- const dataFeedIdCallData = api3_feed_1.Api3FeedSubscriber.getDataFeedId(priceFeed);
160
- multiCallData.push(...[api3ServerAddressCallData, dataFeedIdCallData]);
161
- multicallSlices.push([i, i + 2]);
162
- i += 2;
163
- }
164
- const fastPriceFeedConfigCallData = fast_price_feed_1.FastPriceFeed.getConfigMulticallInputs(dexParams.fastPriceFeed, tokens);
165
- multiCallData.push(...fastPriceFeedConfigCallData);
166
- multicallSlices.push([i, i + fastPriceFeedConfigCallData.length]);
167
- i += fastPriceFeedConfigCallData.length;
168
- const vaultPriceFeedConfigCallData = vault_price_feed_1.VaultPriceFeed.getConfigMulticallInputs(dexParams.priceFeed, tokens);
169
- multiCallData.push(...vaultPriceFeedConfigCallData);
170
- multicallSlices.push([i, i + vaultPriceFeedConfigCallData.length]);
171
- i += vaultPriceFeedConfigCallData.length;
172
- const vaultConfigCallData = vault_1.Vault.getConfigMulticallInputs(dexParams.vault, tokens);
173
- multiCallData.push(...vaultConfigCallData);
174
- multicallSlices.push([i, i + vaultConfigCallData.length]);
175
- i += vaultConfigCallData.length;
176
- const configResults = (await multiContract.methods.aggregate(multiCallData).call({}, blockNumber)).returnData;
177
- const api3ServerV1 = {};
178
- for (let token of tokens) {
179
- const [api3ServerAddressRes, dataFeedIdRes] = configResults.slice(...multicallSlices.shift());
180
- const serverV1Address = api3_feed_1.Api3FeedSubscriber.decodeApi3ServerV1Result(api3ServerAddressRes);
181
- const dataFeedId = api3_feed_1.Api3FeedSubscriber.decodeDataFeedId(dataFeedIdRes);
182
- api3ServerV1[token] = {
183
- proxy: priceFeeds.shift(),
184
- api3ServerV1: serverV1Address,
185
- dataFeedId,
186
- };
187
- }
188
- const fastPriceFeedConfigResults = configResults.slice(...multicallSlices.shift());
189
- const fastPriceFeedConfig = fast_price_feed_1.FastPriceFeed.getConfig(fastPriceFeedConfigResults, tokens);
190
- const vaultPriceFeedConfigResults = configResults.slice(...multicallSlices.shift());
191
- const vaultPriceFeedConfig = vault_price_feed_1.VaultPriceFeed.getConfig(vaultPriceFeedConfigResults, tokens);
192
- const vaultConfigResults = configResults.slice(...multicallSlices.shift());
193
- const vaultConfig = vault_1.Vault.getConfig(vaultConfigResults, tokens);
194
- return {
195
- vaultAddress: dexParams.vault,
196
- readerAddress: dexParams.reader,
197
- priceFeed: dexParams.priceFeed,
198
- fastPriceFeed: dexParams.fastPriceFeed,
199
- fastPriceEvents: dexParams.fastPriceEvents,
200
- usdqAddress: dexParams.usdq,
201
- tokenAddresses: tokens,
202
- vaultConfig,
203
- vaultPriceFeedConfig,
204
- fastPriceFeedConfig,
205
- api3ServerV1,
206
- };
207
- }
208
- }
209
- exports.QuickPerpsEventPool = QuickPerpsEventPool;
210
- //# sourceMappingURL=pool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../../src/dex/quick-perps/pool.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- import { Interface } from '@ethersproject/abi';
2
- import { Token, Address, ExchangePrices, PoolPrices, AdapterExchangeParam, SimpleExchangeParam, PoolLiquidity, Logger } from '../../types';
3
- import { SwapSide, Network } from '../../constants';
4
- import { IDex } from '../idex';
5
- import { IDexHelper } from '../../dex-helper/idex-helper';
6
- import { QuickPerpsData, DexParams } from './types';
7
- import { QuickPerpsEventPool } from './pool';
8
- import { SimpleExchange } from '../simple-exchange';
9
- export declare class QuickPerps extends SimpleExchange implements IDex<QuickPerpsData> {
10
- protected network: Network;
11
- protected dexHelper: IDexHelper;
12
- protected adapters: {
13
- [side: string]: {
14
- name: string;
15
- index: number;
16
- }[] | null;
17
- };
18
- protected params: DexParams;
19
- protected pool: QuickPerpsEventPool | null;
20
- protected supportedTokensMap: {
21
- [address: string]: boolean;
22
- };
23
- protected supportedTokens: Token[];
24
- readonly hasConstantPriceLargeAmounts = false;
25
- readonly needWrapNative = true;
26
- readonly isFeeOnTransferSupported = false;
27
- static dexKeysWithNetwork: {
28
- key: string;
29
- networks: Network[];
30
- }[];
31
- static erc20Interface: Interface;
32
- vaultUSDBalance: number;
33
- logger: Logger;
34
- constructor(network: Network, dexKey: string, dexHelper: IDexHelper, adapters?: {
35
- [side: string]: {
36
- name: string;
37
- index: number;
38
- }[] | null;
39
- }, params?: DexParams);
40
- initializePricing(blockNumber: number): Promise<void>;
41
- getAdapters(side: SwapSide): {
42
- name: string;
43
- index: number;
44
- }[] | null;
45
- getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise<string[]>;
46
- getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<QuickPerpsData>>;
47
- getCalldataGasCost(poolPrices: PoolPrices<QuickPerpsData>): number | number[];
48
- getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: QuickPerpsData, side: SwapSide): AdapterExchangeParam;
49
- getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: QuickPerpsData, side: SwapSide): SimpleExchangeParam;
50
- updatePoolState(): Promise<void>;
51
- getTopPoolsForToken(_tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
52
- }