forgex-cli 1.0.58 → 1.0.61

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 (158) hide show
  1. package/README.md +375 -368
  2. package/dist/bin/forgex.d.ts +5 -5
  3. package/dist/bin/forgex.js +14 -14
  4. package/dist/bin/forgex.js.map +1 -1
  5. package/dist/src/adapters/codex-adapter.d.ts +90 -90
  6. package/dist/src/adapters/codex-adapter.d.ts.map +1 -1
  7. package/dist/src/adapters/codex-adapter.js +76 -76
  8. package/dist/src/adapters/codex-adapter.js.map +1 -1
  9. package/dist/src/adapters/connection.d.ts +6 -6
  10. package/dist/src/adapters/connection.js +8 -8
  11. package/dist/src/adapters/connection.js.map +1 -1
  12. package/dist/src/adapters/ipfs.d.ts +3 -3
  13. package/dist/src/adapters/ipfs.js +3 -3
  14. package/dist/src/adapters/jito-adapter.d.ts +85 -85
  15. package/dist/src/adapters/jito-adapter.d.ts.map +1 -1
  16. package/dist/src/adapters/jito-adapter.js +111 -111
  17. package/dist/src/adapters/jito-adapter.js.map +1 -1
  18. package/dist/src/adapters/rpc-adapter.d.ts +53 -53
  19. package/dist/src/adapters/rpc-adapter.d.ts.map +1 -1
  20. package/dist/src/adapters/rpc-adapter.js +69 -69
  21. package/dist/src/adapters/rpc-adapter.js.map +1 -1
  22. package/dist/src/adapters/sdk-adapter.d.ts +21 -21
  23. package/dist/src/adapters/sdk-adapter.d.ts.map +1 -1
  24. package/dist/src/adapters/sdk-adapter.js +79 -79
  25. package/dist/src/adapters/sdk-adapter.js.map +1 -1
  26. package/dist/src/commands/config/index.d.ts +1 -1
  27. package/dist/src/commands/config/index.js +15 -15
  28. package/dist/src/commands/config/index.js.map +1 -1
  29. package/dist/src/commands/query/index.d.ts +2 -2
  30. package/dist/src/commands/query/index.js +82 -82
  31. package/dist/src/commands/query/index.js.map +1 -1
  32. package/dist/src/commands/token/index.d.ts +8 -8
  33. package/dist/src/commands/token/index.js +73 -73
  34. package/dist/src/commands/token/index.js.map +1 -1
  35. package/dist/src/commands/tools/index.d.ts +9 -9
  36. package/dist/src/commands/tools/index.js +137 -137
  37. package/dist/src/commands/tools/index.js.map +1 -1
  38. package/dist/src/commands/trade/index.d.ts +2 -2
  39. package/dist/src/commands/trade/index.js +82 -82
  40. package/dist/src/commands/trade/index.js.map +1 -1
  41. package/dist/src/commands/transfer/index.d.ts +8 -8
  42. package/dist/src/commands/transfer/index.js +106 -106
  43. package/dist/src/commands/transfer/index.js.map +1 -1
  44. package/dist/src/commands/wallet/index.d.ts +1 -1
  45. package/dist/src/commands/wallet/index.js +175 -175
  46. package/dist/src/commands/wallet/index.js.map +1 -1
  47. package/dist/src/config.d.ts +26 -26
  48. package/dist/src/config.d.ts.map +1 -1
  49. package/dist/src/config.js +28 -28
  50. package/dist/src/config.js.map +1 -1
  51. package/dist/src/const/index.js +1 -1
  52. package/dist/src/const/index.js.map +1 -1
  53. package/dist/src/data-source.d.ts +81 -81
  54. package/dist/src/data-source.d.ts.map +1 -1
  55. package/dist/src/data-source.js +149 -149
  56. package/dist/src/data-source.js.map +1 -1
  57. package/dist/src/data-store/index.d.ts +22 -22
  58. package/dist/src/data-store/index.d.ts.map +1 -1
  59. package/dist/src/data-store/index.js +46 -46
  60. package/dist/src/data-store/index.js.map +1 -1
  61. package/dist/src/data-store/types.d.ts +3 -3
  62. package/dist/src/data-store/types.js +3 -3
  63. package/dist/src/index.d.ts +2 -2
  64. package/dist/src/index.js +10 -10
  65. package/dist/src/index.js.map +1 -1
  66. package/dist/src/output.d.ts +18 -18
  67. package/dist/src/output.d.ts.map +1 -1
  68. package/dist/src/output.js +34 -34
  69. package/dist/src/output.js.map +1 -1
  70. package/dist/src/shims/store.d.ts +3 -2
  71. package/dist/src/shims/store.d.ts.map +1 -1
  72. package/dist/src/shims/store.js +6 -5
  73. package/dist/src/shims/store.js.map +1 -1
  74. package/dist/src/sol-sdk/batch/create.d.ts +4 -1
  75. package/dist/src/sol-sdk/batch/create.d.ts.map +1 -1
  76. package/dist/src/sol-sdk/batch/create.js +44 -44
  77. package/dist/src/sol-sdk/batch/create.js.map +1 -1
  78. package/dist/src/sol-sdk/batch/index.js +135 -135
  79. package/dist/src/sol-sdk/batch/index.js.map +1 -1
  80. package/dist/src/sol-sdk/calc.d.ts +63 -63
  81. package/dist/src/sol-sdk/calc.d.ts.map +1 -1
  82. package/dist/src/sol-sdk/calc.js +120 -120
  83. package/dist/src/sol-sdk/calc.js.map +1 -1
  84. package/dist/src/sol-sdk/jito/index.js +12 -12
  85. package/dist/src/sol-sdk/jito/index.js.map +1 -1
  86. package/dist/src/sol-sdk/launchlab/instructions/create.js +10 -10
  87. package/dist/src/sol-sdk/launchlab/instructions/create.js.map +1 -1
  88. package/dist/src/sol-sdk/meteora/index.d.ts +5 -5
  89. package/dist/src/sol-sdk/meteora/index.js +11 -11
  90. package/dist/src/sol-sdk/meteora/index.js.map +1 -1
  91. package/dist/src/sol-sdk/meteora/instructions/buy.js +8 -8
  92. package/dist/src/sol-sdk/meteora/instructions/buy.js.map +1 -1
  93. package/dist/src/sol-sdk/meteora/instructions/sell.js +6 -6
  94. package/dist/src/sol-sdk/meteora/instructions/sell.js.map +1 -1
  95. package/dist/src/sol-sdk/pump/index.js +3 -3
  96. package/dist/src/sol-sdk/pump/index.js.map +1 -1
  97. package/dist/src/sol-sdk/pump/instructions/buy.d.ts +12 -12
  98. package/dist/src/sol-sdk/pump/instructions/buy.d.ts.map +1 -1
  99. package/dist/src/sol-sdk/pump/instructions/buy.js +26 -26
  100. package/dist/src/sol-sdk/pump/instructions/buy.js.map +1 -1
  101. package/dist/src/sol-sdk/pump/instructions/createAndBuy.d.ts +13 -13
  102. package/dist/src/sol-sdk/pump/instructions/createAndBuy.js +17 -17
  103. package/dist/src/sol-sdk/pump/instructions/createAndBuy.js.map +1 -1
  104. package/dist/src/sol-sdk/pump/instructions/sell.d.ts +2 -2
  105. package/dist/src/sol-sdk/pump/instructions/sell.d.ts.map +1 -1
  106. package/dist/src/sol-sdk/pump/instructions/sell.js +7 -7
  107. package/dist/src/sol-sdk/pump/instructions/sell.js.map +1 -1
  108. package/dist/src/sol-sdk/pumpswap/index.d.ts +4 -4
  109. package/dist/src/sol-sdk/pumpswap/index.js +5 -5
  110. package/dist/src/sol-sdk/pumpswap/index.js.map +1 -1
  111. package/dist/src/sol-sdk/pumpswap/instructions/buy.d.ts +8 -8
  112. package/dist/src/sol-sdk/pumpswap/instructions/buy.js +19 -19
  113. package/dist/src/sol-sdk/pumpswap/instructions/buy.js.map +1 -1
  114. package/dist/src/sol-sdk/pumpswap/instructions/migrate.js +2 -2
  115. package/dist/src/sol-sdk/pumpswap/instructions/migrate.js.map +1 -1
  116. package/dist/src/sol-sdk/pumpswap/instructions/sell.js +4 -4
  117. package/dist/src/sol-sdk/pumpswap/instructions/sell.js.map +1 -1
  118. package/dist/src/sol-sdk/pumpswap/rpc/index.js +1 -1
  119. package/dist/src/sol-sdk/pumpswap/rpc/index.js.map +1 -1
  120. package/dist/src/sol-sdk/raydium/instructions/cpmmSell.js +3 -3
  121. package/dist/src/sol-sdk/raydium/instructions/cpmmSell.js.map +1 -1
  122. package/dist/src/sol-sdk/raydium/instructions/sell.d.ts +40 -8520
  123. package/dist/src/sol-sdk/raydium/instructions/sell.d.ts.map +1 -1
  124. package/dist/src/sol-sdk/raydium/instructions/sell.js +6 -6
  125. package/dist/src/sol-sdk/raydium/instructions/sell.js.map +1 -1
  126. package/dist/src/sol-sdk/raydium/rpc/index.d.ts +4 -4
  127. package/dist/src/sol-sdk/rpc/index.d.ts +14 -14
  128. package/dist/src/sol-sdk/rpc/index.d.ts.map +1 -1
  129. package/dist/src/sol-sdk/rpc/index.js +17 -17
  130. package/dist/src/sol-sdk/rpc/index.js.map +1 -1
  131. package/dist/src/sol-sdk/transfer/index.js +5 -5
  132. package/dist/src/sol-sdk/transfer/index.js.map +1 -1
  133. package/dist/src/sol-sdk/turnover/index.d.ts +3 -3
  134. package/dist/src/sol-sdk/turnover/index.js +56 -56
  135. package/dist/src/sol-sdk/turnover/index.js.map +1 -1
  136. package/dist/src/telemetry.d.ts +8 -8
  137. package/dist/src/telemetry.d.ts.map +1 -1
  138. package/dist/src/telemetry.js +28 -27
  139. package/dist/src/telemetry.js.map +1 -1
  140. package/dist/src/tx-tracker/detail-adapter.d.ts +53 -53
  141. package/dist/src/tx-tracker/detail-adapter.d.ts.map +1 -1
  142. package/dist/src/tx-tracker/detail-adapter.js +68 -68
  143. package/dist/src/tx-tracker/detail-adapter.js.map +1 -1
  144. package/dist/src/tx-tracker/index.d.ts +67 -67
  145. package/dist/src/tx-tracker/index.d.ts.map +1 -1
  146. package/dist/src/tx-tracker/index.js +103 -103
  147. package/dist/src/tx-tracker/index.js.map +1 -1
  148. package/dist/src/types/index.d.ts +10 -10
  149. package/dist/src/types/index.d.ts.map +1 -1
  150. package/dist/src/types/websocket.js +1 -1
  151. package/dist/src/types/websocket.js.map +1 -1
  152. package/dist/src/utils/index.js +20 -20
  153. package/dist/src/utils/index.js.map +1 -1
  154. package/dist/src/wallet-store.d.ts +51 -51
  155. package/dist/src/wallet-store.d.ts.map +1 -1
  156. package/dist/src/wallet-store.js +104 -104
  157. package/dist/src/wallet-store.js.map +1 -1
  158. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/telemetry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/telemetry.ts"],"names":[],"mappings":"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"}
