@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.
Files changed (127) hide show
  1. package/dist/grpc/grpc-connection.js +15 -6
  2. package/dist/test/test_grpc.js +12 -2
  3. package/dist/trade/parse/sui_tx_parser.js +0 -13
  4. package/dist/trade/test/test_parse_sui_tx_result.js +24 -24
  5. package/package.json +1 -1
  6. package/dist/rpc/account-api.d.ts +0 -14
  7. package/dist/rpc/account-api.js +0 -113
  8. package/dist/rpc/coin-api.d.ts +0 -0
  9. package/dist/rpc/coin-api.js +0 -0
  10. package/dist/rpc/rpc-connection.d.ts +0 -8
  11. package/dist/rpc/rpc-connection.js +0 -54
  12. package/dist/test/test_checkpoint_processor.d.ts +0 -1
  13. package/dist/test/test_checkpoint_processor.js +0 -112
  14. package/dist/test/test_checkpoint_subscription.d.ts +0 -1
  15. package/dist/test/test_checkpoint_subscription.js +0 -132
  16. package/dist/test/test_checkpoint_with_schema.d.ts +0 -1
  17. package/dist/test/test_checkpoint_with_schema.js +0 -250
  18. package/dist/test/test_dynamic_bcs.d.ts +0 -1
  19. package/dist/test/test_dynamic_bcs.js +0 -82
  20. package/dist/test/test_github_extractor.d.ts +0 -1
  21. package/dist/test/test_github_extractor.js +0 -69
  22. package/dist/test/test_hybrid_bcs.d.ts +0 -1
  23. package/dist/test/test_hybrid_bcs.js +0 -98
  24. package/dist/test/test_momentum_events.d.ts +0 -1
  25. package/dist/test/test_momentum_events.js +0 -113
  26. package/dist/test/test_rpc.d.ts +0 -1
  27. package/dist/test/test_rpc.js +0 -34
  28. package/dist/test/test_schema_database.d.ts +0 -1
  29. package/dist/test/test_schema_database.js +0 -91
  30. package/dist/test/test_simple_schema.d.ts +0 -1
  31. package/dist/test/test_simple_schema.js +0 -78
  32. package/dist/test/test_single_momentum_event.d.ts +0 -1
  33. package/dist/test/test_single_momentum_event.js +0 -44
  34. package/dist/ttd-sui-common/src/constants/index.d.ts +0 -4
  35. package/dist/ttd-sui-common/src/constants/index.js +0 -8
  36. package/dist/ttd-sui-common/src/grpc/gas-price-cache.d.ts +0 -21
  37. package/dist/ttd-sui-common/src/grpc/gas-price-cache.js +0 -83
  38. package/dist/ttd-sui-common/src/grpc/grpc-connection.d.ts +0 -13
  39. package/dist/ttd-sui-common/src/grpc/grpc-connection.js +0 -99
  40. package/dist/ttd-sui-common/src/grpc/index.d.ts +0 -7
  41. package/dist/ttd-sui-common/src/grpc/index.js +0 -17
  42. package/dist/ttd-sui-common/src/grpc/ledger-service.d.ts +0 -12
  43. package/dist/ttd-sui-common/src/grpc/ledger-service.js +0 -161
  44. package/dist/ttd-sui-common/src/grpc/live-data-service.d.ts +0 -10
  45. package/dist/ttd-sui-common/src/grpc/live-data-service.js +0 -107
  46. package/dist/ttd-sui-common/src/grpc/subscription-service.d.ts +0 -7
  47. package/dist/ttd-sui-common/src/grpc/subscription-service.js +0 -69
  48. package/dist/ttd-sui-common/src/grpc/sui-grpc-client.d.ts +0 -16
  49. package/dist/ttd-sui-common/src/grpc/sui-grpc-client.js +0 -38
  50. package/dist/ttd-sui-common/src/grpc/transaction-service.d.ts +0 -7
  51. package/dist/ttd-sui-common/src/grpc/transaction-service.js +0 -49
  52. package/dist/ttd-sui-common/src/index.d.ts +0 -9
  53. package/dist/ttd-sui-common/src/index.js +0 -25
  54. package/dist/ttd-sui-common/src/quote/index.d.ts +0 -1
  55. package/dist/ttd-sui-common/src/quote/index.js +0 -17
  56. package/dist/ttd-sui-common/src/quote/pricing/index.d.ts +0 -1
  57. package/dist/ttd-sui-common/src/quote/pricing/index.js +0 -17
  58. package/dist/ttd-sui-common/src/quote/pricing/token_price_cache.d.ts +0 -9
  59. package/dist/ttd-sui-common/src/quote/pricing/token_price_cache.js +0 -42
  60. package/dist/ttd-sui-common/src/redis/index.d.ts +0 -1
  61. package/dist/ttd-sui-common/src/redis/index.js +0 -17
  62. package/dist/ttd-sui-common/src/redis/redis_client.d.ts +0 -21
  63. package/dist/ttd-sui-common/src/redis/redis_client.js +0 -155
  64. package/dist/ttd-sui-common/src/test/test.d.ts +0 -1
  65. package/dist/ttd-sui-common/src/test/test.js +0 -126
  66. package/dist/ttd-sui-common/src/test/test_checkpoint.d.ts +0 -1
  67. package/dist/ttd-sui-common/src/test/test_checkpoint.js +0 -64
  68. package/dist/ttd-sui-common/src/test/test_grpc.d.ts +0 -1
  69. package/dist/ttd-sui-common/src/test/test_grpc.js +0 -84
  70. package/dist/ttd-sui-common/src/trade/abstract_sui_dex_trade_plus.d.ts +0 -32
  71. package/dist/ttd-sui-common/src/trade/abstract_sui_dex_trade_plus.js +0 -216
  72. package/dist/ttd-sui-common/src/trade/check/index.d.ts +0 -1
  73. package/dist/ttd-sui-common/src/trade/check/index.js +0 -5
  74. package/dist/ttd-sui-common/src/trade/check/tx_result_checker.d.ts +0 -13
  75. package/dist/ttd-sui-common/src/trade/check/tx_result_checker.js +0 -111
  76. package/dist/ttd-sui-common/src/trade/index.d.ts +0 -4
  77. package/dist/ttd-sui-common/src/trade/index.js +0 -20
  78. package/dist/ttd-sui-common/src/trade/parse/index.d.ts +0 -1
  79. package/dist/ttd-sui-common/src/trade/parse/index.js +0 -5
  80. package/dist/ttd-sui-common/src/trade/parse/sui_tx_parser.d.ts +0 -13
  81. package/dist/ttd-sui-common/src/trade/parse/sui_tx_parser.js +0 -167
  82. package/dist/ttd-sui-common/src/trade/send_tx/index.d.ts +0 -10
  83. package/dist/ttd-sui-common/src/trade/send_tx/index.js +0 -48
  84. package/dist/ttd-sui-common/src/trade/test/test_parse_sui_tx_result.d.ts +0 -1
  85. package/dist/ttd-sui-common/src/trade/test/test_parse_sui_tx_result.js +0 -105
  86. package/dist/ttd-sui-common/src/type/index.d.ts +0 -18
  87. package/dist/ttd-sui-common/src/type/index.js +0 -2
  88. package/dist/ttd-sui-common/src/utils/checkpoint_parse.d.ts +0 -0
  89. package/dist/ttd-sui-common/src/utils/checkpoint_parse.js +0 -0
  90. package/dist/ttd-sui-common/src/utils/decode.d.ts +0 -2
  91. package/dist/ttd-sui-common/src/utils/decode.js +0 -43
  92. package/dist/ttd-sui-common/src/utils/format.d.ts +0 -1
  93. package/dist/ttd-sui-common/src/utils/format.js +0 -18
  94. package/dist/ttd-sui-common/src/utils/index.d.ts +0 -2
  95. package/dist/ttd-sui-common/src/utils/index.js +0 -18
  96. package/dist/ttd-sui-market-data/src/sui_objects/config_manager.d.ts +0 -22
  97. package/dist/ttd-sui-market-data/src/sui_objects/config_manager.js +0 -169
  98. package/dist/ttd-sui-market-data/src/sui_objects/example.d.ts +0 -1
  99. package/dist/ttd-sui-market-data/src/sui_objects/example.js +0 -72
  100. package/dist/ttd-sui-market-data/src/sui_objects/index.d.ts +0 -6
  101. package/dist/ttd-sui-market-data/src/sui_objects/index.js +0 -15
  102. package/dist/ttd-sui-market-data/src/sui_objects/object_mgt.d.ts +0 -47
  103. package/dist/ttd-sui-market-data/src/sui_objects/object_mgt.js +0 -483
  104. package/dist/ttd-sui-market-data/src/sui_objects/types.d.ts +0 -60
  105. package/dist/ttd-sui-market-data/src/sui_objects/types.js +0 -24
  106. package/dist/ttd-sui-market-data/src/sui_objects/version_checker.d.ts +0 -30
  107. package/dist/ttd-sui-market-data/src/sui_objects/version_checker.js +0 -207
  108. package/dist/utils/bcs-parser.d.ts +0 -8
  109. package/dist/utils/bcs-parser.js +0 -121
  110. package/dist/utils/checkpoint-processor.d.ts +0 -7
  111. package/dist/utils/checkpoint-processor.js +0 -123
  112. package/dist/utils/checkpoint.d.ts +0 -7
  113. package/dist/utils/checkpoint.js +0 -26
  114. package/dist/utils/dex-parser-manager.d.ts +0 -7
  115. package/dist/utils/dex-parser-manager.js +0 -138
  116. package/dist/utils/dex_event_parser.d.ts +0 -34
  117. package/dist/utils/dex_event_parser.js +0 -132
  118. package/dist/utils/dex_schema_database.d.ts +0 -206
  119. package/dist/utils/dex_schema_database.js +0 -169
  120. package/dist/utils/dynamic_bcs_parser.d.ts +0 -21
  121. package/dist/utils/dynamic_bcs_parser.js +0 -166
  122. package/dist/utils/github_schema_extractor.d.ts +0 -20
  123. package/dist/utils/github_schema_extractor.js +0 -153
  124. package/dist/utils/hybrid_bcs_parser.d.ts +0 -22
  125. package/dist/utils/hybrid_bcs_parser.js +0 -194
  126. package/dist/utils/simple_schema_parser.d.ts +0 -76
  127. package/dist/utils/simple_schema_parser.js +0 -193
