sol-parser-sdk-nodejs 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +449 -0
  3. package/README_CN.md +343 -0
  4. package/dist/accounts/mod.d.ts +11 -0
  5. package/dist/accounts/mod.js +53 -0
  6. package/dist/accounts/nonce.d.ts +5 -0
  7. package/dist/accounts/nonce.js +32 -0
  8. package/dist/accounts/pumpswap.d.ts +8 -0
  9. package/dist/accounts/pumpswap.js +192 -0
  10. package/dist/accounts/token.d.ts +5 -0
  11. package/dist/accounts/token.js +98 -0
  12. package/dist/accounts/types.d.ts +9 -0
  13. package/dist/accounts/types.js +2 -0
  14. package/dist/accounts/utils.d.ts +1 -0
  15. package/dist/accounts/utils.js +12 -0
  16. package/dist/core/account_dispatcher_rpc.d.ts +11 -0
  17. package/dist/core/account_dispatcher_rpc.js +155 -0
  18. package/dist/core/account_fill_bonk.d.ts +4 -0
  19. package/dist/core/account_fill_bonk.js +20 -0
  20. package/dist/core/account_fill_meteora.d.ts +14 -0
  21. package/dist/core/account_fill_meteora.js +26 -0
  22. package/dist/core/account_fill_orca.d.ts +5 -0
  23. package/dist/core/account_fill_orca.js +18 -0
  24. package/dist/core/account_fill_pumpfun.d.ts +7 -0
  25. package/dist/core/account_fill_pumpfun.js +75 -0
  26. package/dist/core/account_fill_pumpswap.d.ts +10 -0
  27. package/dist/core/account_fill_pumpswap.js +78 -0
  28. package/dist/core/account_fill_raydium.d.ts +20 -0
  29. package/dist/core/account_fill_raydium.js +104 -0
  30. package/dist/core/clock.d.ts +2 -0
  31. package/dist/core/clock.js +7 -0
  32. package/dist/core/common_filler_rpc.d.ts +6 -0
  33. package/dist/core/common_filler_rpc.js +21 -0
  34. package/dist/core/dex_event.d.ts +1009 -0
  35. package/dist/core/dex_event.js +14 -0
  36. package/dist/core/error.d.ts +43 -0
  37. package/dist/core/error.js +16 -0
  38. package/dist/core/json_utils.d.ts +8 -0
  39. package/dist/core/json_utils.js +18 -0
  40. package/dist/core/metadata.d.ts +10 -0
  41. package/dist/core/metadata.js +13 -0
  42. package/dist/core/rpc_invoke_map.d.ts +23 -0
  43. package/dist/core/rpc_invoke_map.js +157 -0
  44. package/dist/core/unified_parser.d.ts +19 -0
  45. package/dist/core/unified_parser.js +48 -0
  46. package/dist/grpc/client.d.ts +52 -0
  47. package/dist/grpc/client.js +309 -0
  48. package/dist/grpc/client_stub.d.ts +5 -0
  49. package/dist/grpc/client_stub.js +5 -0
  50. package/dist/grpc/types.d.ts +132 -0
  51. package/dist/grpc/types.js +304 -0
  52. package/dist/grpc/yellowstone_parse.d.ts +9 -0
  53. package/dist/grpc/yellowstone_parse.js +46 -0
  54. package/dist/index.d.ts +18 -0
  55. package/dist/index.js +99 -0
  56. package/dist/instr/bonk_ix.d.ts +5 -0
  57. package/dist/instr/bonk_ix.js +52 -0
  58. package/dist/instr/meteora_damm_ix.d.ts +6 -0
  59. package/dist/instr/meteora_damm_ix.js +349 -0
  60. package/dist/instr/mod.d.ts +15 -0
  61. package/dist/instr/mod.js +95 -0
  62. package/dist/instr/orca_whirlpool_ix.d.ts +5 -0
  63. package/dist/instr/orca_whirlpool_ix.js +73 -0
  64. package/dist/instr/program_ids.d.ts +14 -0
  65. package/dist/instr/program_ids.js +18 -0
  66. package/dist/instr/pumpfun_ix.d.ts +5 -0
  67. package/dist/instr/pumpfun_ix.js +167 -0
  68. package/dist/instr/pumpswap_ix.d.ts +5 -0
  69. package/dist/instr/pumpswap_ix.js +215 -0
  70. package/dist/instr/raydium_amm_v4_ix.d.ts +6 -0
  71. package/dist/instr/raydium_amm_v4_ix.js +46 -0
  72. package/dist/instr/raydium_clmm_ix.d.ts +5 -0
  73. package/dist/instr/raydium_clmm_ix.js +85 -0
  74. package/dist/instr/raydium_cpmm_ix.d.ts +5 -0
  75. package/dist/instr/raydium_cpmm_ix.js +63 -0
  76. package/dist/instr/utils.d.ts +10 -0
  77. package/dist/instr/utils.js +33 -0
  78. package/dist/logs/meteora_amm.d.ts +8 -0
  79. package/dist/logs/meteora_amm.js +113 -0
  80. package/dist/logs/meteora_damm.d.ts +6 -0
  81. package/dist/logs/meteora_damm.js +509 -0
  82. package/dist/logs/meteora_dlmm.d.ts +6 -0
  83. package/dist/logs/meteora_dlmm.js +201 -0
  84. package/dist/logs/optimized_matcher.d.ts +5 -0
  85. package/dist/logs/optimized_matcher.js +194 -0
  86. package/dist/logs/orca.d.ts +6 -0
  87. package/dist/logs/orca.js +148 -0
  88. package/dist/logs/program_data.d.ts +2 -0
  89. package/dist/logs/program_data.js +22 -0
  90. package/dist/logs/program_log_discriminators.d.ts +59 -0
  91. package/dist/logs/program_log_discriminators.js +67 -0
  92. package/dist/logs/pump.d.ts +12 -0
  93. package/dist/logs/pump.js +251 -0
  94. package/dist/logs/pump_amm.d.ts +9 -0
  95. package/dist/logs/pump_amm.js +418 -0
  96. package/dist/logs/raydium_amm.d.ts +9 -0
  97. package/dist/logs/raydium_amm.js +224 -0
  98. package/dist/logs/raydium_clmm.d.ts +8 -0
  99. package/dist/logs/raydium_clmm.js +141 -0
  100. package/dist/logs/raydium_cpmm.d.ts +7 -0
  101. package/dist/logs/raydium_cpmm.js +121 -0
  102. package/dist/logs/raydium_launchpad.d.ts +12 -0
  103. package/dist/logs/raydium_launchpad.js +92 -0
  104. package/dist/parser_alias.d.ts +3 -0
  105. package/dist/parser_alias.js +2 -0
  106. package/dist/rpc_parser.d.ts +16 -0
  107. package/dist/rpc_parser.js +36 -0
  108. package/dist/rpc_transaction.d.ts +25 -0
  109. package/dist/rpc_transaction.js +111 -0
  110. package/dist/util/binary.d.ts +14 -0
  111. package/dist/util/binary.js +82 -0
  112. package/dist/warmup.d.ts +3 -0
  113. package/dist/warmup.js +23 -0
  114. package/package.json +44 -0
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PROGRAM_LOG_DISC = exports.PUMPSWAP_DISC = void 0;
4
+ exports.u64leDiscriminator = u64leDiscriminator;
5
+ /**
6
+ * Anchor `emit!` / program data 日志的前 8 字节 discriminator(小端 u64)。
7
+ * 本仓库内唯一权威列表;变更须同步 `scripts/program-log-discriminators.json` 并运行 `npm run verify:discriminators`。
8
+ */
9
+ function u64leDiscriminator(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
+ /** PumpSwap(pAMMBay)program data 事件 */
16
+ exports.PUMPSWAP_DISC = {
17
+ BUY: u64leDiscriminator([103, 244, 82, 31, 44, 245, 119, 119]),
18
+ SELL: u64leDiscriminator([62, 47, 55, 10, 165, 3, 220, 42]),
19
+ CREATE_POOL: u64leDiscriminator([177, 49, 12, 210, 160, 118, 167, 116]),
20
+ ADD_LIQUIDITY: u64leDiscriminator([120, 248, 61, 83, 31, 142, 107, 144]),
21
+ REMOVE_LIQUIDITY: u64leDiscriminator([22, 9, 133, 26, 160, 44, 71, 192]),
22
+ };
23
+ /**
24
+ * `parseLogOptimized` 使用的全部分支 discriminator(含 PumpSwap 引用上表)。
25
+ */
26
+ exports.PROGRAM_LOG_DISC = {
27
+ PUMPFUN_CREATE: u64leDiscriminator([27, 114, 169, 77, 222, 235, 99, 118]),
28
+ PUMPFUN_TRADE: u64leDiscriminator([189, 219, 127, 211, 78, 230, 97, 238]),
29
+ PUMPFUN_MIGRATE: u64leDiscriminator([189, 233, 93, 185, 92, 148, 234, 148]),
30
+ PUMPSWAP_BUY: exports.PUMPSWAP_DISC.BUY,
31
+ PUMPSWAP_SELL: exports.PUMPSWAP_DISC.SELL,
32
+ PUMPSWAP_CREATE_POOL: exports.PUMPSWAP_DISC.CREATE_POOL,
33
+ PUMPSWAP_ADD_LIQUIDITY: exports.PUMPSWAP_DISC.ADD_LIQUIDITY,
34
+ PUMPSWAP_REMOVE_LIQUIDITY: exports.PUMPSWAP_DISC.REMOVE_LIQUIDITY,
35
+ RAYDIUM_CLMM_SWAP: u64leDiscriminator([248, 198, 158, 145, 225, 117, 135, 200]),
36
+ RAYDIUM_CLMM_INCREASE_LIQUIDITY: u64leDiscriminator([133, 29, 89, 223, 69, 238, 176, 10]),
37
+ RAYDIUM_CLMM_DECREASE_LIQUIDITY: u64leDiscriminator([160, 38, 208, 111, 104, 91, 44, 1]),
38
+ RAYDIUM_CLMM_CREATE_POOL: u64leDiscriminator([233, 146, 209, 142, 207, 104, 64, 188]),
39
+ RAYDIUM_CLMM_COLLECT_FEE: u64leDiscriminator([164, 152, 207, 99, 187, 104, 171, 119]),
40
+ RAYDIUM_CPMM_SWAP_BASE_IN: u64leDiscriminator([143, 190, 90, 218, 196, 30, 51, 222]),
41
+ RAYDIUM_CPMM_SWAP_BASE_OUT: u64leDiscriminator([55, 217, 98, 86, 163, 74, 180, 173]),
42
+ RAYDIUM_CPMM_DEPOSIT: u64leDiscriminator([242, 35, 198, 137, 82, 225, 242, 182]),
43
+ RAYDIUM_CPMM_WITHDRAW: u64leDiscriminator([183, 18, 70, 156, 148, 109, 161, 34]),
44
+ RAYDIUM_AMM_SWAP_BASE_IN: u64leDiscriminator([0, 0, 0, 0, 0, 0, 0, 9]),
45
+ RAYDIUM_AMM_SWAP_BASE_OUT: u64leDiscriminator([0, 0, 0, 0, 0, 0, 0, 11]),
46
+ RAYDIUM_AMM_DEPOSIT: u64leDiscriminator([0, 0, 0, 0, 0, 0, 0, 3]),
47
+ RAYDIUM_AMM_WITHDRAW: u64leDiscriminator([0, 0, 0, 0, 0, 0, 0, 4]),
48
+ RAYDIUM_AMM_INITIALIZE2: u64leDiscriminator([0, 0, 0, 0, 0, 0, 0, 1]),
49
+ RAYDIUM_AMM_WITHDRAW_PNL: u64leDiscriminator([0, 0, 0, 0, 0, 0, 0, 7]),
50
+ ORCA_TRADED: u64leDiscriminator([225, 202, 73, 175, 147, 43, 160, 150]),
51
+ ORCA_LIQUIDITY_INCREASED: u64leDiscriminator([30, 7, 144, 181, 102, 254, 155, 161]),
52
+ ORCA_LIQUIDITY_DECREASED: u64leDiscriminator([166, 1, 36, 71, 112, 202, 181, 171]),
53
+ ORCA_POOL_INITIALIZED: u64leDiscriminator([100, 118, 173, 87, 12, 198, 254, 229]),
54
+ METEORA_AMM_SWAP: u64leDiscriminator([81, 108, 227, 190, 205, 208, 10, 196]),
55
+ METEORA_AMM_ADD_LIQUIDITY: u64leDiscriminator([31, 94, 125, 90, 227, 52, 61, 186]),
56
+ METEORA_AMM_REMOVE_LIQUIDITY: u64leDiscriminator([116, 244, 97, 232, 103, 31, 152, 58]),
57
+ METEORA_AMM_BOOTSTRAP_LIQUIDITY: u64leDiscriminator([121, 127, 38, 136, 92, 55, 14, 247]),
58
+ METEORA_AMM_POOL_CREATED: u64leDiscriminator([202, 44, 41, 88, 104, 220, 157, 82]),
59
+ METEORA_AMM_SET_POOL_FEES: u64leDiscriminator([245, 26, 198, 164, 88, 18, 75, 9]),
60
+ METEORA_DAMM_SWAP: u64leDiscriminator([27, 60, 21, 213, 138, 170, 187, 147]),
61
+ METEORA_DAMM_SWAP2: u64leDiscriminator([189, 66, 51, 168, 38, 80, 117, 153]),
62
+ METEORA_DAMM_ADD_LIQUIDITY: u64leDiscriminator([175, 242, 8, 157, 30, 247, 185, 169]),
63
+ METEORA_DAMM_REMOVE_LIQUIDITY: u64leDiscriminator([87, 46, 88, 98, 175, 96, 34, 91]),
64
+ METEORA_DAMM_INITIALIZE_POOL: u64leDiscriminator([228, 50, 246, 85, 203, 66, 134, 37]),
65
+ METEORA_DAMM_CREATE_POSITION: u64leDiscriminator([156, 15, 119, 198, 29, 181, 221, 55]),
66
+ METEORA_DAMM_CLOSE_POSITION: u64leDiscriminator([20, 145, 144, 68, 143, 142, 214, 178]),
67
+ };
@@ -0,0 +1,12 @@
1
+ import type { EventMetadata } from "../core/metadata.js";
2
+ import type { DexEvent } from "../core/dex_event.js";
3
+ export declare function parsePumpFunLogDecoded(programData: Uint8Array, metadata: EventMetadata): DexEvent | null;
4
+ export declare function parseTradeFromData(data: Uint8Array, metadata: EventMetadata, isCreatedBuy: boolean): DexEvent | null;
5
+ export declare function parseCreateFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
6
+ export declare function parseMigrateFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
7
+ /** u64 discriminator little-endian */
8
+ export declare function pumpDiscriminators(): {
9
+ CREATE: bigint;
10
+ TRADE: bigint;
11
+ MIGRATE: bigint;
12
+ };
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parsePumpFunLogDecoded = parsePumpFunLogDecoded;
4
+ exports.parseTradeFromData = parseTradeFromData;
5
+ exports.parseCreateFromData = parseCreateFromData;
6
+ exports.parseMigrateFromData = parseMigrateFromData;
7
+ exports.pumpDiscriminators = pumpDiscriminators;
8
+ const dex_event_js_1 = require("../core/dex_event.js");
9
+ const binary_js_1 = require("../util/binary.js");
10
+ function disc(bytes) {
11
+ const u8 = new Uint8Array(bytes.length);
12
+ for (let i = 0; i < bytes.length; i++)
13
+ u8[i] = bytes[i];
14
+ return (0, binary_js_1.readDiscriminatorU64)(u8);
15
+ }
16
+ const DISC_CREATE = disc([27, 114, 169, 77, 222, 235, 99, 118]);
17
+ const DISC_TRADE = disc([189, 219, 127, 211, 78, 230, 97, 238]);
18
+ const DISC_MIGRATE = disc([189, 233, 93, 185, 92, 148, 234, 148]);
19
+ function bnU64(v) {
20
+ return v ?? 0n;
21
+ }
22
+ function bnI64(v) {
23
+ return v ?? 0n;
24
+ }
25
+ function parsePumpFunLogDecoded(programData, metadata) {
26
+ const disc = (0, binary_js_1.readDiscriminatorU64)(programData);
27
+ if (disc === null)
28
+ return null;
29
+ const data = programData.subarray(8);
30
+ if (disc === DISC_CREATE)
31
+ return parseCreateFromData(data, metadata);
32
+ if (disc === DISC_TRADE)
33
+ return parseTradeFromData(data, metadata, false);
34
+ if (disc === DISC_MIGRATE)
35
+ return parseMigrateFromData(data, metadata);
36
+ return null;
37
+ }
38
+ function parseTradeFromData(data, metadata, isCreatedBuy) {
39
+ if (data.length < 32 + 8 + 8 + 1 + 32 + 8 * 5 + 32 + 8 + 8 + 32 + 8 + 8)
40
+ return null;
41
+ let o = 0;
42
+ const mint = (0, binary_js_1.readPubkey)(data, o);
43
+ if (!mint)
44
+ return null;
45
+ o += 32;
46
+ const sol_amount = bnU64((0, binary_js_1.readU64LE)(data, o));
47
+ o += 8;
48
+ const token_amount = bnU64((0, binary_js_1.readU64LE)(data, o));
49
+ o += 8;
50
+ const is_buy = (0, binary_js_1.readBool)(data, o);
51
+ if (is_buy === null)
52
+ return null;
53
+ o += 1;
54
+ const user = (0, binary_js_1.readPubkey)(data, o);
55
+ if (!user)
56
+ return null;
57
+ o += 32;
58
+ const timestamp = bnI64((0, binary_js_1.readI64LE)(data, o));
59
+ o += 8;
60
+ const virtual_sol_reserves = bnU64((0, binary_js_1.readU64LE)(data, o));
61
+ o += 8;
62
+ const virtual_token_reserves = bnU64((0, binary_js_1.readU64LE)(data, o));
63
+ o += 8;
64
+ const real_sol_reserves = bnU64((0, binary_js_1.readU64LE)(data, o));
65
+ o += 8;
66
+ const real_token_reserves = bnU64((0, binary_js_1.readU64LE)(data, o));
67
+ o += 8;
68
+ const fee_recipient = (0, binary_js_1.readPubkey)(data, o);
69
+ if (!fee_recipient)
70
+ return null;
71
+ o += 32;
72
+ const fee_basis_points = bnU64((0, binary_js_1.readU64LE)(data, o));
73
+ o += 8;
74
+ const fee = bnU64((0, binary_js_1.readU64LE)(data, o));
75
+ o += 8;
76
+ const creator = (0, binary_js_1.readPubkey)(data, o);
77
+ if (!creator)
78
+ return null;
79
+ o += 32;
80
+ const creator_fee_basis_points = bnU64((0, binary_js_1.readU64LE)(data, o));
81
+ o += 8;
82
+ const creator_fee = bnU64((0, binary_js_1.readU64LE)(data, o));
83
+ o += 8;
84
+ const track_volume = (0, binary_js_1.readBool)(data, o) ?? false;
85
+ o += 1;
86
+ const total_unclaimed_tokens = o + 8 <= data.length ? bnU64((0, binary_js_1.readU64LE)(data, o)) : 0n;
87
+ o += 8;
88
+ const total_claimed_tokens = o + 8 <= data.length ? bnU64((0, binary_js_1.readU64LE)(data, o)) : 0n;
89
+ o += 8;
90
+ const current_sol_volume = o + 8 <= data.length ? bnU64((0, binary_js_1.readU64LE)(data, o)) : 0n;
91
+ o += 8;
92
+ const last_update_timestamp = o + 8 <= data.length ? bnI64((0, binary_js_1.readI64LE)(data, o)) : 0n;
93
+ o += 8;
94
+ let ix_name = "";
95
+ if (o + 4 <= data.length) {
96
+ const rs = (0, binary_js_1.readBorshString)(data, o);
97
+ if (rs) {
98
+ ix_name = rs.s;
99
+ o = rs.next;
100
+ }
101
+ }
102
+ const mayhem_mode = (0, binary_js_1.readBool)(data, o) ?? false;
103
+ o += 1;
104
+ const cashback_fee_basis_points = o + 8 <= data.length ? bnU64((0, binary_js_1.readU64LE)(data, o)) : 0n;
105
+ o += 8;
106
+ const cashback = o + 8 <= data.length ? bnU64((0, binary_js_1.readU64LE)(data, o)) : 0n;
107
+ const trade = {
108
+ metadata,
109
+ mint,
110
+ sol_amount,
111
+ token_amount,
112
+ is_buy,
113
+ is_created_buy: isCreatedBuy,
114
+ user,
115
+ timestamp,
116
+ virtual_sol_reserves,
117
+ virtual_token_reserves,
118
+ real_sol_reserves,
119
+ real_token_reserves,
120
+ fee_recipient,
121
+ fee_basis_points,
122
+ fee,
123
+ creator,
124
+ creator_fee_basis_points,
125
+ creator_fee,
126
+ track_volume,
127
+ total_unclaimed_tokens,
128
+ total_claimed_tokens,
129
+ current_sol_volume,
130
+ last_update_timestamp,
131
+ ix_name,
132
+ mayhem_mode,
133
+ cashback_fee_basis_points,
134
+ cashback,
135
+ is_cashback_coin: cashback_fee_basis_points > 0n,
136
+ bonding_curve: (0, dex_event_js_1.defaultPubkey)(),
137
+ associated_bonding_curve: (0, dex_event_js_1.defaultPubkey)(),
138
+ token_program: (0, dex_event_js_1.defaultPubkey)(),
139
+ creator_vault: (0, dex_event_js_1.defaultPubkey)(),
140
+ };
141
+ if (ix_name === "buy")
142
+ return { PumpFunBuy: trade };
143
+ if (ix_name === "sell")
144
+ return { PumpFunSell: trade };
145
+ if (ix_name === "buy_exact_sol_in")
146
+ return { PumpFunBuyExactSolIn: trade };
147
+ return { PumpFunTrade: trade };
148
+ }
149
+ function parseCreateFromData(data, metadata) {
150
+ let o = 0;
151
+ const n1 = (0, binary_js_1.readBorshString)(data, o);
152
+ if (!n1)
153
+ return null;
154
+ o = n1.next;
155
+ const n2 = (0, binary_js_1.readBorshString)(data, o);
156
+ if (!n2)
157
+ return null;
158
+ o = n2.next;
159
+ const n3 = (0, binary_js_1.readBorshString)(data, o);
160
+ if (!n3)
161
+ return null;
162
+ o = n3.next;
163
+ if (data.length < o + 32 * 4 + 8 * 5 + 32 + 1)
164
+ return null;
165
+ const mint = (0, binary_js_1.readPubkey)(data, o);
166
+ if (!mint)
167
+ return null;
168
+ o += 32;
169
+ const bonding_curve = (0, binary_js_1.readPubkey)(data, o);
170
+ if (!bonding_curve)
171
+ return null;
172
+ o += 32;
173
+ const user = (0, binary_js_1.readPubkey)(data, o);
174
+ if (!user)
175
+ return null;
176
+ o += 32;
177
+ const creator = (0, binary_js_1.readPubkey)(data, o);
178
+ if (!creator)
179
+ return null;
180
+ o += 32;
181
+ const timestamp = bnI64((0, binary_js_1.readI64LE)(data, o));
182
+ o += 8;
183
+ const virtual_token_reserves = bnU64((0, binary_js_1.readU64LE)(data, o));
184
+ o += 8;
185
+ const virtual_sol_reserves = bnU64((0, binary_js_1.readU64LE)(data, o));
186
+ o += 8;
187
+ const real_token_reserves = bnU64((0, binary_js_1.readU64LE)(data, o));
188
+ o += 8;
189
+ const token_total_supply = bnU64((0, binary_js_1.readU64LE)(data, o));
190
+ o += 8;
191
+ const token_program = o + 32 <= data.length ? (0, binary_js_1.readPubkey)(data, o) : (0, dex_event_js_1.defaultPubkey)();
192
+ o += 32;
193
+ const is_mayhem_mode = (0, binary_js_1.readBool)(data, o) ?? false;
194
+ o += 1;
195
+ const is_cashback_enabled = (0, binary_js_1.readBool)(data, o) ?? false;
196
+ const ev = {
197
+ metadata,
198
+ name: n1.s,
199
+ symbol: n2.s,
200
+ uri: n3.s,
201
+ mint,
202
+ bonding_curve,
203
+ user,
204
+ creator,
205
+ timestamp,
206
+ virtual_token_reserves,
207
+ virtual_sol_reserves,
208
+ real_token_reserves,
209
+ token_total_supply,
210
+ token_program,
211
+ is_mayhem_mode,
212
+ is_cashback_enabled,
213
+ };
214
+ return { PumpFunCreate: ev };
215
+ }
216
+ function parseMigrateFromData(data, metadata) {
217
+ if (data.length < 32 + 32 + 8 + 8 + 8 + 32 + 8 + 32)
218
+ return null;
219
+ let o = 0;
220
+ const user = (0, binary_js_1.readPubkey)(data, o);
221
+ o += 32;
222
+ const mint = (0, binary_js_1.readPubkey)(data, o);
223
+ o += 32;
224
+ const mint_amount = bnU64((0, binary_js_1.readU64LE)(data, o));
225
+ o += 8;
226
+ const sol_amount = bnU64((0, binary_js_1.readU64LE)(data, o));
227
+ o += 8;
228
+ const pool_migration_fee = bnU64((0, binary_js_1.readU64LE)(data, o));
229
+ o += 8;
230
+ const bonding_curve = (0, binary_js_1.readPubkey)(data, o);
231
+ o += 32;
232
+ const timestamp = bnI64((0, binary_js_1.readI64LE)(data, o));
233
+ o += 8;
234
+ const pool = (0, binary_js_1.readPubkey)(data, o);
235
+ const ev = {
236
+ metadata,
237
+ user,
238
+ mint,
239
+ mint_amount,
240
+ sol_amount,
241
+ pool_migration_fee,
242
+ bonding_curve,
243
+ timestamp,
244
+ pool,
245
+ };
246
+ return { PumpFunMigrate: ev };
247
+ }
248
+ /** u64 discriminator little-endian */
249
+ function pumpDiscriminators() {
250
+ return { CREATE: DISC_CREATE, TRADE: DISC_TRADE, MIGRATE: DISC_MIGRATE };
251
+ }
@@ -0,0 +1,9 @@
1
+ import type { EventMetadata } from "../core/metadata.js";
2
+ import type { DexEvent } from "../core/dex_event.js";
3
+ import { PUMPSWAP_DISC } from "./program_log_discriminators.js";
4
+ export { PUMPSWAP_DISC };
5
+ export declare function parseBuyFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
6
+ export declare function parseSellFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
7
+ export declare function parseCreatePoolFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
8
+ export declare function parseAddLiquidityFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
9
+ export declare function parseRemoveLiquidityFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;