forgex-cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +479 -0
- package/dist/bin/forgex.d.ts +12 -0
- package/dist/bin/forgex.d.ts.map +1 -0
- package/dist/bin/forgex.js +23 -0
- package/dist/bin/forgex.js.map +1 -0
- package/dist/src/adapters/codex-adapter.d.ts +238 -0
- package/dist/src/adapters/codex-adapter.d.ts.map +1 -0
- package/dist/src/adapters/codex-adapter.js +524 -0
- package/dist/src/adapters/codex-adapter.js.map +1 -0
- package/dist/src/adapters/connection.d.ts +20 -0
- package/dist/src/adapters/connection.d.ts.map +1 -0
- package/dist/src/adapters/connection.js +43 -0
- package/dist/src/adapters/connection.js.map +1 -0
- package/dist/src/adapters/ipfs.d.ts +17 -0
- package/dist/src/adapters/ipfs.d.ts.map +1 -0
- package/dist/src/adapters/ipfs.js +30 -0
- package/dist/src/adapters/ipfs.js.map +1 -0
- package/dist/src/adapters/jito-adapter.d.ts +194 -0
- package/dist/src/adapters/jito-adapter.d.ts.map +1 -0
- package/dist/src/adapters/jito-adapter.js +474 -0
- package/dist/src/adapters/jito-adapter.js.map +1 -0
- package/dist/src/adapters/rpc-adapter.d.ts +148 -0
- package/dist/src/adapters/rpc-adapter.d.ts.map +1 -0
- package/dist/src/adapters/rpc-adapter.js +410 -0
- package/dist/src/adapters/rpc-adapter.js.map +1 -0
- package/dist/src/adapters/sdk-adapter.d.ts +148 -0
- package/dist/src/adapters/sdk-adapter.d.ts.map +1 -0
- package/dist/src/adapters/sdk-adapter.js +554 -0
- package/dist/src/adapters/sdk-adapter.js.map +1 -0
- package/dist/src/commands/config/index.d.ts +8 -0
- package/dist/src/commands/config/index.d.ts.map +1 -0
- package/dist/src/commands/config/index.js +91 -0
- package/dist/src/commands/config/index.js.map +1 -0
- package/dist/src/commands/query/index.d.ts +10 -0
- package/dist/src/commands/query/index.d.ts.map +1 -0
- package/dist/src/commands/query/index.js +376 -0
- package/dist/src/commands/query/index.js.map +1 -0
- package/dist/src/commands/sniper/index.d.ts +16 -0
- package/dist/src/commands/sniper/index.d.ts.map +1 -0
- package/dist/src/commands/sniper/index.js +292 -0
- package/dist/src/commands/sniper/index.js.map +1 -0
- package/dist/src/commands/token/index.d.ts +16 -0
- package/dist/src/commands/token/index.d.ts.map +1 -0
- package/dist/src/commands/token/index.js +295 -0
- package/dist/src/commands/token/index.js.map +1 -0
- package/dist/src/commands/tools/index.d.ts +17 -0
- package/dist/src/commands/tools/index.d.ts.map +1 -0
- package/dist/src/commands/tools/index.js +626 -0
- package/dist/src/commands/tools/index.js.map +1 -0
- package/dist/src/commands/trade/index.d.ts +8 -0
- package/dist/src/commands/trade/index.d.ts.map +1 -0
- package/dist/src/commands/trade/index.js +531 -0
- package/dist/src/commands/trade/index.js.map +1 -0
- package/dist/src/commands/transfer/index.d.ts +16 -0
- package/dist/src/commands/transfer/index.d.ts.map +1 -0
- package/dist/src/commands/transfer/index.js +509 -0
- package/dist/src/commands/transfer/index.js.map +1 -0
- package/dist/src/commands/wallet/index.d.ts +10 -0
- package/dist/src/commands/wallet/index.d.ts.map +1 -0
- package/dist/src/commands/wallet/index.js +828 -0
- package/dist/src/commands/wallet/index.js.map +1 -0
- package/dist/src/config.d.ts +74 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +190 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/const/IDL/index.d.ts +4 -0
- package/dist/src/const/IDL/index.d.ts.map +1 -0
- package/dist/src/const/IDL/index.js +2 -0
- package/dist/src/const/IDL/index.js.map +1 -0
- package/dist/src/const/IDL/meteora-DLMM.d.ts +10249 -0
- package/dist/src/const/IDL/meteora-DLMM.d.ts.map +1 -0
- package/dist/src/const/IDL/meteora-DLMM.js +4177 -0
- package/dist/src/const/IDL/meteora-DLMM.js.map +1 -0
- package/dist/src/const/IDL/pump-fun.d.ts +4811 -0
- package/dist/src/const/IDL/pump-fun.d.ts.map +1 -0
- package/dist/src/const/IDL/pump-fun.js +2954 -0
- package/dist/src/const/IDL/pump-fun.js.map +1 -0
- package/dist/src/const/IDL/pump-swap-IDL.d.ts +3119 -0
- package/dist/src/const/IDL/pump-swap-IDL.d.ts.map +1 -0
- package/dist/src/const/IDL/pump-swap-IDL.js +2095 -0
- package/dist/src/const/IDL/pump-swap-IDL.js.map +1 -0
- package/dist/src/const/IDL/raydium-launchlab-IDL.d.ts +4031 -0
- package/dist/src/const/IDL/raydium-launchlab-IDL.d.ts.map +1 -0
- package/dist/src/const/IDL/raydium-launchlab-IDL.js +2110 -0
- package/dist/src/const/IDL/raydium-launchlab-IDL.js.map +1 -0
- package/dist/src/const/index.d.ts +40 -0
- package/dist/src/const/index.d.ts.map +1 -0
- package/dist/src/const/index.js +57 -0
- package/dist/src/const/index.js.map +1 -0
- package/dist/src/data-source.d.ts +270 -0
- package/dist/src/data-source.d.ts.map +1 -0
- package/dist/src/data-source.js +628 -0
- package/dist/src/data-source.js.map +1 -0
- package/dist/src/data-store/index.d.ts +87 -0
- package/dist/src/data-store/index.d.ts.map +1 -0
- package/dist/src/data-store/index.js +561 -0
- package/dist/src/data-store/index.js.map +1 -0
- package/dist/src/data-store/types.d.ts +91 -0
- package/dist/src/data-store/types.d.ts.map +1 -0
- package/dist/src/data-store/types.js +8 -0
- package/dist/src/data-store/types.js.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +36 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/output.d.ts +52 -0
- package/dist/src/output.d.ts.map +1 -0
- package/dist/src/output.js +218 -0
- package/dist/src/output.js.map +1 -0
- package/dist/src/shims/store.d.ts +58 -0
- package/dist/src/shims/store.d.ts.map +1 -0
- package/dist/src/shims/store.js +55 -0
- package/dist/src/shims/store.js.map +1 -0
- package/dist/src/sol-sdk/account/index.d.ts +13 -0
- package/dist/src/sol-sdk/account/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/account/index.js +174 -0
- package/dist/src/sol-sdk/account/index.js.map +1 -0
- package/dist/src/sol-sdk/account/lookupTable.d.ts +24 -0
- package/dist/src/sol-sdk/account/lookupTable.d.ts.map +1 -0
- package/dist/src/sol-sdk/account/lookupTable.js +103 -0
- package/dist/src/sol-sdk/account/lookupTable.js.map +1 -0
- package/dist/src/sol-sdk/batch/create.d.ts +23 -0
- package/dist/src/sol-sdk/batch/create.d.ts.map +1 -0
- package/dist/src/sol-sdk/batch/create.js +580 -0
- package/dist/src/sol-sdk/batch/create.js.map +1 -0
- package/dist/src/sol-sdk/batch/external-sniper.d.ts +31 -0
- package/dist/src/sol-sdk/batch/external-sniper.d.ts.map +1 -0
- package/dist/src/sol-sdk/batch/external-sniper.js +163 -0
- package/dist/src/sol-sdk/batch/external-sniper.js.map +1 -0
- package/dist/src/sol-sdk/batch/index.d.ts +144 -0
- package/dist/src/sol-sdk/batch/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/batch/index.js +1573 -0
- package/dist/src/sol-sdk/batch/index.js.map +1 -0
- package/dist/src/sol-sdk/calc.d.ts +277 -0
- package/dist/src/sol-sdk/calc.d.ts.map +1 -0
- package/dist/src/sol-sdk/calc.js +590 -0
- package/dist/src/sol-sdk/calc.js.map +1 -0
- package/dist/src/sol-sdk/index.d.ts +1 -0
- package/dist/src/sol-sdk/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/index.js +1 -0
- package/dist/src/sol-sdk/index.js.map +1 -0
- package/dist/src/sol-sdk/jito/index.d.ts +50 -0
- package/dist/src/sol-sdk/jito/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/jito/index.js +225 -0
- package/dist/src/sol-sdk/jito/index.js.map +1 -0
- package/dist/src/sol-sdk/launchlab/index.d.ts +32 -0
- package/dist/src/sol-sdk/launchlab/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/launchlab/index.js +78 -0
- package/dist/src/sol-sdk/launchlab/index.js.map +1 -0
- package/dist/src/sol-sdk/launchlab/instructions/buy.d.ts +27 -0
- package/dist/src/sol-sdk/launchlab/instructions/buy.d.ts.map +1 -0
- package/dist/src/sol-sdk/launchlab/instructions/buy.js +124 -0
- package/dist/src/sol-sdk/launchlab/instructions/buy.js.map +1 -0
- package/dist/src/sol-sdk/launchlab/instructions/create.d.ts +27 -0
- package/dist/src/sol-sdk/launchlab/instructions/create.d.ts.map +1 -0
- package/dist/src/sol-sdk/launchlab/instructions/create.js +125 -0
- package/dist/src/sol-sdk/launchlab/instructions/create.js.map +1 -0
- package/dist/src/sol-sdk/launchlab/instructions/sell.d.ts +15 -0
- package/dist/src/sol-sdk/launchlab/instructions/sell.d.ts.map +1 -0
- package/dist/src/sol-sdk/launchlab/instructions/sell.js +65 -0
- package/dist/src/sol-sdk/launchlab/instructions/sell.js.map +1 -0
- package/dist/src/sol-sdk/meteora/index.d.ts +32 -0
- package/dist/src/sol-sdk/meteora/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/meteora/index.js +72 -0
- package/dist/src/sol-sdk/meteora/index.js.map +1 -0
- package/dist/src/sol-sdk/meteora/instructions/buy.d.ts +46 -0
- package/dist/src/sol-sdk/meteora/instructions/buy.d.ts.map +1 -0
- package/dist/src/sol-sdk/meteora/instructions/buy.js +153 -0
- package/dist/src/sol-sdk/meteora/instructions/buy.js.map +1 -0
- package/dist/src/sol-sdk/meteora/instructions/sell.d.ts +24 -0
- package/dist/src/sol-sdk/meteora/instructions/sell.d.ts.map +1 -0
- package/dist/src/sol-sdk/meteora/instructions/sell.js +98 -0
- package/dist/src/sol-sdk/meteora/instructions/sell.js.map +1 -0
- package/dist/src/sol-sdk/pump/index.d.ts +22 -0
- package/dist/src/sol-sdk/pump/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/pump/index.js +101 -0
- package/dist/src/sol-sdk/pump/index.js.map +1 -0
- package/dist/src/sol-sdk/pump/instructions/buy.d.ts +29 -0
- package/dist/src/sol-sdk/pump/instructions/buy.d.ts.map +1 -0
- package/dist/src/sol-sdk/pump/instructions/buy.js +131 -0
- package/dist/src/sol-sdk/pump/instructions/buy.js.map +1 -0
- package/dist/src/sol-sdk/pump/instructions/createAndBuy.d.ts +36 -0
- package/dist/src/sol-sdk/pump/instructions/createAndBuy.d.ts.map +1 -0
- package/dist/src/sol-sdk/pump/instructions/createAndBuy.js +77 -0
- package/dist/src/sol-sdk/pump/instructions/createAndBuy.js.map +1 -0
- package/dist/src/sol-sdk/pump/instructions/sell.d.ts +7 -0
- package/dist/src/sol-sdk/pump/instructions/sell.d.ts.map +1 -0
- package/dist/src/sol-sdk/pump/instructions/sell.js +38 -0
- package/dist/src/sol-sdk/pump/instructions/sell.js.map +1 -0
- package/dist/src/sol-sdk/pumpswap/index.d.ts +9 -0
- package/dist/src/sol-sdk/pumpswap/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/pumpswap/index.js +27 -0
- package/dist/src/sol-sdk/pumpswap/index.js.map +1 -0
- package/dist/src/sol-sdk/pumpswap/instructions/buy.d.ts +61 -0
- package/dist/src/sol-sdk/pumpswap/instructions/buy.d.ts.map +1 -0
- package/dist/src/sol-sdk/pumpswap/instructions/buy.js +215 -0
- package/dist/src/sol-sdk/pumpswap/instructions/buy.js.map +1 -0
- package/dist/src/sol-sdk/pumpswap/instructions/migrate.d.ts +3 -0
- package/dist/src/sol-sdk/pumpswap/instructions/migrate.d.ts.map +1 -0
- package/dist/src/sol-sdk/pumpswap/instructions/migrate.js +33 -0
- package/dist/src/sol-sdk/pumpswap/instructions/migrate.js.map +1 -0
- package/dist/src/sol-sdk/pumpswap/instructions/sell.d.ts +20 -0
- package/dist/src/sol-sdk/pumpswap/instructions/sell.d.ts.map +1 -0
- package/dist/src/sol-sdk/pumpswap/instructions/sell.js +107 -0
- package/dist/src/sol-sdk/pumpswap/instructions/sell.js.map +1 -0
- package/dist/src/sol-sdk/pumpswap/rpc/index.d.ts +28 -0
- package/dist/src/sol-sdk/pumpswap/rpc/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/pumpswap/rpc/index.js +63 -0
- package/dist/src/sol-sdk/pumpswap/rpc/index.js.map +1 -0
- package/dist/src/sol-sdk/raydium/index.d.ts +16 -0
- package/dist/src/sol-sdk/raydium/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/raydium/index.js +47 -0
- package/dist/src/sol-sdk/raydium/index.js.map +1 -0
- package/dist/src/sol-sdk/raydium/instructions/buy.d.ts +29 -0
- package/dist/src/sol-sdk/raydium/instructions/buy.d.ts.map +1 -0
- package/dist/src/sol-sdk/raydium/instructions/buy.js +106 -0
- package/dist/src/sol-sdk/raydium/instructions/buy.js.map +1 -0
- package/dist/src/sol-sdk/raydium/instructions/cpmmBuy.d.ts +29 -0
- package/dist/src/sol-sdk/raydium/instructions/cpmmBuy.d.ts.map +1 -0
- package/dist/src/sol-sdk/raydium/instructions/cpmmBuy.js +80 -0
- package/dist/src/sol-sdk/raydium/instructions/cpmmBuy.js.map +1 -0
- package/dist/src/sol-sdk/raydium/instructions/cpmmSell.d.ts +17 -0
- package/dist/src/sol-sdk/raydium/instructions/cpmmSell.d.ts.map +1 -0
- package/dist/src/sol-sdk/raydium/instructions/cpmmSell.js +56 -0
- package/dist/src/sol-sdk/raydium/instructions/cpmmSell.js.map +1 -0
- package/dist/src/sol-sdk/raydium/instructions/sell.d.ts +8558 -0
- package/dist/src/sol-sdk/raydium/instructions/sell.d.ts.map +1 -0
- package/dist/src/sol-sdk/raydium/instructions/sell.js +70 -0
- package/dist/src/sol-sdk/raydium/instructions/sell.js.map +1 -0
- package/dist/src/sol-sdk/raydium/rpc/index.d.ts +39 -0
- package/dist/src/sol-sdk/raydium/rpc/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/raydium/rpc/index.js +82 -0
- package/dist/src/sol-sdk/raydium/rpc/index.js.map +1 -0
- package/dist/src/sol-sdk/raydium/rpc/raydium.d.ts +5 -0
- package/dist/src/sol-sdk/raydium/rpc/raydium.d.ts.map +1 -0
- package/dist/src/sol-sdk/raydium/rpc/raydium.js +18 -0
- package/dist/src/sol-sdk/raydium/rpc/raydium.js.map +1 -0
- package/dist/src/sol-sdk/rpc/index.d.ts +33 -0
- package/dist/src/sol-sdk/rpc/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/rpc/index.js +128 -0
- package/dist/src/sol-sdk/rpc/index.js.map +1 -0
- package/dist/src/sol-sdk/transfer/index.d.ts +24 -0
- package/dist/src/sol-sdk/transfer/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/transfer/index.js +65 -0
- package/dist/src/sol-sdk/transfer/index.js.map +1 -0
- package/dist/src/sol-sdk/turnover/index.d.ts +84 -0
- package/dist/src/sol-sdk/turnover/index.d.ts.map +1 -0
- package/dist/src/sol-sdk/turnover/index.js +569 -0
- package/dist/src/sol-sdk/turnover/index.js.map +1 -0
- package/dist/src/tx-tracker/detail-adapter.d.ts +100 -0
- package/dist/src/tx-tracker/detail-adapter.d.ts.map +1 -0
- package/dist/src/tx-tracker/detail-adapter.js +215 -0
- package/dist/src/tx-tracker/detail-adapter.js.map +1 -0
- package/dist/src/tx-tracker/index.d.ts +142 -0
- package/dist/src/tx-tracker/index.d.ts.map +1 -0
- package/dist/src/tx-tracker/index.js +447 -0
- package/dist/src/tx-tracker/index.js.map +1 -0
- package/dist/src/types/index.d.ts +76 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +69 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/websocket.d.ts +15 -0
- package/dist/src/types/websocket.d.ts.map +1 -0
- package/dist/src/types/websocket.js +18 -0
- package/dist/src/types/websocket.js.map +1 -0
- package/dist/src/utils/index.d.ts +13 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +174 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/wallet-store.d.ts +124 -0
- package/dist/src/wallet-store.d.ts.map +1 -0
- package/dist/src/wallet-store.js +524 -0
- package/dist/src/wallet-store.js.map +1 -0
- package/package.json +86 -0
- package/scripts/postinstall.js +88 -0
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ForgeX CLI TxTracker -- 交易追踪系统
|
|
3
|
+
*
|
|
4
|
+
* 在每次交易发起后:
|
|
5
|
+
* 1. 通过 RPC 或 Jito API 轮询检查交易状态
|
|
6
|
+
* 2. 确认后获取完整交易详情
|
|
7
|
+
* 3. 通过 TxDetailAdapter 将链上原始数据映射为 CLI 数据结构
|
|
8
|
+
* 4. 自动写入 DataStore (交易记录、持仓、余额)
|
|
9
|
+
*
|
|
10
|
+
* 支持:
|
|
11
|
+
* - 普通交易追踪 (trackTransaction)
|
|
12
|
+
* - Jito Bundle 追踪 (trackBundle)
|
|
13
|
+
* - 批量交易追踪 (trackBatch)
|
|
14
|
+
* - 进度回调 (onProgress)
|
|
15
|
+
* - 可配置的轮询间隔和超时
|
|
16
|
+
*
|
|
17
|
+
* 设计参考: ARCH-DESIGN-v2.md Section 3.2 ~ 3.6
|
|
18
|
+
*/
|
|
19
|
+
import { getRpcAdapter } from '../adapters/rpc-adapter.js';
|
|
20
|
+
import { getJitoAdapter } from '../adapters/jito-adapter.js';
|
|
21
|
+
import { getDataStore } from '../data-store/index.js';
|
|
22
|
+
import { TxDetailAdapter } from './detail-adapter.js';
|
|
23
|
+
// Re-export types for consumers
|
|
24
|
+
export { TxDetailAdapter } from './detail-adapter.js';
|
|
25
|
+
// ============================================================
|
|
26
|
+
// 默认配置
|
|
27
|
+
// ============================================================
|
|
28
|
+
const DEFAULT_OPTIONS = {
|
|
29
|
+
pollIntervalMs: 2000,
|
|
30
|
+
timeoutMs: 60000,
|
|
31
|
+
maxRetries: 3,
|
|
32
|
+
};
|
|
33
|
+
// ============================================================
|
|
34
|
+
// TxTracker 实现
|
|
35
|
+
// ============================================================
|
|
36
|
+
export class TxTracker {
|
|
37
|
+
rpc;
|
|
38
|
+
jito;
|
|
39
|
+
store;
|
|
40
|
+
adapter;
|
|
41
|
+
constructor(rpc, jito, store) {
|
|
42
|
+
this.rpc = rpc || getRpcAdapter();
|
|
43
|
+
this.jito = jito || getJitoAdapter();
|
|
44
|
+
this.store = store || getDataStore();
|
|
45
|
+
this.adapter = new TxDetailAdapter();
|
|
46
|
+
}
|
|
47
|
+
// ============================================================
|
|
48
|
+
// 公开 API
|
|
49
|
+
// ============================================================
|
|
50
|
+
/**
|
|
51
|
+
* 追踪单笔普通交易。
|
|
52
|
+
*
|
|
53
|
+
* 流程:
|
|
54
|
+
* 1. 轮询 RPC 直到交易确认 / 失败 / 超时
|
|
55
|
+
* 2. 确认后获取交易详情
|
|
56
|
+
* 3. 通过 TxDetailAdapter 适配为 TransactionRecord
|
|
57
|
+
* 4. 写入 DataStore (交易记录 + 持仓 + 余额)
|
|
58
|
+
*
|
|
59
|
+
* @param txHash 交易签名
|
|
60
|
+
* @param context 追踪上下文
|
|
61
|
+
* @param options 追踪选项 (可选)
|
|
62
|
+
* @returns 追踪结果
|
|
63
|
+
*/
|
|
64
|
+
async trackTransaction(txHash, context, options) {
|
|
65
|
+
const opts = this.resolveOptions(options);
|
|
66
|
+
opts.onProgress?.('polling', txHash);
|
|
67
|
+
// Step 1: 轮询确认状态
|
|
68
|
+
const confirmStatus = await this.pollUntilConfirmed(txHash, opts);
|
|
69
|
+
if (confirmStatus === 'timeout') {
|
|
70
|
+
opts.onProgress?.('timeout', txHash);
|
|
71
|
+
// 超时也记录为 pending 交易
|
|
72
|
+
const pendingRecord = this.createPendingRecord(txHash, context);
|
|
73
|
+
await this.persistTransaction(pendingRecord, context);
|
|
74
|
+
return {
|
|
75
|
+
txHash,
|
|
76
|
+
status: 'timeout',
|
|
77
|
+
error: `交易确认超时 (${opts.timeoutMs}ms)`,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
if (confirmStatus === 'failed') {
|
|
81
|
+
opts.onProgress?.('failed', txHash);
|
|
82
|
+
// 失败交易也记录
|
|
83
|
+
const failedRecord = this.createFailedRecord(txHash, context);
|
|
84
|
+
await this.persistTransaction(failedRecord, context);
|
|
85
|
+
return {
|
|
86
|
+
txHash,
|
|
87
|
+
status: 'failed',
|
|
88
|
+
record: failedRecord,
|
|
89
|
+
error: '交易执行失败',
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
// Step 2: 确认成功,获取交易详情
|
|
93
|
+
opts.onProgress?.('fetching_detail', txHash);
|
|
94
|
+
const detail = await this.fetchDetailWithRetry(txHash, opts.maxRetries);
|
|
95
|
+
if (!detail) {
|
|
96
|
+
// 极端情况: 确认了但获取不到详情
|
|
97
|
+
const partialRecord = this.createConfirmedPartialRecord(txHash, context);
|
|
98
|
+
await this.persistTransaction(partialRecord, context);
|
|
99
|
+
return {
|
|
100
|
+
txHash,
|
|
101
|
+
status: 'confirmed',
|
|
102
|
+
record: partialRecord,
|
|
103
|
+
error: '交易已确认但无法获取详情',
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
// Step 3: 适配为 TransactionRecord
|
|
107
|
+
const record = this.adapter.adaptToTransactionRecord(txHash, detail, context);
|
|
108
|
+
// Step 4: 写入 DataStore
|
|
109
|
+
opts.onProgress?.('persisting', txHash);
|
|
110
|
+
await this.persistTransaction(record, context);
|
|
111
|
+
await this.updateHoldingFromRecord(record, context);
|
|
112
|
+
await this.updateBalanceFromRecord(record, context);
|
|
113
|
+
opts.onProgress?.('done', txHash);
|
|
114
|
+
return {
|
|
115
|
+
txHash,
|
|
116
|
+
status: record.status === 'failed' ? 'failed' : 'confirmed',
|
|
117
|
+
record,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* 追踪 Jito Bundle。
|
|
122
|
+
*
|
|
123
|
+
* 流程:
|
|
124
|
+
* 1. 通过 JitoAdapter 等待 Bundle 确认
|
|
125
|
+
* 2. Bundle 确认后,逐个获取内部交易详情
|
|
126
|
+
* 3. 适配并写入 DataStore
|
|
127
|
+
*
|
|
128
|
+
* @param bundleId Jito Bundle ID
|
|
129
|
+
* @param txHashes Bundle 中包含的交易签名列表
|
|
130
|
+
* @param context 追踪上下文
|
|
131
|
+
* @param options 追踪选项 (可选)
|
|
132
|
+
* @returns 每笔交易的追踪结果
|
|
133
|
+
*/
|
|
134
|
+
async trackBundle(bundleId, txHashes, context, options) {
|
|
135
|
+
const opts = this.resolveOptions(options);
|
|
136
|
+
// 将 bundleId 注入 context
|
|
137
|
+
const bundleContext = {
|
|
138
|
+
...context,
|
|
139
|
+
jitoBundle: bundleId,
|
|
140
|
+
};
|
|
141
|
+
opts.onProgress?.('waiting_bundle', bundleId);
|
|
142
|
+
// Step 1: 等待 Bundle 确认
|
|
143
|
+
const bundleResult = await this.jito.waitForBundleConfirmation(bundleId, {
|
|
144
|
+
timeoutMs: opts.timeoutMs,
|
|
145
|
+
intervalMs: opts.pollIntervalMs,
|
|
146
|
+
});
|
|
147
|
+
if (!bundleResult.success) {
|
|
148
|
+
opts.onProgress?.('bundle_failed', bundleId);
|
|
149
|
+
// Bundle 失败: 为每笔交易生成失败记录
|
|
150
|
+
const results = txHashes.map((txHash) => {
|
|
151
|
+
const failedRecord = this.createFailedRecord(txHash, bundleContext);
|
|
152
|
+
// fire-and-forget 持久化
|
|
153
|
+
this.persistTransaction(failedRecord, bundleContext).catch(() => { });
|
|
154
|
+
return {
|
|
155
|
+
txHash,
|
|
156
|
+
status: 'failed',
|
|
157
|
+
record: failedRecord,
|
|
158
|
+
error: bundleResult.error || `Bundle ${bundleResult.status}`,
|
|
159
|
+
};
|
|
160
|
+
});
|
|
161
|
+
return results;
|
|
162
|
+
}
|
|
163
|
+
// Step 2: Bundle 确认成功,使用 Bundle 返回的交易列表 (如果有的话)
|
|
164
|
+
const actualTxHashes = bundleResult.transactions?.length
|
|
165
|
+
? bundleResult.transactions
|
|
166
|
+
: txHashes;
|
|
167
|
+
opts.onProgress?.('bundle_confirmed', bundleId);
|
|
168
|
+
// Step 3: 逐个获取交易详情并处理
|
|
169
|
+
const results = [];
|
|
170
|
+
for (const txHash of actualTxHashes) {
|
|
171
|
+
// 为 bundle 中的每笔交易确定其对应的钱包
|
|
172
|
+
// 如果 txHashes 和 context.wallets 一一对应,使用对应的钱包
|
|
173
|
+
const txIndex = txHashes.indexOf(txHash);
|
|
174
|
+
const txContext = {
|
|
175
|
+
...bundleContext,
|
|
176
|
+
wallets: txIndex >= 0 && txIndex < context.wallets.length
|
|
177
|
+
? [context.wallets[txIndex]]
|
|
178
|
+
: context.wallets,
|
|
179
|
+
};
|
|
180
|
+
const result = await this.processConfirmedTransaction(txHash, txContext, opts);
|
|
181
|
+
results.push(result);
|
|
182
|
+
}
|
|
183
|
+
return results;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* 批量追踪多笔独立交易。
|
|
187
|
+
* 并发追踪所有交易,每笔交易独立处理。
|
|
188
|
+
*
|
|
189
|
+
* @param entries 交易列表 (txHash + context)
|
|
190
|
+
* @param options 追踪选项 (可选)
|
|
191
|
+
* @returns 每笔交易的追踪结果
|
|
192
|
+
*/
|
|
193
|
+
async trackBatch(entries, options) {
|
|
194
|
+
if (entries.length === 0)
|
|
195
|
+
return [];
|
|
196
|
+
const opts = this.resolveOptions(options);
|
|
197
|
+
// 并发追踪所有交易
|
|
198
|
+
const promises = entries.map(({ txHash, context }) => this.trackTransaction(txHash, context, opts).catch((err) => ({
|
|
199
|
+
txHash,
|
|
200
|
+
status: 'failed',
|
|
201
|
+
error: err?.message || '追踪过程中发生未知错误',
|
|
202
|
+
})));
|
|
203
|
+
return Promise.all(promises);
|
|
204
|
+
}
|
|
205
|
+
// ============================================================
|
|
206
|
+
// 内部方法 -- 轮询
|
|
207
|
+
// ============================================================
|
|
208
|
+
/**
|
|
209
|
+
* 轮询 RPC 直到交易确认、失败或超时。
|
|
210
|
+
*
|
|
211
|
+
* 策略:
|
|
212
|
+
* - 每隔 pollIntervalMs 查询一次交易状态
|
|
213
|
+
* - confirmed / finalized -> 返回 'confirmed'
|
|
214
|
+
* - failed -> 返回 'failed'
|
|
215
|
+
* - not_found -> 继续等待
|
|
216
|
+
* - RPC 请求错误 -> 计入重试次数,超限后抛出
|
|
217
|
+
* - 超时 -> 返回 'timeout'
|
|
218
|
+
*/
|
|
219
|
+
async pollUntilConfirmed(txHash, opts) {
|
|
220
|
+
const start = Date.now();
|
|
221
|
+
let consecutiveErrors = 0;
|
|
222
|
+
while (Date.now() - start < opts.timeoutMs) {
|
|
223
|
+
try {
|
|
224
|
+
const status = await this.rpc.getTransactionStatus(txHash);
|
|
225
|
+
if (status === 'confirmed' || status === 'finalized') {
|
|
226
|
+
return 'confirmed';
|
|
227
|
+
}
|
|
228
|
+
if (status === 'failed') {
|
|
229
|
+
return 'failed';
|
|
230
|
+
}
|
|
231
|
+
// not_found: 继续等待
|
|
232
|
+
consecutiveErrors = 0; // 成功的 RPC 请求重置错误计数
|
|
233
|
+
}
|
|
234
|
+
catch (err) {
|
|
235
|
+
consecutiveErrors++;
|
|
236
|
+
if (consecutiveErrors >= opts.maxRetries) {
|
|
237
|
+
// 连续多次 RPC 请求失败,视为超时
|
|
238
|
+
return 'timeout';
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
await sleep(opts.pollIntervalMs);
|
|
242
|
+
}
|
|
243
|
+
return 'timeout';
|
|
244
|
+
}
|
|
245
|
+
// ============================================================
|
|
246
|
+
// 内部方法 -- 交易详情获取
|
|
247
|
+
// ============================================================
|
|
248
|
+
/**
|
|
249
|
+
* 带重试的交易详情获取。
|
|
250
|
+
* 交易刚确认时,详情可能还没有被索引,需要多次尝试。
|
|
251
|
+
*/
|
|
252
|
+
async fetchDetailWithRetry(txHash, maxRetries) {
|
|
253
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
254
|
+
try {
|
|
255
|
+
const detail = await this.rpc.getTransactionDetail(txHash);
|
|
256
|
+
if (detail)
|
|
257
|
+
return detail;
|
|
258
|
+
}
|
|
259
|
+
catch {
|
|
260
|
+
// 继续重试
|
|
261
|
+
}
|
|
262
|
+
// 等待后重试 (指数退避)
|
|
263
|
+
if (attempt < maxRetries - 1) {
|
|
264
|
+
await sleep(1000 * (attempt + 1));
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return null;
|
|
268
|
+
}
|
|
269
|
+
// ============================================================
|
|
270
|
+
// 内部方法 -- 处理已确认交易
|
|
271
|
+
// ============================================================
|
|
272
|
+
/**
|
|
273
|
+
* 处理已确认的单笔交易: 获取详情 -> 适配 -> 持久化
|
|
274
|
+
*/
|
|
275
|
+
async processConfirmedTransaction(txHash, context, opts) {
|
|
276
|
+
opts.onProgress?.('fetching_detail', txHash);
|
|
277
|
+
const detail = await this.fetchDetailWithRetry(txHash, opts.maxRetries);
|
|
278
|
+
if (!detail) {
|
|
279
|
+
const partialRecord = this.createConfirmedPartialRecord(txHash, context);
|
|
280
|
+
await this.persistTransaction(partialRecord, context);
|
|
281
|
+
return {
|
|
282
|
+
txHash,
|
|
283
|
+
status: 'confirmed',
|
|
284
|
+
record: partialRecord,
|
|
285
|
+
error: '交易已确认但无法获取详情',
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
const record = this.adapter.adaptToTransactionRecord(txHash, detail, context);
|
|
289
|
+
opts.onProgress?.('persisting', txHash);
|
|
290
|
+
await this.persistTransaction(record, context);
|
|
291
|
+
await this.updateHoldingFromRecord(record, context);
|
|
292
|
+
await this.updateBalanceFromRecord(record, context);
|
|
293
|
+
opts.onProgress?.('done', txHash);
|
|
294
|
+
return {
|
|
295
|
+
txHash,
|
|
296
|
+
status: record.status === 'failed' ? 'failed' : 'confirmed',
|
|
297
|
+
record,
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
// ============================================================
|
|
301
|
+
// 内部方法 -- DataStore 持久化
|
|
302
|
+
// ============================================================
|
|
303
|
+
/**
|
|
304
|
+
* 将交易记录写入 DataStore
|
|
305
|
+
*/
|
|
306
|
+
async persistTransaction(record, context) {
|
|
307
|
+
try {
|
|
308
|
+
await this.store.appendTransaction(context.ca, context.groupId, record);
|
|
309
|
+
}
|
|
310
|
+
catch (err) {
|
|
311
|
+
console.error(`TxTracker: 写入交易记录失败 [${record.txHash}]:`, err);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* 根据交易记录更新持仓数据
|
|
316
|
+
*/
|
|
317
|
+
async updateHoldingFromRecord(record, context) {
|
|
318
|
+
// 只有确认成功的交易才更新持仓
|
|
319
|
+
if (record.status !== 'confirmed')
|
|
320
|
+
return;
|
|
321
|
+
try {
|
|
322
|
+
// 读取当前持仓
|
|
323
|
+
const holdingsFile = this.store.getHoldings(context.ca, context.groupId);
|
|
324
|
+
const currentHolding = holdingsFile?.wallets.find((w) => w.walletAddress === record.walletAddress) ||
|
|
325
|
+
this.adapter.createEmptyHolding(record.walletAddress);
|
|
326
|
+
// 计算更新后的持仓
|
|
327
|
+
const updatedHolding = this.adapter.updateHoldingFromTx(currentHolding, record);
|
|
328
|
+
// 写入
|
|
329
|
+
await this.store.updateHolding(context.ca, context.groupId, record.walletAddress, updatedHolding);
|
|
330
|
+
}
|
|
331
|
+
catch (err) {
|
|
332
|
+
console.error(`TxTracker: 更新持仓失败 [${record.walletAddress}]:`, err);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* 根据交易记录更新余额快照
|
|
337
|
+
*/
|
|
338
|
+
async updateBalanceFromRecord(record, context) {
|
|
339
|
+
// 只有确认成功的交易才更新余额
|
|
340
|
+
if (record.status !== 'confirmed')
|
|
341
|
+
return;
|
|
342
|
+
try {
|
|
343
|
+
// 从 RPC 获取最新的实际余额
|
|
344
|
+
const [solBalance, tokenBalance] = await Promise.all([
|
|
345
|
+
this.rpc.getSolBalance(record.walletAddress).catch(() => 0),
|
|
346
|
+
this.rpc.getTokenBalance(record.walletAddress, context.ca).catch(() => 0),
|
|
347
|
+
]);
|
|
348
|
+
await this.store.updateBalance(context.ca, context.groupId, record.walletAddress, {
|
|
349
|
+
walletAddress: record.walletAddress,
|
|
350
|
+
solBalance,
|
|
351
|
+
tokenBalance,
|
|
352
|
+
updatedAt: Date.now(),
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
catch (err) {
|
|
356
|
+
console.error(`TxTracker: 更新余额失败 [${record.walletAddress}]:`, err);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
// ============================================================
|
|
360
|
+
// 内部方法 -- 记录工厂
|
|
361
|
+
// ============================================================
|
|
362
|
+
/** 创建 pending (超时) 状态的交易记录 */
|
|
363
|
+
createPendingRecord(txHash, context) {
|
|
364
|
+
return {
|
|
365
|
+
txHash,
|
|
366
|
+
txType: context.txType,
|
|
367
|
+
walletAddress: context.wallets[0] || '',
|
|
368
|
+
tokenCA: context.ca,
|
|
369
|
+
amountSol: 0,
|
|
370
|
+
amountToken: 0,
|
|
371
|
+
pricePerToken: 0,
|
|
372
|
+
fee: 0,
|
|
373
|
+
slot: 0,
|
|
374
|
+
blockTime: Math.floor(Date.now() / 1000),
|
|
375
|
+
status: 'pending',
|
|
376
|
+
jitoBundle: context.jitoBundle,
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
/** 创建 failed 状态的交易记录 */
|
|
380
|
+
createFailedRecord(txHash, context) {
|
|
381
|
+
return {
|
|
382
|
+
txHash,
|
|
383
|
+
txType: context.txType,
|
|
384
|
+
walletAddress: context.wallets[0] || '',
|
|
385
|
+
tokenCA: context.ca,
|
|
386
|
+
amountSol: 0,
|
|
387
|
+
amountToken: 0,
|
|
388
|
+
pricePerToken: 0,
|
|
389
|
+
fee: 0,
|
|
390
|
+
slot: 0,
|
|
391
|
+
blockTime: Math.floor(Date.now() / 1000),
|
|
392
|
+
status: 'failed',
|
|
393
|
+
jitoBundle: context.jitoBundle,
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
/** 创建已确认但无详情的交易记录 */
|
|
397
|
+
createConfirmedPartialRecord(txHash, context) {
|
|
398
|
+
return {
|
|
399
|
+
txHash,
|
|
400
|
+
txType: context.txType,
|
|
401
|
+
walletAddress: context.wallets[0] || '',
|
|
402
|
+
tokenCA: context.ca,
|
|
403
|
+
amountSol: context.expectedAmountSol ? -context.expectedAmountSol : 0,
|
|
404
|
+
amountToken: 0,
|
|
405
|
+
pricePerToken: 0,
|
|
406
|
+
fee: 0,
|
|
407
|
+
slot: 0,
|
|
408
|
+
blockTime: Math.floor(Date.now() / 1000),
|
|
409
|
+
status: 'confirmed',
|
|
410
|
+
jitoBundle: context.jitoBundle,
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
// ============================================================
|
|
414
|
+
// 内部方法 -- 选项解析
|
|
415
|
+
// ============================================================
|
|
416
|
+
/** 合并用户选项和默认选项 */
|
|
417
|
+
resolveOptions(options) {
|
|
418
|
+
return {
|
|
419
|
+
pollIntervalMs: options?.pollIntervalMs ?? DEFAULT_OPTIONS.pollIntervalMs,
|
|
420
|
+
timeoutMs: options?.timeoutMs ?? DEFAULT_OPTIONS.timeoutMs,
|
|
421
|
+
maxRetries: options?.maxRetries ?? DEFAULT_OPTIONS.maxRetries,
|
|
422
|
+
onProgress: options?.onProgress,
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
// ============================================================
|
|
427
|
+
// 单例管理
|
|
428
|
+
// ============================================================
|
|
429
|
+
let _instance = null;
|
|
430
|
+
/** 获取 TxTracker 全局单例 */
|
|
431
|
+
export function getTxTracker() {
|
|
432
|
+
if (!_instance) {
|
|
433
|
+
_instance = new TxTracker();
|
|
434
|
+
}
|
|
435
|
+
return _instance;
|
|
436
|
+
}
|
|
437
|
+
/** 重置单例 (用于测试或配置变更) */
|
|
438
|
+
export function resetTxTracker() {
|
|
439
|
+
_instance = null;
|
|
440
|
+
}
|
|
441
|
+
// ============================================================
|
|
442
|
+
// 工具函数
|
|
443
|
+
// ============================================================
|
|
444
|
+
function sleep(ms) {
|
|
445
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
446
|
+
}
|
|
447
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tx-tracker/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export declare enum ExternalOrderStatus {
|
|
2
|
+
NONE = "none",// 未打开
|
|
3
|
+
WAITING = "waiting",// 等待抢筹
|
|
4
|
+
SUCCESS = "success",// 抢筹成功
|
|
5
|
+
FAILED = "failed"
|
|
6
|
+
}
|
|
7
|
+
export declare enum UserWalletType {
|
|
8
|
+
LOGIN = "login",
|
|
9
|
+
GROUP = "group"
|
|
10
|
+
}
|
|
11
|
+
export declare enum TransactionStatus {
|
|
12
|
+
PENDING = "pending",
|
|
13
|
+
SUCCESS = "success",
|
|
14
|
+
FAILED = "failed"
|
|
15
|
+
}
|
|
16
|
+
export declare enum GroupType {
|
|
17
|
+
LOCAL = "local",
|
|
18
|
+
MONITOR = "monitor"
|
|
19
|
+
}
|
|
20
|
+
export declare enum ClientMonitorType {
|
|
21
|
+
NORMAL = "normal",
|
|
22
|
+
TOP100 = "top100",
|
|
23
|
+
RETAIL = "retail"
|
|
24
|
+
}
|
|
25
|
+
export declare enum ServerMonitorType {
|
|
26
|
+
normal = 1,
|
|
27
|
+
top100 = 2,
|
|
28
|
+
retail = 3
|
|
29
|
+
}
|
|
30
|
+
export declare enum ServerGroupType {
|
|
31
|
+
own = "own",
|
|
32
|
+
monitor = "monitor"
|
|
33
|
+
}
|
|
34
|
+
export declare enum BundleBuyTime {
|
|
35
|
+
T0 = "T0",
|
|
36
|
+
T1_T5 = "T1-T5"
|
|
37
|
+
}
|
|
38
|
+
export declare enum VolumeType {
|
|
39
|
+
ONE_BUY_ONE_SELL = "one_buy_one_sell",
|
|
40
|
+
ONE_BUY_TWO_SELL = "one_buy_two_sell",
|
|
41
|
+
ONE_BUY_THREE_SELL = "one_buy_three_sell",
|
|
42
|
+
TWO_BUY_ONE_SELL = "two_buy_one_sell",
|
|
43
|
+
THREE_BUY_ONE_SELL = "three_buy_one_sell"
|
|
44
|
+
}
|
|
45
|
+
export declare enum StepStatus {
|
|
46
|
+
WAITING = "waiting",// 等待中(灰色loading)
|
|
47
|
+
PROCESSING = "processing",// 进行中(蓝色loading)
|
|
48
|
+
COMPLETED = "completed",// 已完成(绿色勾选)
|
|
49
|
+
FAILED = "failed"
|
|
50
|
+
}
|
|
51
|
+
export declare enum AccountLevel {
|
|
52
|
+
NORMAL = 0,// 普通用户
|
|
53
|
+
SILVER = 1,// 白银会员
|
|
54
|
+
GOLD = 2,// 黄金会员
|
|
55
|
+
PLATINUM = 3,// 铂金会员
|
|
56
|
+
DIAMOND = 4
|
|
57
|
+
}
|
|
58
|
+
export interface CreateStep {
|
|
59
|
+
id: string;
|
|
60
|
+
name: string;
|
|
61
|
+
status: StepStatus;
|
|
62
|
+
walletAddress?: string;
|
|
63
|
+
error?: string;
|
|
64
|
+
}
|
|
65
|
+
export interface CreateCoinResult {
|
|
66
|
+
success: boolean;
|
|
67
|
+
steps: CreateStep[];
|
|
68
|
+
bundleIds: {
|
|
69
|
+
devBundle?: string;
|
|
70
|
+
sniperBundle?: string;
|
|
71
|
+
};
|
|
72
|
+
mintAddress?: string;
|
|
73
|
+
error?: string;
|
|
74
|
+
}
|
|
75
|
+
export type CreateStatusCallback = (stepId: string, status: StepStatus, error?: string) => void;
|
|
76
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,oBAAY,mBAAmB;IAC7B,IAAI,SAAS,CAAE,MAAM;IACrB,OAAO,YAAY,CAAE,OAAO;IAC5B,OAAO,YAAY,CAAE,OAAO;IAC5B,MAAM,WAAW;CAClB;AAED,oBAAY,cAAc;IACxB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED,oBAAY,SAAS;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,oBAAY,iBAAiB;IAC3B,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,oBAAY,iBAAiB;IAC3B,MAAM,IAAI;IACV,MAAM,IAAI;IACV,MAAM,IAAI;CACX;AAED,oBAAY,eAAe;IACzB,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB;AAED,oBAAY,aAAa;IACvB,EAAE,OAAO;IACT,KAAK,UAAU;CAChB;AAED,oBAAY,UAAU;IACpB,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;IACrC,kBAAkB,uBAAuB;IACzC,gBAAgB,qBAAqB;IACrC,kBAAkB,uBAAuB;CAC1C;AAED,oBAAY,UAAU;IACpB,OAAO,YAAY,CAAE,iBAAiB;IACtC,UAAU,eAAe,CAAE,iBAAiB;IAC5C,SAAS,cAAc,CAAE,YAAY;IACrC,MAAM,WAAW;CAClB;AAED,oBAAY,YAAY;IACtB,MAAM,IAAI,CAAE,OAAO;IACnB,MAAM,IAAI,CAAE,OAAO;IACnB,IAAI,IAAI,CAAE,OAAO;IACjB,QAAQ,IAAI,CAAE,OAAO;IACrB,OAAO,IAAI;CACZ;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export var ExternalOrderStatus;
|
|
2
|
+
(function (ExternalOrderStatus) {
|
|
3
|
+
ExternalOrderStatus["NONE"] = "none";
|
|
4
|
+
ExternalOrderStatus["WAITING"] = "waiting";
|
|
5
|
+
ExternalOrderStatus["SUCCESS"] = "success";
|
|
6
|
+
ExternalOrderStatus["FAILED"] = "failed";
|
|
7
|
+
})(ExternalOrderStatus || (ExternalOrderStatus = {}));
|
|
8
|
+
export var UserWalletType;
|
|
9
|
+
(function (UserWalletType) {
|
|
10
|
+
UserWalletType["LOGIN"] = "login";
|
|
11
|
+
UserWalletType["GROUP"] = "group";
|
|
12
|
+
})(UserWalletType || (UserWalletType = {}));
|
|
13
|
+
export var TransactionStatus;
|
|
14
|
+
(function (TransactionStatus) {
|
|
15
|
+
TransactionStatus["PENDING"] = "pending";
|
|
16
|
+
TransactionStatus["SUCCESS"] = "success";
|
|
17
|
+
TransactionStatus["FAILED"] = "failed";
|
|
18
|
+
})(TransactionStatus || (TransactionStatus = {}));
|
|
19
|
+
export var GroupType;
|
|
20
|
+
(function (GroupType) {
|
|
21
|
+
GroupType["LOCAL"] = "local";
|
|
22
|
+
GroupType["MONITOR"] = "monitor";
|
|
23
|
+
})(GroupType || (GroupType = {}));
|
|
24
|
+
export var ClientMonitorType;
|
|
25
|
+
(function (ClientMonitorType) {
|
|
26
|
+
ClientMonitorType["NORMAL"] = "normal";
|
|
27
|
+
ClientMonitorType["TOP100"] = "top100";
|
|
28
|
+
ClientMonitorType["RETAIL"] = "retail";
|
|
29
|
+
})(ClientMonitorType || (ClientMonitorType = {}));
|
|
30
|
+
export var ServerMonitorType;
|
|
31
|
+
(function (ServerMonitorType) {
|
|
32
|
+
ServerMonitorType[ServerMonitorType["normal"] = 1] = "normal";
|
|
33
|
+
ServerMonitorType[ServerMonitorType["top100"] = 2] = "top100";
|
|
34
|
+
ServerMonitorType[ServerMonitorType["retail"] = 3] = "retail";
|
|
35
|
+
})(ServerMonitorType || (ServerMonitorType = {}));
|
|
36
|
+
export var ServerGroupType;
|
|
37
|
+
(function (ServerGroupType) {
|
|
38
|
+
ServerGroupType["own"] = "own";
|
|
39
|
+
ServerGroupType["monitor"] = "monitor";
|
|
40
|
+
})(ServerGroupType || (ServerGroupType = {}));
|
|
41
|
+
export var BundleBuyTime;
|
|
42
|
+
(function (BundleBuyTime) {
|
|
43
|
+
BundleBuyTime["T0"] = "T0";
|
|
44
|
+
BundleBuyTime["T1_T5"] = "T1-T5";
|
|
45
|
+
})(BundleBuyTime || (BundleBuyTime = {}));
|
|
46
|
+
export var VolumeType;
|
|
47
|
+
(function (VolumeType) {
|
|
48
|
+
VolumeType["ONE_BUY_ONE_SELL"] = "one_buy_one_sell";
|
|
49
|
+
VolumeType["ONE_BUY_TWO_SELL"] = "one_buy_two_sell";
|
|
50
|
+
VolumeType["ONE_BUY_THREE_SELL"] = "one_buy_three_sell";
|
|
51
|
+
VolumeType["TWO_BUY_ONE_SELL"] = "two_buy_one_sell";
|
|
52
|
+
VolumeType["THREE_BUY_ONE_SELL"] = "three_buy_one_sell";
|
|
53
|
+
})(VolumeType || (VolumeType = {}));
|
|
54
|
+
export var StepStatus;
|
|
55
|
+
(function (StepStatus) {
|
|
56
|
+
StepStatus["WAITING"] = "waiting";
|
|
57
|
+
StepStatus["PROCESSING"] = "processing";
|
|
58
|
+
StepStatus["COMPLETED"] = "completed";
|
|
59
|
+
StepStatus["FAILED"] = "failed";
|
|
60
|
+
})(StepStatus || (StepStatus = {}));
|
|
61
|
+
export var AccountLevel;
|
|
62
|
+
(function (AccountLevel) {
|
|
63
|
+
AccountLevel[AccountLevel["NORMAL"] = 0] = "NORMAL";
|
|
64
|
+
AccountLevel[AccountLevel["SILVER"] = 1] = "SILVER";
|
|
65
|
+
AccountLevel[AccountLevel["GOLD"] = 2] = "GOLD";
|
|
66
|
+
AccountLevel[AccountLevel["PLATINUM"] = 3] = "PLATINUM";
|
|
67
|
+
AccountLevel[AccountLevel["DIAMOND"] = 4] = "DIAMOND";
|
|
68
|
+
})(AccountLevel || (AccountLevel = {}));
|
|
69
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC7B,oCAAa,CAAA;IACb,0CAAmB,CAAA;IACnB,0CAAmB,CAAA;IACnB,wCAAiB,CAAA;AACnB,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,QAK9B;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,iCAAe,CAAA;IACf,iCAAe,CAAA;AACjB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,wCAAmB,CAAA;IACnB,wCAAmB,CAAA;IACnB,sCAAiB,CAAA;AACnB,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAED,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,4BAAe,CAAA;IACf,gCAAmB,CAAA;AACrB,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAED,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,sCAAiB,CAAA;IACjB,sCAAiB,CAAA;IACjB,sCAAiB,CAAA;AACnB,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAED,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,6DAAU,CAAA;IACV,6DAAU,CAAA;IACV,6DAAU,CAAA;AACZ,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAED,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,8BAAW,CAAA;IACX,sCAAmB,CAAA;AACrB,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,0BAAS,CAAA;IACT,gCAAe,CAAA;AACjB,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED,MAAM,CAAN,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,mDAAqC,CAAA;IACrC,mDAAqC,CAAA;IACrC,uDAAyC,CAAA;IACzC,mDAAqC,CAAA;IACrC,uDAAyC,CAAA;AAC3C,CAAC,EANW,UAAU,KAAV,UAAU,QAMrB;AAED,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,uCAAyB,CAAA;IACzB,qCAAuB,CAAA;IACvB,+BAAiB,CAAA;AACnB,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB;AAED,MAAM,CAAN,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,mDAAU,CAAA;IACV,mDAAU,CAAA;IACV,+CAAQ,CAAA;IACR,uDAAY,CAAA;IACZ,qDAAW,CAAA;AACb,CAAC,EANW,YAAY,KAAZ,YAAY,QAMvB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare enum WSTopicType {
|
|
2
|
+
TRANSACTION_FEED = "subscribeTokenTrades",
|
|
3
|
+
NEW_POOL_CREATED = "subscribeNewPoolCreated",
|
|
4
|
+
POOL_REVERSE = "subscribePoolReverse",
|
|
5
|
+
KLINE = "subscribeKline",
|
|
6
|
+
GROUP_BS_TRADE = "subscribeGroupBsTrades"
|
|
7
|
+
}
|
|
8
|
+
export declare enum WSUnsubscribeType {
|
|
9
|
+
subscribeTokenTrades = "unsubscribeTokenTrades",
|
|
10
|
+
subscribeNewPoolCreated = "unsubscribeNewPoolCreated",
|
|
11
|
+
subscribePoolReverse = "unsubscribePoolReverse",
|
|
12
|
+
subscribeKline = "unsubscribeKline",
|
|
13
|
+
subscribeGroupBsTrades = "unsubscribeGroupBsTrades"
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=websocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../src/types/websocket.ts"],"names":[],"mappings":"AACA,oBAAY,WAAW;IACrB,gBAAgB,yBAAyB;IACzC,gBAAgB,4BAA4B;IAC5C,YAAY,yBAAyB;IACrC,KAAK,mBAAmB;IACxB,cAAc,2BAA2B;CAC1C;AAED,oBAAY,iBAAiB;IAC3B,oBAAoB,2BAA2B;IAC/C,uBAAuB,8BAA8B;IACrD,oBAAoB,2BAA2B;IAC/C,cAAc,qBAAqB;IACnC,sBAAsB,6BAA6B;CACpD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// 定义可订阅的数据类型
|
|
2
|
+
export var WSTopicType;
|
|
3
|
+
(function (WSTopicType) {
|
|
4
|
+
WSTopicType["TRANSACTION_FEED"] = "subscribeTokenTrades";
|
|
5
|
+
WSTopicType["NEW_POOL_CREATED"] = "subscribeNewPoolCreated";
|
|
6
|
+
WSTopicType["POOL_REVERSE"] = "subscribePoolReverse";
|
|
7
|
+
WSTopicType["KLINE"] = "subscribeKline";
|
|
8
|
+
WSTopicType["GROUP_BS_TRADE"] = "subscribeGroupBsTrades";
|
|
9
|
+
})(WSTopicType || (WSTopicType = {}));
|
|
10
|
+
export var WSUnsubscribeType;
|
|
11
|
+
(function (WSUnsubscribeType) {
|
|
12
|
+
WSUnsubscribeType["subscribeTokenTrades"] = "unsubscribeTokenTrades";
|
|
13
|
+
WSUnsubscribeType["subscribeNewPoolCreated"] = "unsubscribeNewPoolCreated";
|
|
14
|
+
WSUnsubscribeType["subscribePoolReverse"] = "unsubscribePoolReverse";
|
|
15
|
+
WSUnsubscribeType["subscribeKline"] = "unsubscribeKline";
|
|
16
|
+
WSUnsubscribeType["subscribeGroupBsTrades"] = "unsubscribeGroupBsTrades";
|
|
17
|
+
})(WSUnsubscribeType || (WSUnsubscribeType = {}));
|
|
18
|
+
//# sourceMappingURL=websocket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/types/websocket.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,wDAAyC,CAAA;IACzC,2DAA4C,CAAA;IAC5C,oDAAqC,CAAA;IACrC,uCAAwB,CAAA;IACxB,wDAAyC,CAAA;AAC3C,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;AAED,MAAM,CAAN,IAAY,iBAMX;AAND,WAAY,iBAAiB;IAC3B,oEAA+C,CAAA;IAC/C,0EAAqD,CAAA;IACrD,oEAA+C,CAAA;IAC/C,wDAAmC,CAAA;IACnC,wEAAmD,CAAA;AACrD,CAAC,EANW,iBAAiB,KAAjB,iBAAiB,QAM5B"}
|