@@ -1,99 +1,99 @@
1
1
  /**
2
- * ForgeX CLI TxDetailAdapter -- 交易详情字段适配器
2
+ * ForgeX CLI TxDetailAdapter -- Transaction detail field adapter
3
3
  *
4
- * RPC 返回的原始交易数据 (ParsedTransactionDetail) 映射为
5
- * CLI DataStore TransactionRecord 结构。
4
+ * Maps raw transaction data (ParsedTransactionDetail) returned by RPC
5
+ * to the CLI DataStore TransactionRecord structure.
6
6
  *
7
- * 核心职责:
8
- * - preBalances / postBalances 计算 SOL 变化量
9
- * - preTokenBalances / postTokenBalances 计算 Token 变化量
10
- * - 计算成交价格 (pricePerToken = |solChange| / |tokenChange|)
11
- * - 提取手续费
12
- * - 根据交易记录更新持仓数据 (avgBuyPrice, realizedPnl )
7
+ * Core responsibilities:
8
+ * - Calculate SOL delta from preBalances / postBalances
9
+ * - Calculate Token delta from preTokenBalances / postTokenBalances
10
+ * - Compute execution price (pricePerToken = |solChange| / |tokenChange|)
11
+ * - Extract fees
12
+ * - Update position data from transaction records (avgBuyPrice, realizedPnl, etc.)
13
13
  *
14
- * 设计参考: ARCH-DESIGN-v2.md Section 3.4
14
+ * Design reference: ARCH-DESIGN-v2.md Section 3.4
15
15
  */
