@clonegod/ttd-bsc-common 3.1.18 → 3.1.21

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 (37) hide show
  1. package/dist/config/BscQuoteAppConfig.js +2 -0
  2. package/dist/config/bsc_env_args.d.ts +60 -1
  3. package/dist/config/bsc_env_args.js +121 -21
  4. package/dist/quote/verify/quote_price_verify.js +1 -1
  5. package/dist/trade/abstract_dex_trade.d.ts +2 -1
  6. package/dist/trade/abstract_dex_trade.js +10 -12
  7. package/dist/trade/caller_manager.d.ts +3 -0
  8. package/dist/trade/caller_manager.js +53 -5
  9. package/dist/trade/check/abstract_tx_result_checker.d.ts +28 -0
  10. package/dist/trade/check/abstract_tx_result_checker.js +169 -0
  11. package/dist/trade/check/base_tx_result_checker.js +1 -1
  12. package/dist/trade/check/index.d.ts +1 -1
  13. package/dist/trade/check/index.js +1 -1
  14. package/dist/trade/parse/base_parser.js +1 -1
  15. package/package.json +3 -3
  16. package/dist/quote/accuracy/index.d.ts +0 -2
  17. package/dist/quote/accuracy/index.js +0 -5
  18. package/dist/quote/accuracy/quote_accuracy_checker.d.ts +0 -42
  19. package/dist/quote/accuracy/quote_accuracy_checker.js +0 -144
  20. package/dist/quote/depth/verify_depth.d.ts +0 -10
  21. package/dist/quote/depth/verify_depth.js +0 -55
  22. package/dist/quote/event/verify_clmm_swap_event.d.ts +0 -1
  23. package/dist/quote/event/verify_clmm_swap_event.js +0 -178
  24. package/dist/redis/index.d.ts +0 -1
  25. package/dist/redis/index.js +0 -17
  26. package/dist/redis/redis_client.d.ts +0 -23
  27. package/dist/redis/redis_client.js +0 -126
  28. package/dist/trade/check/tx_websocket_manager.d.ts +0 -21
  29. package/dist/trade/check/tx_websocket_manager.js +0 -167
  30. package/dist/yyws/index.d.ts +0 -2
  31. package/dist/yyws/index.js +0 -18
  32. package/dist/yyws/mock_ws_server.d.ts +0 -1
  33. package/dist/yyws/mock_ws_server.js +0 -77
  34. package/dist/yyws/type.d.ts +0 -25
  35. package/dist/yyws/type.js +0 -2
  36. package/dist/yyws/yyws_client.d.ts +0 -2
  37. package/dist/yyws/yyws_client.js +0 -76
