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.
- package/LICENSE +21 -0
- package/README.md +449 -0
- package/README_CN.md +343 -0
- package/dist/accounts/mod.d.ts +11 -0
- package/dist/accounts/mod.js +53 -0
- package/dist/accounts/nonce.d.ts +5 -0
- package/dist/accounts/nonce.js +32 -0
- package/dist/accounts/pumpswap.d.ts +8 -0
- package/dist/accounts/pumpswap.js +192 -0
- package/dist/accounts/token.d.ts +5 -0
- package/dist/accounts/token.js +98 -0
- package/dist/accounts/types.d.ts +9 -0
- package/dist/accounts/types.js +2 -0
- package/dist/accounts/utils.d.ts +1 -0
- package/dist/accounts/utils.js +12 -0
- package/dist/core/account_dispatcher_rpc.d.ts +11 -0
- package/dist/core/account_dispatcher_rpc.js +155 -0
- package/dist/core/account_fill_bonk.d.ts +4 -0
- package/dist/core/account_fill_bonk.js +20 -0
- package/dist/core/account_fill_meteora.d.ts +14 -0
- package/dist/core/account_fill_meteora.js +26 -0
- package/dist/core/account_fill_orca.d.ts +5 -0
- package/dist/core/account_fill_orca.js +18 -0
- package/dist/core/account_fill_pumpfun.d.ts +7 -0
- package/dist/core/account_fill_pumpfun.js +75 -0
- package/dist/core/account_fill_pumpswap.d.ts +10 -0
- package/dist/core/account_fill_pumpswap.js +78 -0
- package/dist/core/account_fill_raydium.d.ts +20 -0
- package/dist/core/account_fill_raydium.js +104 -0
- package/dist/core/clock.d.ts +2 -0
- package/dist/core/clock.js +7 -0
- package/dist/core/common_filler_rpc.d.ts +6 -0
- package/dist/core/common_filler_rpc.js +21 -0
- package/dist/core/dex_event.d.ts +1009 -0
- package/dist/core/dex_event.js +14 -0
- package/dist/core/error.d.ts +43 -0
- package/dist/core/error.js +16 -0
- package/dist/core/json_utils.d.ts +8 -0
- package/dist/core/json_utils.js +18 -0
- package/dist/core/metadata.d.ts +10 -0
- package/dist/core/metadata.js +13 -0
- package/dist/core/rpc_invoke_map.d.ts +23 -0
- package/dist/core/rpc_invoke_map.js +157 -0
- package/dist/core/unified_parser.d.ts +19 -0
- package/dist/core/unified_parser.js +48 -0
- package/dist/grpc/client.d.ts +52 -0
- package/dist/grpc/client.js +309 -0
- package/dist/grpc/client_stub.d.ts +5 -0
- package/dist/grpc/client_stub.js +5 -0
- package/dist/grpc/types.d.ts +132 -0
- package/dist/grpc/types.js +304 -0
- package/dist/grpc/yellowstone_parse.d.ts +9 -0
- package/dist/grpc/yellowstone_parse.js +46 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +99 -0
- package/dist/instr/bonk_ix.d.ts +5 -0
- package/dist/instr/bonk_ix.js +52 -0
- package/dist/instr/meteora_damm_ix.d.ts +6 -0
- package/dist/instr/meteora_damm_ix.js +349 -0
- package/dist/instr/mod.d.ts +15 -0
- package/dist/instr/mod.js +95 -0
- package/dist/instr/orca_whirlpool_ix.d.ts +5 -0
- package/dist/instr/orca_whirlpool_ix.js +73 -0
- package/dist/instr/program_ids.d.ts +14 -0
- package/dist/instr/program_ids.js +18 -0
- package/dist/instr/pumpfun_ix.d.ts +5 -0
- package/dist/instr/pumpfun_ix.js +167 -0
- package/dist/instr/pumpswap_ix.d.ts +5 -0
- package/dist/instr/pumpswap_ix.js +215 -0
- package/dist/instr/raydium_amm_v4_ix.d.ts +6 -0
- package/dist/instr/raydium_amm_v4_ix.js +46 -0
- package/dist/instr/raydium_clmm_ix.d.ts +5 -0
- package/dist/instr/raydium_clmm_ix.js +85 -0
- package/dist/instr/raydium_cpmm_ix.d.ts +5 -0
- package/dist/instr/raydium_cpmm_ix.js +63 -0
- package/dist/instr/utils.d.ts +10 -0
- package/dist/instr/utils.js +33 -0
- package/dist/logs/meteora_amm.d.ts +8 -0
- package/dist/logs/meteora_amm.js +113 -0
- package/dist/logs/meteora_damm.d.ts +6 -0
- package/dist/logs/meteora_damm.js +509 -0
- package/dist/logs/meteora_dlmm.d.ts +6 -0
- package/dist/logs/meteora_dlmm.js +201 -0
- package/dist/logs/optimized_matcher.d.ts +5 -0
- package/dist/logs/optimized_matcher.js +194 -0
- package/dist/logs/orca.d.ts +6 -0
- package/dist/logs/orca.js +148 -0
- package/dist/logs/program_data.d.ts +2 -0
- package/dist/logs/program_data.js +22 -0
- package/dist/logs/program_log_discriminators.d.ts +59 -0
- package/dist/logs/program_log_discriminators.js +67 -0
- package/dist/logs/pump.d.ts +12 -0
- package/dist/logs/pump.js +251 -0
- package/dist/logs/pump_amm.d.ts +9 -0
- package/dist/logs/pump_amm.js +418 -0
- package/dist/logs/raydium_amm.d.ts +9 -0
- package/dist/logs/raydium_amm.js +224 -0
- package/dist/logs/raydium_clmm.d.ts +8 -0
- package/dist/logs/raydium_clmm.js +141 -0
- package/dist/logs/raydium_cpmm.d.ts +7 -0
- package/dist/logs/raydium_cpmm.js +121 -0
- package/dist/logs/raydium_launchpad.d.ts +12 -0
- package/dist/logs/raydium_launchpad.js +92 -0
- package/dist/parser_alias.d.ts +3 -0
- package/dist/parser_alias.js +2 -0
- package/dist/rpc_parser.d.ts +16 -0
- package/dist/rpc_parser.js +36 -0
- package/dist/rpc_transaction.d.ts +25 -0
- package/dist/rpc_transaction.js +111 -0
- package/dist/util/binary.d.ts +14 -0
- package/dist/util/binary.js +82 -0
- package/dist/warmup.d.ts +3 -0
- package/dist/warmup.js +23 -0
- package/package.json +44 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseDlmmFromDecoded = parseDlmmFromDecoded;
|
|
4
|
+
exports.parseMeteoraDlmmLog = parseMeteoraDlmmLog;
|
|
5
|
+
/** Meteora DLMM 结构化日志解析 */
|
|
6
|
+
const metadata_js_1 = require("../core/metadata.js");
|
|
7
|
+
const program_data_js_1 = require("./program_data.js");
|
|
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
|
+
const DLMM = {
|
|
16
|
+
SWAP: disc([143, 190, 90, 218, 196, 30, 51, 222]),
|
|
17
|
+
ADD_LIQ: disc([181, 157, 89, 67, 143, 182, 52, 72]),
|
|
18
|
+
REMOVE_LIQ: disc([80, 85, 209, 72, 24, 206, 35, 178]),
|
|
19
|
+
INIT_BIN_ARRAY: disc([11, 18, 155, 194, 33, 115, 238, 119]),
|
|
20
|
+
INIT_POOL: disc([95, 180, 10, 172, 84, 174, 232, 40]),
|
|
21
|
+
CREATE_POS: disc([123, 233, 11, 43, 146, 180, 97, 119]),
|
|
22
|
+
CLOSE_POS: disc([94, 168, 102, 45, 59, 122, 137, 54]),
|
|
23
|
+
CLAIM_FEE: disc([152, 70, 208, 111, 104, 91, 44, 1]),
|
|
24
|
+
};
|
|
25
|
+
function bn64(v) {
|
|
26
|
+
return v ?? 0n;
|
|
27
|
+
}
|
|
28
|
+
function parseDlmmFromDecoded(programData, metadata) {
|
|
29
|
+
if (programData.length < 8)
|
|
30
|
+
return null;
|
|
31
|
+
const dv = new DataView(programData.buffer, programData.byteOffset, 8);
|
|
32
|
+
const discriminator = dv.getBigUint64(0, true);
|
|
33
|
+
const data = programData.subarray(8);
|
|
34
|
+
if (discriminator === DLMM.SWAP) {
|
|
35
|
+
let o = 0;
|
|
36
|
+
const pool = (0, binary_js_1.readPubkey)(data, o);
|
|
37
|
+
o += 32;
|
|
38
|
+
const from = (0, binary_js_1.readPubkey)(data, o);
|
|
39
|
+
o += 32;
|
|
40
|
+
const start_bin_id = (0, binary_js_1.readI32LE)(data, o);
|
|
41
|
+
o += 4;
|
|
42
|
+
const end_bin_id = (0, binary_js_1.readI32LE)(data, o);
|
|
43
|
+
o += 4;
|
|
44
|
+
const amount_in = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
45
|
+
o += 8;
|
|
46
|
+
const amount_out = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
47
|
+
o += 8;
|
|
48
|
+
const swap_for_y = (0, binary_js_1.readBool)(data, o);
|
|
49
|
+
o += 1;
|
|
50
|
+
const fee = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
51
|
+
o += 8;
|
|
52
|
+
const protocol_fee = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
53
|
+
o += 8;
|
|
54
|
+
const fee_bps = (0, binary_js_1.readU128LE)(data, o);
|
|
55
|
+
o += 16;
|
|
56
|
+
const host_fee = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
57
|
+
const ev = {
|
|
58
|
+
metadata,
|
|
59
|
+
pool,
|
|
60
|
+
from,
|
|
61
|
+
start_bin_id,
|
|
62
|
+
end_bin_id,
|
|
63
|
+
amount_in,
|
|
64
|
+
amount_out,
|
|
65
|
+
swap_for_y,
|
|
66
|
+
fee,
|
|
67
|
+
protocol_fee,
|
|
68
|
+
fee_bps,
|
|
69
|
+
host_fee,
|
|
70
|
+
};
|
|
71
|
+
return { MeteoraDlmmSwap: ev };
|
|
72
|
+
}
|
|
73
|
+
if (discriminator === DLMM.ADD_LIQ) {
|
|
74
|
+
let o = 0;
|
|
75
|
+
const pool = (0, binary_js_1.readPubkey)(data, o);
|
|
76
|
+
o += 32;
|
|
77
|
+
const from = (0, binary_js_1.readPubkey)(data, o);
|
|
78
|
+
o += 32;
|
|
79
|
+
const position = (0, binary_js_1.readPubkey)(data, o);
|
|
80
|
+
o += 32;
|
|
81
|
+
const a0 = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
82
|
+
o += 8;
|
|
83
|
+
const a1 = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
84
|
+
o += 8;
|
|
85
|
+
const active_bin_id = (0, binary_js_1.readI32LE)(data, o);
|
|
86
|
+
const ev = {
|
|
87
|
+
metadata,
|
|
88
|
+
pool,
|
|
89
|
+
from,
|
|
90
|
+
position,
|
|
91
|
+
amounts: [a0, a1],
|
|
92
|
+
active_bin_id,
|
|
93
|
+
};
|
|
94
|
+
return { MeteoraDlmmAddLiquidity: ev };
|
|
95
|
+
}
|
|
96
|
+
if (discriminator === DLMM.REMOVE_LIQ) {
|
|
97
|
+
let o = 0;
|
|
98
|
+
const pool = (0, binary_js_1.readPubkey)(data, o);
|
|
99
|
+
o += 32;
|
|
100
|
+
const from = (0, binary_js_1.readPubkey)(data, o);
|
|
101
|
+
o += 32;
|
|
102
|
+
const position = (0, binary_js_1.readPubkey)(data, o);
|
|
103
|
+
o += 32;
|
|
104
|
+
const a0 = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
105
|
+
o += 8;
|
|
106
|
+
const a1 = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
107
|
+
o += 8;
|
|
108
|
+
const active_bin_id = (0, binary_js_1.readI32LE)(data, o);
|
|
109
|
+
const ev = {
|
|
110
|
+
metadata,
|
|
111
|
+
pool,
|
|
112
|
+
from,
|
|
113
|
+
position,
|
|
114
|
+
amounts: [a0, a1],
|
|
115
|
+
active_bin_id,
|
|
116
|
+
};
|
|
117
|
+
return { MeteoraDlmmRemoveLiquidity: ev };
|
|
118
|
+
}
|
|
119
|
+
if (discriminator === DLMM.INIT_POOL) {
|
|
120
|
+
let o = 0;
|
|
121
|
+
const pool = (0, binary_js_1.readPubkey)(data, o);
|
|
122
|
+
o += 32;
|
|
123
|
+
const creator = (0, binary_js_1.readPubkey)(data, o);
|
|
124
|
+
o += 32;
|
|
125
|
+
const active_bin_id = (0, binary_js_1.readI32LE)(data, o);
|
|
126
|
+
o += 4;
|
|
127
|
+
const bin_step = (0, binary_js_1.readU16LE)(data, o);
|
|
128
|
+
const ev = {
|
|
129
|
+
metadata,
|
|
130
|
+
pool,
|
|
131
|
+
creator,
|
|
132
|
+
active_bin_id,
|
|
133
|
+
bin_step,
|
|
134
|
+
};
|
|
135
|
+
return { MeteoraDlmmInitializePool: ev };
|
|
136
|
+
}
|
|
137
|
+
if (discriminator === DLMM.INIT_BIN_ARRAY) {
|
|
138
|
+
let o = 0;
|
|
139
|
+
const pool = (0, binary_js_1.readPubkey)(data, o);
|
|
140
|
+
o += 32;
|
|
141
|
+
const bin_array = (0, binary_js_1.readPubkey)(data, o);
|
|
142
|
+
o += 32;
|
|
143
|
+
const index = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
144
|
+
const ev = { metadata, pool, bin_array, index };
|
|
145
|
+
return { MeteoraDlmmInitializeBinArray: ev };
|
|
146
|
+
}
|
|
147
|
+
if (discriminator === DLMM.CREATE_POS) {
|
|
148
|
+
let o = 0;
|
|
149
|
+
const pool = (0, binary_js_1.readPubkey)(data, o);
|
|
150
|
+
o += 32;
|
|
151
|
+
const position = (0, binary_js_1.readPubkey)(data, o);
|
|
152
|
+
o += 32;
|
|
153
|
+
const owner = (0, binary_js_1.readPubkey)(data, o);
|
|
154
|
+
o += 32;
|
|
155
|
+
const lower_bin_id = (0, binary_js_1.readI32LE)(data, o);
|
|
156
|
+
o += 4;
|
|
157
|
+
const width = (0, binary_js_1.readU32LE)(data, o);
|
|
158
|
+
const ev = {
|
|
159
|
+
metadata,
|
|
160
|
+
pool,
|
|
161
|
+
position,
|
|
162
|
+
owner,
|
|
163
|
+
lower_bin_id,
|
|
164
|
+
width,
|
|
165
|
+
};
|
|
166
|
+
return { MeteoraDlmmCreatePosition: ev };
|
|
167
|
+
}
|
|
168
|
+
if (discriminator === DLMM.CLOSE_POS) {
|
|
169
|
+
let o = 0;
|
|
170
|
+
const pool = (0, binary_js_1.readPubkey)(data, o);
|
|
171
|
+
o += 32;
|
|
172
|
+
const position = (0, binary_js_1.readPubkey)(data, o);
|
|
173
|
+
o += 32;
|
|
174
|
+
const owner = (0, binary_js_1.readPubkey)(data, o);
|
|
175
|
+
const ev = { metadata, pool, position, owner };
|
|
176
|
+
return { MeteoraDlmmClosePosition: ev };
|
|
177
|
+
}
|
|
178
|
+
if (discriminator === DLMM.CLAIM_FEE) {
|
|
179
|
+
let o = 0;
|
|
180
|
+
const pool = (0, binary_js_1.readPubkey)(data, o);
|
|
181
|
+
o += 32;
|
|
182
|
+
const position = (0, binary_js_1.readPubkey)(data, o);
|
|
183
|
+
o += 32;
|
|
184
|
+
const owner = (0, binary_js_1.readPubkey)(data, o);
|
|
185
|
+
o += 32;
|
|
186
|
+
const fee_x = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
187
|
+
o += 8;
|
|
188
|
+
const fee_y = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
189
|
+
const ev = { metadata, pool, position, owner, fee_x, fee_y };
|
|
190
|
+
return { MeteoraDlmmClaimFee: ev };
|
|
191
|
+
}
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
/** 从整行日志解析 */
|
|
195
|
+
function parseMeteoraDlmmLog(log, signature, slot, txIndex, blockTimeUs, grpcRecvUs) {
|
|
196
|
+
const buf = (0, program_data_js_1.decodeProgramDataLine)(log);
|
|
197
|
+
if (!buf)
|
|
198
|
+
return null;
|
|
199
|
+
const meta = (0, metadata_js_1.makeMetadata)(signature, slot, txIndex, blockTimeUs, grpcRecvUs);
|
|
200
|
+
return parseDlmmFromDecoded(buf, meta);
|
|
201
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DexEvent } from "../core/dex_event.js";
|
|
2
|
+
import type { EventTypeFilter } from "../grpc/types.js";
|
|
3
|
+
export declare function parseLogOptimized(log: string, signature: string, slot: number, txIndex: number, blockTimeUs: number | undefined, grpcRecvUs: number, eventTypeFilter: EventTypeFilter | undefined, isCreatedBuy: boolean, recentBlockhash?: Uint8Array): DexEvent | null;
|
|
4
|
+
/** 单行日志统一解析(无 gRPC 元数据时的便捷入口) */
|
|
5
|
+
export declare function parseLogUnified(log: string, signature: string, slot: number, blockTimeUs: number | undefined): DexEvent | null;
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.parseLogOptimized = parseLogOptimized;
|
|
7
|
+
exports.parseLogUnified = parseLogUnified;
|
|
8
|
+
const metadata_js_1 = require("../core/metadata.js");
|
|
9
|
+
const program_data_js_1 = require("./program_data.js");
|
|
10
|
+
const clock_js_1 = require("../core/clock.js");
|
|
11
|
+
const pump_js_1 = require("./pump.js");
|
|
12
|
+
const pump_amm_js_1 = require("./pump_amm.js");
|
|
13
|
+
const raydium_clmm_js_1 = require("./raydium_clmm.js");
|
|
14
|
+
const raydium_cpmm_js_1 = require("./raydium_cpmm.js");
|
|
15
|
+
const bs58_1 = __importDefault(require("bs58"));
|
|
16
|
+
const raydium_amm_js_1 = require("./raydium_amm.js");
|
|
17
|
+
const orca_js_1 = require("./orca.js");
|
|
18
|
+
const meteora_amm_js_1 = require("./meteora_amm.js");
|
|
19
|
+
const meteora_damm_js_1 = require("./meteora_damm.js");
|
|
20
|
+
const meteora_dlmm_js_1 = require("./meteora_dlmm.js");
|
|
21
|
+
const raydium_launchpad_js_1 = require("./raydium_launchpad.js");
|
|
22
|
+
const binary_js_1 = require("../util/binary.js");
|
|
23
|
+
const program_log_discriminators_js_1 = require("./program_log_discriminators.js");
|
|
24
|
+
function discriminatorToEventType(disc) {
|
|
25
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPFUN_CREATE)
|
|
26
|
+
return "PumpFunCreate";
|
|
27
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPFUN_TRADE)
|
|
28
|
+
return "PumpFunTrade";
|
|
29
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPFUN_MIGRATE)
|
|
30
|
+
return "PumpFunMigrate";
|
|
31
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPSWAP_BUY)
|
|
32
|
+
return "PumpSwapBuy";
|
|
33
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPSWAP_SELL)
|
|
34
|
+
return "PumpSwapSell";
|
|
35
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPSWAP_CREATE_POOL)
|
|
36
|
+
return "PumpSwapCreatePool";
|
|
37
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPSWAP_ADD_LIQUIDITY)
|
|
38
|
+
return "PumpSwapLiquidityAdded";
|
|
39
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPSWAP_REMOVE_LIQUIDITY)
|
|
40
|
+
return "PumpSwapLiquidityRemoved";
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
function filterAllowsUnknownSupported(filter) {
|
|
44
|
+
if (!filter?.include_only?.length)
|
|
45
|
+
return true;
|
|
46
|
+
return filter.include_only.some((t) => [
|
|
47
|
+
"PumpFunTrade",
|
|
48
|
+
"PumpFunCreate",
|
|
49
|
+
"PumpFunMigrate",
|
|
50
|
+
"PumpFunBuy",
|
|
51
|
+
"PumpFunSell",
|
|
52
|
+
"PumpFunBuyExactSolIn",
|
|
53
|
+
"PumpSwapBuy",
|
|
54
|
+
"PumpSwapSell",
|
|
55
|
+
"PumpSwapCreatePool",
|
|
56
|
+
"PumpSwapLiquidityAdded",
|
|
57
|
+
"PumpSwapLiquidityRemoved",
|
|
58
|
+
].includes(t));
|
|
59
|
+
}
|
|
60
|
+
function pumpfunTradeMatchesFilter(ev, includeOnly) {
|
|
61
|
+
if ("PumpFunBuy" in ev)
|
|
62
|
+
return includeOnly.includes("PumpFunBuy");
|
|
63
|
+
if ("PumpFunSell" in ev)
|
|
64
|
+
return includeOnly.includes("PumpFunSell");
|
|
65
|
+
if ("PumpFunBuyExactSolIn" in ev)
|
|
66
|
+
return includeOnly.includes("PumpFunBuyExactSolIn");
|
|
67
|
+
if ("PumpFunTrade" in ev)
|
|
68
|
+
return includeOnly.includes("PumpFunTrade");
|
|
69
|
+
if ("PumpFunCreate" in ev)
|
|
70
|
+
return includeOnly.includes("PumpFunCreate");
|
|
71
|
+
if ("PumpFunCreateV2" in ev)
|
|
72
|
+
return includeOnly.includes("PumpFunCreateV2");
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
function applyPumpfunSecondaryFilter(ev, filter) {
|
|
76
|
+
if (!ev || !filter?.include_only?.length)
|
|
77
|
+
return ev;
|
|
78
|
+
const hasSpecific = filter.include_only.some((t) => ["PumpFunBuy", "PumpFunSell", "PumpFunBuyExactSolIn", "PumpFunCreate", "PumpFunCreateV2"].includes(t));
|
|
79
|
+
if (!hasSpecific)
|
|
80
|
+
return ev;
|
|
81
|
+
return pumpfunTradeMatchesFilter(ev, filter.include_only) ? ev : null;
|
|
82
|
+
}
|
|
83
|
+
function parseLogOptimized(log, signature, slot, txIndex, blockTimeUs, grpcRecvUs, eventTypeFilter, isCreatedBuy, recentBlockhash) {
|
|
84
|
+
const buf = (0, program_data_js_1.decodeProgramDataLine)(log);
|
|
85
|
+
if (!buf)
|
|
86
|
+
return null;
|
|
87
|
+
const disc = (0, binary_js_1.readDiscriminatorU64)(buf);
|
|
88
|
+
if (disc === null)
|
|
89
|
+
return null;
|
|
90
|
+
const data = buf.subarray(8);
|
|
91
|
+
const rb = recentBlockhash && recentBlockhash.length > 0 ? bs58_1.default.encode(recentBlockhash) : undefined;
|
|
92
|
+
const metadata = (0, metadata_js_1.makeMetadata)(signature, slot, txIndex, blockTimeUs, grpcRecvUs, rb);
|
|
93
|
+
const et = discriminatorToEventType(disc);
|
|
94
|
+
if (eventTypeFilter && et !== null) {
|
|
95
|
+
if (!eventTypeFilter.shouldInclude(et))
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
else if (eventTypeFilter && et === null) {
|
|
99
|
+
if (!filterAllowsUnknownSupported(eventTypeFilter))
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPFUN_TRADE) {
|
|
103
|
+
const ev = (0, pump_js_1.parseTradeFromData)(data, metadata, isCreatedBuy);
|
|
104
|
+
return applyPumpfunSecondaryFilter(ev, eventTypeFilter);
|
|
105
|
+
}
|
|
106
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CLMM_SWAP)
|
|
107
|
+
return (0, raydium_clmm_js_1.parseSwapFromData)(data, metadata);
|
|
108
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_AMM_SWAP_BASE_IN)
|
|
109
|
+
return (0, raydium_amm_js_1.parseSwapBaseInFromData)(data, metadata);
|
|
110
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPSWAP_BUY)
|
|
111
|
+
return (0, pump_amm_js_1.parseBuyFromData)(data, metadata);
|
|
112
|
+
if (disc === program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPSWAP_SELL)
|
|
113
|
+
return (0, pump_amm_js_1.parseSellFromData)(data, metadata);
|
|
114
|
+
switch (disc) {
|
|
115
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPFUN_CREATE:
|
|
116
|
+
return (0, pump_js_1.parseCreateFromData)(data, metadata);
|
|
117
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPFUN_MIGRATE:
|
|
118
|
+
return (0, pump_js_1.parseMigrateFromData)(data, metadata);
|
|
119
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPSWAP_CREATE_POOL:
|
|
120
|
+
return (0, pump_amm_js_1.parseCreatePoolFromData)(data, metadata);
|
|
121
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPSWAP_ADD_LIQUIDITY:
|
|
122
|
+
return (0, pump_amm_js_1.parseAddLiquidityFromData)(data, metadata);
|
|
123
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.PUMPSWAP_REMOVE_LIQUIDITY:
|
|
124
|
+
return (0, pump_amm_js_1.parseRemoveLiquidityFromData)(data, metadata);
|
|
125
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CLMM_INCREASE_LIQUIDITY:
|
|
126
|
+
return (0, raydium_clmm_js_1.parseIncreaseLiquidityFromData)(data, metadata);
|
|
127
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CLMM_DECREASE_LIQUIDITY:
|
|
128
|
+
return (0, raydium_clmm_js_1.parseDecreaseLiquidityFromData)(data, metadata);
|
|
129
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CLMM_CREATE_POOL:
|
|
130
|
+
return (0, raydium_clmm_js_1.parseCreatePoolFromData)(data, metadata);
|
|
131
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CLMM_COLLECT_FEE:
|
|
132
|
+
return (0, raydium_clmm_js_1.parseCollectFeeFromData)(data, metadata);
|
|
133
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CPMM_SWAP_BASE_IN:
|
|
134
|
+
return (0, raydium_cpmm_js_1.parseSwapBaseInFromData)(data, metadata);
|
|
135
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CPMM_SWAP_BASE_OUT:
|
|
136
|
+
return (0, raydium_cpmm_js_1.parseSwapBaseOutFromData)(data, metadata);
|
|
137
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CPMM_DEPOSIT:
|
|
138
|
+
return (0, raydium_cpmm_js_1.parseDepositFromData)(data, metadata);
|
|
139
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_CPMM_WITHDRAW:
|
|
140
|
+
return (0, raydium_cpmm_js_1.parseWithdrawFromData)(data, metadata);
|
|
141
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_AMM_SWAP_BASE_OUT:
|
|
142
|
+
return (0, raydium_amm_js_1.parseSwapBaseOutFromData)(data, metadata);
|
|
143
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_AMM_DEPOSIT:
|
|
144
|
+
return (0, raydium_amm_js_1.parseDepositFromData)(data, metadata);
|
|
145
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_AMM_WITHDRAW:
|
|
146
|
+
return (0, raydium_amm_js_1.parseWithdrawFromData)(data, metadata);
|
|
147
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_AMM_INITIALIZE2:
|
|
148
|
+
return (0, raydium_amm_js_1.parseInitialize2FromData)(data, metadata);
|
|
149
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.RAYDIUM_AMM_WITHDRAW_PNL:
|
|
150
|
+
return (0, raydium_amm_js_1.parseWithdrawPnlFromData)(data, metadata);
|
|
151
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.ORCA_TRADED:
|
|
152
|
+
return (0, orca_js_1.parseTradedFromData)(data, metadata);
|
|
153
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.ORCA_LIQUIDITY_INCREASED:
|
|
154
|
+
return (0, orca_js_1.parseLiquidityIncreasedFromData)(data, metadata);
|
|
155
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.ORCA_LIQUIDITY_DECREASED:
|
|
156
|
+
return (0, orca_js_1.parseLiquidityDecreasedFromData)(data, metadata);
|
|
157
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.ORCA_POOL_INITIALIZED:
|
|
158
|
+
return (0, orca_js_1.parsePoolInitializedFromData)(data, metadata);
|
|
159
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_AMM_SWAP:
|
|
160
|
+
return (0, meteora_amm_js_1.parseSwapFromData)(data, metadata);
|
|
161
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_AMM_ADD_LIQUIDITY:
|
|
162
|
+
return (0, meteora_amm_js_1.parseAddLiquidityFromData)(data, metadata);
|
|
163
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_AMM_REMOVE_LIQUIDITY:
|
|
164
|
+
return (0, meteora_amm_js_1.parseRemoveLiquidityFromData)(data, metadata);
|
|
165
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_AMM_BOOTSTRAP_LIQUIDITY:
|
|
166
|
+
return (0, meteora_amm_js_1.parseBootstrapLiquidityFromData)(data, metadata);
|
|
167
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_AMM_POOL_CREATED:
|
|
168
|
+
return (0, meteora_amm_js_1.parsePoolCreatedFromData)(data, metadata);
|
|
169
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_AMM_SET_POOL_FEES:
|
|
170
|
+
return (0, meteora_amm_js_1.parseSetPoolFeesFromData)(data, metadata);
|
|
171
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_DAMM_SWAP:
|
|
172
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_DAMM_SWAP2:
|
|
173
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_DAMM_ADD_LIQUIDITY:
|
|
174
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_DAMM_REMOVE_LIQUIDITY:
|
|
175
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_DAMM_INITIALIZE_POOL:
|
|
176
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_DAMM_CREATE_POSITION:
|
|
177
|
+
case program_log_discriminators_js_1.PROGRAM_LOG_DISC.METEORA_DAMM_CLOSE_POSITION:
|
|
178
|
+
return (0, meteora_damm_js_1.parseMeteoraDammLog)(log, signature, slot, txIndex, blockTimeUs, grpcRecvUs);
|
|
179
|
+
default: {
|
|
180
|
+
const bonk = (0, raydium_launchpad_js_1.parseBonkFromDiscriminator)(disc, data, metadata);
|
|
181
|
+
if (bonk)
|
|
182
|
+
return bonk;
|
|
183
|
+
const dlmm = (0, meteora_dlmm_js_1.parseDlmmFromDecoded)(buf, metadata);
|
|
184
|
+
if (dlmm)
|
|
185
|
+
return dlmm;
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/** 单行日志统一解析(无 gRPC 元数据时的便捷入口) */
|
|
191
|
+
function parseLogUnified(log, signature, slot, blockTimeUs) {
|
|
192
|
+
const grpcRecvUs = (0, clock_js_1.nowUs)();
|
|
193
|
+
return parseLogOptimized(log, signature, slot, 0, blockTimeUs, grpcRecvUs, undefined, false, undefined);
|
|
194
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { EventMetadata } from "../core/metadata.js";
|
|
2
|
+
import type { DexEvent } from "../core/dex_event.js";
|
|
3
|
+
export declare function parseTradedFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
|
|
4
|
+
export declare function parseLiquidityIncreasedFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
|
|
5
|
+
export declare function parseLiquidityDecreasedFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
|
|
6
|
+
export declare function parsePoolInitializedFromData(data: Uint8Array, metadata: EventMetadata): DexEvent | null;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseTradedFromData = parseTradedFromData;
|
|
4
|
+
exports.parseLiquidityIncreasedFromData = parseLiquidityIncreasedFromData;
|
|
5
|
+
exports.parseLiquidityDecreasedFromData = parseLiquidityDecreasedFromData;
|
|
6
|
+
exports.parsePoolInitializedFromData = parsePoolInitializedFromData;
|
|
7
|
+
const binary_js_1 = require("../util/binary.js");
|
|
8
|
+
function bn64(v) {
|
|
9
|
+
return v ?? 0n;
|
|
10
|
+
}
|
|
11
|
+
function parseTradedFromData(data, metadata) {
|
|
12
|
+
let o = 0;
|
|
13
|
+
const whirlpool = (0, binary_js_1.readPubkey)(data, o);
|
|
14
|
+
o += 32;
|
|
15
|
+
const a_to_b = (0, binary_js_1.readBool)(data, o);
|
|
16
|
+
o += 1;
|
|
17
|
+
const pre_sqrt_price = (0, binary_js_1.readU128LE)(data, o);
|
|
18
|
+
o += 16;
|
|
19
|
+
const post_sqrt_price = (0, binary_js_1.readU128LE)(data, o);
|
|
20
|
+
o += 16;
|
|
21
|
+
const input_amount = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
22
|
+
o += 8;
|
|
23
|
+
const output_amount = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
24
|
+
o += 8;
|
|
25
|
+
const input_transfer_fee = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
26
|
+
o += 8;
|
|
27
|
+
const output_transfer_fee = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
28
|
+
o += 8;
|
|
29
|
+
const lp_fee = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
30
|
+
o += 8;
|
|
31
|
+
const protocol_fee = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
32
|
+
const ev = {
|
|
33
|
+
metadata,
|
|
34
|
+
whirlpool,
|
|
35
|
+
a_to_b,
|
|
36
|
+
pre_sqrt_price,
|
|
37
|
+
post_sqrt_price,
|
|
38
|
+
input_amount,
|
|
39
|
+
output_amount,
|
|
40
|
+
input_transfer_fee,
|
|
41
|
+
output_transfer_fee,
|
|
42
|
+
lp_fee,
|
|
43
|
+
protocol_fee,
|
|
44
|
+
};
|
|
45
|
+
return { OrcaWhirlpoolSwap: ev };
|
|
46
|
+
}
|
|
47
|
+
function parseLiquidityIncreasedFromData(data, metadata) {
|
|
48
|
+
let o = 0;
|
|
49
|
+
const whirlpool = (0, binary_js_1.readPubkey)(data, o);
|
|
50
|
+
o += 32;
|
|
51
|
+
const position = (0, binary_js_1.readPubkey)(data, o);
|
|
52
|
+
o += 32;
|
|
53
|
+
const tick_lower_index = (0, binary_js_1.readI32LE)(data, o);
|
|
54
|
+
o += 4;
|
|
55
|
+
const tick_upper_index = (0, binary_js_1.readI32LE)(data, o);
|
|
56
|
+
o += 4;
|
|
57
|
+
const liquidity = (0, binary_js_1.readU128LE)(data, o);
|
|
58
|
+
o += 16;
|
|
59
|
+
const token_a_amount = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
60
|
+
o += 8;
|
|
61
|
+
const token_b_amount = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
62
|
+
o += 8;
|
|
63
|
+
const token_a_transfer_fee = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
64
|
+
o += 8;
|
|
65
|
+
const token_b_transfer_fee = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
66
|
+
const ev = {
|
|
67
|
+
metadata,
|
|
68
|
+
whirlpool,
|
|
69
|
+
position,
|
|
70
|
+
tick_lower_index,
|
|
71
|
+
tick_upper_index,
|
|
72
|
+
liquidity,
|
|
73
|
+
token_a_amount,
|
|
74
|
+
token_b_amount,
|
|
75
|
+
token_a_transfer_fee,
|
|
76
|
+
token_b_transfer_fee,
|
|
77
|
+
};
|
|
78
|
+
return { OrcaWhirlpoolLiquidityIncreased: ev };
|
|
79
|
+
}
|
|
80
|
+
function parseLiquidityDecreasedFromData(data, metadata) {
|
|
81
|
+
let o = 0;
|
|
82
|
+
const whirlpool = (0, binary_js_1.readPubkey)(data, o);
|
|
83
|
+
o += 32;
|
|
84
|
+
const position = (0, binary_js_1.readPubkey)(data, o);
|
|
85
|
+
o += 32;
|
|
86
|
+
const tick_lower_index = (0, binary_js_1.readI32LE)(data, o);
|
|
87
|
+
o += 4;
|
|
88
|
+
const tick_upper_index = (0, binary_js_1.readI32LE)(data, o);
|
|
89
|
+
o += 4;
|
|
90
|
+
const liquidity = (0, binary_js_1.readU128LE)(data, o);
|
|
91
|
+
o += 16;
|
|
92
|
+
const token_a_amount = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
93
|
+
o += 8;
|
|
94
|
+
const token_b_amount = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
95
|
+
o += 8;
|
|
96
|
+
const token_a_transfer_fee = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
97
|
+
o += 8;
|
|
98
|
+
const token_b_transfer_fee = bn64((0, binary_js_1.readU64LE)(data, o));
|
|
99
|
+
const ev = {
|
|
100
|
+
metadata,
|
|
101
|
+
whirlpool,
|
|
102
|
+
position,
|
|
103
|
+
tick_lower_index,
|
|
104
|
+
tick_upper_index,
|
|
105
|
+
liquidity,
|
|
106
|
+
token_a_amount,
|
|
107
|
+
token_b_amount,
|
|
108
|
+
token_a_transfer_fee,
|
|
109
|
+
token_b_transfer_fee,
|
|
110
|
+
};
|
|
111
|
+
return { OrcaWhirlpoolLiquidityDecreased: ev };
|
|
112
|
+
}
|
|
113
|
+
function parsePoolInitializedFromData(data, metadata) {
|
|
114
|
+
let o = 0;
|
|
115
|
+
const whirlpool = (0, binary_js_1.readPubkey)(data, o);
|
|
116
|
+
o += 32;
|
|
117
|
+
const whirlpools_config = (0, binary_js_1.readPubkey)(data, o);
|
|
118
|
+
o += 32;
|
|
119
|
+
const token_mint_a = (0, binary_js_1.readPubkey)(data, o);
|
|
120
|
+
o += 32;
|
|
121
|
+
const token_mint_b = (0, binary_js_1.readPubkey)(data, o);
|
|
122
|
+
o += 32;
|
|
123
|
+
const tick_spacing = (0, binary_js_1.readU16LE)(data, o);
|
|
124
|
+
o += 2;
|
|
125
|
+
const token_program_a = (0, binary_js_1.readPubkey)(data, o);
|
|
126
|
+
o += 32;
|
|
127
|
+
const token_program_b = (0, binary_js_1.readPubkey)(data, o);
|
|
128
|
+
o += 32;
|
|
129
|
+
const decimals_a = (0, binary_js_1.readU8)(data, o);
|
|
130
|
+
o += 1;
|
|
131
|
+
const decimals_b = (0, binary_js_1.readU8)(data, o);
|
|
132
|
+
o += 1;
|
|
133
|
+
const initial_sqrt_price = (0, binary_js_1.readU128LE)(data, o);
|
|
134
|
+
const ev = {
|
|
135
|
+
metadata,
|
|
136
|
+
whirlpool,
|
|
137
|
+
whirlpools_config,
|
|
138
|
+
token_mint_a,
|
|
139
|
+
token_mint_b,
|
|
140
|
+
tick_spacing,
|
|
141
|
+
token_program_a,
|
|
142
|
+
token_program_b,
|
|
143
|
+
decimals_a,
|
|
144
|
+
decimals_b,
|
|
145
|
+
initial_sqrt_price,
|
|
146
|
+
};
|
|
147
|
+
return { OrcaWhirlpoolPoolInitialized: ev };
|
|
148
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.decodeProgramDataLine = decodeProgramDataLine;
|
|
4
|
+
const PREFIX = "Program data: ";
|
|
5
|
+
/** 从单行日志解码 Anchor `emit!` / program data(optimized_matcher 一致的上限) */
|
|
6
|
+
function decodeProgramDataLine(log) {
|
|
7
|
+
const idx = log.indexOf(PREFIX);
|
|
8
|
+
if (idx < 0)
|
|
9
|
+
return null;
|
|
10
|
+
const trimmed = log.slice(idx + PREFIX.length).trim();
|
|
11
|
+
if (trimmed.length > 2700)
|
|
12
|
+
return null;
|
|
13
|
+
try {
|
|
14
|
+
const b = Buffer.from(trimmed, "base64");
|
|
15
|
+
if (b.length > 2048 || b.length < 8)
|
|
16
|
+
return null;
|
|
17
|
+
return new Uint8Array(b);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anchor `emit!` / program data 日志的前 8 字节 discriminator(小端 u64)。
|
|
3
|
+
* 本仓库内唯一权威列表;变更须同步 `scripts/program-log-discriminators.json` 并运行 `npm run verify:discriminators`。
|
|
4
|
+
*/
|
|
5
|
+
export declare function u64leDiscriminator(bytes: readonly [number, number, number, number, number, number, number, number]): bigint;
|
|
6
|
+
/** PumpSwap(pAMMBay)program data 事件 */
|
|
7
|
+
export declare const PUMPSWAP_DISC: {
|
|
8
|
+
readonly BUY: bigint;
|
|
9
|
+
readonly SELL: bigint;
|
|
10
|
+
readonly CREATE_POOL: bigint;
|
|
11
|
+
readonly ADD_LIQUIDITY: bigint;
|
|
12
|
+
readonly REMOVE_LIQUIDITY: bigint;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* `parseLogOptimized` 使用的全部分支 discriminator(含 PumpSwap 引用上表)。
|
|
16
|
+
*/
|
|
17
|
+
export declare const PROGRAM_LOG_DISC: {
|
|
18
|
+
readonly PUMPFUN_CREATE: bigint;
|
|
19
|
+
readonly PUMPFUN_TRADE: bigint;
|
|
20
|
+
readonly PUMPFUN_MIGRATE: bigint;
|
|
21
|
+
readonly PUMPSWAP_BUY: bigint;
|
|
22
|
+
readonly PUMPSWAP_SELL: bigint;
|
|
23
|
+
readonly PUMPSWAP_CREATE_POOL: bigint;
|
|
24
|
+
readonly PUMPSWAP_ADD_LIQUIDITY: bigint;
|
|
25
|
+
readonly PUMPSWAP_REMOVE_LIQUIDITY: bigint;
|
|
26
|
+
readonly RAYDIUM_CLMM_SWAP: bigint;
|
|
27
|
+
readonly RAYDIUM_CLMM_INCREASE_LIQUIDITY: bigint;
|
|
28
|
+
readonly RAYDIUM_CLMM_DECREASE_LIQUIDITY: bigint;
|
|
29
|
+
readonly RAYDIUM_CLMM_CREATE_POOL: bigint;
|
|
30
|
+
readonly RAYDIUM_CLMM_COLLECT_FEE: bigint;
|
|
31
|
+
readonly RAYDIUM_CPMM_SWAP_BASE_IN: bigint;
|
|
32
|
+
readonly RAYDIUM_CPMM_SWAP_BASE_OUT: bigint;
|
|
33
|
+
readonly RAYDIUM_CPMM_DEPOSIT: bigint;
|
|
34
|
+
readonly RAYDIUM_CPMM_WITHDRAW: bigint;
|
|
35
|
+
readonly RAYDIUM_AMM_SWAP_BASE_IN: bigint;
|
|
36
|
+
readonly RAYDIUM_AMM_SWAP_BASE_OUT: bigint;
|
|
37
|
+
readonly RAYDIUM_AMM_DEPOSIT: bigint;
|
|
38
|
+
readonly RAYDIUM_AMM_WITHDRAW: bigint;
|
|
39
|
+
readonly RAYDIUM_AMM_INITIALIZE2: bigint;
|
|
40
|
+
readonly RAYDIUM_AMM_WITHDRAW_PNL: bigint;
|
|
41
|
+
readonly ORCA_TRADED: bigint;
|
|
42
|
+
readonly ORCA_LIQUIDITY_INCREASED: bigint;
|
|
43
|
+
readonly ORCA_LIQUIDITY_DECREASED: bigint;
|
|
44
|
+
readonly ORCA_POOL_INITIALIZED: bigint;
|
|
45
|
+
readonly METEORA_AMM_SWAP: bigint;
|
|
46
|
+
readonly METEORA_AMM_ADD_LIQUIDITY: bigint;
|
|
47
|
+
readonly METEORA_AMM_REMOVE_LIQUIDITY: bigint;
|
|
48
|
+
readonly METEORA_AMM_BOOTSTRAP_LIQUIDITY: bigint;
|
|
49
|
+
readonly METEORA_AMM_POOL_CREATED: bigint;
|
|
50
|
+
readonly METEORA_AMM_SET_POOL_FEES: bigint;
|
|
51
|
+
readonly METEORA_DAMM_SWAP: bigint;
|
|
52
|
+
readonly METEORA_DAMM_SWAP2: bigint;
|
|
53
|
+
readonly METEORA_DAMM_ADD_LIQUIDITY: bigint;
|
|
54
|
+
readonly METEORA_DAMM_REMOVE_LIQUIDITY: bigint;
|
|
55
|
+
readonly METEORA_DAMM_INITIALIZE_POOL: bigint;
|
|
56
|
+
readonly METEORA_DAMM_CREATE_POSITION: bigint;
|
|
57
|
+
readonly METEORA_DAMM_CLOSE_POSITION: bigint;
|
|
58
|
+
};
|
|
59
|
+
export type ProgramLogDiscriminatorKey = keyof typeof PROGRAM_LOG_DISC;
|