16
16
  import type { ParsedTransactionDetail } from '../adapters/rpc-adapter.js';
17
17
  import type { TransactionRecord, WalletHolding } from '../data-store/types.js';
18
- /** 追踪上下文 ( TxTracker 传入) */
18
+ /** Tracking context (passed in by TxTracker) */
19
19
  export interface TrackingContext {
20
- /** 代币合约地址 */
20
+ /** Token contract address */
21
21
  ca: string;
22
- /** 钱包组 ID */
22
+ /** Wallet group ID */
23
23
  groupId: number;
24
- /** 交易类型 */
24
+ /** Transaction type */
25
25
  txType: 'buy' | 'sell' | 'transfer_in' | 'transfer_out' | 'turnover';
26
- /** 参与交易的钱包地址列表 */
26
+ /** List of wallet addresses involved in the transaction */
27
27
  wallets: string[];
28
- /** 预期 SOL 金额 (用于验证,可选) */
28
+ /** Expected SOL amount (for validation, optional) */
29
29
  expectedAmountSol?: number;
30
- /** Jito Bundle ID (如有) */
30
+ /** Jito Bundle ID (if any) */
31
31
  jitoBundle?: string;
32
32
  }
33
33
  export declare class TxDetailAdapter {
34
34
  /**
35
- * 核心适配方法:
36
- * RPC 原始交易数据中提取并映射为 TransactionRecord
35
+ * Core adaptation method:
36
+ * Extracts and maps raw RPC transaction data into a TransactionRecord.
37
37
  *
38
- * 解析流程:
39
- * 1. accountKeys 中找到目标钱包的索引
40
- * 2. 通过索引比较 preBalances vs postBalances 计算 SOL 变化
41
- * 3. preTokenBalances / postTokenBalances 中筛选目标代币和钱包,计算 Token 变化
42
- * 4. 计算成交价格: |SOL变化 - fee| / |Token变化|
43
- * 5. 组装 TransactionRecord
38
+ * Parsing flow:
39
+ * 1. Find target wallet index in accountKeys
40
+ * 2. Compare preBalances vs postBalances via index to compute SOL delta
41
+ * 3. Filter preTokenBalances / postTokenBalances by target token and wallet to compute Token delta
42
+ * 4. Compute execution price: |SOL delta - fee| / |Token delta|
43
+ * 5. Assemble TransactionRecord
44
44
  *
45
- * @param txHash 交易签名
46
- * @param detail RPC 返回的解析后交易详情
47
- * @param context 追踪上下文
45
+ * @param txHash Transaction signature
46
+ * @param detail Parsed transaction detail from RPC
47
+ * @param context Tracking context
48
48
  * @returns TransactionRecord
49
49
  */
50
50
  adaptToTransactionRecord(txHash: string, detail: ParsedTransactionDetail, context: TrackingContext): TransactionRecord;
51
51
  /**
52
- * 根据交易记录更新持仓数据。
52
+ * Update position data based on transaction record.
53
53
  *
54
- * 更新逻辑:
55
- * - buy: 增加 tokenBalance, totalBought, totalCostSol; 重算 avgBuyPrice
56
- * - sell: 减少 tokenBalance, 增加 totalSold, totalRevenueSol; 计算 realizedPnl
57
- * - transfer_in: 增加 tokenBalance (不影响成本)
58
- * - transfer_out: 减少 tokenBalance (不影响成本)
59
- * - turnover: 不更新持仓 (换手不改变净持仓)
54
+ * Update logic:
55
+ * - buy: increase tokenBalance, totalBought, totalCostSol; recalculate avgBuyPrice
56
+ * - sell: decrease tokenBalance, increase totalSold, totalRevenueSol; calculate realizedPnl
57
+ * - transfer_in: increase tokenBalance (no cost impact)
58
+ * - transfer_out: decrease tokenBalance (no cost impact)
59
+ * - turnover: no position update (turnover does not change net position)
60
60
  *
61
- * @param currentHolding 当前持仓数据
62
- * @param tx 交易记录
63
- * @returns 更新后的持仓数据 (新对象,不修改原对象)
61
+ * @param currentHolding Current position data
62
+ * @param tx Transaction record
63
+ * @returns Updated position data (new object, original not mutated)
64
64
  */
65
65
  updateHoldingFromTx(currentHolding: WalletHolding, tx: TransactionRecord): WalletHolding;
66
66
  /**
67
- * 为指定钱包创建空的初始持仓
67
+ * Create an empty initial holding for the given wallet
68
68
  */
69
69
  createEmptyHolding(walletAddress: string): WalletHolding;
70
70
  /**
71
- * accountKeys 中找到目标钱包的索引。
72
- * 优先匹配第一个钱包地址(主钱包)。
71
+ * Find the target wallet index in accountKeys.
72
+ * Prioritizes matching the first wallet address (primary wallet).
73
73
  */
74
74
  private findWalletIndex;
75
75
  /**
76
- * 解析实际使用的钱包地址。
77
- * 如果在 accountKeys 中找到了匹配的钱包,返回该地址;
78
- * 否则返回 context.wallets[0] 作为兜底。
76
+ * Resolve the actual wallet address used.
77
+ * If a matching wallet is found in accountKeys, return that address;
78
+ * otherwise fall back to context.wallets[0].
79
79
  */
80
80
  private resolveWalletAddress;
81
81
  /**
82
- * 计算 Token 余额变化量。
82
+ * Calculate Token balance delta.
83
83
  *
84
- * preTokenBalances postTokenBalances 中筛选:
85
- * - mint === 目标代币合约地址
86
- * - owner 属于参与交易的钱包之一
84
+ * Filters preTokenBalances and postTokenBalances where:
85
+ * - mint === target token contract address
86
+ * - owner is one of the participating wallets
87
87
  *
88
- * 然后计算 post - pre 得到变化量。
88
+ * Then computes post - pre to get the delta.
89
89
  *
90
- * 注意: preTokenBalances/postTokenBalances 中的 owner 字段可能不存在,
91
- * 此时通过 accountIndex 映射 accountKeys 来确定 owner。
90
+ * Note: the owner field in preTokenBalances/postTokenBalances may be absent;
91
+ * in that case, owner is determined via accountIndex -> accountKeys mapping.
92
92
  */
93
93
  private calculateTokenChange;
94
94
  /**
95
- * tokenBalances 数组中,汇总指定代币和钱包的余额。
96
- * 支持通过 owner 字段直接匹配,或通过 accountIndex -> accountKeys 间接匹配。
95
+ * Sum token balance for the specified token and wallets from the tokenBalances array.
96
+ * Supports direct matching via owner field, or indirect matching via accountIndex -> accountKeys.
97
97
  */
98
98
  private sumTokenBalance;
99
99
  }