@@ -1,126 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SimpleRedisClient = void 0;
4
- const ttd_core_1 = require("@clonegod/ttd-core");
5
- class SimpleRedisClient {
6
- constructor(lock_prefix) {
7
- this.lock_prefix = lock_prefix;
8
- this.redisClient = null;
9
- this.lockMaxRetries = 10;
10
- this.lockRetryDelayMs = 300;
11
- this.lockExpireSeconds = 3;
12
- }
13
- async getRedisClient() {
14
- if (!this.redisClient) {
15
- this.redisClient = await (0, ttd_core_1.getRedisCache)();
16
- }
17
- return this.redisClient;
18
- }
19
- getLockKey(lock_identifier) {
20
- return `${this.lock_prefix}:lock:${lock_identifier}`;
21
- }
22
- async acquireLock(lock_key, lock_value, expireSeconds = this.lockExpireSeconds) {
23
- const redisClient = await this.getRedisClient();
24
- const result = await redisClient.set(lock_key, lock_value, {
25
- NX: true,
26
- EX: expireSeconds
27
- });
28
- (0, ttd_core_1.log_info)(`try acquireLock: lock_key=${lock_key}, lock_value=${lock_value}, expireSeconds=${expireSeconds}, result=${result}`);
29
- const success = result === 'OK';
30
- return success;
31
- }
32
- async releaseLock(lock_key, lock_value) {
33
- const redisClient = await this.getRedisClient();
34
- const script = `
35
- if redis.call('get', KEYS[1]) == ARGV[1] then
36
- return redis.call('del', KEYS[1])
37
- else
38
- return 0
39
- end
40
- `;
41
- const result = await redisClient.eval(script, {
42
- keys: [lock_key],
43
- arguments: [lock_value]
44
- });
45
- const success = Number(result) === 1;
46
- return success;
47
- }
48
- async withLock(lock_identifier, callback, release_lock_delay_ms = 100) {
49
- const lock_key = this.getLockKey(lock_identifier);
50
- const lock_value = `${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
51
- let retries = 0;
52
- let acquired = false;
53
- let first_try_time = Date.now();
54
- let get_lock_time = 0;
55
- try {
56
- while (retries < this.lockMaxRetries) {
57
- acquired = await this.acquireLock(lock_key, lock_value);
58
- if (acquired)
59
- break;
60
- await new Promise(resolve => setTimeout(resolve, this.lockRetryDelayMs));
61
- retries++;
62
- }
63
- if (acquired) {
64
- get_lock_time = Date.now();
65
- return await callback();
66
- }
67
- }
68
- finally {
69
- if (acquired) {
70
- const release_delay = parseInt(process.env.NONCE_LOCK_RELEASE_DELAY_MS || String(release_lock_delay_ms));
71
- if (release_delay > 0) {
72
- await (0, ttd_core_1.sleep)(release_delay);
73
- }
74
- this.releaseLock(lock_key, lock_value);
75
- (0, ttd_core_1.log_info)(`withLock success: lock_key=${lock_key}, lock_value=${lock_value}, retry times=${retries}, get lock take ${get_lock_time - first_try_time}ms, release_delay=${release_delay}ms, hold lock ${Date.now() - get_lock_time}ms`);
76
- }
77
- else {
78
- (0, ttd_core_1.log_warn)(`withLock failed: lock_key=${lock_key}, lock_value=${lock_value}, retry times=${retries}, took ${Date.now() - first_try_time}ms`);
79
- throw new Error(`get lock for ${lock_key} failed`);
80
- }
81
- }
82
- }
83
- async getValue(key) {
84
- const redisClient = await this.getRedisClient();
85
- return await redisClient.get(key);
86
- }
87
- async setValue(key, value, expireSeconds) {
88
- const redisClient = await this.getRedisClient();
89
- return await redisClient.set(key, value, {
90
- EX: expireSeconds
91
- });
92
- }
93
- async hsetValue(key, field, value, expireSeconds) {
94
- const redisClient = await this.getRedisClient();
95
- await redisClient.hSet(key, field, value);
96
- await redisClient.hExpire(key, field, expireSeconds);
97
- }
98
- async hgetvalue(key, field) {
99
- const redisClient = await this.getRedisClient();
100
- return await redisClient.hGet(key, field);
101
- }
102
- async hkeys(key) {
103
- const redisClient = await this.getRedisClient();
104
- return await redisClient.hKeys(key);
105
- }
106
- async hgetall(key) {
107
- const redisClient = await this.getRedisClient();
108
- return await redisClient.hGetAll(key);
109
- }
110
- async hmget(key, fields) {
111
- const redisClient = await this.getRedisClient();
112
- return await redisClient.hmGet(key, fields);
113
- }
114
- async lrange(key, start = 0, stop = -1) {
115
- const redisClient = await this.getRedisClient();
116
- return await redisClient.lRange(key, start, stop);
117
- }
118
- async del(key, field = '') {
119
- const redisClient = await this.getRedisClient();
120
- if (field) {
121
- return await redisClient.hDel(key, field);
122
- }
123
- return await redisClient.del(key);
124
- }
125
- }
126
- exports.SimpleRedisClient = SimpleRedisClient;
@@ -1,21 +0,0 @@
1
- import { ethers } from 'ethers';
2
- export declare class WebSocketManager {
3
- private static instance;
4
- private wsProvider;
5
- private wsConnections;
6
- private eventListeners;
7
- private constructor();
8
- private formatConn;
9
- private formatErr;
10
- private normalizeReason;
11
- static getInstance(): WebSocketManager;
12
- getWsProvider(wsEndpoint: string, network: {
13
- name: string;
14
- chainId: number;
15
- }): ethers.providers.WebSocketProvider | null;
16
- private handleWsDisconnection;
17
- incrementConnections(): void;
18
- decrementConnections(): void;
19
- listenToEvent(eventName: string, handler: Function): void;
20
- removeEventListener(eventName: string, handler: Function): void;
21
- }
@@ -1,167 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WebSocketManager = void 0;
4
- const ethers_1 = require("ethers");
5
- const ttd_core_1 = require("@clonegod/ttd-core");
6
- class WebSocketManager {
7
- constructor() {
8
- this.wsProvider = null;
9
- this.wsConnections = 0;
10
- this.eventListeners = new Map();
11
- }
12
- formatConn(wsEndpoint, network) {
13
- return { wsEndpoint, network: network === null || network === void 0 ? void 0 : network.name, chainId: network === null || network === void 0 ? void 0 : network.chainId };
14
- }
15
- formatErr(err) {
16
- var _a, _b;
17
- if (!err)
18
- return {};
19
- const anyErr = err;
20
- return {
21
- name: anyErr === null || anyErr === void 0 ? void 0 : anyErr.name,
22
- code: (_a = anyErr === null || anyErr === void 0 ? void 0 : anyErr.code) !== null && _a !== void 0 ? _a : (_b = anyErr === null || anyErr === void 0 ? void 0 : anyErr.error) === null || _b === void 0 ? void 0 : _b.code,
23
- message: anyErr === null || anyErr === void 0 ? void 0 : anyErr.message
24
- };
25
- }
26
- normalizeReason(reason) {
27
- try {
28
- if (!reason)
29
- return undefined;
30
- if (typeof reason === 'string')
31
- return reason;
32
- if (typeof Buffer !== 'undefined' && Buffer.isBuffer(reason)) {
33
- return reason.toString('utf8');
34
- }
35
- if (reason instanceof Uint8Array) {
36
- return Buffer.from(reason).toString('utf8');
37
- }
38
- return String(reason);
39
- }
40
- catch (_a) {
41
- return undefined;
42
- }
43
- }
44
- static getInstance() {
45
- if (!WebSocketManager.instance) {
46
- WebSocketManager.instance = new WebSocketManager();
47
- }
48
- return WebSocketManager.instance;
49
- }
50
- getWsProvider(wsEndpoint, network) {
51
- var _a;
52
- if (!wsEndpoint) {
53
- (0, ttd_core_1.log_warn)('WebSocket endpoint not configured');
54
- return null;
55
- }
56
- if (!this.wsProvider) {
57
- (0, ttd_core_1.log_info)('Creating new WebSocket provider');
58
- try {
59
- this.wsProvider = new ethers_1.ethers.providers.WebSocketProvider(wsEndpoint, network);
60
- this.wsProvider.on('error', (error) => {
61
- (0, ttd_core_1.log_error)('[WS] provider error', Object.assign(Object.assign({}, this.formatConn(wsEndpoint, network)), this.formatErr(error)));
62
- this.handleWsDisconnection(wsEndpoint, network);
63
- });
64
- const rawWs = (_a = this.wsProvider) === null || _a === void 0 ? void 0 : _a._websocket;
65
- if (rawWs === null || rawWs === void 0 ? void 0 : rawWs.on) {
66
- rawWs.on('close', (code, reason) => {
67
- const reasonText = this.normalizeReason(reason);
68
- (0, ttd_core_1.log_warn)('[WS] socket close', Object.assign(Object.assign({}, this.formatConn(wsEndpoint, network)), { code, reason: reasonText }));
69
- this.handleWsDisconnection(wsEndpoint, network);
70
- });
71
- rawWs.on('error', (err) => {
72
- (0, ttd_core_1.log_error)('[WS] socket error', Object.assign(Object.assign({}, this.formatConn(wsEndpoint, network)), this.formatErr(err)));
73
- this.handleWsDisconnection(wsEndpoint, network);
74
- });
75
- }
76
- }
77
- catch (error) {
78
- (0, ttd_core_1.log_error)('[WS] create provider failed', Object.assign(Object.assign({}, this.formatConn(wsEndpoint, network)), this.formatErr(error)));
79
- this.wsProvider = null;
80
- }
81
- }
82
- return this.wsProvider;
83
- }
84
- handleWsDisconnection(wsEndpoint, network) {
85
- var _a, _b, _c, _d;
86
- if (this.wsProvider) {
87
- try {
88
- this.wsProvider.removeAllListeners();
89
- const rawWs = (_a = this.wsProvider) === null || _a === void 0 ? void 0 : _a._websocket;
90
- (_b = rawWs === null || rawWs === void 0 ? void 0 : rawWs.terminate) === null || _b === void 0 ? void 0 : _b.call(rawWs);
91
- (_d = (_c = this.wsProvider) === null || _c === void 0 ? void 0 : _c.destroy) === null || _d === void 0 ? void 0 : _d.call(_c);
92
- }
93
- catch (_e) { }
94
- this.wsProvider = null;
95
- }
96
- this.wsConnections = 0;
97
- }
98
- incrementConnections() {
99
- this.wsConnections++;
100
- (0, ttd_core_1.log_info)(`WebSocket active connections: ${this.wsConnections}`);
101
- }
102
- decrementConnections() {
103
- var _a, _b, _c, _d;
104
- if (this.wsConnections > 0) {
105
- this.wsConnections--;
106
- }
107
- (0, ttd_core_1.log_info)(`WebSocket active connections: ${this.wsConnections}`);
108
- if (this.wsConnections === 0 && this.wsProvider) {
109
- (0, ttd_core_1.log_info)('No active connections, closing WebSocket');
110
- try {
111
- this.wsProvider.removeAllListeners();
112
- const rawWs = (_a = this.wsProvider) === null || _a === void 0 ? void 0 : _a._websocket;
113
- (_b = rawWs === null || rawWs === void 0 ? void 0 : rawWs.terminate) === null || _b === void 0 ? void 0 : _b.call(rawWs);
114
- (_d = (_c = this.wsProvider) === null || _c === void 0 ? void 0 : _c.destroy) === null || _d === void 0 ? void 0 : _d.call(_c);
115
- }
116
- catch (_e) { }
117
- this.wsProvider = null;
118
- }
119
- }
120
- listenToEvent(eventName, handler) {
121
- if (!this.wsProvider) {
122
- (0, ttd_core_1.log_warn)('WebSocket provider not available for event listener');
123
- return;
124
- }
125
- if (!this.eventListeners.has(eventName)) {
126
- this.eventListeners.set(eventName, new Set());
127
- }
128
- const wrapped = (...args) => {
129
- try {
130
- handler(...args);
131
- }
132
- finally {
133
- this.decrementConnections();
134
- const set = this.eventListeners.get(eventName);
135
- if (set) {
136
- set.delete(wrapped);
137
- if (set.size === 0)
138
- this.eventListeners.delete(eventName);
139
- }
140
- }
141
- };
142
- wrapped.original = handler;
143
- this.eventListeners.get(eventName).add(wrapped);
144
- this.wsProvider.once(eventName, wrapped);
145
- this.incrementConnections();
146
- }
147
- removeEventListener(eventName, handler) {
148
- if (!this.wsProvider)
149
- return;
150
- const handlers = this.eventListeners.get(eventName);
151
- if (handlers) {
152
- for (const h of Array.from(handlers)) {
153
- const orig = h.original;
154
- if (h === handler || orig === handler) {
155
- this.wsProvider.removeListener(eventName, h);
156
- handlers.delete(h);
157
- this.decrementConnections();
158
- }
159
- }
160
- if (handlers.size === 0) {
161
- this.eventListeners.delete(eventName);
162
- }
163
- }
164
- }
165
- }
166
- exports.WebSocketManager = WebSocketManager;
167
- WebSocketManager.instance = null;
@@ -1,2 +0,0 @@
1
- export * from './type';
2
- export * from './yyws_client';
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./type"), exports);
18
- __exportStar(require("./yyws_client"), exports);
@@ -1 +0,0 @@
1
- export {};
@@ -1,77 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const ws_1 = require("ws");
4
- const POOL_ADDRESS = "0x08debfc510a2eb0148107da7ab8e96531323f4d4";
5
- const TOKEN0 = "USDT";
6
- const TOKEN1 = "XPIN";
7
- function mockYywsPriceMsg(count) {
8
- const baseTime = Date.parse("2025-12-15T17:35:00.000");
9
- const baseBlock = 71719227;
10
- const msgs = [];
11
- for (let i = 0; i < count; i++) {
12
- const t = new Date(baseTime + i * 500);
13
- const timeStr = new Date().toISOString().replace('T', ' ');
14
- const blockNumber = baseBlock + i;
15
- const delta = (Math.sin(i / 5) * 5) / 1000000;
16
- const askToken0InToken1 = (0.001 + delta).toFixed(8);
17
- const bidToken0InToken1 = (0.001 - delta).toFixed(8);
18
- const askToken1InToken0 = (1 / parseFloat(bidToken0InToken1)).toFixed(8);
19
- const bidToken1InToken0 = (1 / parseFloat(askToken0InToken1)).toFixed(8);
20
- msgs.push({
21
- time: timeStr,
22
- blockNumber,
23
- poolData: [
24
- {
25
- poolAddress: POOL_ADDRESS,
26
- token0: TOKEN0,
27
- token1: TOKEN1,
28
- askToken0InToken1,
29
- bidToken0InToken1,
30
- askToken1InToken0,
31
- bidToken1InToken0,
32
- blockNumber,
33
- },
34
- ],
35
- });
36
- }
37
- return msgs;
38
- }
39
- function startMockYywsServer() {
40
- const PORT = Number(process.env.MOCK_YYWS_PORT || 10100);
41
- const PATH = "/ws";
42
- const messages = mockYywsPriceMsg(200);
43
- const wss = new ws_1.WebSocketServer({ port: PORT, path: PATH });
44
- wss.on("listening", () => {
45
- console.log(`[mock_ws_server] listening on ws://127.0.0.1:${PORT}${PATH}`);
46
- });
47
- wss.on("connection", (ws) => {
48
- console.log("[mock_ws_server] client connected");
49
- if (messages.length === 0) {
50
- ws.close();
51
- return;
52
- }
53
- let idx = 0;
54
- const sendNext = () => {
55
- if (ws.readyState !== ws.OPEN) {
56
- return;
57
- }
58
- const msg = messages[idx];
59
- ws.send(JSON.stringify(msg));
60
- idx = (idx + 1) % messages.length;
61
- setTimeout(sendNext, 500);
62
- };
63
- sendNext();
64
- ws.on("close", () => {
65
- console.log("[mock_ws_server] client disconnected");
66
- });
67
- ws.on("error", (err) => {
68
- console.error("[mock_ws_server] ws error:", err);
69
- });
70
- });
71
- wss.on("error", (err) => {
72
- console.error("[mock_ws_server] server error:", err);
73
- });
74
- }
75
- if (require.main === module) {
76
- startMockYywsServer();
77
- }
@@ -1,25 +0,0 @@
1
- export interface YywsPoolPrice {
2
- poolAddress: string;
3
- token0: string;
4
- token1: string;
5
- askToken0InToken1: string;
6
- bidToken0InToken1: string;
7
- askToken1InToken0: string;
8
- bidToken1InToken0: string;
9
- blockNumber: number;
10
- }
11
- export interface YywsPriceMessage {
12
- time: string;
13
- blockNumber: number;
14
- poolData: YywsPoolPrice[];
15
- }
16
- export interface YywsPriceDataFormat {
17
- yywsTimeStr: string;
18
- yywsTimeMs: number;
19
- recvTimeMs: number;
20
- blockNumber: number;
21
- poolAddress: string;
22
- poolName: string;
23
- ask_price: string;
24
- bid_price: string;
25
- }
package/dist/yyws/type.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,2 +0,0 @@
1
- import { StandardPoolInfoType } from "@clonegod/ttd-core";
2
- export declare function subscribe_pool_price_from_yyws(poolInfoList: StandardPoolInfoType[], callback: Function): void;
@@ -1,76 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.subscribe_pool_price_from_yyws = subscribe_pool_price_from_yyws;
13
- const ttd_core_1 = require("@clonegod/ttd-core");
14
- const ws_client_1 = require("@clonegod/ttd-core/dist/ws/ws_client");
15
- function subscribe_pool_price_from_yyws(poolInfoList, callback) {
16
- const ws_url = process.env.SUBSCIBE_YY_WS_URL || 'ws://43.165.135.114:10100/ws';
17
- const ws_client = new ws_client_1.WebSocketClient(ws_url);
18
- ws_client.onOpen(() => {
19
- console.log(`ws connection (${ws_url}) opened`);
20
- });
21
- ws_client.onMessage(((priceData) => {
22
- poolInfoList.forEach(poolInfo => {
23
- log_yyws_price_msg(poolInfo, priceData);
24
- const priceDataFormats = format_yyws_price_data(poolInfo, Date.now(), priceData);
25
- callback(priceDataFormats);
26
- });
27
- }));
28
- ws_client.connect();
29
- }
30
- function format_yyws_price_data(poolInfo, recvTimeMs, blockPoolPrices) {
31
- const { time: yywsTimeStr, blockNumber, poolData } = blockPoolPrices;
32
- const { pool_address, pool_name } = poolInfo;
33
- const targetPoolPrices = poolData.filter((poolPrice) => poolPrice.poolAddress.toLowerCase() === pool_address.toLowerCase());
34
- if (targetPoolPrices.length === 0) {
35
- return [];
36
- }
37
- const priceDataFormats = [];
38
- for (const poolPrice of targetPoolPrices) {
39
- const [ask_price, bid_price] = get_ask_bid_from_pool_price(poolInfo, poolPrice);
40
- priceDataFormats.push({
41
- yywsTimeStr,
42
- yywsTimeMs: new Date(yywsTimeStr.replace(' ', 'T')).getTime(),
43
- recvTimeMs,
44
- blockNumber,
45
- poolAddress: pool_address,
46
- poolName: pool_name,
47
- ask_price,
48
- bid_price,
49
- });
50
- }
51
- return priceDataFormats;
52
- }
53
- function get_ask_bid_from_pool_price(poolInfo, poolPrice) {
54
- let quoteToken = poolInfo.quote_token;
55
- if (quoteToken.toUpperCase() === poolPrice.token0.toUpperCase()) {
56
- return [poolPrice.askToken1InToken0, poolPrice.bidToken1InToken0];
57
- }
58
- else if (quoteToken.toUpperCase() === poolPrice.token1.toUpperCase()) {
59
- return [poolPrice.askToken0InToken1, poolPrice.bidToken0InToken1];
60
- }
61
- else {
62
- throw new Error(`Invalid quote token: ${quoteToken}, price.token0: ${poolPrice.token0}, price.token1: ${poolPrice.token1}`);
63
- }
64
- }
65
- function log_yyws_price_msg(poolInfo, priceData) {
66
- return __awaiter(this, void 0, void 0, function* () {
67
- const { time, blockNumber, poolData } = priceData;
68
- let line = `${time} - ${blockNumber} - ${poolData.length}\n`;
69
- for (const poolPrice of poolData) {
70
- const { poolAddress, token0, token1, askToken0InToken1, bidToken0InToken1, askToken1InToken0, bidToken1InToken0 } = poolPrice;
71
- line += `${token0}/${token1} - ${poolAddress} - ${askToken0InToken1} - ${bidToken0InToken1} - ${askToken1InToken0} - ${bidToken1InToken0}\n`;
72
- }
73
- (0, ttd_core_1.appendLogWithPeriodicReset)("logs", `yyws-price-msg-${poolInfo.pool_address}.txt`, line, 10)
74
- .catch(err => console.error('log_yyws_price_msg error', err));
75
- });
76
- }