@clonegod/ttd-sui-common 1.0.68 → 1.0.70
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/dist/grpc/grpc-connection.js +15 -6
- package/dist/test/test_grpc.js +12 -2
- package/dist/trade/parse/sui_tx_parser.js +0 -13
- package/dist/trade/test/test_parse_sui_tx_result.js +24 -24
- package/package.json +1 -1
- package/dist/rpc/account-api.d.ts +0 -14
- package/dist/rpc/account-api.js +0 -113
- package/dist/rpc/coin-api.d.ts +0 -0
- package/dist/rpc/coin-api.js +0 -0
- package/dist/rpc/rpc-connection.d.ts +0 -8
- package/dist/rpc/rpc-connection.js +0 -54
- package/dist/test/test_checkpoint_processor.d.ts +0 -1
- package/dist/test/test_checkpoint_processor.js +0 -112
- package/dist/test/test_checkpoint_subscription.d.ts +0 -1
- package/dist/test/test_checkpoint_subscription.js +0 -132
- package/dist/test/test_checkpoint_with_schema.d.ts +0 -1
- package/dist/test/test_checkpoint_with_schema.js +0 -250
- package/dist/test/test_dynamic_bcs.d.ts +0 -1
- package/dist/test/test_dynamic_bcs.js +0 -82
- package/dist/test/test_github_extractor.d.ts +0 -1
- package/dist/test/test_github_extractor.js +0 -69
- package/dist/test/test_hybrid_bcs.d.ts +0 -1
- package/dist/test/test_hybrid_bcs.js +0 -98
- package/dist/test/test_momentum_events.d.ts +0 -1
- package/dist/test/test_momentum_events.js +0 -113
- package/dist/test/test_rpc.d.ts +0 -1
- package/dist/test/test_rpc.js +0 -34
- package/dist/test/test_schema_database.d.ts +0 -1
- package/dist/test/test_schema_database.js +0 -91
- package/dist/test/test_simple_schema.d.ts +0 -1
- package/dist/test/test_simple_schema.js +0 -78
- package/dist/test/test_single_momentum_event.d.ts +0 -1
- package/dist/test/test_single_momentum_event.js +0 -44
- package/dist/ttd-sui-common/src/constants/index.d.ts +0 -4
- package/dist/ttd-sui-common/src/constants/index.js +0 -8
- package/dist/ttd-sui-common/src/grpc/gas-price-cache.d.ts +0 -21
- package/dist/ttd-sui-common/src/grpc/gas-price-cache.js +0 -83
- package/dist/ttd-sui-common/src/grpc/grpc-connection.d.ts +0 -13
- package/dist/ttd-sui-common/src/grpc/grpc-connection.js +0 -99
- package/dist/ttd-sui-common/src/grpc/index.d.ts +0 -7
- package/dist/ttd-sui-common/src/grpc/index.js +0 -17
- package/dist/ttd-sui-common/src/grpc/ledger-service.d.ts +0 -12
- package/dist/ttd-sui-common/src/grpc/ledger-service.js +0 -161
- package/dist/ttd-sui-common/src/grpc/live-data-service.d.ts +0 -10
- package/dist/ttd-sui-common/src/grpc/live-data-service.js +0 -107
- package/dist/ttd-sui-common/src/grpc/subscription-service.d.ts +0 -7
- package/dist/ttd-sui-common/src/grpc/subscription-service.js +0 -69
- package/dist/ttd-sui-common/src/grpc/sui-grpc-client.d.ts +0 -16
- package/dist/ttd-sui-common/src/grpc/sui-grpc-client.js +0 -38
- package/dist/ttd-sui-common/src/grpc/transaction-service.d.ts +0 -7
- package/dist/ttd-sui-common/src/grpc/transaction-service.js +0 -49
- package/dist/ttd-sui-common/src/index.d.ts +0 -9
- package/dist/ttd-sui-common/src/index.js +0 -25
- package/dist/ttd-sui-common/src/quote/index.d.ts +0 -1
- package/dist/ttd-sui-common/src/quote/index.js +0 -17
- package/dist/ttd-sui-common/src/quote/pricing/index.d.ts +0 -1
- package/dist/ttd-sui-common/src/quote/pricing/index.js +0 -17
- package/dist/ttd-sui-common/src/quote/pricing/token_price_cache.d.ts +0 -9
- package/dist/ttd-sui-common/src/quote/pricing/token_price_cache.js +0 -42
- package/dist/ttd-sui-common/src/redis/index.d.ts +0 -1
- package/dist/ttd-sui-common/src/redis/index.js +0 -17
- package/dist/ttd-sui-common/src/redis/redis_client.d.ts +0 -21
- package/dist/ttd-sui-common/src/redis/redis_client.js +0 -155
- package/dist/ttd-sui-common/src/test/test.d.ts +0 -1
- package/dist/ttd-sui-common/src/test/test.js +0 -126
- package/dist/ttd-sui-common/src/test/test_checkpoint.d.ts +0 -1
- package/dist/ttd-sui-common/src/test/test_checkpoint.js +0 -64
- package/dist/ttd-sui-common/src/test/test_grpc.d.ts +0 -1
- package/dist/ttd-sui-common/src/test/test_grpc.js +0 -84
- package/dist/ttd-sui-common/src/trade/abstract_sui_dex_trade_plus.d.ts +0 -32
- package/dist/ttd-sui-common/src/trade/abstract_sui_dex_trade_plus.js +0 -216
- package/dist/ttd-sui-common/src/trade/check/index.d.ts +0 -1
- package/dist/ttd-sui-common/src/trade/check/index.js +0 -5
- package/dist/ttd-sui-common/src/trade/check/tx_result_checker.d.ts +0 -13
- package/dist/ttd-sui-common/src/trade/check/tx_result_checker.js +0 -111
- package/dist/ttd-sui-common/src/trade/index.d.ts +0 -4
- package/dist/ttd-sui-common/src/trade/index.js +0 -20
- package/dist/ttd-sui-common/src/trade/parse/index.d.ts +0 -1
- package/dist/ttd-sui-common/src/trade/parse/index.js +0 -5
- package/dist/ttd-sui-common/src/trade/parse/sui_tx_parser.d.ts +0 -13
- package/dist/ttd-sui-common/src/trade/parse/sui_tx_parser.js +0 -167
- package/dist/ttd-sui-common/src/trade/send_tx/index.d.ts +0 -10
- package/dist/ttd-sui-common/src/trade/send_tx/index.js +0 -48
- package/dist/ttd-sui-common/src/trade/test/test_parse_sui_tx_result.d.ts +0 -1
- package/dist/ttd-sui-common/src/trade/test/test_parse_sui_tx_result.js +0 -105
- package/dist/ttd-sui-common/src/type/index.d.ts +0 -18
- package/dist/ttd-sui-common/src/type/index.js +0 -2
- package/dist/ttd-sui-common/src/utils/checkpoint_parse.d.ts +0 -0
- package/dist/ttd-sui-common/src/utils/checkpoint_parse.js +0 -0
- package/dist/ttd-sui-common/src/utils/decode.d.ts +0 -2
- package/dist/ttd-sui-common/src/utils/decode.js +0 -43
- package/dist/ttd-sui-common/src/utils/format.d.ts +0 -1
- package/dist/ttd-sui-common/src/utils/format.js +0 -18
- package/dist/ttd-sui-common/src/utils/index.d.ts +0 -2
- package/dist/ttd-sui-common/src/utils/index.js +0 -18
- package/dist/ttd-sui-market-data/src/sui_objects/config_manager.d.ts +0 -22
- package/dist/ttd-sui-market-data/src/sui_objects/config_manager.js +0 -169
- package/dist/ttd-sui-market-data/src/sui_objects/example.d.ts +0 -1
- package/dist/ttd-sui-market-data/src/sui_objects/example.js +0 -72
- package/dist/ttd-sui-market-data/src/sui_objects/index.d.ts +0 -6
- package/dist/ttd-sui-market-data/src/sui_objects/index.js +0 -15
- package/dist/ttd-sui-market-data/src/sui_objects/object_mgt.d.ts +0 -47
- package/dist/ttd-sui-market-data/src/sui_objects/object_mgt.js +0 -483
- package/dist/ttd-sui-market-data/src/sui_objects/types.d.ts +0 -60
- package/dist/ttd-sui-market-data/src/sui_objects/types.js +0 -24
- package/dist/ttd-sui-market-data/src/sui_objects/version_checker.d.ts +0 -30
- package/dist/ttd-sui-market-data/src/sui_objects/version_checker.js +0 -207
- package/dist/utils/bcs-parser.d.ts +0 -8
- package/dist/utils/bcs-parser.js +0 -121
- package/dist/utils/checkpoint-processor.d.ts +0 -7
- package/dist/utils/checkpoint-processor.js +0 -123
- package/dist/utils/checkpoint.d.ts +0 -7
- package/dist/utils/checkpoint.js +0 -26
- package/dist/utils/dex-parser-manager.d.ts +0 -7
- package/dist/utils/dex-parser-manager.js +0 -138
- package/dist/utils/dex_event_parser.d.ts +0 -34
- package/dist/utils/dex_event_parser.js +0 -132
- package/dist/utils/dex_schema_database.d.ts +0 -206
- package/dist/utils/dex_schema_database.js +0 -169
- package/dist/utils/dynamic_bcs_parser.d.ts +0 -21
- package/dist/utils/dynamic_bcs_parser.js +0 -166
- package/dist/utils/github_schema_extractor.d.ts +0 -20
- package/dist/utils/github_schema_extractor.js +0 -153
- package/dist/utils/hybrid_bcs_parser.d.ts +0 -22
- package/dist/utils/hybrid_bcs_parser.js +0 -194
- package/dist/utils/simple_schema_parser.d.ts +0 -76
- package/dist/utils/simple_schema_parser.js +0 -193
|
@@ -1,250 +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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
-
require('dotenv').config();
|
|
46
|
-
const dex_schema_database_1 = require("../utils/dex_schema_database");
|
|
47
|
-
const bcs_1 = require("@mysten/sui/bcs");
|
|
48
|
-
const fs = __importStar(require("fs"));
|
|
49
|
-
const path = __importStar(require("path"));
|
|
50
|
-
const db = new dex_schema_database_1.DexSchemaDatabase();
|
|
51
|
-
const parseBCSWithSchema = (schema, bcsHex) => {
|
|
52
|
-
try {
|
|
53
|
-
const bcsFields = {};
|
|
54
|
-
for (const [fieldName, fieldType] of Object.entries(schema)) {
|
|
55
|
-
switch (fieldType) {
|
|
56
|
-
case 'u8':
|
|
57
|
-
bcsFields[fieldName] = bcs_1.bcs.u8();
|
|
58
|
-
break;
|
|
59
|
-
case 'u16':
|
|
60
|
-
bcsFields[fieldName] = bcs_1.bcs.u16();
|
|
61
|
-
break;
|
|
62
|
-
case 'u32':
|
|
63
|
-
bcsFields[fieldName] = bcs_1.bcs.u32();
|
|
64
|
-
break;
|
|
65
|
-
case 'u64':
|
|
66
|
-
bcsFields[fieldName] = bcs_1.bcs.u64();
|
|
67
|
-
break;
|
|
68
|
-
case 'u128':
|
|
69
|
-
bcsFields[fieldName] = bcs_1.bcs.u128();
|
|
70
|
-
break;
|
|
71
|
-
case 'u256':
|
|
72
|
-
bcsFields[fieldName] = bcs_1.bcs.u256();
|
|
73
|
-
break;
|
|
74
|
-
case 'bool':
|
|
75
|
-
bcsFields[fieldName] = bcs_1.bcs.bool();
|
|
76
|
-
break;
|
|
77
|
-
case 'address':
|
|
78
|
-
bcsFields[fieldName] = bcs_1.bcs.Address;
|
|
79
|
-
break;
|
|
80
|
-
case 'string':
|
|
81
|
-
bcsFields[fieldName] = bcs_1.bcs.string();
|
|
82
|
-
break;
|
|
83
|
-
case 'vector<u8>':
|
|
84
|
-
bcsFields[fieldName] = bcs_1.bcs.vector(bcs_1.bcs.u8());
|
|
85
|
-
break;
|
|
86
|
-
case 'vector<u64>':
|
|
87
|
-
bcsFields[fieldName] = bcs_1.bcs.vector(bcs_1.bcs.u64());
|
|
88
|
-
break;
|
|
89
|
-
default:
|
|
90
|
-
console.warn(`未知类型: ${fieldType},使用 u64 作为默认值`);
|
|
91
|
-
bcsFields[fieldName] = bcs_1.bcs.u64();
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
const structType = bcs_1.bcs.struct('DynamicEvent', bcsFields);
|
|
95
|
-
const bcsBytes = Buffer.from(bcsHex, 'hex');
|
|
96
|
-
const decoded = structType.parse(bcsBytes);
|
|
97
|
-
return decoded;
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
console.error('BCS 解析失败:', error);
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
const parseEvent = (event) => {
|
|
105
|
-
try {
|
|
106
|
-
const parts = event.type.split('::');
|
|
107
|
-
const packageId = parts[0];
|
|
108
|
-
const eventName = parts[parts.length - 1];
|
|
109
|
-
console.log(`\n解析事件: ${event.type}`);
|
|
110
|
-
console.log(`包ID: ${packageId}`);
|
|
111
|
-
console.log(`事件名: ${eventName}`);
|
|
112
|
-
if (!db.isSupported(packageId)) {
|
|
113
|
-
console.log(`❌ 不支持的 DEX: ${packageId}`);
|
|
114
|
-
return null;
|
|
115
|
-
}
|
|
116
|
-
const dexInfo = db.getDexInfo(packageId);
|
|
117
|
-
console.log(`✅ 找到 DEX: ${dexInfo.name}`);
|
|
118
|
-
const schema = db.getEventSchema(packageId, eventName);
|
|
119
|
-
if (!schema) {
|
|
120
|
-
console.log(`❌ 未找到事件 schema: ${eventName}`);
|
|
121
|
-
return null;
|
|
122
|
-
}
|
|
123
|
-
console.log(`✅ 找到 schema:`, schema);
|
|
124
|
-
if (event.bcs && event.bcs.value) {
|
|
125
|
-
const decoded = parseBCSWithSchema(schema, event.bcs.value);
|
|
126
|
-
if (decoded) {
|
|
127
|
-
console.log(`✅ 解析成功:`, decoded);
|
|
128
|
-
return {
|
|
129
|
-
dex: dexInfo.name,
|
|
130
|
-
eventName,
|
|
131
|
-
packageId,
|
|
132
|
-
schema,
|
|
133
|
-
decoded
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
console.log(`❌ BCS 解析失败`);
|
|
138
|
-
return null;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
console.log(`❌ 没有 BCS 数据`);
|
|
143
|
-
return null;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
catch (error) {
|
|
147
|
-
console.error('解析事件失败:', error);
|
|
148
|
-
return null;
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
const parseCheckpointEvents = (checkpointData) => {
|
|
152
|
-
console.log('=== 开始解析 Checkpoint 事件 ===');
|
|
153
|
-
const results = [];
|
|
154
|
-
let totalEvents = 0;
|
|
155
|
-
let parsedEvents = 0;
|
|
156
|
-
if (checkpointData.transactions && Array.isArray(checkpointData.transactions)) {
|
|
157
|
-
for (const tx of checkpointData.transactions) {
|
|
158
|
-
console.log(`\n处理交易: ${tx.digest}`);
|
|
159
|
-
if (tx.events && Array.isArray(tx.events)) {
|
|
160
|
-
for (const event of tx.events) {
|
|
161
|
-
totalEvents++;
|
|
162
|
-
const result = parseEvent(event);
|
|
163
|
-
if (result) {
|
|
164
|
-
results.push(result);
|
|
165
|
-
parsedEvents++;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
console.log(`\n=== 解析完成 ===`);
|
|
172
|
-
console.log(`总事件数: ${totalEvents}`);
|
|
173
|
-
console.log(`成功解析: ${parsedEvents}`);
|
|
174
|
-
console.log(`解析成功率: ${((parsedEvents / totalEvents) * 100).toFixed(2)}%`);
|
|
175
|
-
return results;
|
|
176
|
-
};
|
|
177
|
-
const analyzeResults = (results) => {
|
|
178
|
-
console.log('\n=== 解析结果分析 ===');
|
|
179
|
-
const dexStats = {};
|
|
180
|
-
const eventStats = {};
|
|
181
|
-
for (const result of results) {
|
|
182
|
-
dexStats[result.dex] = (dexStats[result.dex] || 0) + 1;
|
|
183
|
-
const eventKey = `${result.dex}::${result.eventName}`;
|
|
184
|
-
eventStats[eventKey] = (eventStats[eventKey] || 0) + 1;
|
|
185
|
-
}
|
|
186
|
-
console.log('\n按 DEX 统计:');
|
|
187
|
-
for (const [dex, count] of Object.entries(dexStats)) {
|
|
188
|
-
console.log(` ${dex}: ${count} 个事件`);
|
|
189
|
-
}
|
|
190
|
-
console.log('\n按事件类型统计:');
|
|
191
|
-
for (const [eventKey, count] of Object.entries(eventStats)) {
|
|
192
|
-
console.log(` ${eventKey}: ${count} 个事件`);
|
|
193
|
-
}
|
|
194
|
-
if (results.length > 0) {
|
|
195
|
-
console.log('\n解析数据示例:');
|
|
196
|
-
const sample = results[0];
|
|
197
|
-
console.log(`DEX: ${sample.dex}`);
|
|
198
|
-
console.log(`事件: ${sample.eventName}`);
|
|
199
|
-
console.log(`解析数据:`, sample.decoded);
|
|
200
|
-
}
|
|
201
|
-
};
|
|
202
|
-
const testSpecificEvents = () => {
|
|
203
|
-
console.log('\n=== 测试特定事件类型 ===');
|
|
204
|
-
const momentumSwapEvent = {
|
|
205
|
-
type: '0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860::pool::SwapEvent',
|
|
206
|
-
bcs: {
|
|
207
|
-
value: '00096703000000000000d9690d000000000000af9374ff98010000202a10443fdf509da5b8a6f8d7b4a58f46a8b3827e11c18cc9ec98a8524bab5daa010020430948c6b6336d3c3fef5a9b710799b0afae62c780592c5a38a99b6e19ce17b30000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000'
|
|
208
|
-
}
|
|
209
|
-
};
|
|
210
|
-
console.log('\n测试 Momentum SwapEvent:');
|
|
211
|
-
const result1 = parseEvent(momentumSwapEvent);
|
|
212
|
-
const cetusSwapEvent = {
|
|
213
|
-
type: '0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb::pool::SwapEvent',
|
|
214
|
-
bcs: {
|
|
215
|
-
value: '00096703000000000000d9690d000000000000af9374ff98010000202a10443fdf509da5b8a6f8d7b4a58f46a8b3827e11c18cc9ec98a8524bab5daa010020430948c6b6336d3c3fef5a9b710799b0afae62c780592c5a38a99b6e19ce17b30000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000'
|
|
216
|
-
}
|
|
217
|
-
};
|
|
218
|
-
console.log('\n测试 Cetus SwapEvent:');
|
|
219
|
-
const result2 = parseEvent(cetusSwapEvent);
|
|
220
|
-
return [result1, result2].filter(Boolean);
|
|
221
|
-
};
|
|
222
|
-
const main = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
223
|
-
try {
|
|
224
|
-
console.log('=== Schema 数据库 Checkpoint 解析测试 ===');
|
|
225
|
-
const specificResults = testSpecificEvents();
|
|
226
|
-
const checkpointPath = path.join(__dirname, '../../dist/checkpoint_184791115.json');
|
|
227
|
-
if (fs.existsSync(checkpointPath)) {
|
|
228
|
-
console.log('\n=== 解析实际 Checkpoint 文件 ===');
|
|
229
|
-
const checkpointData = JSON.parse(fs.readFileSync(checkpointPath, 'utf8'));
|
|
230
|
-
const results = parseCheckpointEvents(checkpointData);
|
|
231
|
-
analyzeResults(results);
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
console.log('\n❌ 未找到 checkpoint 文件,跳过实际文件解析');
|
|
235
|
-
}
|
|
236
|
-
console.log('\n=== 数据库状态 ===');
|
|
237
|
-
const supportedPackages = db.getSupportedPackages();
|
|
238
|
-
console.log(`支持的包数量: ${supportedPackages.length}`);
|
|
239
|
-
console.log('支持的包:', supportedPackages);
|
|
240
|
-
const allDexInfo = db.getAllDexInfo();
|
|
241
|
-
console.log('\n所有 DEX 信息:');
|
|
242
|
-
for (const [packageId, dexInfo] of Object.entries(allDexInfo)) {
|
|
243
|
-
console.log(` ${dexInfo.name}: ${Object.keys(dexInfo.events).length} 个事件类型`);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
catch (error) {
|
|
247
|
-
console.error('测试失败:', error);
|
|
248
|
-
}
|
|
249
|
-
});
|
|
250
|
-
main();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,82 +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
|
-
require('dotenv').config();
|
|
13
|
-
const client_1 = require("@mysten/sui/client");
|
|
14
|
-
const dynamic_bcs_parser_1 = require("../utils/dynamic_bcs_parser");
|
|
15
|
-
const suiClient = new client_1.SuiClient({
|
|
16
|
-
url: 'https://fullnode.mainnet.sui.io'
|
|
17
|
-
});
|
|
18
|
-
const parser = new dynamic_bcs_parser_1.DynamicBCSParser(suiClient);
|
|
19
|
-
const testDynamicBCSParsing = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
-
console.log('=== 测试动态BCS解析 ===');
|
|
21
|
-
const testPackages = [
|
|
22
|
-
'0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860',
|
|
23
|
-
'0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb',
|
|
24
|
-
];
|
|
25
|
-
for (const packageId of testPackages) {
|
|
26
|
-
console.log(`\n测试包: ${packageId}`);
|
|
27
|
-
try {
|
|
28
|
-
const packageInfo = yield suiClient.getObject({
|
|
29
|
-
id: packageId,
|
|
30
|
-
options: {
|
|
31
|
-
showContent: true,
|
|
32
|
-
showType: true
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
console.log('包信息结构:', JSON.stringify(packageInfo.data, null, 2));
|
|
36
|
-
const schemas = yield parser['getSchemas'](packageId);
|
|
37
|
-
console.log(`获取到 ${Object.keys(schemas).length} 个schema:`);
|
|
38
|
-
Object.keys(schemas).forEach(schemaName => {
|
|
39
|
-
console.log(` - ${schemaName}:`, schemas[schemaName]);
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
catch (error) {
|
|
43
|
-
console.error(`获取包 ${packageId} 的schema失败:`, error);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
const testEventParsing = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
48
|
-
console.log('\n=== 测试事件解析 ===');
|
|
49
|
-
const mockEvent = {
|
|
50
|
-
type: '0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860::pool::SwapEvent',
|
|
51
|
-
bcs: {
|
|
52
|
-
value: '00096703000000000000d9690d000000000000af9374ff98010000202a10443fdf509da5b8a6f8d7b4a58f46a8b3827e11c18cc9ec98a8524bab5daa010020430948c6b6336d3c3fef5a9b710799b0afae62c780592c5a38a99b6e19ce17b30000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000'
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
try {
|
|
56
|
-
const parsed = yield parser.parseEvent(mockEvent);
|
|
57
|
-
console.log('解析结果:', parsed);
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
console.error('事件解析失败:', error);
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
const testCacheFunctionality = () => {
|
|
64
|
-
console.log('\n=== 测试缓存功能 ===');
|
|
65
|
-
const stats = parser.getCacheStats();
|
|
66
|
-
console.log('缓存统计:', stats);
|
|
67
|
-
parser.clearCache();
|
|
68
|
-
console.log('缓存已清除');
|
|
69
|
-
const newStats = parser.getCacheStats();
|
|
70
|
-
console.log('清除后统计:', newStats);
|
|
71
|
-
};
|
|
72
|
-
const main = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
73
|
-
try {
|
|
74
|
-
yield testDynamicBCSParsing();
|
|
75
|
-
yield testEventParsing();
|
|
76
|
-
testCacheFunctionality();
|
|
77
|
-
}
|
|
78
|
-
catch (error) {
|
|
79
|
-
console.error('测试失败:', error);
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
main();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,69 +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
|
-
require('dotenv').config();
|
|
13
|
-
const github_schema_extractor_1 = require("../utils/github_schema_extractor");
|
|
14
|
-
const testGitHubExtraction = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
15
|
-
console.log('=== 测试 GitHub Schema 提取 ===');
|
|
16
|
-
const extractor = new github_schema_extractor_1.GitHubSchemaExtractor();
|
|
17
|
-
console.log('\n1. 测试单个文件提取...');
|
|
18
|
-
try {
|
|
19
|
-
const events = yield extractor.extractFromGitHub('mmt-finance', 'clmm-sdk', 'contracts/sources/pool.move');
|
|
20
|
-
console.log('Momentum pool.move 事件:', events);
|
|
21
|
-
}
|
|
22
|
-
catch (error) {
|
|
23
|
-
console.log('单个文件提取失败:', error.message);
|
|
24
|
-
}
|
|
25
|
-
console.log('\n2. 测试所有 DEX 提取...');
|
|
26
|
-
try {
|
|
27
|
-
const allSchemas = yield extractor.extractAllDEXSchemas();
|
|
28
|
-
console.log('所有 DEX schema:', JSON.stringify(allSchemas, null, 2));
|
|
29
|
-
const tsCode = extractor.generateTypeScriptCode(allSchemas);
|
|
30
|
-
console.log('\n生成的 TypeScript 代码:');
|
|
31
|
-
console.log(tsCode);
|
|
32
|
-
}
|
|
33
|
-
catch (error) {
|
|
34
|
-
console.log('所有 DEX 提取失败:', error.message);
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
const testManualParsing = () => {
|
|
38
|
-
console.log('\n=== 测试手动解析 Move 代码 ===');
|
|
39
|
-
const extractor = new github_schema_extractor_1.GitHubSchemaExtractor();
|
|
40
|
-
const sampleMoveCode = `
|
|
41
|
-
struct SwapEvent has drop, store {
|
|
42
|
-
pool_id: address,
|
|
43
|
-
token_in: address,
|
|
44
|
-
token_out: address,
|
|
45
|
-
amount_in: u64,
|
|
46
|
-
amount_out: u64,
|
|
47
|
-
fee: u64
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
struct AddLiquidityEvent has drop, store {
|
|
51
|
-
pool_id: address,
|
|
52
|
-
liquidity: u128,
|
|
53
|
-
amount_a: u64,
|
|
54
|
-
amount_b: u64
|
|
55
|
-
}
|
|
56
|
-
`;
|
|
57
|
-
const events = extractor.parseMoveFile(sampleMoveCode);
|
|
58
|
-
console.log('解析结果:', events);
|
|
59
|
-
};
|
|
60
|
-
const main = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
61
|
-
try {
|
|
62
|
-
yield testGitHubExtraction();
|
|
63
|
-
testManualParsing();
|
|
64
|
-
}
|
|
65
|
-
catch (error) {
|
|
66
|
-
console.error('测试失败:', error);
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
main();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,98 +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
|
-
require('dotenv').config();
|
|
13
|
-
const client_1 = require("@mysten/sui/client");
|
|
14
|
-
const hybrid_bcs_parser_1 = require("../utils/hybrid_bcs_parser");
|
|
15
|
-
const suiClient = new client_1.SuiClient({
|
|
16
|
-
url: 'https://fullnode.mainnet.sui.io'
|
|
17
|
-
});
|
|
18
|
-
const parser = new hybrid_bcs_parser_1.HybridBCSParser(suiClient);
|
|
19
|
-
const testHybridBCSParsing = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
20
|
-
console.log('=== 测试混合BCS解析 ===');
|
|
21
|
-
const testEvents = [
|
|
22
|
-
{
|
|
23
|
-
name: 'Momentum SwapEvent',
|
|
24
|
-
event: {
|
|
25
|
-
type: '0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860::pool::SwapEvent',
|
|
26
|
-
bcs: {
|
|
27
|
-
value: '00096703000000000000d9690d000000000000af9374ff98010000202a10443fdf509da5b8a6f8d7b4a58f46a8b3827e11c18cc9ec98a8524bab5daa010020430948c6b6336d3c3fef5a9b710799b0afae62c780592c5a38a99b6e19ce17b30000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000'
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
name: 'Cetus SwapEvent',
|
|
33
|
-
event: {
|
|
34
|
-
type: '0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb::pool::SwapEvent',
|
|
35
|
-
bcs: {
|
|
36
|
-
value: '00096703000000000000d9690d000000000000af9374ff98010000202a10443fdf509da5b8a6f8d7b4a58f46a8b3827e11c18cc9ec98a8524bab5daa010020430948c6b6336d3c3fef5a9b710799b0afae62c780592c5a38a99b6e19ce17b30000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000'
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
name: 'Momentum RepayFlashSwapEvent',
|
|
42
|
-
event: {
|
|
43
|
-
type: '0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860::pool::RepayFlashSwapEvent',
|
|
44
|
-
bcs: {
|
|
45
|
-
value: '00096703000000000000d9690d000000000000af9374ff98010000202a10443fdf509da5b8a6f8d7b4a58f46a8b3827e11c18cc9ec98a8524bab5daa010020430948c6b6336d3c3fef5a9b710799b0afae62c780592c5a38a99b6e19ce17b30000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000'
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: 'Unknown Event',
|
|
51
|
-
event: {
|
|
52
|
-
type: '0xunknown::module::UnknownEvent',
|
|
53
|
-
bcs: {
|
|
54
|
-
value: '00096703000000000000d9690d000000000000af9374ff98010000202a10443fdf509da5b8a6f8d7b4a58f46a8b3827e11c18cc9ec98a8524bab5daa010020430948c6b6336d3c3fef5a9b710799b0afae62c780592c5a38a99b6e19ce17b30000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000'
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
];
|
|
59
|
-
for (const testCase of testEvents) {
|
|
60
|
-
console.log(`\n测试: ${testCase.name}`);
|
|
61
|
-
try {
|
|
62
|
-
const result = yield parser.parseEvent(testCase.event);
|
|
63
|
-
console.log('解析结果:', JSON.stringify(result, null, 2));
|
|
64
|
-
}
|
|
65
|
-
catch (error) {
|
|
66
|
-
console.error('解析失败:', error);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
const testAddSchema = () => {
|
|
71
|
-
console.log('\n=== 测试添加新schema ===');
|
|
72
|
-
parser.addSchema('0xnewpackage', 'NewSwapEvent', {
|
|
73
|
-
pool_id: 'address',
|
|
74
|
-
amount: 'u64'
|
|
75
|
-
});
|
|
76
|
-
const stats = parser.getCacheStats();
|
|
77
|
-
console.log('解析器统计:', stats);
|
|
78
|
-
};
|
|
79
|
-
const testCacheFunctionality = () => {
|
|
80
|
-
console.log('\n=== 测试缓存功能 ===');
|
|
81
|
-
const stats = parser.getCacheStats();
|
|
82
|
-
console.log('缓存统计:', stats);
|
|
83
|
-
parser.clearCache();
|
|
84
|
-
console.log('缓存已清除');
|
|
85
|
-
const newStats = parser.getCacheStats();
|
|
86
|
-
console.log('清除后统计:', newStats);
|
|
87
|
-
};
|
|
88
|
-
const main = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
89
|
-
try {
|
|
90
|
-
yield testHybridBCSParsing();
|
|
91
|
-
testAddSchema();
|
|
92
|
-
testCacheFunctionality();
|
|
93
|
-
}
|
|
94
|
-
catch (error) {
|
|
95
|
-
console.error('测试失败:', error);
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
main();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,113 +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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
-
const bcs_parser_1 = require("../utils/bcs-parser");
|
|
46
|
-
const fs = __importStar(require("fs"));
|
|
47
|
-
const path = __importStar(require("path"));
|
|
48
|
-
function testMomentumEvents() {
|
|
49
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
-
var _a;
|
|
51
|
-
console.log('=== 测试解析所有 Momentum CLMM 事件 ===');
|
|
52
|
-
const distDir = path.join(__dirname, '../../dist');
|
|
53
|
-
const files = fs.readdirSync(distDir)
|
|
54
|
-
.filter(file => file.startsWith('parsed_swap_transactions_'))
|
|
55
|
-
.sort()
|
|
56
|
-
.reverse();
|
|
57
|
-
if (files.length === 0) {
|
|
58
|
-
console.log('没有找到解析结果文件');
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
const latestFile = files[0];
|
|
62
|
-
console.log('使用文件:', latestFile);
|
|
63
|
-
const filePath = path.join(distDir, latestFile);
|
|
64
|
-
const data = JSON.parse(fs.readFileSync(filePath, 'utf8'));
|
|
65
|
-
let momentumEventCount = 0;
|
|
66
|
-
let successCount = 0;
|
|
67
|
-
for (const transaction of data) {
|
|
68
|
-
for (const event of transaction.swapEvents) {
|
|
69
|
-
if ((_a = event.eventType) === null || _a === void 0 ? void 0 : _a.includes('0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860')) {
|
|
70
|
-
momentumEventCount++;
|
|
71
|
-
console.log(`\n--- Momentum 事件 ${momentumEventCount} ---`);
|
|
72
|
-
console.log('事件类型:', event.eventType);
|
|
73
|
-
console.log('发送者:', event.sender);
|
|
74
|
-
console.log('包ID:', event.packageId);
|
|
75
|
-
if (event.contents) {
|
|
76
|
-
const result = bcs_parser_1.BcsParser.parseEventWithDecodeBytes(event.contents);
|
|
77
|
-
if (result && result.parsedData) {
|
|
78
|
-
successCount++;
|
|
79
|
-
console.log('✅ 解析成功');
|
|
80
|
-
console.log('- DEX:', result.dex);
|
|
81
|
-
if (result.parsedData.pool_id) {
|
|
82
|
-
console.log('- 池子ID:', result.parsedData.pool_id);
|
|
83
|
-
}
|
|
84
|
-
if (result.parsedData.amount_x && result.parsedData.amount_y) {
|
|
85
|
-
console.log('- 交易数量:', `${result.parsedData.amount_x} X → ${result.parsedData.amount_y} Y`);
|
|
86
|
-
}
|
|
87
|
-
if (result.parsedData.sqrt_price_after) {
|
|
88
|
-
console.log('- 交易后价格:', result.parsedData.sqrt_price_after);
|
|
89
|
-
}
|
|
90
|
-
if (result.calculatedPrice) {
|
|
91
|
-
console.log('- 计算价格:', result.calculatedPrice);
|
|
92
|
-
}
|
|
93
|
-
if (result.parsedData.fee_amount) {
|
|
94
|
-
console.log('- 手续费:', result.parsedData.fee_amount);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
console.log('❌ 解析失败');
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
console.log('❌ 没有事件内容数据');
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
console.log(`\n=== 解析统计 ===`);
|
|
108
|
-
console.log(`总 Momentum 事件数: ${momentumEventCount}`);
|
|
109
|
-
console.log(`成功解析数: ${successCount}`);
|
|
110
|
-
console.log(`成功率: ${momentumEventCount > 0 ? (successCount / momentumEventCount * 100).toFixed(2) : 0}%`);
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
testMomentumEvents().catch(console.error);
|
package/dist/test/test_rpc.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/test/test_rpc.js
DELETED
|
@@ -1,34 +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
|
-
const dist_1 = require("@clonegod/ttd-core/dist");
|
|
13
|
-
const rpc_connection_1 = require("../rpc/rpc-connection");
|
|
14
|
-
const account_api_1 = require("../rpc/account-api");
|
|
15
|
-
const main = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
-
const wallet_address = '0x6367c8755b8c39cab7305bfa75cb17d050508d2e55f6862a7682377ad6d46ee7';
|
|
17
|
-
const sui_coin_type = '0x2::sui::SUI';
|
|
18
|
-
const usdc_coin_type = '0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC';
|
|
19
|
-
const connection = rpc_connection_1.RpcConnection.getInstance();
|
|
20
|
-
const accountApi = new account_api_1.AccountApi(connection);
|
|
21
|
-
const sui_coin_metadata = yield accountApi.getCoinMetadata(sui_coin_type);
|
|
22
|
-
(0, dist_1.log_info)(`sui_coin_metadata`, sui_coin_metadata);
|
|
23
|
-
const usdc_coin_metadata = yield accountApi.getCoinMetadata(usdc_coin_type);
|
|
24
|
-
(0, dist_1.log_info)(`usdc_coin_metadata`, usdc_coin_metadata);
|
|
25
|
-
const sui_balance = yield accountApi.getBalance(wallet_address);
|
|
26
|
-
(0, dist_1.log_info)(`sui_balance`, sui_balance);
|
|
27
|
-
const usdc_balance = yield accountApi.getBalance(wallet_address, usdc_coin_type);
|
|
28
|
-
(0, dist_1.log_info)(`usdc_balance`, usdc_balance);
|
|
29
|
-
const allBalances = yield accountApi.getAllBalances(wallet_address);
|
|
30
|
-
(0, dist_1.log_info)(`allBalances`, allBalances);
|
|
31
|
-
const ownedObjects = yield accountApi.getOwnedObjects(wallet_address);
|
|
32
|
-
(0, dist_1.log_info)(`ownedObjects`, ownedObjects);
|
|
33
|
-
});
|
|
34
|
-
main();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|