@clonegod/ttd-sui-common 1.0.69 → 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 (126) hide show
  1. package/dist/grpc/grpc-connection.js +15 -6
  2. package/dist/test/test_grpc.js +12 -2
  3. package/dist/trade/test/test_parse_sui_tx_result.js +24 -24
  4. package/package.json +1 -1
  5. package/dist/rpc/account-api.d.ts +0 -14
  6. package/dist/rpc/account-api.js +0 -113
  7. package/dist/rpc/coin-api.d.ts +0 -0
  8. package/dist/rpc/coin-api.js +0 -0
  9. package/dist/rpc/rpc-connection.d.ts +0 -8
  10. package/dist/rpc/rpc-connection.js +0 -54
  11. package/dist/test/test_checkpoint_processor.d.ts +0 -1
  12. package/dist/test/test_checkpoint_processor.js +0 -112
  13. package/dist/test/test_checkpoint_subscription.d.ts +0 -1
  14. package/dist/test/test_checkpoint_subscription.js +0 -132
  15. package/dist/test/test_checkpoint_with_schema.d.ts +0 -1
  16. package/dist/test/test_checkpoint_with_schema.js +0 -250
  17. package/dist/test/test_dynamic_bcs.d.ts +0 -1
  18. package/dist/test/test_dynamic_bcs.js +0 -82
  19. package/dist/test/test_github_extractor.d.ts +0 -1
  20. package/dist/test/test_github_extractor.js +0 -69
  21. package/dist/test/test_hybrid_bcs.d.ts +0 -1
  22. package/dist/test/test_hybrid_bcs.js +0 -98
  23. package/dist/test/test_momentum_events.d.ts +0 -1
  24. package/dist/test/test_momentum_events.js +0 -113
  25. package/dist/test/test_rpc.d.ts +0 -1
  26. package/dist/test/test_rpc.js +0 -34
  27. package/dist/test/test_schema_database.d.ts +0 -1
  28. package/dist/test/test_schema_database.js +0 -91
  29. package/dist/test/test_simple_schema.d.ts +0 -1
  30. package/dist/test/test_simple_schema.js +0 -78
  31. package/dist/test/test_single_momentum_event.d.ts +0 -1
  32. package/dist/test/test_single_momentum_event.js +0 -44
  33. package/dist/ttd-sui-common/src/constants/index.d.ts +0 -4
  34. package/dist/ttd-sui-common/src/constants/index.js +0 -8
  35. package/dist/ttd-sui-common/src/grpc/gas-price-cache.d.ts +0 -21
  36. package/dist/ttd-sui-common/src/grpc/gas-price-cache.js +0 -83
  37. package/dist/ttd-sui-common/src/grpc/grpc-connection.d.ts +0 -13
  38. package/dist/ttd-sui-common/src/grpc/grpc-connection.js +0 -99
  39. package/dist/ttd-sui-common/src/grpc/index.d.ts +0 -7
  40. package/dist/ttd-sui-common/src/grpc/index.js +0 -17
  41. package/dist/ttd-sui-common/src/grpc/ledger-service.d.ts +0 -12
  42. package/dist/ttd-sui-common/src/grpc/ledger-service.js +0 -161
  43. package/dist/ttd-sui-common/src/grpc/live-data-service.d.ts +0 -10
  44. package/dist/ttd-sui-common/src/grpc/live-data-service.js +0 -107
  45. package/dist/ttd-sui-common/src/grpc/subscription-service.d.ts +0 -7
  46. package/dist/ttd-sui-common/src/grpc/subscription-service.js +0 -69
  47. package/dist/ttd-sui-common/src/grpc/sui-grpc-client.d.ts +0 -16
  48. package/dist/ttd-sui-common/src/grpc/sui-grpc-client.js +0 -38
  49. package/dist/ttd-sui-common/src/grpc/transaction-service.d.ts +0 -7
  50. package/dist/ttd-sui-common/src/grpc/transaction-service.js +0 -49
  51. package/dist/ttd-sui-common/src/index.d.ts +0 -9
  52. package/dist/ttd-sui-common/src/index.js +0 -25
  53. package/dist/ttd-sui-common/src/quote/index.d.ts +0 -1
  54. package/dist/ttd-sui-common/src/quote/index.js +0 -17
  55. package/dist/ttd-sui-common/src/quote/pricing/index.d.ts +0 -1
  56. package/dist/ttd-sui-common/src/quote/pricing/index.js +0 -17
  57. package/dist/ttd-sui-common/src/quote/pricing/token_price_cache.d.ts +0 -9
  58. package/dist/ttd-sui-common/src/quote/pricing/token_price_cache.js +0 -42
  59. package/dist/ttd-sui-common/src/redis/index.d.ts +0 -1
  60. package/dist/ttd-sui-common/src/redis/index.js +0 -17
  61. package/dist/ttd-sui-common/src/redis/redis_client.d.ts +0 -21
  62. package/dist/ttd-sui-common/src/redis/redis_client.js +0 -155
  63. package/dist/ttd-sui-common/src/test/test.d.ts +0 -1
  64. package/dist/ttd-sui-common/src/test/test.js +0 -126
  65. package/dist/ttd-sui-common/src/test/test_checkpoint.d.ts +0 -1
  66. package/dist/ttd-sui-common/src/test/test_checkpoint.js +0 -64
  67. package/dist/ttd-sui-common/src/test/test_grpc.d.ts +0 -1
  68. package/dist/ttd-sui-common/src/test/test_grpc.js +0 -84
  69. package/dist/ttd-sui-common/src/trade/abstract_sui_dex_trade_plus.d.ts +0 -32
  70. package/dist/ttd-sui-common/src/trade/abstract_sui_dex_trade_plus.js +0 -216
  71. package/dist/ttd-sui-common/src/trade/check/index.d.ts +0 -1
  72. package/dist/ttd-sui-common/src/trade/check/index.js +0 -5
  73. package/dist/ttd-sui-common/src/trade/check/tx_result_checker.d.ts +0 -13
  74. package/dist/ttd-sui-common/src/trade/check/tx_result_checker.js +0 -111
  75. package/dist/ttd-sui-common/src/trade/index.d.ts +0 -4
  76. package/dist/ttd-sui-common/src/trade/index.js +0 -20
  77. package/dist/ttd-sui-common/src/trade/parse/index.d.ts +0 -1
  78. package/dist/ttd-sui-common/src/trade/parse/index.js +0 -5
  79. package/dist/ttd-sui-common/src/trade/parse/sui_tx_parser.d.ts +0 -13
  80. package/dist/ttd-sui-common/src/trade/parse/sui_tx_parser.js +0 -167
  81. package/dist/ttd-sui-common/src/trade/send_tx/index.d.ts +0 -10
  82. package/dist/ttd-sui-common/src/trade/send_tx/index.js +0 -48
  83. package/dist/ttd-sui-common/src/trade/test/test_parse_sui_tx_result.d.ts +0 -1
  84. package/dist/ttd-sui-common/src/trade/test/test_parse_sui_tx_result.js +0 -105
  85. package/dist/ttd-sui-common/src/type/index.d.ts +0 -18
  86. package/dist/ttd-sui-common/src/type/index.js +0 -2
  87. package/dist/ttd-sui-common/src/utils/checkpoint_parse.d.ts +0 -0
  88. package/dist/ttd-sui-common/src/utils/checkpoint_parse.js +0 -0
  89. package/dist/ttd-sui-common/src/utils/decode.d.ts +0 -2
  90. package/dist/ttd-sui-common/src/utils/decode.js +0 -43
  91. package/dist/ttd-sui-common/src/utils/format.d.ts +0 -1
  92. package/dist/ttd-sui-common/src/utils/format.js +0 -18
  93. package/dist/ttd-sui-common/src/utils/index.d.ts +0 -2
  94. package/dist/ttd-sui-common/src/utils/index.js +0 -18
  95. package/dist/ttd-sui-market-data/src/sui_objects/config_manager.d.ts +0 -22
  96. package/dist/ttd-sui-market-data/src/sui_objects/config_manager.js +0 -169
  97. package/dist/ttd-sui-market-data/src/sui_objects/example.d.ts +0 -1
  98. package/dist/ttd-sui-market-data/src/sui_objects/example.js +0 -72
  99. package/dist/ttd-sui-market-data/src/sui_objects/index.d.ts +0 -6
  100. package/dist/ttd-sui-market-data/src/sui_objects/index.js +0 -15
  101. package/dist/ttd-sui-market-data/src/sui_objects/object_mgt.d.ts +0 -47
  102. package/dist/ttd-sui-market-data/src/sui_objects/object_mgt.js +0 -483
  103. package/dist/ttd-sui-market-data/src/sui_objects/types.d.ts +0 -60
  104. package/dist/ttd-sui-market-data/src/sui_objects/types.js +0 -24
  105. package/dist/ttd-sui-market-data/src/sui_objects/version_checker.d.ts +0 -30
  106. package/dist/ttd-sui-market-data/src/sui_objects/version_checker.js +0 -207
  107. package/dist/utils/bcs-parser.d.ts +0 -8
  108. package/dist/utils/bcs-parser.js +0 -121
  109. package/dist/utils/checkpoint-processor.d.ts +0 -7
  110. package/dist/utils/checkpoint-processor.js +0 -123
  111. package/dist/utils/checkpoint.d.ts +0 -7
  112. package/dist/utils/checkpoint.js +0 -26
  113. package/dist/utils/dex-parser-manager.d.ts +0 -7
  114. package/dist/utils/dex-parser-manager.js +0 -138
  115. package/dist/utils/dex_event_parser.d.ts +0 -34
  116. package/dist/utils/dex_event_parser.js +0 -132
  117. package/dist/utils/dex_schema_database.d.ts +0 -206
  118. package/dist/utils/dex_schema_database.js +0 -169
  119. package/dist/utils/dynamic_bcs_parser.d.ts +0 -21
  120. package/dist/utils/dynamic_bcs_parser.js +0 -166
  121. package/dist/utils/github_schema_extractor.d.ts +0 -20
  122. package/dist/utils/github_schema_extractor.js +0 -153
  123. package/dist/utils/hybrid_bcs_parser.d.ts +0 -22
  124. package/dist/utils/hybrid_bcs_parser.js +0 -194
  125. package/dist/utils/simple_schema_parser.d.ts +0 -76
  126. 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;