@paraswap/dex-lib 2.14.7-hashflow-state-polling-dex.3 → 2.14.7-hashflow-state-polling-dex.5
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.
- package/build/dex/hashflow/constants.d.ts +3 -2
- package/build/dex/hashflow/constants.js +4 -3
- package/build/dex/hashflow/constants.js.map +1 -1
- package/build/dex/hashflow/hashflow.d.ts +2 -2
- package/build/dex/hashflow/hashflow.js +23 -15
- package/build/dex/hashflow/hashflow.js.map +1 -1
- package/build/dex/hashflow/rate-fetcher.d.ts +4 -1
- package/build/dex/hashflow/rate-fetcher.js +22 -10
- package/build/dex/hashflow/rate-fetcher.js.map +1 -1
- package/build/dex/hashflow/types.d.ts +3 -1
- package/build/lib/fetcher/fetcher.js +3 -1
- package/build/lib/fetcher/fetcher.js.map +1 -1
- package/package.json +1 -1
- package/src/dex/hashflow/constants.ts +4 -3
- package/src/dex/hashflow/hashflow.ts +78 -58
- package/src/dex/hashflow/rate-fetcher.ts +64 -15
- package/src/dex/hashflow/types.ts +7 -5
- package/src/lib/fetcher/fetcher.ts +6 -4
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export declare const HASHFLOW_BLACKLIST_TTL_S: number;
|
|
2
2
|
export declare const HASHFLOW_MM_RESTRICT_TTL_S: number;
|
|
3
3
|
export declare const HASHFLOW_PRICES_CACHES_TTL_S = 3;
|
|
4
|
-
export declare const HASHFLOW_MARKET_MAKERS_CACHES_TTL_S =
|
|
5
|
-
export declare const
|
|
4
|
+
export declare const HASHFLOW_MARKET_MAKERS_CACHES_TTL_S = 30;
|
|
5
|
+
export declare const HASHFLOW_API_PRICES_POLLING_INTERVAL_MS = 0;
|
|
6
|
+
export declare const HASHFLOW_API_MARKET_MAKERS_POLLING_INTERVAL_MS: number;
|
|
6
7
|
export declare const HASHFLOW_API_URL = "https://api.hashflow.com";
|
|
7
8
|
export declare const HASHFLOW_API_CLIENT_NAME = "paraswap";
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HASHFLOW_API_CLIENT_NAME = exports.HASHFLOW_API_URL = exports.
|
|
3
|
+
exports.HASHFLOW_API_CLIENT_NAME = exports.HASHFLOW_API_URL = exports.HASHFLOW_API_MARKET_MAKERS_POLLING_INTERVAL_MS = exports.HASHFLOW_API_PRICES_POLLING_INTERVAL_MS = exports.HASHFLOW_MARKET_MAKERS_CACHES_TTL_S = exports.HASHFLOW_PRICES_CACHES_TTL_S = exports.HASHFLOW_MM_RESTRICT_TTL_S = exports.HASHFLOW_BLACKLIST_TTL_S = void 0;
|
|
4
4
|
// 7 days
|
|
5
5
|
exports.HASHFLOW_BLACKLIST_TTL_S = 60 * 60 * 24 * 7;
|
|
6
6
|
exports.HASHFLOW_MM_RESTRICT_TTL_S = 60 * 60;
|
|
7
7
|
exports.HASHFLOW_PRICES_CACHES_TTL_S = 3;
|
|
8
|
-
exports.HASHFLOW_MARKET_MAKERS_CACHES_TTL_S =
|
|
9
|
-
exports.
|
|
8
|
+
exports.HASHFLOW_MARKET_MAKERS_CACHES_TTL_S = 30;
|
|
9
|
+
exports.HASHFLOW_API_PRICES_POLLING_INTERVAL_MS = 0;
|
|
10
|
+
exports.HASHFLOW_API_MARKET_MAKERS_POLLING_INTERVAL_MS = 28 * 1000; // 28 secs
|
|
10
11
|
exports.HASHFLOW_API_URL = 'https://api.hashflow.com';
|
|
11
12
|
exports.HASHFLOW_API_CLIENT_NAME = 'paraswap';
|
|
12
13
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/dex/hashflow/constants.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/dex/hashflow/constants.ts"],"names":[],"mappings":";;;AAAA,SAAS;AACI,QAAA,wBAAwB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAE5C,QAAA,0BAA0B,GAAG,EAAE,GAAG,EAAE,CAAC;AAErC,QAAA,4BAA4B,GAAG,CAAC,CAAC;AAEjC,QAAA,mCAAmC,GAAG,EAAE,CAAC;AAEzC,QAAA,uCAAuC,GAAG,CAAC,CAAC;AAE5C,QAAA,8CAA8C,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,UAAU;AAEtE,QAAA,gBAAgB,GAAG,0BAA0B,CAAC;AAE9C,QAAA,wBAAwB,GAAG,UAAU,CAAC"}
|
|
@@ -48,8 +48,8 @@ export declare class Hashflow extends SimpleExchange implements IDex<HashflowDat
|
|
|
48
48
|
price: BigNumber;
|
|
49
49
|
}[];
|
|
50
50
|
computeLevelsQuote(priceLevels: PriceLevel[], reqBaseAmount?: BigNumber, reqQuoteAmount?: BigNumber): BigNumber | undefined;
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
getCachedMarketMakers(): Promise<MarketMakersResponse['marketMakers'] | null>;
|
|
52
|
+
getCachedLevels(): Promise<PriceLevelsResponse['levels'] | null>;
|
|
53
53
|
normalizeToken(token: Token): Token;
|
|
54
54
|
getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<HashflowData>>;
|
|
55
55
|
preProcessTransaction(optimalSwapExchange: OptimalSwapExchange<HashflowData>, srcToken: Token, destToken: Token, side: SwapSide, options: PreprocessTransactionOptions): Promise<[OptimalSwapExchange<HashflowData>, ExchangeTxInfo]>;
|
|
@@ -43,7 +43,6 @@ const sdk_1 = require("@hashflow/sdk");
|
|
|
43
43
|
const ts_essentials_1 = require("ts-essentials");
|
|
44
44
|
const constants_2 = require("./constants");
|
|
45
45
|
const bigint_constants_1 = require("../../bigint-constants");
|
|
46
|
-
const HASHFLOW_ASYNC_CALL_TIMEOUT = 150;
|
|
47
46
|
class Hashflow extends simple_exchange_1.SimpleExchange {
|
|
48
47
|
constructor(network, dexKey, dexHelper, adapters = config_1.Adapters[network] || {}, routerAddress = config_1.HashflowConfig['Hashflow'][network]
|
|
49
48
|
.routerAddress, routerInterface = new utils_2.Interface(HashflowRouter_abi_json_1.default)) {
|
|
@@ -85,19 +84,28 @@ class Hashflow extends simple_exchange_1.SimpleExchange {
|
|
|
85
84
|
}
|
|
86
85
|
async initializePricing(blockNumber) {
|
|
87
86
|
if (!this.dexHelper.config.isSlave) {
|
|
88
|
-
this.rateFetcher = new rate_fetcher_1.RateFetcher(this.dexHelper, this.dexKey, this.logger, {
|
|
87
|
+
this.rateFetcher = new rate_fetcher_1.RateFetcher(this.dexHelper, this.dexKey, this.network, this.logger, {
|
|
89
88
|
rateConfig: {
|
|
90
|
-
|
|
89
|
+
pricesIntervalMs: constants_2.HASHFLOW_API_PRICES_POLLING_INTERVAL_MS,
|
|
90
|
+
markerMakersIntervalMs: constants_2.HASHFLOW_API_MARKET_MAKERS_POLLING_INTERVAL_MS,
|
|
91
91
|
marketMakersReqParams: {
|
|
92
92
|
url: `${constants_2.HASHFLOW_API_URL}/taker/v1/marketMakers`,
|
|
93
|
-
params: {
|
|
93
|
+
params: {
|
|
94
|
+
networkId: this.network,
|
|
95
|
+
source: constants_2.HASHFLOW_API_CLIENT_NAME,
|
|
96
|
+
},
|
|
94
97
|
headers: { Authorization: this.hashFlowAuthToken },
|
|
95
98
|
},
|
|
96
99
|
pricesReqParams: {
|
|
97
100
|
url: `${constants_2.HASHFLOW_API_URL}/taker/v2/price-levels`,
|
|
98
|
-
params: {
|
|
101
|
+
params: {
|
|
102
|
+
networkId: this.network,
|
|
103
|
+
source: constants_2.HASHFLOW_API_CLIENT_NAME,
|
|
104
|
+
marketMakers: [],
|
|
105
|
+
},
|
|
99
106
|
headers: { Authorization: this.hashFlowAuthToken },
|
|
100
107
|
},
|
|
108
|
+
getCachedMarketMakers: this.getCachedMarketMakers.bind(this),
|
|
101
109
|
filterMarketMakers: this.getFilteredMarketMakers.bind(this),
|
|
102
110
|
pricesCacheKey: this.pricesCacheKey,
|
|
103
111
|
pricesCacheTTLSecs: constants_2.HASHFLOW_PRICES_CACHES_TTL_S,
|
|
@@ -124,7 +132,7 @@ class Hashflow extends simple_exchange_1.SimpleExchange {
|
|
|
124
132
|
if (normalizedSrcToken.address === normalizedDestToken.address) {
|
|
125
133
|
return [];
|
|
126
134
|
}
|
|
127
|
-
const levels = await this.
|
|
135
|
+
const levels = (await this.getCachedLevels()) || {};
|
|
128
136
|
const makers = Object.keys(levels);
|
|
129
137
|
return makers
|
|
130
138
|
.filter(m => {
|
|
@@ -233,19 +241,19 @@ class Hashflow extends simple_exchange_1.SimpleExchange {
|
|
|
233
241
|
}
|
|
234
242
|
return undefined;
|
|
235
243
|
}
|
|
236
|
-
async
|
|
244
|
+
async getCachedMarketMakers() {
|
|
237
245
|
const cachedMarketMakers = await this.dexHelper.cache.rawget(this.marketMakersCacheKey);
|
|
238
246
|
if (cachedMarketMakers) {
|
|
239
247
|
return JSON.parse(cachedMarketMakers);
|
|
240
248
|
}
|
|
241
|
-
return
|
|
249
|
+
return null;
|
|
242
250
|
}
|
|
243
|
-
async
|
|
251
|
+
async getCachedLevels() {
|
|
244
252
|
const cachedLevels = await this.dexHelper.cache.rawget(this.pricesCacheKey);
|
|
245
253
|
if (cachedLevels) {
|
|
246
254
|
return JSON.parse(cachedLevels);
|
|
247
255
|
}
|
|
248
|
-
return
|
|
256
|
+
return null;
|
|
249
257
|
}
|
|
250
258
|
// Hashflow protocol for native token expects 0x00000... instead of 0xeeeee...
|
|
251
259
|
normalizeToken(token) {
|
|
@@ -266,7 +274,7 @@ class Hashflow extends simple_exchange_1.SimpleExchange {
|
|
|
266
274
|
const pools = limitPools ??
|
|
267
275
|
(await this.getPoolIdentifiers(srcToken, destToken, side, blockNumber));
|
|
268
276
|
const marketMakersToUse = pools.map(p => p.split(`${prefix}_`).pop());
|
|
269
|
-
const levelsMap = await this.
|
|
277
|
+
const levelsMap = (await this.getCachedLevels()) || {};
|
|
270
278
|
Object.keys(levelsMap).forEach(mmKey => {
|
|
271
279
|
if (!marketMakersToUse.includes(mmKey)) {
|
|
272
280
|
delete levelsMap[mmKey];
|
|
@@ -317,7 +325,7 @@ class Hashflow extends simple_exchange_1.SimpleExchange {
|
|
|
317
325
|
const normalizedDestToken = this.normalizeToken(destToken);
|
|
318
326
|
let rfq;
|
|
319
327
|
try {
|
|
320
|
-
rfq = await
|
|
328
|
+
rfq = await this.api.requestQuote({
|
|
321
329
|
chainId,
|
|
322
330
|
baseToken: normalizedSrcToken.address,
|
|
323
331
|
quoteToken: normalizedDestToken.address,
|
|
@@ -329,7 +337,7 @@ class Hashflow extends simple_exchange_1.SimpleExchange {
|
|
|
329
337
|
wallet: this.augustusAddress.toLowerCase(),
|
|
330
338
|
effectiveTrader: options.txOrigin.toLowerCase(),
|
|
331
339
|
marketMakers: [mm],
|
|
332
|
-
})
|
|
340
|
+
});
|
|
333
341
|
if (rfq.status !== 'success') {
|
|
334
342
|
const message = `${this.dexKey}-${this.network}: Failed to fetch RFQ for ${this.getPairName(normalizedSrcToken.address, normalizedDestToken.address)}: ${JSON.stringify(rfq)}`;
|
|
335
343
|
this.logger.warn(message);
|
|
@@ -504,9 +512,9 @@ class Hashflow extends simple_exchange_1.SimpleExchange {
|
|
|
504
512
|
}
|
|
505
513
|
async getTopPoolsForToken(tokenAddress, limit) {
|
|
506
514
|
const _tokenAddress = tokenAddress.toLowerCase();
|
|
507
|
-
const makers = await this.
|
|
515
|
+
const makers = (await this.getCachedMarketMakers()) || [];
|
|
508
516
|
const filteredMakers = await this.getFilteredMarketMakers(makers);
|
|
509
|
-
const pLevels = await this.
|
|
517
|
+
const pLevels = (await this.getCachedLevels()) || {};
|
|
510
518
|
let baseToken = undefined;
|
|
511
519
|
// TODO: Improve efficiency of this part. Quite inefficient way to determine
|
|
512
520
|
// Token address and decimals. But since it is not called frequently, not worth
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hashflow.js","sourceRoot":"","sources":["../../../src/dex/hashflow/hashflow.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hashflow.js","sourceRoot":"","sources":["../../../src/dex/hashflow/hashflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { IDexHelper } from '../../dex-helper';
|
|
2
2
|
import { Logger } from '../../types';
|
|
3
3
|
import { HashflowRateFetcherConfig } from './types';
|
|
4
|
+
import { Network } from '../../constants';
|
|
4
5
|
export declare class RateFetcher {
|
|
5
6
|
private dexHelper;
|
|
6
7
|
private dexKey;
|
|
8
|
+
private network;
|
|
7
9
|
private logger;
|
|
8
10
|
private rateFetcher;
|
|
9
11
|
private pricesCacheKey;
|
|
10
12
|
private pricesCacheTTL;
|
|
13
|
+
private marketMakersFetcher;
|
|
11
14
|
private marketMakersCacheKey;
|
|
12
15
|
private marketMakersCacheTTL;
|
|
13
|
-
constructor(dexHelper: IDexHelper, dexKey: string, logger: Logger, config: HashflowRateFetcherConfig);
|
|
16
|
+
constructor(dexHelper: IDexHelper, dexKey: string, network: Network, logger: Logger, config: HashflowRateFetcherConfig);
|
|
14
17
|
start(): void;
|
|
15
18
|
stop(): void;
|
|
16
19
|
private handleMarketMakersResponse;
|
|
@@ -8,25 +8,34 @@ const fetcher_1 = __importDefault(require("../../lib/fetcher/fetcher"));
|
|
|
8
8
|
const validators_1 = require("../../lib/validators");
|
|
9
9
|
const validators_2 = require("./validators");
|
|
10
10
|
class RateFetcher {
|
|
11
|
-
constructor(dexHelper, dexKey, logger, config) {
|
|
11
|
+
constructor(dexHelper, dexKey, network, logger, config) {
|
|
12
12
|
this.dexHelper = dexHelper;
|
|
13
13
|
this.dexKey = dexKey;
|
|
14
|
+
this.network = network;
|
|
14
15
|
this.logger = logger;
|
|
15
16
|
this.pricesCacheKey = config.rateConfig.pricesCacheKey;
|
|
16
17
|
this.pricesCacheTTL = config.rateConfig.pricesCacheTTLSecs;
|
|
17
18
|
this.marketMakersCacheKey = config.rateConfig.marketMakersCacheKey;
|
|
18
19
|
this.marketMakersCacheTTL = config.rateConfig.marketMakersCacheTTLSecs;
|
|
20
|
+
this.marketMakersFetcher = new fetcher_1.default(dexHelper.httpRequest, {
|
|
21
|
+
info: {
|
|
22
|
+
requestOptions: config.rateConfig.marketMakersReqParams,
|
|
23
|
+
caster: (data) => {
|
|
24
|
+
return (0, validators_1.validateAndCast)(data, validators_2.marketMakersValidator);
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
handler: this.handleMarketMakersResponse.bind(this),
|
|
28
|
+
}, config.rateConfig.markerMakersIntervalMs, logger);
|
|
19
29
|
this.rateFetcher = new fetcher_1.default(dexHelper.httpRequest, {
|
|
20
30
|
info: {
|
|
21
31
|
requestOptions: config.rateConfig.pricesReqParams,
|
|
22
32
|
requestFunc: async (options) => {
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const filteredMarketMakers = await config.rateConfig.filterMarketMakers(marketMakers);
|
|
33
|
+
const { filterMarketMakers, getCachedMarketMakers } = config.rateConfig;
|
|
34
|
+
const cachedMarketMakers = (await getCachedMarketMakers()) || [];
|
|
35
|
+
const filteredMarketMakers = await filterMarketMakers(cachedMarketMakers);
|
|
36
|
+
if (filteredMarketMakers.length === 0) {
|
|
37
|
+
return Promise.reject(new Error(`${dexKey}-${network}: got ${filteredMarketMakers.length} market makers. Skipping pricing request.`));
|
|
38
|
+
}
|
|
30
39
|
const prices = await dexHelper.httpRequest.request({
|
|
31
40
|
...options,
|
|
32
41
|
params: { ...options.params, marketMakers: filteredMarketMakers },
|
|
@@ -38,12 +47,14 @@ class RateFetcher {
|
|
|
38
47
|
},
|
|
39
48
|
},
|
|
40
49
|
handler: this.handleRatesResponse.bind(this),
|
|
41
|
-
}, config.rateConfig.
|
|
50
|
+
}, config.rateConfig.pricesIntervalMs, logger);
|
|
42
51
|
}
|
|
43
52
|
start() {
|
|
53
|
+
this.marketMakersFetcher.startPolling();
|
|
44
54
|
this.rateFetcher.startPolling();
|
|
45
55
|
}
|
|
46
56
|
stop() {
|
|
57
|
+
this.marketMakersFetcher.stopPolling();
|
|
47
58
|
this.rateFetcher.stopPolling();
|
|
48
59
|
}
|
|
49
60
|
handleMarketMakersResponse(resp) {
|
|
@@ -55,7 +66,8 @@ class RateFetcher {
|
|
|
55
66
|
this.dexHelper.cache.rawset(this.pricesCacheKey, JSON.stringify(levels), this.pricesCacheTTL);
|
|
56
67
|
}
|
|
57
68
|
checkHealth() {
|
|
58
|
-
return this.
|
|
69
|
+
return (this.marketMakersFetcher.lastFetchSucceeded &&
|
|
70
|
+
this.rateFetcher.lastFetchSucceeded);
|
|
59
71
|
}
|
|
60
72
|
}
|
|
61
73
|
exports.RateFetcher = RateFetcher;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-fetcher.js","sourceRoot":"","sources":["../../../src/dex/hashflow/rate-fetcher.ts"],"names":[],"mappings":";;;;;;AACA,wEAAgD;AAChD,qDAAuD;
|
|
1
|
+
{"version":3,"file":"rate-fetcher.js","sourceRoot":"","sources":["../../../src/dex/hashflow/rate-fetcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,7 +46,9 @@ export declare type HashflowRateFetcherConfig = {
|
|
|
46
46
|
headers?: RequestHeaders;
|
|
47
47
|
params?: any;
|
|
48
48
|
};
|
|
49
|
-
|
|
49
|
+
pricesIntervalMs: number;
|
|
50
|
+
markerMakersIntervalMs: number;
|
|
51
|
+
getCachedMarketMakers: () => Promise<string[] | null>;
|
|
50
52
|
filterMarketMakers: (makers: string[]) => Promise<string[]>;
|
|
51
53
|
pricesCacheKey: string;
|
|
52
54
|
marketMakersCacheKey: string;
|
|
@@ -62,7 +62,9 @@ class Fetcher {
|
|
|
62
62
|
.map((_, i) => i)
|
|
63
63
|
.filter(i => results[i] instanceof Error);
|
|
64
64
|
results.map(result => {
|
|
65
|
-
|
|
65
|
+
if (!(result instanceof Error)) {
|
|
66
|
+
this.logger.info('Results Data:', JSON.stringify(result.data, null, 4).substring(0, 500));
|
|
67
|
+
}
|
|
66
68
|
});
|
|
67
69
|
failures.forEach(i => {
|
|
68
70
|
this.logger.warn(`failed polling ${this.requests[i].info.requestOptions.url} ${results[i]}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../../../src/lib/fetcher/fetcher.ts"],"names":[],"mappings":";;AAGA,mCAAoC;AAEpC,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC;AACnC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,2BAA2B,GAAG,EAAE,GAAG,IAAI,CAAC;AAe9C,MAAqB,OAAO;IAM1B,YACU,cAA+B,EACvC,YAAqE,EAC7D,cAAsB,EACtB,MAAc;QAHd,mBAAc,GAAd,cAAc,CAAiB;QAE/B,mBAAc,GAAd,cAAc,CAAQ;QACtB,WAAM,GAAN,MAAM,CAAQ;QARjB,uBAAkB,GAAY,KAAK,CAAC;QACnC,gBAAW,GAAG,CAAC,CAAC;QAChB,SAAI,GAAY,IAAI,CAAC;QAQ3B,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YAC/B,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,QAAQ,GAAG,CAAC,YAAY,CAAC,CAAC;SAChC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAiB,KAAK;QAChC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;YAChC,OAAO;SACR;QAED,IAAI,IAAI,CAAC,WAAW,IAAI,sBAAsB,EAAE;YAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACvB,CAAC,EAAE,2BAA2B,CAAC,CAAC;YAChC,OAAO;SACR;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAChC,KAAK,EAAE,OAAkC,EAAE,EAAE;YAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAC1B,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;YAElC,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;aAC5B;YAED,IAAI;gBACF,IAAI,MAAM,CAAC;gBACX,IAAI,IAAI,CAAC,WAAW,IAAI,IAAA,mBAAU,EAAC,IAAI,CAAC,WAAW,CAAC,EAAE;oBACpD,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC;wBAC9B,OAAO,EAAE,gBAAgB;wBACzB,GAAG,OAAO;qBACX,CAAC,CAAC;iBACJ;qBAAM;oBACL,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;wBACzC,OAAO,EAAE,gBAAgB;wBACzB,GAAG,OAAO;qBACX,CAAC,CAAC;iBACJ;gBAED,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAU,CAAC;aACnB;QACH,CAAC,CACF,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,OAAO;aACrB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAChB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC;QAE5C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,eAAe,EACf,IAAI,CAAC,SAAS,CAAE,MAAc,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAChE,CAAC;
|
|
1
|
+
{"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../../../src/lib/fetcher/fetcher.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
// 7 days
|
|
3
2
|
export const HASHFLOW_BLACKLIST_TTL_S = 60 * 60 * 24 * 7;
|
|
4
3
|
|
|
@@ -6,9 +5,11 @@ export const HASHFLOW_MM_RESTRICT_TTL_S = 60 * 60;
|
|
|
6
5
|
|
|
7
6
|
export const HASHFLOW_PRICES_CACHES_TTL_S = 3;
|
|
8
7
|
|
|
9
|
-
export const HASHFLOW_MARKET_MAKERS_CACHES_TTL_S =
|
|
8
|
+
export const HASHFLOW_MARKET_MAKERS_CACHES_TTL_S = 30;
|
|
9
|
+
|
|
10
|
+
export const HASHFLOW_API_PRICES_POLLING_INTERVAL_MS = 0;
|
|
10
11
|
|
|
11
|
-
export const
|
|
12
|
+
export const HASHFLOW_API_MARKET_MAKERS_POLLING_INTERVAL_MS = 28 * 1000; // 28 secs
|
|
12
13
|
|
|
13
14
|
export const HASHFLOW_API_URL = 'https://api.hashflow.com';
|
|
14
15
|
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
CACHE_PREFIX,
|
|
19
19
|
} from '../../constants';
|
|
20
20
|
import * as CALLDATA_GAS_COST from '../../calldata-gas-cost';
|
|
21
|
-
import { getDexKeysWithNetwork
|
|
21
|
+
import { getDexKeysWithNetwork } from '../../utils';
|
|
22
22
|
import { IDex } from '../../dex/idex';
|
|
23
23
|
import { IDexHelper } from '../../dex-helper/idex-helper';
|
|
24
24
|
import {
|
|
@@ -29,10 +29,7 @@ import {
|
|
|
29
29
|
SlippageCheckError,
|
|
30
30
|
} from './types';
|
|
31
31
|
import { SimpleExchange } from '../simple-exchange';
|
|
32
|
-
import {
|
|
33
|
-
Adapters,
|
|
34
|
-
HashflowConfig
|
|
35
|
-
} from './config';
|
|
32
|
+
import { Adapters, HashflowConfig } from './config';
|
|
36
33
|
import { HashflowApi } from '@hashflow/taker-js';
|
|
37
34
|
import { RateFetcher } from './rate-fetcher';
|
|
38
35
|
import routerAbi from '../../abi/hashflow/HashflowRouter.abi.json';
|
|
@@ -51,14 +48,13 @@ import {
|
|
|
51
48
|
HASHFLOW_MM_RESTRICT_TTL_S,
|
|
52
49
|
HASHFLOW_API_CLIENT_NAME,
|
|
53
50
|
HASHFLOW_API_URL,
|
|
54
|
-
|
|
51
|
+
HASHFLOW_API_PRICES_POLLING_INTERVAL_MS,
|
|
52
|
+
HASHFLOW_API_MARKET_MAKERS_POLLING_INTERVAL_MS,
|
|
55
53
|
HASHFLOW_PRICES_CACHES_TTL_S,
|
|
56
54
|
HASHFLOW_MARKET_MAKERS_CACHES_TTL_S,
|
|
57
55
|
} from './constants';
|
|
58
56
|
import { BI_MAX_UINT256 } from '../../bigint-constants';
|
|
59
57
|
|
|
60
|
-
const HASHFLOW_ASYNC_CALL_TIMEOUT = 150;
|
|
61
|
-
|
|
62
58
|
export class Hashflow extends SimpleExchange implements IDex<HashflowData> {
|
|
63
59
|
readonly isStatePollingDex = true;
|
|
64
60
|
readonly hasConstantPriceLargeAmounts = false;
|
|
@@ -97,7 +93,11 @@ export class Hashflow extends SimpleExchange implements IDex<HashflowData> {
|
|
|
97
93
|
);
|
|
98
94
|
|
|
99
95
|
this.hashFlowAuthToken = token;
|
|
100
|
-
this.api = new HashflowApi(
|
|
96
|
+
this.api = new HashflowApi(
|
|
97
|
+
'taker',
|
|
98
|
+
HASHFLOW_API_CLIENT_NAME,
|
|
99
|
+
this.hashFlowAuthToken,
|
|
100
|
+
);
|
|
101
101
|
|
|
102
102
|
this.pricesCacheKey = `${this.dexHelper.config.data.network}_${this.dexKey}_prices`;
|
|
103
103
|
this.marketMakersCacheKey = `${this.dexHelper.config.data.network}_${this.dexKey}_mms`;
|
|
@@ -109,26 +109,42 @@ export class Hashflow extends SimpleExchange implements IDex<HashflowData> {
|
|
|
109
109
|
|
|
110
110
|
async initializePricing(blockNumber: number): Promise<void> {
|
|
111
111
|
if (!this.dexHelper.config.isSlave) {
|
|
112
|
-
this.rateFetcher = new RateFetcher(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
112
|
+
this.rateFetcher = new RateFetcher(
|
|
113
|
+
this.dexHelper,
|
|
114
|
+
this.dexKey,
|
|
115
|
+
this.network,
|
|
116
|
+
this.logger,
|
|
117
|
+
{
|
|
118
|
+
rateConfig: {
|
|
119
|
+
pricesIntervalMs: HASHFLOW_API_PRICES_POLLING_INTERVAL_MS,
|
|
120
|
+
markerMakersIntervalMs:
|
|
121
|
+
HASHFLOW_API_MARKET_MAKERS_POLLING_INTERVAL_MS,
|
|
122
|
+
marketMakersReqParams: {
|
|
123
|
+
url: `${HASHFLOW_API_URL}/taker/v1/marketMakers`,
|
|
124
|
+
params: {
|
|
125
|
+
networkId: this.network,
|
|
126
|
+
source: HASHFLOW_API_CLIENT_NAME,
|
|
127
|
+
},
|
|
128
|
+
headers: { Authorization: this.hashFlowAuthToken },
|
|
129
|
+
},
|
|
130
|
+
pricesReqParams: {
|
|
131
|
+
url: `${HASHFLOW_API_URL}/taker/v2/price-levels`,
|
|
132
|
+
params: {
|
|
133
|
+
networkId: this.network,
|
|
134
|
+
source: HASHFLOW_API_CLIENT_NAME,
|
|
135
|
+
marketMakers: [],
|
|
136
|
+
},
|
|
137
|
+
headers: { Authorization: this.hashFlowAuthToken },
|
|
138
|
+
},
|
|
139
|
+
getCachedMarketMakers: this.getCachedMarketMakers.bind(this),
|
|
140
|
+
filterMarketMakers: this.getFilteredMarketMakers.bind(this),
|
|
141
|
+
pricesCacheKey: this.pricesCacheKey,
|
|
142
|
+
pricesCacheTTLSecs: HASHFLOW_PRICES_CACHES_TTL_S,
|
|
143
|
+
marketMakersCacheKey: this.marketMakersCacheKey,
|
|
144
|
+
marketMakersCacheTTLSecs: HASHFLOW_MARKET_MAKERS_CACHES_TTL_S,
|
|
124
145
|
},
|
|
125
|
-
filterMarketMakers: this.getFilteredMarketMakers.bind(this),
|
|
126
|
-
pricesCacheKey: this.pricesCacheKey,
|
|
127
|
-
pricesCacheTTLSecs: HASHFLOW_PRICES_CACHES_TTL_S,
|
|
128
|
-
marketMakersCacheKey: this.marketMakersCacheKey,
|
|
129
|
-
marketMakersCacheTTLSecs: HASHFLOW_MARKET_MAKERS_CACHES_TTL_S,
|
|
130
146
|
},
|
|
131
|
-
|
|
147
|
+
);
|
|
132
148
|
|
|
133
149
|
this.rateFetcher.start();
|
|
134
150
|
}
|
|
@@ -169,7 +185,7 @@ export class Hashflow extends SimpleExchange implements IDex<HashflowData> {
|
|
|
169
185
|
return [];
|
|
170
186
|
}
|
|
171
187
|
|
|
172
|
-
const levels = await this.
|
|
188
|
+
const levels = (await this.getCachedLevels()) || {};
|
|
173
189
|
const makers = Object.keys(levels);
|
|
174
190
|
|
|
175
191
|
return makers
|
|
@@ -191,7 +207,9 @@ export class Hashflow extends SimpleExchange implements IDex<HashflowData> {
|
|
|
191
207
|
}
|
|
192
208
|
|
|
193
209
|
private async getFilteredMarketMakers(makers: string[]): Promise<string[]> {
|
|
194
|
-
const cachedRestrictionUnparsed = await this.dexHelper.cache.hgetAll(
|
|
210
|
+
const cachedRestrictionUnparsed = await this.dexHelper.cache.hgetAll(
|
|
211
|
+
this.runtimeMMsRestrictHashMapKey,
|
|
212
|
+
);
|
|
195
213
|
|
|
196
214
|
const runtimeRestrictedMMs = this.parseCacheRestrictionAndExpiryIfNeeded(
|
|
197
215
|
cachedRestrictionUnparsed,
|
|
@@ -355,24 +373,30 @@ export class Hashflow extends SimpleExchange implements IDex<HashflowData> {
|
|
|
355
373
|
return undefined;
|
|
356
374
|
}
|
|
357
375
|
|
|
358
|
-
async
|
|
359
|
-
|
|
376
|
+
async getCachedMarketMakers(): Promise<
|
|
377
|
+
MarketMakersResponse['marketMakers'] | null
|
|
378
|
+
> {
|
|
379
|
+
const cachedMarketMakers = await this.dexHelper.cache.rawget(
|
|
380
|
+
this.marketMakersCacheKey,
|
|
381
|
+
);
|
|
360
382
|
|
|
361
|
-
if(cachedMarketMakers) {
|
|
362
|
-
return JSON.parse(
|
|
383
|
+
if (cachedMarketMakers) {
|
|
384
|
+
return JSON.parse(
|
|
385
|
+
cachedMarketMakers,
|
|
386
|
+
) as MarketMakersResponse['marketMakers'];
|
|
363
387
|
}
|
|
364
388
|
|
|
365
|
-
return
|
|
389
|
+
return null;
|
|
366
390
|
}
|
|
367
391
|
|
|
368
|
-
async
|
|
392
|
+
async getCachedLevels(): Promise<PriceLevelsResponse['levels'] | null> {
|
|
369
393
|
const cachedLevels = await this.dexHelper.cache.rawget(this.pricesCacheKey);
|
|
370
394
|
|
|
371
|
-
if(cachedLevels) {
|
|
395
|
+
if (cachedLevels) {
|
|
372
396
|
return JSON.parse(cachedLevels) as PriceLevelsResponse['levels'];
|
|
373
397
|
}
|
|
374
398
|
|
|
375
|
-
return
|
|
399
|
+
return null;
|
|
376
400
|
}
|
|
377
401
|
|
|
378
402
|
// Hashflow protocol for native token expects 0x00000... instead of 0xeeeee...
|
|
@@ -412,7 +436,7 @@ export class Hashflow extends SimpleExchange implements IDex<HashflowData> {
|
|
|
412
436
|
|
|
413
437
|
const marketMakersToUse = pools.map(p => p.split(`${prefix}_`).pop());
|
|
414
438
|
|
|
415
|
-
const levelsMap = await this.
|
|
439
|
+
const levelsMap = (await this.getCachedLevels()) || {};
|
|
416
440
|
|
|
417
441
|
Object.keys(levelsMap).forEach(mmKey => {
|
|
418
442
|
if (!marketMakersToUse.includes(mmKey)) {
|
|
@@ -517,23 +541,19 @@ export class Hashflow extends SimpleExchange implements IDex<HashflowData> {
|
|
|
517
541
|
|
|
518
542
|
let rfq: RfqResponse;
|
|
519
543
|
try {
|
|
520
|
-
rfq = await
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
}),
|
|
534
|
-
HASHFLOW_ASYNC_CALL_TIMEOUT,
|
|
535
|
-
'Hashflow: requestQuote timeout',
|
|
536
|
-
);
|
|
544
|
+
rfq = await this.api.requestQuote({
|
|
545
|
+
chainId,
|
|
546
|
+
baseToken: normalizedSrcToken.address,
|
|
547
|
+
quoteToken: normalizedDestToken.address,
|
|
548
|
+
...(side === SwapSide.SELL
|
|
549
|
+
? {
|
|
550
|
+
baseTokenAmount: optimalSwapExchange.srcAmount,
|
|
551
|
+
}
|
|
552
|
+
: { quoteTokenAmount: optimalSwapExchange.destAmount }),
|
|
553
|
+
wallet: this.augustusAddress.toLowerCase(),
|
|
554
|
+
effectiveTrader: options.txOrigin.toLowerCase(),
|
|
555
|
+
marketMakers: [mm],
|
|
556
|
+
});
|
|
537
557
|
|
|
538
558
|
if (rfq.status !== 'success') {
|
|
539
559
|
const message = `${this.dexKey}-${
|
|
@@ -847,9 +867,9 @@ export class Hashflow extends SimpleExchange implements IDex<HashflowData> {
|
|
|
847
867
|
): Promise<PoolLiquidity[]> {
|
|
848
868
|
const _tokenAddress = tokenAddress.toLowerCase();
|
|
849
869
|
|
|
850
|
-
const makers = await this.
|
|
870
|
+
const makers = (await this.getCachedMarketMakers()) || [];
|
|
851
871
|
const filteredMakers = await this.getFilteredMarketMakers(makers);
|
|
852
|
-
const pLevels = await this.
|
|
872
|
+
const pLevels = (await this.getCachedLevels()) || {};
|
|
853
873
|
|
|
854
874
|
let baseToken: Token | undefined = undefined;
|
|
855
875
|
// TODO: Improve efficiency of this part. Quite inefficient way to determine
|
|
@@ -905,7 +925,7 @@ export class Hashflow extends SimpleExchange implements IDex<HashflowData> {
|
|
|
905
925
|
}
|
|
906
926
|
|
|
907
927
|
releaseResources(): void {
|
|
908
|
-
if(this.rateFetcher) {
|
|
928
|
+
if (this.rateFetcher) {
|
|
909
929
|
this.rateFetcher.stop();
|
|
910
930
|
}
|
|
911
931
|
}
|
|
@@ -2,19 +2,27 @@ import { IDexHelper } from '../../dex-helper';
|
|
|
2
2
|
import Fetcher from '../../lib/fetcher/fetcher';
|
|
3
3
|
import { validateAndCast } from '../../lib/validators';
|
|
4
4
|
import { Logger } from '../../types';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
HashflowRateFetcherConfig,
|
|
7
|
+
HashflowRatesResponse,
|
|
8
|
+
HashflowMarketMakersResponse,
|
|
9
|
+
} from './types';
|
|
6
10
|
import { pricesResponseValidator, marketMakersValidator } from './validators';
|
|
11
|
+
import { Network } from '../../constants';
|
|
7
12
|
|
|
8
13
|
export class RateFetcher {
|
|
9
14
|
private rateFetcher: Fetcher<HashflowRatesResponse>;
|
|
10
15
|
private pricesCacheKey: string;
|
|
11
16
|
private pricesCacheTTL: number;
|
|
17
|
+
|
|
18
|
+
private marketMakersFetcher: Fetcher<HashflowMarketMakersResponse>;
|
|
12
19
|
private marketMakersCacheKey: string;
|
|
13
20
|
private marketMakersCacheTTL: number;
|
|
14
21
|
|
|
15
22
|
constructor(
|
|
16
23
|
private dexHelper: IDexHelper,
|
|
17
24
|
private dexKey: string,
|
|
25
|
+
private network: Network,
|
|
18
26
|
private logger: Logger,
|
|
19
27
|
config: HashflowRateFetcherConfig,
|
|
20
28
|
) {
|
|
@@ -23,57 +31,98 @@ export class RateFetcher {
|
|
|
23
31
|
this.marketMakersCacheKey = config.rateConfig.marketMakersCacheKey;
|
|
24
32
|
this.marketMakersCacheTTL = config.rateConfig.marketMakersCacheTTLSecs;
|
|
25
33
|
|
|
34
|
+
this.marketMakersFetcher = new Fetcher<HashflowMarketMakersResponse>(
|
|
35
|
+
dexHelper.httpRequest,
|
|
36
|
+
{
|
|
37
|
+
info: {
|
|
38
|
+
requestOptions: config.rateConfig.marketMakersReqParams,
|
|
39
|
+
caster: (data: unknown) => {
|
|
40
|
+
return validateAndCast<HashflowMarketMakersResponse>(
|
|
41
|
+
data,
|
|
42
|
+
marketMakersValidator,
|
|
43
|
+
);
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
handler: this.handleMarketMakersResponse.bind(this),
|
|
47
|
+
},
|
|
48
|
+
config.rateConfig.markerMakersIntervalMs,
|
|
49
|
+
logger,
|
|
50
|
+
);
|
|
51
|
+
|
|
26
52
|
this.rateFetcher = new Fetcher<HashflowRatesResponse>(
|
|
27
53
|
dexHelper.httpRequest,
|
|
28
54
|
{
|
|
29
55
|
info: {
|
|
30
56
|
requestOptions: config.rateConfig.pricesReqParams,
|
|
31
|
-
requestFunc: async
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
57
|
+
requestFunc: async options => {
|
|
58
|
+
const { filterMarketMakers, getCachedMarketMakers } =
|
|
59
|
+
config.rateConfig;
|
|
60
|
+
|
|
61
|
+
const cachedMarketMakers = (await getCachedMarketMakers()) || [];
|
|
62
|
+
const filteredMarketMakers = await filterMarketMakers(
|
|
63
|
+
cachedMarketMakers,
|
|
64
|
+
);
|
|
65
|
+
if (filteredMarketMakers.length === 0) {
|
|
66
|
+
return Promise.reject(
|
|
67
|
+
new Error(
|
|
68
|
+
`${dexKey}-${network}: got ${filteredMarketMakers.length} market makers. Skipping pricing request.`,
|
|
69
|
+
),
|
|
70
|
+
);
|
|
71
|
+
}
|
|
39
72
|
|
|
40
73
|
const prices = await dexHelper.httpRequest.request({
|
|
41
74
|
...options,
|
|
42
75
|
params: { ...options.params, marketMakers: filteredMarketMakers },
|
|
43
|
-
})
|
|
76
|
+
});
|
|
44
77
|
|
|
45
78
|
return prices;
|
|
46
79
|
},
|
|
47
80
|
caster: (data: unknown) => {
|
|
48
|
-
return validateAndCast<HashflowRatesResponse>(
|
|
81
|
+
return validateAndCast<HashflowRatesResponse>(
|
|
82
|
+
data,
|
|
83
|
+
pricesResponseValidator,
|
|
84
|
+
);
|
|
49
85
|
},
|
|
50
86
|
},
|
|
51
87
|
handler: this.handleRatesResponse.bind(this),
|
|
52
88
|
},
|
|
53
|
-
config.rateConfig.
|
|
89
|
+
config.rateConfig.pricesIntervalMs,
|
|
54
90
|
logger,
|
|
55
91
|
);
|
|
56
92
|
}
|
|
57
93
|
|
|
58
94
|
start() {
|
|
95
|
+
this.marketMakersFetcher.startPolling();
|
|
59
96
|
this.rateFetcher.startPolling();
|
|
60
97
|
}
|
|
61
98
|
|
|
62
99
|
stop() {
|
|
100
|
+
this.marketMakersFetcher.stopPolling();
|
|
63
101
|
this.rateFetcher.stopPolling();
|
|
64
102
|
}
|
|
65
103
|
|
|
66
104
|
private handleMarketMakersResponse(resp: HashflowMarketMakersResponse): void {
|
|
67
105
|
const { marketMakers } = resp;
|
|
68
|
-
this.dexHelper.cache.rawset(
|
|
106
|
+
this.dexHelper.cache.rawset(
|
|
107
|
+
this.marketMakersCacheKey,
|
|
108
|
+
JSON.stringify(marketMakers),
|
|
109
|
+
this.marketMakersCacheTTL,
|
|
110
|
+
);
|
|
69
111
|
}
|
|
70
112
|
|
|
71
113
|
private handleRatesResponse(resp: HashflowRatesResponse): void {
|
|
72
114
|
const { levels } = resp;
|
|
73
|
-
this.dexHelper.cache.rawset(
|
|
115
|
+
this.dexHelper.cache.rawset(
|
|
116
|
+
this.pricesCacheKey,
|
|
117
|
+
JSON.stringify(levels),
|
|
118
|
+
this.pricesCacheTTL,
|
|
119
|
+
);
|
|
74
120
|
}
|
|
75
121
|
|
|
76
122
|
checkHealth(): boolean {
|
|
77
|
-
return
|
|
123
|
+
return (
|
|
124
|
+
this.marketMakersFetcher.lastFetchSucceeded &&
|
|
125
|
+
this.rateFetcher.lastFetchSucceeded
|
|
126
|
+
);
|
|
78
127
|
}
|
|
79
128
|
}
|
|
@@ -39,7 +39,7 @@ export type HashflowMarketMakersResponse = {
|
|
|
39
39
|
export type HashflowRatesResponse = {
|
|
40
40
|
status: string;
|
|
41
41
|
networkId: string;
|
|
42
|
-
levels: Record<string, Array<HashflowRatesLevel
|
|
42
|
+
levels: Record<string, Array<HashflowRatesLevel>>;
|
|
43
43
|
};
|
|
44
44
|
|
|
45
45
|
export type HashflowRateFetcherConfig = {
|
|
@@ -48,17 +48,19 @@ export type HashflowRateFetcherConfig = {
|
|
|
48
48
|
url: string;
|
|
49
49
|
headers?: RequestHeaders;
|
|
50
50
|
params?: any;
|
|
51
|
-
}
|
|
51
|
+
};
|
|
52
52
|
pricesReqParams: {
|
|
53
53
|
url: string;
|
|
54
54
|
headers?: RequestHeaders;
|
|
55
55
|
params?: any;
|
|
56
|
-
}
|
|
57
|
-
|
|
56
|
+
};
|
|
57
|
+
pricesIntervalMs: number;
|
|
58
|
+
markerMakersIntervalMs: number;
|
|
59
|
+
getCachedMarketMakers: () => Promise<string[] | null>;
|
|
58
60
|
filterMarketMakers: (makers: string[]) => Promise<string[]>;
|
|
59
61
|
pricesCacheKey: string;
|
|
60
62
|
marketMakersCacheKey: string;
|
|
61
63
|
pricesCacheTTLSecs: number;
|
|
62
64
|
marketMakersCacheTTLSecs: number;
|
|
63
|
-
}
|
|
65
|
+
};
|
|
64
66
|
};
|
|
@@ -89,10 +89,12 @@ export default class Fetcher<T> {
|
|
|
89
89
|
.filter(i => results[i] instanceof Error);
|
|
90
90
|
|
|
91
91
|
results.map(result => {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
92
|
+
if(!(result instanceof Error)) {
|
|
93
|
+
this.logger.info(
|
|
94
|
+
'Results Data:',
|
|
95
|
+
JSON.stringify((result as any).data, null, 4).substring(0, 500),
|
|
96
|
+
);
|
|
97
|
+
}
|
|
96
98
|
});
|
|
97
99
|
failures.forEach(i => {
|
|
98
100
|
this.logger.warn(
|