sol-parser-sdk 0.5.9

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 (190) hide show
  1. package/.env.example +24 -0
  2. package/LICENSE +21 -0
  3. package/README.md +236 -0
  4. package/README_CN.md +236 -0
  5. package/dist/accounts/mod.d.ts +15 -0
  6. package/dist/accounts/mod.js +173 -0
  7. package/dist/accounts/nonce.d.ts +5 -0
  8. package/dist/accounts/nonce.js +32 -0
  9. package/dist/accounts/pumpfun.d.ts +16 -0
  10. package/dist/accounts/pumpfun.js +538 -0
  11. package/dist/accounts/pumpswap.d.ts +8 -0
  12. package/dist/accounts/pumpswap.js +192 -0
  13. package/dist/accounts/raydium_orca.d.ts +26 -0
  14. package/dist/accounts/raydium_orca.js +453 -0
  15. package/dist/accounts/rpc_wallet.d.ts +5 -0
  16. package/dist/accounts/rpc_wallet.js +18 -0
  17. package/dist/accounts/rust_aliases.d.ts +10 -0
  18. package/dist/accounts/rust_aliases.js +21 -0
  19. package/dist/accounts/token.d.ts +5 -0
  20. package/dist/accounts/token.js +98 -0
  21. package/dist/accounts/types.d.ts +9 -0
  22. package/dist/accounts/types.js +2 -0
  23. package/dist/accounts/utils.d.ts +1 -0
  24. package/dist/accounts/utils.js +12 -0
  25. package/dist/accounts/wallet_resolve.d.ts +1 -0
  26. package/dist/accounts/wallet_resolve.js +28 -0
  27. package/dist/common/constants.d.ts +10 -0
  28. package/dist/common/constants.js +13 -0
  29. package/dist/core/account_dispatcher_rpc.d.ts +11 -0
  30. package/dist/core/account_dispatcher_rpc.js +155 -0
  31. package/dist/core/account_fill_bonk.d.ts +4 -0
  32. package/dist/core/account_fill_bonk.js +20 -0
  33. package/dist/core/account_fill_meteora.d.ts +15 -0
  34. package/dist/core/account_fill_meteora.js +27 -0
  35. package/dist/core/account_fill_orca.d.ts +5 -0
  36. package/dist/core/account_fill_orca.js +18 -0
  37. package/dist/core/account_fill_pumpfun.d.ts +7 -0
  38. package/dist/core/account_fill_pumpfun.js +167 -0
  39. package/dist/core/account_fill_pumpswap.d.ts +10 -0
  40. package/dist/core/account_fill_pumpswap.js +128 -0
  41. package/dist/core/account_fill_raydium.d.ts +20 -0
  42. package/dist/core/account_fill_raydium.js +104 -0
  43. package/dist/core/account_fill_raydium_launchlab.d.ts +4 -0
  44. package/dist/core/account_fill_raydium_launchlab.js +20 -0
  45. package/dist/core/account_pubkey_cache.d.ts +12 -0
  46. package/dist/core/account_pubkey_cache.js +26 -0
  47. package/dist/core/clock.d.ts +8 -0
  48. package/dist/core/clock.js +20 -0
  49. package/dist/core/common_filler_rpc.d.ts +6 -0
  50. package/dist/core/common_filler_rpc.js +21 -0
  51. package/dist/core/dex_event.d.ts +1704 -0
  52. package/dist/core/dex_event.js +14 -0
  53. package/dist/core/error.d.ts +43 -0
  54. package/dist/core/error.js +16 -0
  55. package/dist/core/json_utils.d.ts +8 -0
  56. package/dist/core/json_utils.js +18 -0
  57. package/dist/core/metadata.d.ts +11 -0
  58. package/dist/core/metadata.js +13 -0
  59. package/dist/core/pumpfun_fee_enrich.d.ts +6 -0
  60. package/dist/core/pumpfun_fee_enrich.js +159 -0
  61. package/dist/core/rpc_invoke_map.d.ts +23 -0
  62. package/dist/core/rpc_invoke_map.js +157 -0
  63. package/dist/core/unified_parser.d.ts +19 -0
  64. package/dist/core/unified_parser.js +50 -0
  65. package/dist/grpc/client.d.ts +83 -0
  66. package/dist/grpc/client.js +645 -0
  67. package/dist/grpc/client_stub.d.ts +5 -0
  68. package/dist/grpc/client_stub.js +5 -0
  69. package/dist/grpc/event_parser.d.ts +6 -0
  70. package/dist/grpc/event_parser.js +15 -0
  71. package/dist/grpc/geyser_connect.d.ts +30 -0
  72. package/dist/grpc/geyser_connect.js +40 -0
  73. package/dist/grpc/log_instr_dedup.d.ts +2 -0
  74. package/dist/grpc/log_instr_dedup.js +402 -0
  75. package/dist/grpc/order_buffer.d.ts +27 -0
  76. package/dist/grpc/order_buffer.js +166 -0
  77. package/dist/grpc/program_ids.d.ts +27 -0
  78. package/dist/grpc/program_ids.js +61 -0
  79. package/dist/grpc/rpc_to_grpc.d.ts +18 -0
  80. package/dist/grpc/rpc_to_grpc.js +127 -0
  81. package/dist/grpc/subscribe_builder.d.ts +13 -0
  82. package/dist/grpc/subscribe_builder.js +66 -0
  83. package/dist/grpc/transaction_meta.d.ts +29 -0
  84. package/dist/grpc/transaction_meta.js +208 -0
  85. package/dist/grpc/types.d.ts +195 -0
  86. package/dist/grpc/types.js +551 -0
  87. package/dist/grpc/yellowstone_parse.d.ts +16 -0
  88. package/dist/grpc/yellowstone_parse.js +62 -0
  89. package/dist/index.d.ts +50 -0
  90. package/dist/index.js +298 -0
  91. package/dist/instr/bonk_ix.d.ts +8 -0
  92. package/dist/instr/bonk_ix.js +131 -0
  93. package/dist/instr/inner.d.ts +4 -0
  94. package/dist/instr/inner.js +453 -0
  95. package/dist/instr/meteora_damm_ix.d.ts +8 -0
  96. package/dist/instr/meteora_damm_ix.js +601 -0
  97. package/dist/instr/meteora_dlmm_ix.d.ts +2 -0
  98. package/dist/instr/meteora_dlmm_ix.js +134 -0
  99. package/dist/instr/meteora_pools_ix.d.ts +2 -0
  100. package/dist/instr/meteora_pools_ix.js +78 -0
  101. package/dist/instr/mod.d.ts +18 -0
  102. package/dist/instr/mod.js +129 -0
  103. package/dist/instr/orca_whirlpool_ix.d.ts +8 -0
  104. package/dist/instr/orca_whirlpool_ix.js +119 -0
  105. package/dist/instr/program_ids.d.ts +4 -0
  106. package/dist/instr/program_ids.js +20 -0
  107. package/dist/instr/pump_fees_ix.d.ts +2 -0
  108. package/dist/instr/pump_fees_ix.js +168 -0
  109. package/dist/instr/pumpfun_ix.d.ts +6 -0
  110. package/dist/instr/pumpfun_ix.js +448 -0
  111. package/dist/instr/pumpswap_ix.d.ts +5 -0
  112. package/dist/instr/pumpswap_ix.js +270 -0
  113. package/dist/instr/raydium_amm_v4_ix.d.ts +6 -0
  114. package/dist/instr/raydium_amm_v4_ix.js +112 -0
  115. package/dist/instr/raydium_clmm_ix.d.ts +5 -0
  116. package/dist/instr/raydium_clmm_ix.js +184 -0
  117. package/dist/instr/raydium_cpmm_ix.d.ts +5 -0
  118. package/dist/instr/raydium_cpmm_ix.js +109 -0
  119. package/dist/instr/raydium_launchlab_ix.d.ts +8 -0
  120. package/dist/instr/raydium_launchlab_ix.js +125 -0
  121. package/dist/instr/rust_aliases.d.ts +10 -0
  122. package/dist/instr/rust_aliases.js +20 -0
  123. package/dist/instr/utils.d.ts +10 -0
  124. package/dist/instr/utils.js +35 -0
  125. package/dist/logs/discriminator_lut.d.ts +19 -0
  126. package/dist/logs/discriminator_lut.js +62 -0
  127. package/dist/logs/meteora_amm.d.ts +8 -0
  128. package/dist/logs/meteora_amm.js +113 -0
  129. package/dist/logs/meteora_damm.d.ts +5 -0
  130. package/dist/logs/meteora_damm.js +367 -0
  131. package/dist/logs/meteora_dbc.d.ts +11 -0
  132. package/dist/logs/meteora_dbc.js +142 -0
  133. package/dist/logs/meteora_dlmm.d.ts +6 -0
  134. package/dist/logs/meteora_dlmm.js +201 -0
  135. package/dist/logs/optimized_matcher.d.ts +11 -0
  136. package/dist/logs/optimized_matcher.js +941 -0
  137. package/dist/logs/orca.d.ts +6 -0
  138. package/dist/logs/orca.js +148 -0
  139. package/dist/logs/program_data.d.ts +2 -0
  140. package/dist/logs/program_data.js +20 -0
  141. package/dist/logs/program_log_discriminators.d.ts +80 -0
  142. package/dist/logs/program_log_discriminators.js +88 -0
  143. package/dist/logs/pump.d.ts +14 -0
  144. package/dist/logs/pump.js +378 -0
  145. package/dist/logs/pump_amm.d.ts +9 -0
  146. package/dist/logs/pump_amm.js +418 -0
  147. package/dist/logs/pump_fees.d.ts +23 -0
  148. package/dist/logs/pump_fees.js +364 -0
  149. package/dist/logs/raydium_amm.d.ts +9 -0
  150. package/dist/logs/raydium_amm.js +224 -0
  151. package/dist/logs/raydium_clmm.d.ts +17 -0
  152. package/dist/logs/raydium_clmm.js +624 -0
  153. package/dist/logs/raydium_cpmm.d.ts +7 -0
  154. package/dist/logs/raydium_cpmm.js +121 -0
  155. package/dist/logs/raydium_launchlab.d.ts +10 -0
  156. package/dist/logs/raydium_launchlab.js +84 -0
  157. package/dist/logs/raydium_launchpad.d.ts +12 -0
  158. package/dist/logs/raydium_launchpad.js +92 -0
  159. package/dist/logs/rust_aliases.d.ts +7 -0
  160. package/dist/logs/rust_aliases.js +16 -0
  161. package/dist/parser_alias.d.ts +3 -0
  162. package/dist/parser_alias.js +2 -0
  163. package/dist/rpc_parser.d.ts +17 -0
  164. package/dist/rpc_parser.js +39 -0
  165. package/dist/rpc_transaction.d.ts +27 -0
  166. package/dist/rpc_transaction.js +416 -0
  167. package/dist/shredstream/alt_lookup.d.ts +9 -0
  168. package/dist/shredstream/alt_lookup.js +70 -0
  169. package/dist/shredstream/client.d.ts +65 -0
  170. package/dist/shredstream/client.js +403 -0
  171. package/dist/shredstream/config.d.ts +30 -0
  172. package/dist/shredstream/config.js +34 -0
  173. package/dist/shredstream/entries_decode.d.ts +28 -0
  174. package/dist/shredstream/entries_decode.js +251 -0
  175. package/dist/shredstream/index.d.ts +17 -0
  176. package/dist/shredstream/index.js +33 -0
  177. package/dist/shredstream/instruction_parse.d.ts +34 -0
  178. package/dist/shredstream/instruction_parse.js +79 -0
  179. package/dist/shredstream/proto_types.d.ts +9 -0
  180. package/dist/shredstream/proto_types.js +2 -0
  181. package/dist/shredstream/shredstream.proto +15 -0
  182. package/dist/shredstream/wire_to_shred_tx.d.ts +2 -0
  183. package/dist/shredstream/wire_to_shred_tx.js +59 -0
  184. package/dist/util/binary.d.ts +14 -0
  185. package/dist/util/binary.js +82 -0
  186. package/dist/util/market.d.ts +18 -0
  187. package/dist/util/market.js +54 -0
  188. package/dist/warmup.d.ts +3 -0
  189. package/dist/warmup.js +23 -0
  190. package/package.json +61 -0
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseSwapBaseInFromData = parseSwapBaseInFromData;
4
+ exports.parseSwapBaseOutFromData = parseSwapBaseOutFromData;
5
+ exports.parseCreatePoolFromData = parseCreatePoolFromData;
6
+ exports.parseDepositFromData = parseDepositFromData;
7
+ exports.parseWithdrawFromData = parseWithdrawFromData;
8
+ const binary_js_1 = require("../util/binary.js");
9
+ function bn64(v) {
10
+ return v ?? 0n;
11
+ }
12
+ function parseSwapBaseInFromData(data, metadata) {
13
+ let o = 0;
14
+ const pool_state = (0, binary_js_1.readPubkey)(data, o);
15
+ o += 32;
16
+ o += 32;
17
+ const amount_in = bn64((0, binary_js_1.readU64LE)(data, o));
18
+ o += 8;
19
+ o += 8;
20
+ const amount_out = bn64((0, binary_js_1.readU64LE)(data, o));
21
+ o += 8;
22
+ const is_base_input = (0, binary_js_1.readBool)(data, o);
23
+ const ev = {
24
+ metadata,
25
+ pool_id: pool_state,
26
+ input_vault_before: 0n,
27
+ output_vault_before: 0n,
28
+ input_amount: amount_in,
29
+ output_amount: amount_out,
30
+ input_transfer_fee: 0n,
31
+ output_transfer_fee: 0n,
32
+ base_input: is_base_input,
33
+ };
34
+ return { RaydiumCpmmSwap: ev };
35
+ }
36
+ function parseSwapBaseOutFromData(data, metadata) {
37
+ let o = 0;
38
+ const pool_state = (0, binary_js_1.readPubkey)(data, o);
39
+ o += 32;
40
+ o += 32;
41
+ o += 8;
42
+ const amount_out = bn64((0, binary_js_1.readU64LE)(data, o));
43
+ o += 8;
44
+ const amount_in = bn64((0, binary_js_1.readU64LE)(data, o));
45
+ o += 8;
46
+ const is_base_output = (0, binary_js_1.readBool)(data, o);
47
+ const ev = {
48
+ metadata,
49
+ pool_id: pool_state,
50
+ input_vault_before: 0n,
51
+ output_vault_before: 0n,
52
+ input_amount: amount_in,
53
+ output_amount: amount_out,
54
+ input_transfer_fee: 0n,
55
+ output_transfer_fee: 0n,
56
+ base_input: !is_base_output,
57
+ };
58
+ return { RaydiumCpmmSwap: ev };
59
+ }
60
+ function parseCreatePoolFromData(data, metadata) {
61
+ let o = 0;
62
+ const pool_state = (0, binary_js_1.readPubkey)(data, o);
63
+ o += 32;
64
+ o += 32;
65
+ o += 32;
66
+ const creator = (0, binary_js_1.readPubkey)(data, o);
67
+ o += 32;
68
+ const initial_amount_0 = bn64((0, binary_js_1.readU64LE)(data, o));
69
+ o += 8;
70
+ const initial_amount_1 = bn64((0, binary_js_1.readU64LE)(data, o));
71
+ const ev = {
72
+ metadata,
73
+ pool: pool_state,
74
+ creator,
75
+ init_amount0: initial_amount_0,
76
+ init_amount1: initial_amount_1,
77
+ };
78
+ return { RaydiumCpmmInitialize: ev };
79
+ }
80
+ function parseDepositFromData(data, metadata) {
81
+ let o = 0;
82
+ const pool_state = (0, binary_js_1.readPubkey)(data, o);
83
+ o += 32;
84
+ const user = (0, binary_js_1.readPubkey)(data, o);
85
+ o += 32;
86
+ const lp_token_amount = bn64((0, binary_js_1.readU64LE)(data, o));
87
+ o += 8;
88
+ const token_0_amount = bn64((0, binary_js_1.readU64LE)(data, o));
89
+ o += 8;
90
+ const token_1_amount = bn64((0, binary_js_1.readU64LE)(data, o));
91
+ const ev = {
92
+ metadata,
93
+ pool: pool_state,
94
+ user,
95
+ lp_token_amount,
96
+ token0_amount: token_0_amount,
97
+ token1_amount: token_1_amount,
98
+ };
99
+ return { RaydiumCpmmDeposit: ev };
100
+ }
101
+ function parseWithdrawFromData(data, metadata) {
102
+ let o = 0;
103
+ const pool_state = (0, binary_js_1.readPubkey)(data, o);
104
+ o += 32;
105
+ const user = (0, binary_js_1.readPubkey)(data, o);
106
+ o += 32;
107
+ const lp_token_amount = bn64((0, binary_js_1.readU64LE)(data, o));
108
+ o += 8;
109
+ const token_0_amount = bn64((0, binary_js_1.readU64LE)(data, o));
110
+ o += 8;
111
+ const token_1_amount = bn64((0, binary_js_1.readU64LE)(data, o));
112
+ const ev = {
113
+ metadata,
114
+ pool: pool_state,
115
+ user,
116
+ lp_token_amount,
117
+ token0_amount: token_0_amount,
118
+ token1_amount: token_1_amount,
119
+ };
120
+ return { RaydiumCpmmWithdraw: ev };
121
+ }
@@ -0,0 +1,10 @@
1
+ /** Raydium LaunchLab 日志解析 */
2
+ import type { EventMetadata } from "../core/metadata.js";
3
+ import type { DexEvent } from "../core/dex_event.js";
4
+ export declare const RAYDIUM_LAUNCHLAB_DISC: {
5
+ TRADE: bigint;
6
+ POOL_CREATE: bigint;
7
+ };
8
+ export declare function parseRaydiumLaunchlabTradeFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
9
+ export declare function parseRaydiumLaunchlabPoolCreateFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
10
+ export declare function parseRaydiumLaunchlabFromDiscriminator(discriminator: bigint, data: Uint8Array, metadata: EventMetadata): DexEvent | null;
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RAYDIUM_LAUNCHLAB_DISC = void 0;
4
+ exports.parseRaydiumLaunchlabTradeFromData = parseRaydiumLaunchlabTradeFromData;
5
+ exports.parseRaydiumLaunchlabPoolCreateFromData = parseRaydiumLaunchlabPoolCreateFromData;
6
+ exports.parseRaydiumLaunchlabFromDiscriminator = parseRaydiumLaunchlabFromDiscriminator;
7
+ const binary_js_1 = require("../util/binary.js");
8
+ function disc(bytes) {
9
+ const u8 = new Uint8Array(8);
10
+ for (let i = 0; i < 8; i++)
11
+ u8[i] = bytes[i];
12
+ return new DataView(u8.buffer).getBigUint64(0, true);
13
+ }
14
+ exports.RAYDIUM_LAUNCHLAB_DISC = {
15
+ TRADE: disc([189, 219, 127, 211, 78, 230, 97, 238]),
16
+ POOL_CREATE: disc([151, 215, 226, 9, 118, 161, 115, 174]),
17
+ };
18
+ function bn64(v) {
19
+ return v ?? 0n;
20
+ }
21
+ function parseRaydiumLaunchlabTradeFromData(data, metadata) {
22
+ const pool_state = (0, binary_js_1.readPubkey)(data, 0);
23
+ const amount_in = (0, binary_js_1.readU64LE)(data, 88);
24
+ const amount_out = (0, binary_js_1.readU64LE)(data, 96);
25
+ const trade_direction = (0, binary_js_1.readU8)(data, 136);
26
+ const exact_in = (0, binary_js_1.readBool)(data, 138);
27
+ if (!pool_state || amount_in === null || amount_out === null || trade_direction === null || exact_in === null) {
28
+ return null;
29
+ }
30
+ const is_buy = trade_direction === 0;
31
+ const ev = {
32
+ metadata,
33
+ pool_state,
34
+ user: "11111111111111111111111111111111",
35
+ amount_in: bn64(amount_in),
36
+ amount_out: bn64(amount_out),
37
+ is_buy,
38
+ trade_direction: is_buy ? "Buy" : "Sell",
39
+ exact_in,
40
+ };
41
+ return { RaydiumLaunchlabTrade: ev };
42
+ }
43
+ function parseRaydiumLaunchlabPoolCreateFromData(data, metadata) {
44
+ if (data.length < 97)
45
+ return null;
46
+ let o = 0;
47
+ const pool_state = (0, binary_js_1.readPubkey)(data, o);
48
+ o += 32;
49
+ const creator = (0, binary_js_1.readPubkey)(data, o);
50
+ o += 32;
51
+ const config = (0, binary_js_1.readPubkey)(data, o);
52
+ if (!pool_state || !creator || !config)
53
+ return null;
54
+ o += 32;
55
+ const decimals = (0, binary_js_1.readU8)(data, o);
56
+ if (decimals === null)
57
+ return null;
58
+ o += 1;
59
+ const name = (0, binary_js_1.readBorshString)(data, o);
60
+ if (!name)
61
+ return null;
62
+ o = name.next;
63
+ const symbol = (0, binary_js_1.readBorshString)(data, o);
64
+ if (!symbol)
65
+ return null;
66
+ o = symbol.next;
67
+ const uri = (0, binary_js_1.readBorshString)(data, o);
68
+ if (!uri)
69
+ return null;
70
+ const ev = {
71
+ metadata,
72
+ base_mint_param: { symbol: symbol.s, name: name.s, uri: uri.s, decimals },
73
+ pool_state,
74
+ creator,
75
+ };
76
+ return { RaydiumLaunchlabPoolCreate: ev };
77
+ }
78
+ function parseRaydiumLaunchlabFromDiscriminator(discriminator, data, metadata) {
79
+ if (discriminator === exports.RAYDIUM_LAUNCHLAB_DISC.TRADE)
80
+ return parseRaydiumLaunchlabTradeFromData(data, metadata);
81
+ if (discriminator === exports.RAYDIUM_LAUNCHLAB_DISC.POOL_CREATE)
82
+ return parseRaydiumLaunchlabPoolCreateFromData(data, metadata);
83
+ return null;
84
+ }
@@ -0,0 +1,12 @@
1
+ /** Raydium Launchpad / Bonk 日志解析 */
2
+ import type { EventMetadata } from "../core/metadata.js";
3
+ import type { DexEvent } from "../core/dex_event.js";
4
+ export declare const BONK_DISC: {
5
+ TRADE: bigint;
6
+ POOL_CREATE: bigint;
7
+ MIGRATE_AMM: bigint;
8
+ };
9
+ export declare function parseBonkTradeFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
10
+ export declare function parseBonkPoolCreateFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
11
+ export declare function parseBonkMigrateAmmFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
12
+ export declare function parseBonkFromDiscriminator(discriminator: bigint, data: Uint8Array, metadata: EventMetadata): DexEvent | null;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BONK_DISC = void 0;
4
+ exports.parseBonkTradeFromData = parseBonkTradeFromData;
5
+ exports.parseBonkPoolCreateFromData = parseBonkPoolCreateFromData;
6
+ exports.parseBonkMigrateAmmFromData = parseBonkMigrateAmmFromData;
7
+ exports.parseBonkFromDiscriminator = parseBonkFromDiscriminator;
8
+ const binary_js_1 = require("../util/binary.js");
9
+ function disc(bytes) {
10
+ const u8 = new Uint8Array(8);
11
+ for (let i = 0; i < 8; i++)
12
+ u8[i] = bytes[i];
13
+ return new DataView(u8.buffer).getBigUint64(0, true);
14
+ }
15
+ exports.BONK_DISC = {
16
+ TRADE: disc([2, 3, 4, 5, 6, 7, 8, 9]),
17
+ POOL_CREATE: disc([1, 2, 3, 4, 5, 6, 7, 8]),
18
+ MIGRATE_AMM: disc([3, 4, 5, 6, 7, 8, 9, 10]),
19
+ };
20
+ function bn64(v) {
21
+ return v ?? 0n;
22
+ }
23
+ function parseBonkTradeFromData(data, metadata) {
24
+ if (data.length < 32 + 32 + 8 + 8 + 1 + 1)
25
+ return null;
26
+ let o = 0;
27
+ const pool_state = (0, binary_js_1.readPubkey)(data, o);
28
+ o += 32;
29
+ const user = (0, binary_js_1.readPubkey)(data, o);
30
+ o += 32;
31
+ const amount_in = bn64((0, binary_js_1.readU64LE)(data, o));
32
+ o += 8;
33
+ const amount_out = bn64((0, binary_js_1.readU64LE)(data, o));
34
+ o += 8;
35
+ const is_buy = (0, binary_js_1.readBool)(data, o);
36
+ o += 1;
37
+ const exact_in = (0, binary_js_1.readBool)(data, o);
38
+ const ev = {
39
+ metadata,
40
+ pool_state,
41
+ user,
42
+ amount_in,
43
+ amount_out,
44
+ is_buy,
45
+ trade_direction: is_buy ? "Buy" : "Sell",
46
+ exact_in,
47
+ };
48
+ return { BonkTrade: ev };
49
+ }
50
+ function parseBonkPoolCreateFromData(data, metadata) {
51
+ if (data.length < 32 + 32 + 32 + 32 + 8 + 8)
52
+ return null;
53
+ let o = 0;
54
+ const pool_state = (0, binary_js_1.readPubkey)(data, o);
55
+ o += 32;
56
+ o += 32;
57
+ o += 32;
58
+ const creator = (0, binary_js_1.readPubkey)(data, o);
59
+ o += 32;
60
+ o += 8;
61
+ o += 8;
62
+ const ev = {
63
+ metadata,
64
+ base_mint_param: { symbol: "BONK", name: "Bonk Pool", uri: "https://bonk.com", decimals: 5 },
65
+ pool_state,
66
+ creator,
67
+ };
68
+ return { BonkPoolCreate: ev };
69
+ }
70
+ function parseBonkMigrateAmmFromData(data, metadata) {
71
+ if (data.length < 32 + 32 + 32 + 8)
72
+ return null;
73
+ let o = 0;
74
+ const old_pool = (0, binary_js_1.readPubkey)(data, o);
75
+ o += 32;
76
+ const new_pool = (0, binary_js_1.readPubkey)(data, o);
77
+ o += 32;
78
+ const user = (0, binary_js_1.readPubkey)(data, o);
79
+ o += 32;
80
+ const liquidity_amount = bn64((0, binary_js_1.readU64LE)(data, o));
81
+ const ev = { metadata, old_pool, new_pool, user, liquidity_amount };
82
+ return { BonkMigrateAmm: ev };
83
+ }
84
+ function parseBonkFromDiscriminator(discriminator, data, metadata) {
85
+ if (discriminator === exports.BONK_DISC.TRADE)
86
+ return parseBonkTradeFromData(data, metadata);
87
+ if (discriminator === exports.BONK_DISC.POOL_CREATE)
88
+ return parseBonkPoolCreateFromData(data, metadata);
89
+ if (discriminator === exports.BONK_DISC.MIGRATE_AMM)
90
+ return parseBonkMigrateAmmFromData(data, metadata);
91
+ return null;
92
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Rust `logs` 模块中 `parse_*_log` / `parse_log_*` 命名风格的别名(与现有 TS 实现对应)。
3
+ */
4
+ export { parseMeteoraDammLog as parse_meteora_damm_log } from "./meteora_damm.js";
5
+ export { parseMeteoraDbcFromDiscriminator as parse_meteora_dbc_from_discriminator } from "./meteora_dbc.js";
6
+ export { parseMeteoraDlmmLog as parse_meteora_dlmm_log } from "./meteora_dlmm.js";
7
+ export { parseLogOptimized as parse_log_optimized, parseLogOptimizedWithProgramId as parse_log_optimized_with_program_id, parseLogUnified as parse_log_unified, } from "./optimized_matcher.js";
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parse_log_unified = exports.parse_log_optimized_with_program_id = exports.parse_log_optimized = exports.parse_meteora_dlmm_log = exports.parse_meteora_dbc_from_discriminator = exports.parse_meteora_damm_log = void 0;
4
+ /**
5
+ * Rust `logs` 模块中 `parse_*_log` / `parse_log_*` 命名风格的别名(与现有 TS 实现对应)。
6
+ */
7
+ var meteora_damm_js_1 = require("./meteora_damm.js");
8
+ Object.defineProperty(exports, "parse_meteora_damm_log", { enumerable: true, get: function () { return meteora_damm_js_1.parseMeteoraDammLog; } });
9
+ var meteora_dbc_js_1 = require("./meteora_dbc.js");
10
+ Object.defineProperty(exports, "parse_meteora_dbc_from_discriminator", { enumerable: true, get: function () { return meteora_dbc_js_1.parseMeteoraDbcFromDiscriminator; } });
11
+ var meteora_dlmm_js_1 = require("./meteora_dlmm.js");
12
+ Object.defineProperty(exports, "parse_meteora_dlmm_log", { enumerable: true, get: function () { return meteora_dlmm_js_1.parseMeteoraDlmmLog; } });
13
+ var optimized_matcher_js_1 = require("./optimized_matcher.js");
14
+ Object.defineProperty(exports, "parse_log_optimized", { enumerable: true, get: function () { return optimized_matcher_js_1.parseLogOptimized; } });
15
+ Object.defineProperty(exports, "parse_log_optimized_with_program_id", { enumerable: true, get: function () { return optimized_matcher_js_1.parseLogOptimizedWithProgramId; } });
16
+ Object.defineProperty(exports, "parse_log_unified", { enumerable: true, get: function () { return optimized_matcher_js_1.parseLogUnified; } });
@@ -0,0 +1,3 @@
1
+ import type { DexEvent } from "./core/dex_event.js";
2
+ /** `DexEvent` 别名(兼容旧导入名) */
3
+ export type ParsedEvent = DexEvent;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,17 @@
1
+ import { Connection } from "@solana/web3.js";
2
+ import type { DexEvent } from "./core/dex_event.js";
3
+ import type { EventTypeFilter } from "./grpc/types.js";
4
+ import type { ParseError } from "./core/error.js";
5
+ export { parseRpcTransaction, fillAccountsFromTransactionDataRpc, fillDataRpc, applyAccountFillsToLogEvents, } from "./rpc_transaction.js";
6
+ export { convertRpcToGrpc, convert_rpc_to_grpc, type ConvertRpcToGrpcOk, type ConvertRpcToGrpcErr, } from "./grpc/rpc_to_grpc.js";
7
+ /**
8
+ * 通过 RPC 拉取交易并解析:
9
+ * 外层 + 内层编译指令 + 日志;不含账户字段填充(需另行调用 RPC 填充 API)。
10
+ */
11
+ export declare function parseTransactionFromRpc(connection: Connection, signature: string, filter?: EventTypeFilter): Promise<{
12
+ ok: true;
13
+ events: DexEvent[];
14
+ } | {
15
+ ok: false;
16
+ error: ParseError;
17
+ }>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convert_rpc_to_grpc = exports.convertRpcToGrpc = exports.applyAccountFillsToLogEvents = exports.fillDataRpc = exports.fillAccountsFromTransactionDataRpc = exports.parseRpcTransaction = void 0;
4
+ exports.parseTransactionFromRpc = parseTransactionFromRpc;
5
+ const rpc_transaction_js_1 = require("./rpc_transaction.js");
6
+ var rpc_transaction_js_2 = require("./rpc_transaction.js");
7
+ Object.defineProperty(exports, "parseRpcTransaction", { enumerable: true, get: function () { return rpc_transaction_js_2.parseRpcTransaction; } });
8
+ Object.defineProperty(exports, "fillAccountsFromTransactionDataRpc", { enumerable: true, get: function () { return rpc_transaction_js_2.fillAccountsFromTransactionDataRpc; } });
9
+ Object.defineProperty(exports, "fillDataRpc", { enumerable: true, get: function () { return rpc_transaction_js_2.fillDataRpc; } });
10
+ Object.defineProperty(exports, "applyAccountFillsToLogEvents", { enumerable: true, get: function () { return rpc_transaction_js_2.applyAccountFillsToLogEvents; } });
11
+ var rpc_to_grpc_js_1 = require("./grpc/rpc_to_grpc.js");
12
+ Object.defineProperty(exports, "convertRpcToGrpc", { enumerable: true, get: function () { return rpc_to_grpc_js_1.convertRpcToGrpc; } });
13
+ Object.defineProperty(exports, "convert_rpc_to_grpc", { enumerable: true, get: function () { return rpc_to_grpc_js_1.convert_rpc_to_grpc; } });
14
+ /**
15
+ * 通过 RPC 拉取交易并解析:
16
+ * 外层 + 内层编译指令 + 日志;不含账户字段填充(需另行调用 RPC 填充 API)。
17
+ */
18
+ async function parseTransactionFromRpc(connection, signature, filter) {
19
+ try {
20
+ const tx = await connection.getTransaction(signature, {
21
+ maxSupportedTransactionVersion: 0,
22
+ });
23
+ if (!tx) {
24
+ return {
25
+ ok: false,
26
+ error: {
27
+ kind: "RpcError",
28
+ message: "Transaction not found or null response (try archive RPC for old txs).",
29
+ },
30
+ };
31
+ }
32
+ const grpcRecvUs = Math.floor(Date.now() * 1000);
33
+ return (0, rpc_transaction_js_1.parseRpcTransaction)(tx, signature, filter, { grpcRecvUs });
34
+ }
35
+ catch (e) {
36
+ const msg = e instanceof Error ? e.message : String(e);
37
+ return { ok: false, error: { kind: "RpcError", message: msg } };
38
+ }
39
+ }
@@ -0,0 +1,27 @@
1
+ import { type VersionedTransactionResponse } from "@solana/web3.js";
2
+ import type { Message, MessageV0 } from "@solana/web3.js";
3
+ import type { ConfirmedTransactionMeta } from "@solana/web3.js";
4
+ import type { DexEvent } from "./core/dex_event.js";
5
+ import type { ParseError } from "./core/error.js";
6
+ import type { EventTypeFilter } from "./grpc/types.js";
7
+ /**
8
+ * 与 Rust gRPC `parse_logs` 中 `fill_accounts_from_transaction_data` + `fill_data` 对齐:
9
+ * 对已由日志解析出的 `DexEvent` 用交易 message + meta 补全账户等字段。
10
+ */
11
+ export declare function applyAccountFillsToLogEvents(events: DexEvent[], msg: Message | MessageV0, meta: ConfirmedTransactionMeta | null): void;
12
+ /**
13
+ * 解析已获取的 `VersionedTransactionResponse`(顺序:指令 → 日志 → 账户/数据填充)。
14
+ */
15
+ export declare function parseRpcTransaction(tx: VersionedTransactionResponse, signature: string, filter?: EventTypeFilter, options?: {
16
+ grpcRecvUs?: number;
17
+ txIndex?: number;
18
+ blockTimeUs?: number;
19
+ }): {
20
+ ok: true;
21
+ events: DexEvent[];
22
+ } | {
23
+ ok: false;
24
+ error: ParseError;
25
+ };
26
+ export { fillAccountsFromTransactionDataRpc } from "./core/account_dispatcher_rpc.js";
27
+ export { fillDataRpc } from "./core/common_filler_rpc.js";