@clonegod/ttd-bsc-common 3.0.12 → 3.0.14

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.
@@ -1,3 +1,4 @@
1
1
  export * from './event';
2
2
  export * from './pricing';
3
3
  export * from './tick';
4
+ export * from './price_feed_handler';
@@ -17,3 +17,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./event"), exports);
18
18
  __exportStar(require("./pricing"), exports);
19
19
  __exportStar(require("./tick"), exports);
20
+ __exportStar(require("./price_feed_handler"), exports);
@@ -0,0 +1,15 @@
1
+ import type { QuoteResultType, StandardPoolInfoType } from '@clonegod/ttd-core';
2
+ interface PriceFeedData {
3
+ blockNumber: number;
4
+ token0Symbol?: string;
5
+ token1Symbol?: string;
6
+ askToken0InToken1?: string;
7
+ bidToken0InToken1?: string;
8
+ askToken1InToken0?: string;
9
+ bidToken1InToken0?: string;
10
+ }
11
+ export declare function buildQuoteFromPriceFeed(poolInfo: StandardPoolInfoType, data: PriceFeedData): {
12
+ askQuote: QuoteResultType;
13
+ bidQuote: QuoteResultType;
14
+ } | null;
15
+ export {};
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildQuoteFromPriceFeed = buildQuoteFromPriceFeed;
4
+ const ttd_core_1 = require("@clonegod/ttd-core");
5
+ function buildQuoteFromPriceFeed(poolInfo, data) {
6
+ const quoteTokenSymbol = (poolInfo.quote_token || '').toUpperCase();
7
+ const tokenA = poolInfo.tokenA;
8
+ const tokenB = poolInfo.tokenB;
9
+ if (!tokenA || !tokenB) {
10
+ (0, ttd_core_1.log_warn)(`[PriceFeed] poolInfo missing tokenA/tokenB: ${poolInfo.pool_address}`);
11
+ return null;
12
+ }
13
+ const normSymbol = (s) => {
14
+ const u = s.toUpperCase();
15
+ return u === 'WBNB' ? 'BNB' : u;
16
+ };
17
+ let askPrice;
18
+ let bidPrice;
19
+ let baseToken;
20
+ let quoteToken;
21
+ const tokenAIsQuote = normSymbol(tokenA.symbol) === normSymbol(quoteTokenSymbol);
22
+ const tokenBIsQuote = normSymbol(tokenB.symbol) === normSymbol(quoteTokenSymbol);
23
+ if (!tokenAIsQuote && !tokenBIsQuote) {
24
+ (0, ttd_core_1.log_warn)(`[PriceFeed] quote_token ${quoteTokenSymbol} not found in pool ${poolInfo.pool_name} (tokenA=${tokenA.symbol}, tokenB=${tokenB.symbol})`);
25
+ return null;
26
+ }
27
+ if (tokenAIsQuote) {
28
+ quoteToken = tokenA;
29
+ baseToken = tokenB;
30
+ }
31
+ else {
32
+ quoteToken = tokenB;
33
+ baseToken = tokenA;
34
+ }
35
+ const feedToken0 = normSymbol(data.token0Symbol || '');
36
+ const feedToken1 = normSymbol(data.token1Symbol || '');
37
+ const baseSymbolNorm = normSymbol(baseToken.symbol);
38
+ const quoteSymbolNorm = normSymbol(quoteToken.symbol);
39
+ if (normSymbol(feedToken0) === quoteSymbolNorm) {
40
+ askPrice = data.askToken1InToken0;
41
+ bidPrice = data.bidToken1InToken0;
42
+ }
43
+ else if (normSymbol(feedToken1) === quoteSymbolNorm) {
44
+ askPrice = data.askToken0InToken1;
45
+ bidPrice = data.bidToken0InToken1;
46
+ }
47
+ else {
48
+ (0, ttd_core_1.log_warn)(`[PriceFeed] Cannot match quote_token symbol: quote=${quoteSymbolNorm}, feed=[${feedToken0}/${feedToken1}], pool=${poolInfo.pool_name}`);
49
+ return null;
50
+ }
51
+ if (!askPrice || !bidPrice) {
52
+ (0, ttd_core_1.log_warn)(`[PriceFeed] Missing price data for ${poolInfo.pool_name}`);
53
+ return null;
54
+ }
55
+ const makeQuoteResult = (price, input, output) => ({
56
+ inputToken: input,
57
+ outputToken: output,
58
+ slippageBps: 0,
59
+ amountIn: 0,
60
+ amountOut: 0,
61
+ amountOutMin: 0,
62
+ priceImpact: 0,
63
+ price,
64
+ });
65
+ const askQuote = makeQuoteResult(askPrice, quoteToken, baseToken);
66
+ const bidQuote = makeQuoteResult(bidPrice, baseToken, quoteToken);
67
+ return { askQuote, bidQuote };
68
+ }
@@ -57,5 +57,11 @@ export interface OnchainPoolChangeEvent {
57
57
  tickUpper?: number;
58
58
  liquidityDelta?: string;
59
59
  amount?: string;
60
+ token0Symbol?: string;
61
+ token1Symbol?: string;
62
+ askToken0InToken1?: string;
63
+ bidToken0InToken1?: string;
64
+ askToken1InToken0?: string;
65
+ bidToken1InToken0?: string;
60
66
  };
61
67
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clonegod/ttd-bsc-common",
3
- "version": "3.0.12",
3
+ "version": "3.0.14",
4
4
  "description": "BSC common library",
5
5
  "license": "UNLICENSED",
6
6
  "main": "dist/index.js",
@@ -14,7 +14,7 @@
14
14
  "push": "npm run build && npm publish"
15
15
  },
16
16
  "dependencies": {
17
- "@clonegod/ttd-core": "3.0.7",
17
+ "@clonegod/ttd-core": "3.0.8",
18
18
  "@clonegod/ttd-bsc-send-tx": "1.0.0",
19
19
  "axios": "^1.12.0",
20
20
  "dotenv": "^16.4.7",