@@ -1,132 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DexEventParser = void 0;
4
- class DexEventParser {
5
- static parseCheckpointEvents(transactions) {
6
- const dexEvents = [];
7
- transactions.forEach((transaction, txIndex) => {
8
- const events = this.extractEventsFromTransaction(transaction, txIndex);
9
- dexEvents.push(...events);
10
- });
11
- return dexEvents;
12
- }
13
- static extractEventsFromTransaction(transaction, txIndex) {
14
- const events = [];
15
- if (transaction.events && transaction.events.events) {
16
- transaction.events.events.forEach((event, eventIndex) => {
17
- const eventInfo = this.parseSingleEvent(event, txIndex, eventIndex);
18
- if (eventInfo) {
19
- events.push(eventInfo);
20
- }
21
- });
22
- }
23
- return events;
24
- }
25
- static parseSingleEvent(event, txIndex, eventIndex) {
26
- try {
27
- const packageId = this.extractPackageId(event);
28
- const dexName = this.getDexName(packageId);
29
- const eventName = this.extractEventName(event.event_type);
30
- const module = event.module || 'Unknown';
31
- const sender = event.sender || 'Unknown';
32
- return {
33
- txIndex: txIndex,
34
- eventIndex: eventIndex,
35
- dexName: dexName,
36
- packageId: packageId,
37
- eventType: event.event_type || 'Unknown',
38
- eventName: eventName,
39
- module: module,
40
- sender: sender,
41
- hasContent: !!(event.contents && event.contents.value),
42
- contents: event.contents
43
- };
44
- }
45
- catch (error) {
46
- console.error('解析事件失败:', error);
47
- return null;
48
- }
49
- }
50
- static extractPackageId(event) {
51
- if (event.package_id) {
52
- return event.package_id;
53
- }
54
- if (event.event_type) {
55
- return this.extractPackageFromEventType(event.event_type);
56
- }
57
- return 'unknown';
58
- }
59
- static extractPackageFromEventType(eventType) {
60
- if (!eventType)
61
- return 'unknown';
62
- const parts = eventType.split('::');
63
- if (parts.length >= 1 && parts[0].startsWith('0x')) {
64
- return parts[0];
65
- }
66
- return 'unknown';
67
- }
68
- static getDexName(packageId) {
69
- return this.DEX_PACKAGES[packageId] || 'Unknown DEX';
70
- }
71
- static extractEventName(eventType) {
72
- if (!eventType)
73
- return 'Unknown';
74
- const parts = eventType.split('::');
75
- return parts[parts.length - 1] || 'Unknown';
76
- }
77
- static generateStats(events) {
78
- const dexStats = {};
79
- const eventTypeStats = {};
80
- events.forEach(event => {
81
- dexStats[event.dexName] = (dexStats[event.dexName] || 0) + 1;
82
- eventTypeStats[event.eventName] = (eventTypeStats[event.eventName] || 0) + 1;
83
- });
84
- return {
85
- totalEvents: events.length,
86
- dexStats: dexStats,
87
- eventTypeStats: eventTypeStats
88
- };
89
- }
90
- static printStats(events, checkpointId) {
91
- const stats = this.generateStats(events);
92
- console.log(`\n=== Checkpoint ${checkpointId} DEX 事件统计 ===`);
93
- console.log(`总事件数: ${stats.totalEvents}`);
94
- if (stats.totalEvents > 0) {
95
- console.log('\n=== DEX 统计 ===');
96
- Object.entries(stats.dexStats).forEach(([dex, count]) => {
97
- console.log(`${dex}: ${count} 个事件`);
98
- });
99
- console.log('\n=== 事件类型统计 ===');
100
- Object.entries(stats.eventTypeStats).forEach(([eventType, count]) => {
101
- console.log(`${eventType}: ${count} 个事件`);
102
- });
103
- }
104
- }
105
- static printEventDetails(events) {
106
- if (events.length === 0) {
107
- console.log('没有找到 DEX 事件');
108
- return;
109
- }
110
- console.log('\n=== DEX 事件详情 ===');
111
- events.forEach((event, index) => {
112
- console.log(`事件 ${index + 1}:`);
113
- console.log(` 交易索引: ${event.txIndex}`);
114
- console.log(` 事件索引: ${event.eventIndex}`);
115
- console.log(` DEX: ${event.dexName}`);
116
- console.log(` 包地址: ${event.packageId}`);
117
- console.log(` 模块: ${event.module}`);
118
- console.log(` 事件名称: ${event.eventName}`);
119
- console.log(` 发送者: ${event.sender}`);
120
- console.log(` 有内容数据: ${event.hasContent}`);
121
- });
122
- }
123
- }
124
- exports.DexEventParser = DexEventParser;
125
- DexEventParser.DEX_PACKAGES = {
126
- '0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb': 'Cetus',
127
- '0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860': 'Momentum CLMM',
128
- '0x3492c874c1e3b3e2984e8c41b589e642d4d0a5d6459e5a9cfc2d52fd7c89c267': 'Turbos Finance',
129
- '0xf1962ddb76a7f9968b4e597278d3cc717a00620cc421b00e3429c5c071eba26a': 'Turbos Finance',
130
- '0x53134eb544c5a0b5085e99efaf7eab13b28ad123de35d61f941f8c8c40b72033': 'Tradeport',
131
- '0x67b34b728c4e28e704dcfecf7c5cf55c7fc593b6c65c20d1836d97c209c1928a': 'Unknown DEX'
132
- };
@@ -1,206 +0,0 @@
1
- export declare const DEX_SCHEMA_DATABASE: {
2
- '0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860': {
3
- name: string;
4
- source: string;
5
- events: {
6
- SwapEvent: {
7
- pool_id: string;
8
- token_in: string;
9
- token_out: string;
10
- amount_in: string;
11
- amount_out: string;
12
- fee: string;
13
- };
14
- RepayFlashSwapEvent: {
15
- pool_id: string;
16
- token_borrowed: string;
17
- amount_borrowed: string;
18
- token_repaid: string;
19
- amount_repaid: string;
20
- fee: string;
21
- };
22
- AddLiquidityEvent: {
23
- pool_id: string;
24
- liquidity: string;
25
- amount_a: string;
26
- amount_b: string;
27
- };
28
- RemoveLiquidityEvent: {
29
- pool_id: string;
30
- liquidity: string;
31
- amount_a: string;
32
- amount_b: string;
33
- };
34
- };
35
- };
36
- '0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb': {
37
- name: string;
38
- source: string;
39
- events: {
40
- SwapEvent: {
41
- pool_id: string;
42
- token_in: string;
43
- token_out: string;
44
- amount_in: string;
45
- amount_out: string;
46
- fee: string;
47
- };
48
- AddLiquidityEvent: {
49
- pool_id: string;
50
- liquidity: string;
51
- amount_a: string;
52
- amount_b: string;
53
- };
54
- RemoveLiquidityEvent: {
55
- pool_id: string;
56
- liquidity: string;
57
- amount_a: string;
58
- amount_b: string;
59
- };
60
- };
61
- };
62
- '0x5c45d10c26c5fb53f332c6be5c8c6b6b8b9e6b6b8b9e6b6b8b9e6b6b8b9e6b6b': {
63
- name: string;
64
- source: string;
65
- events: {
66
- SwapEvent: {
67
- pool_id: string;
68
- token_in: string;
69
- token_out: string;
70
- amount_in: string;
71
- amount_out: string;
72
- fee: string;
73
- };
74
- };
75
- };
76
- '0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a': {
77
- name: string;
78
- source: string;
79
- events: {
80
- OrderPlaced: {
81
- order_id: string;
82
- user: string;
83
- amount: string;
84
- price: string;
85
- side: string;
86
- };
87
- OrderInfo: {
88
- order_id: string;
89
- user: string;
90
- amount: string;
91
- price: string;
92
- side: string;
93
- status: string;
94
- };
95
- };
96
- };
97
- };
98
- export declare class DexSchemaDatabase {
99
- getDexInfo(packageId: string): any;
100
- getEventSchema(packageId: string, eventName: string): any;
101
- isSupported(packageId: string): boolean;
102
- getSupportedPackages(): string[];
103
- getAllDexInfo(): {
104
- '0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860': {
105
- name: string;
106
- source: string;
107
- events: {
108
- SwapEvent: {
109
- pool_id: string;
110
- token_in: string;
111
- token_out: string;
112
- amount_in: string;
113
- amount_out: string;
114
- fee: string;
115
- };
116
- RepayFlashSwapEvent: {
117
- pool_id: string;
118
- token_borrowed: string;
119
- amount_borrowed: string;
120
- token_repaid: string;
121
- amount_repaid: string;
122
- fee: string;
123
- };
124
- AddLiquidityEvent: {
125
- pool_id: string;
126
- liquidity: string;
127
- amount_a: string;
128
- amount_b: string;
129
- };
130
- RemoveLiquidityEvent: {
131
- pool_id: string;
132
- liquidity: string;
133
- amount_a: string;
134
- amount_b: string;
135
- };
136
- };
137
- };
138
- '0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb': {
139
- name: string;
140
- source: string;
141
- events: {
142
- SwapEvent: {
143
- pool_id: string;
144
- token_in: string;
145
- token_out: string;
146
- amount_in: string;
147
- amount_out: string;
148
- fee: string;
149
- };
150
- AddLiquidityEvent: {
151
- pool_id: string;
152
- liquidity: string;
153
- amount_a: string;
154
- amount_b: string;
155
- };
156
- RemoveLiquidityEvent: {
157
- pool_id: string;
158
- liquidity: string;
159
- amount_a: string;
160
- amount_b: string;
161
- };
162
- };
163
- };
164
- '0x5c45d10c26c5fb53f332c6be5c8c6b6b8b9e6b6b8b9e6b6b8b9e6b6b8b9e6b6b': {
165
- name: string;
166
- source: string;
167
- events: {
168
- SwapEvent: {
169
- pool_id: string;
170
- token_in: string;
171
- token_out: string;
172
- amount_in: string;
173
- amount_out: string;
174
- fee: string;
175
- };
176
- };
177
- };
178
- '0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a': {
179
- name: string;
180
- source: string;
181
- events: {
182
- OrderPlaced: {
183
- order_id: string;
184
- user: string;
185
- amount: string;
186
- price: string;
187
- side: string;
188
- };
189
- OrderInfo: {
190
- order_id: string;
191
- user: string;
192
- amount: string;
193
- price: string;
194
- side: string;
195
- status: string;
196
- };
197
- };
198
- };
199
- };
200
- addDexSchema(packageId: string, name: string, source: string, events: any): void;
201
- addEventSchema(packageId: string, eventName: string, schema: any): void;
202
- generateTypeScriptCode(): string;
203
- exportToJSON(): string;
204
- importFromJSON(json: string): void;
205
- }
206
- export declare const createSchemaDatabase: () => DexSchemaDatabase;
@@ -1,169 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createSchemaDatabase = exports.DexSchemaDatabase = exports.DEX_SCHEMA_DATABASE = void 0;
4
- exports.DEX_SCHEMA_DATABASE = {
5
- '0x70285592c97965e811e0c6f98dccc3a9c2b4ad854b3594faab9597ada267b860': {
6
- name: 'Momentum CLMM',
7
- source: 'https://github.com/mmt-finance/clmm-sdk',
8
- events: {
9
- 'SwapEvent': {
10
- pool_id: 'address',
11
- token_in: 'address',
12
- token_out: 'address',
13
- amount_in: 'u64',
14
- amount_out: 'u64',
15
- fee: 'u64'
16
- },
17
- 'RepayFlashSwapEvent': {
18
- pool_id: 'address',
19
- token_borrowed: 'address',
20
- amount_borrowed: 'u64',
21
- token_repaid: 'address',
22
- amount_repaid: 'u64',
23
- fee: 'u64'
24
- },
25
- 'AddLiquidityEvent': {
26
- pool_id: 'address',
27
- liquidity: 'u128',
28
- amount_a: 'u64',
29
- amount_b: 'u64'
30
- },
31
- 'RemoveLiquidityEvent': {
32
- pool_id: 'address',
33
- liquidity: 'u128',
34
- amount_a: 'u64',
35
- amount_b: 'u64'
36
- }
37
- }
38
- },
39
- '0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb': {
40
- name: 'Cetus CLMM',
41
- source: 'https://github.com/CetusProtocol/cetus-clmm',
42
- events: {
43
- 'SwapEvent': {
44
- pool_id: 'address',
45
- token_in: 'address',
46
- token_out: 'address',
47
- amount_in: 'u64',
48
- amount_out: 'u64',
49
- fee: 'u64'
50
- },
51
- 'AddLiquidityEvent': {
52
- pool_id: 'address',
53
- liquidity: 'u128',
54
- amount_a: 'u64',
55
- amount_b: 'u64'
56
- },
57
- 'RemoveLiquidityEvent': {
58
- pool_id: 'address',
59
- liquidity: 'u128',
60
- amount_a: 'u64',
61
- amount_b: 'u64'
62
- }
63
- }
64
- },
65
- '0x5c45d10c26c5fb53f332c6be5c8c6b6b8b9e6b6b8b9e6b6b8b9e6b6b8b9e6b6b': {
66
- name: 'Turbos Finance',
67
- source: 'https://github.com/turbos-finance',
68
- events: {
69
- 'SwapEvent': {
70
- pool_id: 'address',
71
- token_in: 'address',
72
- token_out: 'address',
73
- amount_in: 'u64',
74
- amount_out: 'u64',
75
- fee: 'u64'
76
- }
77
- }
78
- },
79
- '0xcaf6ba059d539a97646d47f0b9ddf843e138d215e2a12ca1f4585d386f7aec3a': {
80
- name: 'Order Book DEX',
81
- source: 'discovered from checkpoint',
82
- events: {
83
- 'OrderPlaced': {
84
- order_id: 'address',
85
- user: 'address',
86
- amount: 'u64',
87
- price: 'u64',
88
- side: 'u8'
89
- },
90
- 'OrderInfo': {
91
- order_id: 'address',
92
- user: 'address',
93
- amount: 'u64',
94
- price: 'u64',
95
- side: 'u8',
96
- status: 'u8'
97
- }
98
- }
99
- }
100
- };
101
- class DexSchemaDatabase {
102
- getDexInfo(packageId) {
103
- return exports.DEX_SCHEMA_DATABASE[packageId];
104
- }
105
- getEventSchema(packageId, eventName) {
106
- var _a;
107
- const dexInfo = this.getDexInfo(packageId);
108
- return ((_a = dexInfo === null || dexInfo === void 0 ? void 0 : dexInfo.events) === null || _a === void 0 ? void 0 : _a[eventName]) || null;
109
- }
110
- isSupported(packageId) {
111
- return !!exports.DEX_SCHEMA_DATABASE[packageId];
112
- }
113
- getSupportedPackages() {
114
- return Object.keys(exports.DEX_SCHEMA_DATABASE);
115
- }
116
- getAllDexInfo() {
117
- return exports.DEX_SCHEMA_DATABASE;
118
- }
119
- addDexSchema(packageId, name, source, events) {
120
- exports.DEX_SCHEMA_DATABASE[packageId] = {
121
- name,
122
- source,
123
- events
124
- };
125
- }
126
- addEventSchema(packageId, eventName, schema) {
127
- if (!exports.DEX_SCHEMA_DATABASE[packageId]) {
128
- console.warn(`DEX ${packageId} 不存在,请先添加 DEX 信息`);
129
- return;
130
- }
131
- if (!exports.DEX_SCHEMA_DATABASE[packageId].events) {
132
- exports.DEX_SCHEMA_DATABASE[packageId].events = {};
133
- }
134
- exports.DEX_SCHEMA_DATABASE[packageId].events[eventName] = schema;
135
- }
136
- generateTypeScriptCode() {
137
- let code = '// 自动生成的 DEX Schema 数据库\n';
138
- code += 'export const DEX_SCHEMA_DATABASE = {\n';
139
- for (const [packageId, dexInfo] of Object.entries(exports.DEX_SCHEMA_DATABASE)) {
140
- code += ` '${packageId}': {\n`;
141
- code += ` name: '${dexInfo.name}',\n`;
142
- code += ` source: '${dexInfo.source}',\n`;
143
- code += ` events: {\n`;
144
- for (const [eventName, fields] of Object.entries(dexInfo.events)) {
145
- code += ` '${eventName}': {\n`;
146
- for (const [fieldName, fieldType] of Object.entries(fields)) {
147
- code += ` ${fieldName}: '${fieldType}',\n`;
148
- }
149
- code += ` },\n`;
150
- }
151
- code += ` }\n`;
152
- code += ` },\n`;
153
- }
154
- code += '};\n';
155
- return code;
156
- }
157
- exportToJSON() {
158
- return JSON.stringify(exports.DEX_SCHEMA_DATABASE, null, 2);
159
- }
160
- importFromJSON(json) {
161
- const data = JSON.parse(json);
162
- Object.assign(exports.DEX_SCHEMA_DATABASE, data);
163
- }
164
- }
165
- exports.DexSchemaDatabase = DexSchemaDatabase;
166
- const createSchemaDatabase = () => {
167
- return new DexSchemaDatabase();
168
- };
169
- exports.createSchemaDatabase = createSchemaDatabase;
@@ -1,21 +0,0 @@
1
- import { SuiClient } from '@mysten/sui/client';
2
- export declare class DynamicBCSParser {
3
- private schemaCache;
4
- private suiClient;
5
- constructor(suiClient: SuiClient);
6
- parseEvent(event: any): Promise<{
7
- [x: string]: unknown;
8
- }>;
9
- private extractEventInfo;
10
- private getSchemas;
11
- private fetchSchemasFromChain;
12
- private extractSchemaFromPackage;
13
- private parseStructToBCSSchema;
14
- private mapMoveTypeToBCS;
15
- private decodeWithSchema;
16
- clearCache(): void;
17
- getCacheStats(): {
18
- cachedPackages: number;
19
- packages: string[];
20
- };
21
- }
@@ -1,166 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.DynamicBCSParser = void 0;
13
- const bcs_1 = require("@mysten/sui/bcs");
14
- class DynamicBCSParser {
15
- constructor(suiClient) {
16
- this.schemaCache = new Map();
17
- this.suiClient = suiClient;
18
- }
19
- parseEvent(event) {
20
- return __awaiter(this, void 0, void 0, function* () {
21
- try {
22
- const { packageId, eventName } = this.extractEventInfo(event);
23
- if (!packageId || !eventName) {
24
- console.log('无法提取事件信息');
25
- return null;
26
- }
27
- const schemas = yield this.getSchemas(packageId);
28
- const schema = schemas[eventName];
29
- if (!schema) {
30
- console.log(`未找到事件 ${eventName} 的 schema`);
31
- return null;
32
- }
33
- return this.decodeWithSchema(schema, event.bcs.value);
34
- }
35
- catch (error) {
36
- console.error('解析事件失败:', error);
37
- return null;
38
- }
39
- });
40
- }
41
- extractEventInfo(event) {
42
- if (!event.type)
43
- return { packageId: null, eventName: null };
44
- const parts = event.type.split('::');
45
- if (parts.length < 3)
46
- return { packageId: null, eventName: null };
47
- const packageId = parts[0];
48
- const eventName = parts[parts.length - 1];
49
- return { packageId, eventName };
50
- }
51
- getSchemas(packageId) {
52
- return __awaiter(this, void 0, void 0, function* () {
53
- if (this.schemaCache.has(packageId)) {
54
- return this.schemaCache.get(packageId);
55
- }
56
- const schemas = yield this.fetchSchemasFromChain(packageId);
57
- this.schemaCache.set(packageId, schemas);
58
- return schemas;
59
- });
60
- }
61
- fetchSchemasFromChain(packageId) {
62
- return __awaiter(this, void 0, void 0, function* () {
63
- var _a;
64
- try {
65
- console.log(`正在获取包 ${packageId} 的 schema...`);
66
- const packageInfo = yield this.suiClient.getObject({
67
- id: packageId,
68
- options: {
69
- showContent: true,
70
- showType: true
71
- }
72
- });
73
- if (!((_a = packageInfo.data) === null || _a === void 0 ? void 0 : _a.content)) {
74
- console.log(`包 ${packageId} 没有内容`);
75
- return {};
76
- }
77
- return this.extractSchemaFromPackage(packageInfo.data.content);
78
- }
79
- catch (error) {
80
- console.error(`获取包 ${packageId} 的 schema 失败:`, error);
81
- return {};
82
- }
83
- });
84
- }
85
- extractSchemaFromPackage(packageContent) {
86
- const schemas = {};
87
- try {
88
- if (packageContent.dataType === 'movePackage') {
89
- const modules = packageContent.modules || [];
90
- modules.forEach((module) => {
91
- const moduleName = module.name;
92
- const structs = module.structs || [];
93
- structs.forEach((struct) => {
94
- const schemaKey = struct.name;
95
- schemas[schemaKey] = this.parseStructToBCSSchema(struct);
96
- });
97
- });
98
- }
99
- }
100
- catch (error) {
101
- console.error('提取 schema 失败:', error);
102
- }
103
- return schemas;
104
- }
105
- parseStructToBCSSchema(struct) {
106
- const schema = {};
107
- try {
108
- const fields = struct.fields || [];
109
- fields.forEach((field) => {
110
- const fieldName = field.name;
111
- const fieldType = this.mapMoveTypeToBCS(field.type);
112
- if (fieldType) {
113
- schema[fieldName] = fieldType;
114
- }
115
- });
116
- }
117
- catch (error) {
118
- console.error('解析结构体失败:', error);
119
- }
120
- return schema;
121
- }
122
- mapMoveTypeToBCS(moveType) {
123
- const typeMap = {
124
- 'u8': 'u8',
125
- 'u16': 'u16',
126
- 'u32': 'u32',
127
- 'u64': 'u64',
128
- 'u128': 'u128',
129
- 'u256': 'u256',
130
- 'bool': 'bool',
131
- 'address': 'address',
132
- 'vector<u8>': 'vector<u8>',
133
- 'vector<u64>': 'vector<u64>',
134
- 'string::String': 'string'
135
- };
136
- if (moveType.startsWith('vector<')) {
137
- const innerType = moveType.slice(7, -1);
138
- const bcsInnerType = this.mapMoveTypeToBCS(innerType);
139
- return bcsInnerType ? `vector<${bcsInnerType}>` : null;
140
- }
141
- return typeMap[moveType] || null;
142
- }
143
- decodeWithSchema(schema, bcsHex) {
144
- try {
145
- const schemaName = 'DynamicEvent';
146
- const dynamicType = bcs_1.bcs.struct(schemaName, schema);
147
- const bcsBytes = Buffer.from(bcsHex, 'hex');
148
- const decoded = dynamicType.parse(bcsBytes);
149
- return decoded;
150
- }
151
- catch (error) {
152
- console.error('BCS 解码失败:', error);
153
- return null;
154
- }
155
- }
156
- clearCache() {
157
- this.schemaCache.clear();
158
- }
159
- getCacheStats() {
160
- return {
161
- cachedPackages: this.schemaCache.size,
162
- packages: Array.from(this.schemaCache.keys())
163
- };
164
- }
165
- }
166
- exports.DynamicBCSParser = DynamicBCSParser;