@@ -1 +1 @@
1
- {"version":3,"file":"detail-adapter.d.ts","sourceRoot":"","sources":["../../../src/tx-tracker/detail-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAM/E,6BAA6B;AAC7B,MAAM,WAAW,eAAe;IAC9B,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,aAAa;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,aAAa,GAAG,cAAc,GAAG,UAAU,CAAC;IACrE,kBAAkB;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,0BAA0B;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA6BD,qBAAa,eAAe;IAC1B;;;;;;;;;;;;;;;OAeG;IACH,wBAAwB,CACtB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,eAAe,GACvB,iBAAiB;IA8CpB;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE,EAAE,iBAAiB,GAAG,aAAa;IA0DxF;;OAEG;IACH,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa;IAkBxD;;;OAGG;IACH,OAAO,CAAC,eAAe;IASvB;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAO5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;;OAGG;IACH,OAAO,CAAC,eAAe;CA6BxB"}
1
+ {"version":3,"file":"detail-adapter.d.ts","sourceRoot":"","sources":["../../../src/tx-tracker/detail-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAM/E,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB;IACvB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,aAAa,GAAG,cAAc,GAAG,UAAU,CAAC;IACrE,2DAA2D;IAC3D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA6BD,qBAAa,eAAe;IAC1B;;;;;;;;;;;;;;;OAeG;IACH,wBAAwB,CACtB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,eAAe,GACvB,iBAAiB;IA8CpB;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE,EAAE,iBAAiB,GAAG,aAAa;IA0DxF;;OAEG;IACH,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa;IAkBxD;;;OAGG;IACH,OAAO,CAAC,eAAe;IASvB;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAO5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;;OAGG;IACH,OAAO,CAAC,eAAe;CA6BxB"}
@@ -1,55 +1,55 @@
1
1
  /**
2
- * ForgeX CLI TxDetailAdapter -- 交易详情字段适配器
2
+ * ForgeX CLI TxDetailAdapter -- Transaction detail field adapter
3
3
  *
4
- * RPC 返回的原始交易数据 (ParsedTransactionDetail) 映射为
5
- * CLI DataStore TransactionRecord 结构。
4
+ * Maps raw transaction data (ParsedTransactionDetail) returned by RPC
5
+ * to the CLI DataStore TransactionRecord structure.
6
6
  *
7
- * 核心职责:
8
- * - preBalances / postBalances 计算 SOL 变化量
9
- * - preTokenBalances / postTokenBalances 计算 Token 变化量
10
- * - 计算成交价格 (pricePerToken = |solChange| / |tokenChange|)
11
- * - 提取手续费
12
- * - 根据交易记录更新持仓数据 (avgBuyPrice, realizedPnl )
7
+ * Core responsibilities:
8
+ * - Calculate SOL delta from preBalances / postBalances
9
+ * - Calculate Token delta from preTokenBalances / postTokenBalances
10
+ * - Compute execution price (pricePerToken = |solChange| / |tokenChange|)
11
+ * - Extract fees
12
+ * - Update position data from transaction records (avgBuyPrice, realizedPnl, etc.)
13
13
  *
14
- * 设计参考: ARCH-DESIGN-v2.md Section 3.4
14
+ * Design reference: ARCH-DESIGN-v2.md Section 3.4
15
15
  */
16
16
  // ============================================================
17
- // TxDetailAdapter 实现
17
+ // TxDetailAdapter Implementation
18
18
  // ============================================================
19
19
  export class TxDetailAdapter {
20
20
  /**
21
- * 核心适配方法:
22
- * RPC 原始交易数据中提取并映射为 TransactionRecord
21
+ * Core adaptation method:
22
+ * Extracts and maps raw RPC transaction data into a TransactionRecord.
23
23
  *
24
- * 解析流程:
25
- * 1. accountKeys 中找到目标钱包的索引
26
- * 2. 通过索引比较 preBalances vs postBalances 计算 SOL 变化
27
- * 3. preTokenBalances / postTokenBalances 中筛选目标代币和钱包,计算 Token 变化
28
- * 4. 计算成交价格: |SOL变化 - fee| / |Token变化|
29
- * 5. 组装 TransactionRecord
24
+ * Parsing flow:
25
+ * 1. Find target wallet index in accountKeys
26
+ * 2. Compare preBalances vs postBalances via index to compute SOL delta
27
+ * 3. Filter preTokenBalances / postTokenBalances by target token and wallet to compute Token delta
28
+ * 4. Compute execution price: |SOL delta - fee| / |Token delta|
29
+ * 5. Assemble TransactionRecord
30
30
  *
31
- * @param txHash 交易签名
32
- * @param detail RPC 返回的解析后交易详情
33
- * @param context 追踪上下文
31
+ * @param txHash Transaction signature
32
+ * @param detail Parsed transaction detail from RPC
33
+ * @param context Tracking context
34
34
  * @returns TransactionRecord
35
35
  */
36
36
  adaptToTransactionRecord(txHash, detail, context) {
37
37
  const { accountKeys, preBalances, postBalances, preTokenBalances, postTokenBalances, fee, err, slot, blockTime } = detail;
38
- // 1. 找到目标钱包在 accountKeys 中的索引
38
+ // 1. Find target wallet index in accountKeys
39
39
  const walletIndex = this.findWalletIndex(accountKeys, context.wallets);
40
- // 2. 计算 SOL 变化 (lamports -> SOL)
40
+ // 2. Calculate SOL delta (lamports -> SOL)
41
41
  const solChangeLamports = walletIndex >= 0 ? (postBalances[walletIndex] ?? 0) - (preBalances[walletIndex] ?? 0) : 0;
42
42
  const solChange = solChangeLamports / 1e9;
43
- // 3. 计算 Token 变化
43
+ // 3. Calculate Token delta
44
44
  const tokenChange = this.calculateTokenChange(preTokenBalances, postTokenBalances, context.ca, context.wallets, accountKeys);
45
- // 4. 计算成交价格
46
- // 对于 buy: 花费 SOL 获取 TokensolChange 为负,tokenChange 为正
47
- // 对于 sell: 花费 Token 获取 SOLsolChange 为正,tokenChange 为负
48
- // 价格 = |净 SOL 变化(扣除 fee)| / |Token 变化|
45
+ // 4. Calculate execution price
46
+ // For buy: spend SOL to get Token, solChange is negative, tokenChange is positive
47
+ // For sell: spend Token to get SOL, solChange is positive, tokenChange is negative
48
+ // Price = |net SOL delta (minus fee)| / |Token delta|
49
49
  const feeInSol = (fee || 0) / 1e9;
50
50
  const netSolChange = Math.abs(solChange) - feeInSol;
51
51
  const pricePerToken = tokenChange !== 0 ? Math.max(0, netSolChange) / Math.abs(tokenChange) : 0;
52
- // 5. 组装记录
52
+ // 5. Assemble record
53
53
  return {
54
54
  txHash,
55
55
  txType: context.txType,
@@ -66,18 +66,18 @@ export class TxDetailAdapter {
66
66
  };
67
67
  }
68
68
  /**
69
- * 根据交易记录更新持仓数据。
69
+ * Update position data based on transaction record.
70
70
  *
71
- * 更新逻辑:
72
- * - buy: 增加 tokenBalance, totalBought, totalCostSol; 重算 avgBuyPrice
73
- * - sell: 减少 tokenBalance, 增加 totalSold, totalRevenueSol; 计算 realizedPnl
74
- * - transfer_in: 增加 tokenBalance (不影响成本)
75
- * - transfer_out: 减少 tokenBalance (不影响成本)
76
- * - turnover: 不更新持仓 (换手不改变净持仓)
71
+ * Update logic:
72
+ * - buy: increase tokenBalance, totalBought, totalCostSol; recalculate avgBuyPrice
73
+ * - sell: decrease tokenBalance, increase totalSold, totalRevenueSol; calculate realizedPnl
74
+ * - transfer_in: increase tokenBalance (no cost impact)
75
+ * - transfer_out: decrease tokenBalance (no cost impact)
76
+ * - turnover: no position update (turnover does not change net position)
77
77
  *
78
- * @param currentHolding 当前持仓数据
79
- * @param tx 交易记录
80
- * @returns 更新后的持仓数据 (新对象,不修改原对象)
78
+ * @param currentHolding Current position data
79
+ * @param tx Transaction record
80
+ * @returns Updated position data (new object, original not mutated)
81
81
  */
82
82
  updateHoldingFromTx(currentHolding, tx) {
83
83
  const updated = { ...currentHolding };
@@ -88,7 +88,7 @@ export class TxDetailAdapter {
88
88
  updated.totalBought += boughtTokens;
89
89
  updated.totalCostSol += costSol;
90
90
  updated.tokenBalance += boughtTokens;
91
- // 重算平均买入价 (加权平均)
91
+ // Recalculate average buy price (weighted average)
92
92
  if (updated.totalBought > 0) {
93
93
  updated.avgBuyPrice = updated.totalCostSol / updated.totalBought;
94
94
  }
@@ -100,34 +100,34 @@ export class TxDetailAdapter {
100
100
  updated.totalSold += soldTokens;
101
101
  updated.totalRevenueSol += revenueSol;
102
102
  updated.tokenBalance = Math.max(0, updated.tokenBalance - soldTokens);
103
- // 计算本次卖出的已实现盈亏
104
- // realizedPnl += 卖出收入 - 卖出数量 * 平均买入成本
103
+ // Calculate realized PnL for this sell
104
+ // realizedPnl += sell revenue - sold quantity * average buy cost
105
105
  const soldCost = soldTokens * updated.avgBuyPrice;
106
106
  updated.realizedPnl += revenueSol - soldCost;
107
107
  break;
108
108
  }
109
109
  case 'transfer_in': {
110
- // 转入: 增加余额,不影响成本数据
110
+ // Transfer in: increase balance, no cost impact
111
111
  const transferredIn = Math.abs(tx.amountToken);
112
112
  updated.tokenBalance += transferredIn;
113
113
  break;
114
114
  }
115
115
  case 'transfer_out': {
116
- // 转出: 减少余额,不影响成本数据
116
+ // Transfer out: decrease balance, no cost impact
117
117
  const transferredOut = Math.abs(tx.amountToken);
118
118
  updated.tokenBalance = Math.max(0, updated.tokenBalance - transferredOut);
119
119
  break;
120
120
  }
121
121
  case 'turnover': {
122
- // 换手: 不改变净持仓
123
- // 换手交易本质上是一买一卖的对冲操作,net 持仓不变
122
+ // Turnover: no net position change
123
+ // Turnover is essentially a hedged buy+sell operation; net position remains unchanged
124
124
  break;
125
125
  }
126
126
  }
127
127
  return updated;
128
128
  }
129
129
  /**
130
- * 为指定钱包创建空的初始持仓
130
+ * Create an empty initial holding for the given wallet
131
131
  */
132
132
  createEmptyHolding(walletAddress) {
133
133
  return {
@@ -143,14 +143,14 @@ export class TxDetailAdapter {
143
143
  };
144
144
  }
145
145
  // ============================================================
146
- // 私有方法
146
+ // Private Methods
147
147
  // ============================================================
148
148
  /**
149
- * accountKeys 中找到目标钱包的索引。
150
- * 优先匹配第一个钱包地址(主钱包)。
149
+ * Find the target wallet index in accountKeys.
150
+ * Prioritizes matching the first wallet address (primary wallet).
151
151
  */
152
152
  findWalletIndex(accountKeys, wallets) {
153
- // 先尝试精确匹配第一个钱包(主钱包)
153
+ // Try exact match starting from the first wallet (primary wallet)
154
154
  for (const wallet of wallets) {
155
155
  const idx = accountKeys.indexOf(wallet);
156
156
  if (idx >= 0)
@@ -159,9 +159,9 @@ export class TxDetailAdapter {
159
159
  return -1;
160
160
  }
161
161
  /**
162
- * 解析实际使用的钱包地址。
163
- * 如果在 accountKeys 中找到了匹配的钱包,返回该地址;
164
- * 否则返回 context.wallets[0] 作为兜底。
162
+ * Resolve the actual wallet address used.
163
+ * If a matching wallet is found in accountKeys, return that address;
164
+ * otherwise fall back to context.wallets[0].
165
165
  */
166
166
  resolveWalletAddress(accountKeys, wallets, walletIndex) {
167
167
  if (walletIndex >= 0 && walletIndex < accountKeys.length) {
@@ -170,16 +170,16 @@ export class TxDetailAdapter {
170
170
  return wallets[0] || '';
171
171
  }
172
172
  /**
173
- * 计算 Token 余额变化量。
173
+ * Calculate Token balance delta.
174
174
  *
175
- * preTokenBalances postTokenBalances 中筛选:
176
- * - mint === 目标代币合约地址
177
- * - owner 属于参与交易的钱包之一
175
+ * Filters preTokenBalances and postTokenBalances where:
176
+ * - mint === target token contract address
177
+ * - owner is one of the participating wallets
178
178
  *
179
- * 然后计算 post - pre 得到变化量。
179
+ * Then computes post - pre to get the delta.
180
180
  *
181
- * 注意: preTokenBalances/postTokenBalances 中的 owner 字段可能不存在,
182
- * 此时通过 accountIndex 映射 accountKeys 来确定 owner。
181
+ * Note: the owner field in preTokenBalances/postTokenBalances may be absent;
182
+ * in that case, owner is determined via accountIndex -> accountKeys mapping.
183
183
  */
184
184
  calculateTokenChange(preTokenBalances, postTokenBalances, tokenMint, walletAddresses, accountKeys) {
185
185
  const preBalance = this.sumTokenBalance(preTokenBalances, tokenMint, walletAddresses, accountKeys);
@@ -187,25 +187,25 @@ export class TxDetailAdapter {
187
187
  return postBalance - preBalance;
188
188
  }
189
189
  /**
190
- * tokenBalances 数组中,汇总指定代币和钱包的余额。
191
- * 支持通过 owner 字段直接匹配,或通过 accountIndex -> accountKeys 间接匹配。
190
+ * Sum token balance for the specified token and wallets from the tokenBalances array.
191
+ * Supports direct matching via owner field, or indirect matching via accountIndex -> accountKeys.
192
192
  */
193
193
  sumTokenBalance(tokenBalances, tokenMint, walletAddresses, accountKeys) {
194
194
  if (!Array.isArray(tokenBalances))
195
195
  return 0;
196
196
  let total = 0;
197
197
  for (const entry of tokenBalances) {
198
- // 只关心目标代币
198
+ // Only care about the target token
199
199
  if (entry.mint !== tokenMint)
200
200
  continue;
201
- // 确定 owner: 优先使用 entry.owner,否则通过 accountIndex 查找
201
+ // Determine owner: prefer entry.owner, otherwise look up via accountIndex
202
202
  const owner = entry.owner || (entry.accountIndex >= 0 ? accountKeys[entry.accountIndex] : undefined);
203
203
  if (!owner)
204
204
  continue;
205
- // 检查 owner 是否属于参与交易的钱包
205
+ // Check if owner is one of the participating wallets
206
206
  if (!walletAddresses.includes(owner))
207
207
  continue;
208
- // uiAmount
208
+ // Get uiAmount
209
209
  const uiAmount = entry.uiTokenAmount?.uiAmount ?? 0;
210
210
  total += uiAmount;
211
211
  }
@@ -1 +1 @@
1
- {"version":3,"file":"detail-adapter.js","sourceRoot":"","sources":["../../../src/tx-tracker/detail-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAgDH,+DAA+D;AAC/D,qBAAqB;AACrB,+DAA+D;AAE/D,MAAM,OAAO,eAAe;IAC1B;;;;;;;;;;;;;;;OAeG;IACH,wBAAwB,CACtB,MAAc,EACd,MAA+B,EAC/B,OAAwB;QAExB,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,GAC9G,MAAM,CAAC;QAET,8BAA8B;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAEvE,iCAAiC;QACjC,MAAM,iBAAiB,GACrB,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,MAAM,SAAS,GAAG,iBAAiB,GAAG,GAAG,CAAC;QAE1C,iBAAiB;QACjB,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAC3C,gBAAgB,EAChB,iBAAiB,EACjB,OAAO,CAAC,EAAE,EACV,OAAO,CAAC,OAAO,EACf,WAAW,CACZ,CAAC;QAEF,YAAY;QACZ,sDAAsD;QACtD,uDAAuD;QACvD,uCAAuC;QACvC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;QACpD,MAAM,aAAa,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhG,UAAU;QACV,OAAO;YACL,MAAM;YACN,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC;YACnF,OAAO,EAAE,OAAO,CAAC,EAAE;YACnB,SAAS,EAAE,SAAS;YACpB,WAAW,EAAE,WAAW;YACxB,aAAa;YACb,GAAG,EAAE,QAAQ;YACb,IAAI;YACJ,SAAS,EAAE,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YACrD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW;YACpC,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,cAA6B,EAAE,EAAqB;QACtE,MAAM,OAAO,GAAkB,EAAE,GAAG,cAAc,EAAE,CAAC;QAErD,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC;YAClB,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;gBAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;gBAEvC,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC;gBACpC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC;gBAChC,OAAO,CAAC,YAAY,IAAI,YAAY,CAAC;gBAErC,iBAAiB;gBACjB,IAAI,OAAO,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;oBAC5B,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;gBACnE,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;gBAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;gBAE1C,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC;gBAChC,OAAO,CAAC,eAAe,IAAI,UAAU,CAAC;gBACtC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC;gBAEtE,eAAe;gBACf,sCAAsC;gBACtC,MAAM,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;gBAClD,OAAO,CAAC,WAAW,IAAI,UAAU,GAAG,QAAQ,CAAC;gBAC7C,MAAM;YACR,CAAC;YAED,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,mBAAmB;gBACnB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;gBAC/C,OAAO,CAAC,YAAY,IAAI,aAAa,CAAC;gBACtC,MAAM;YACR,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,mBAAmB;gBACnB,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;gBAChD,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,YAAY,GAAG,cAAc,CAAC,CAAC;gBAC1E,MAAM;YACR,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,aAAa;gBACb,6BAA6B;gBAC7B,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,aAAqB;QACtC,OAAO;YACL,aAAa;YACb,YAAY,EAAE,CAAC;YACf,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,CAAC;YACZ,YAAY,EAAE,CAAC;YACf,eAAe,EAAE,CAAC;YAClB,WAAW,EAAE,CAAC;YACd,aAAa,EAAE,CAAC;SACjB,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,OAAO;IACP,+DAA+D;IAE/D;;;OAGG;IACK,eAAe,CAAC,WAAqB,EAAE,OAAiB;QAC9D,oBAAoB;QACpB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,GAAG,IAAI,CAAC;gBAAE,OAAO,GAAG,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED;;;;OAIG;IACK,oBAAoB,CAAC,WAAqB,EAAE,OAAiB,EAAE,WAAmB;QACxF,IAAI,WAAW,IAAI,CAAC,IAAI,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YACzD,OAAO,WAAW,CAAC,WAAW,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;;OAWG;IACK,oBAAoB,CAC1B,gBAAuB,EACvB,iBAAwB,EACxB,SAAiB,EACjB,eAAyB,EACzB,WAAqB;QAErB,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;QACnG,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;QACrG,OAAO,WAAW,GAAG,UAAU,CAAC;IAClC,CAAC;IAED;;;OAGG;IACK,eAAe,CACrB,aAAkC,EAClC,SAAiB,EACjB,eAAyB,EACzB,WAAqB;QAErB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;YAAE,OAAO,CAAC,CAAC;QAE5C,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,UAAU;YACV,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;gBAAE,SAAS;YAEvC,kDAAkD;YAClD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAErG,IAAI,CAAC,KAAK;gBAAE,SAAS;YAErB,uBAAuB;YACvB,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,SAAS;YAE/C,aAAa;YACb,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,EAAE,QAAQ,IAAI,CAAC,CAAC;YACpD,KAAK,IAAI,QAAQ,CAAC;QACpB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"detail-adapter.js","sourceRoot":"","sources":["../../../src/tx-tracker/detail-adapter.ts"],"names":[],"mappings":"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"}