solana-meme-sdk 1.1.2 → 1.1.5

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.
@@ -1,11 +1,13 @@
1
1
  /**
2
2
  * Solana LP 检测工具
3
3
  * 自动判断代币在哪个平台(内盘/外盘)
4
+ *
5
+ * 全部基于 RPC 链上查询 + 免费公开 API,无需 Jupiter 付费 API Key
4
6
  * @module sol/utils/lp-inspect
5
7
  */
6
8
  import { Connection } from '@solana/web3.js';
7
9
  /** Solana LP 平台类型 */
8
- export type SolanaLPPlatform = 'PUMP_BONDING_CURVE' | 'METEORA_DBC' | 'RAYDIUM_LAUNCHLAB' | 'JUPITER_AGGREGATED' | 'PUMP_SWAP' | 'MULTI_POOL' | 'UNKNOWN';
10
+ export type SolanaLPPlatform = 'PUMP_BONDING_CURVE' | 'METEORA_DBC' | 'RAYDIUM_LAUNCHLAB' | 'PUMP_SWAP' | 'RAYDIUM_AMM' | 'RAYDIUM_CPMM' | 'RAYDIUM_CLMM' | 'METEORA_DLMM' | 'METEORA_DAMM' | 'ORCA_WHIRLPOOL' | 'JUPITER_AGGREGATED' | 'MULTI_POOL' | 'UNKNOWN';
9
11
  /** 内盘(Bonding Curve)信息 */
10
12
  export interface SolanaBondingCurveInfo {
11
13
  type: 'pump' | 'meteora_dbc' | 'raydium_launchlab';
@@ -24,7 +26,7 @@ export interface SolanaBondingCurveInfo {
24
26
  progress?: number;
25
27
  creator?: string;
26
28
  }
27
- /** 外盘池子信息 (整合 Jupiter 数据) */
29
+ /** 外盘池子信息 */
28
30
  export interface SolanaPoolInfo {
29
31
  platform: SolanaLPPlatform;
30
32
  poolAddress: string;
@@ -34,6 +36,8 @@ export interface SolanaPoolInfo {
34
36
  baseToken: string;
35
37
  reserveQuote: string;
36
38
  reserveQuoteRaw: bigint;
39
+ reserveBase?: string;
40
+ reserveBaseRaw?: bigint;
37
41
  price?: number;
38
42
  mcap?: number;
39
43
  liquidity?: number;
@@ -61,9 +65,17 @@ export interface SolanaInspectOptions {
61
65
  skipPools?: boolean;
62
66
  debug?: boolean;
63
67
  timeout?: number;
68
+ /** 最低流动性过滤 (USD),默认 0 (不过滤) */
69
+ minLiquidity?: number;
64
70
  }
65
71
  /**
66
72
  * 检测 Solana 代币的 LP 信息
73
+ *
74
+ * 全链上 + 免费 API,不依赖 Jupiter 付费 Key:
75
+ * - Phase 1: Mint info + 内盘 bonding curve 检测 + SOL/USD 价格(全并行)
76
+ * - Phase 2: PumpSwap RPC 链上直读(最快最准)+ DexScreener 免费聚合(并行)
77
+ * - PumpSwap RPC 结果始终优先,DexScreener 仅补充其他 DEX 池子和 USD 指标
78
+ * - 每个检测函数有独立超时保护
67
79
  */
68
80
  export declare function inspectSolanaTokenLP(mint: string, options?: SolanaInspectOptions): Promise<SolanaLPInfo>;
69
81
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"lp-inspect.d.ts","sourceRoot":"","sources":["../../src/utils/lp-inspect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lp-inspect.d.ts","sourceRoot":"","sources":["../../src/utils/lp-inspect.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,64 @@
1
1
  /**
2
2
  * Solana LP 检测工具
3
3
  * 自动判断代币在哪个平台(内盘/外盘)
4
+ *
5
+ * 全部基于 RPC 链上查询 + 免费公开 API,无需 Jupiter 付费 API Key
4
6
  * @module sol/utils/lp-inspect
5
7
  */
6
8
  import { PublicKey } from '@solana/web3.js';
7
9
  import { createConnection } from './connection.js';
8
- import { getTokenInfoV2 } from '../dex/jup/tokens.js';
9
10
  // ============================================================================
10
- // 常量
11
+ // 常量 & 缓存
11
12
  // ============================================================================
12
13
  const WSOL = 'So11111111111111111111111111111111111111112';
14
+ const SOL_PRICE_CACHE_TTL = 30_000;
15
+ const DEFAULT_DETECT_TIMEOUT = 15_000;
16
+ const DEXSCREENER_SOL_URL = 'https://api.dexscreener.com/latest/dex/tokens/So11111111111111111111111111111111111111112';
17
+ let _solPriceCache = null;
18
+ /**
19
+ * 获取 SOL/USD 价格(免费来源,不依赖 Jupiter API Key)
20
+ * 优先级:缓存 → DexScreener(免费) → Jupiter(需 key,可选 fallback)
21
+ */
22
+ async function getCachedSolPrice() {
23
+ if (_solPriceCache && Date.now() - _solPriceCache.ts < SOL_PRICE_CACHE_TTL) {
24
+ return _solPriceCache.price;
25
+ }
26
+ // 方式 1: DexScreener 免费 API
27
+ try {
28
+ const resp = await fetch(DEXSCREENER_SOL_URL, { signal: AbortSignal.timeout(5000) });
29
+ if (resp.ok) {
30
+ const data = await resp.json();
31
+ const priceStr = data?.pairs?.[0]?.priceUsd;
32
+ if (priceStr) {
33
+ const price = parseFloat(priceStr);
34
+ if (price > 0) {
35
+ _solPriceCache = { price, ts: Date.now() };
36
+ return price;
37
+ }
38
+ }
39
+ }
40
+ }
41
+ catch { /* DexScreener failed, try fallback */ }
42
+ // 方式 2: Jupiter Price API (如果已配置 key,graceful fallback)
43
+ try {
44
+ const { getSolPrice } = await import('../dex/jup/price.js');
45
+ const price = await getSolPrice();
46
+ if (price != null) {
47
+ _solPriceCache = { price, ts: Date.now() };
48
+ return price;
49
+ }
50
+ }
51
+ catch { /* Jupiter not configured or failed */ }
52
+ return _solPriceCache?.price ?? null;
53
+ }
54
+ function withTimeout(promise, ms, fallback) {
55
+ return Promise.race([
56
+ promise,
57
+ new Promise(resolve => setTimeout(() => resolve(fallback), ms)),
58
+ ]);
59
+ }
13
60
  // ============================================================================
14
- // 内盘检测
61
+ // 内盘检测(全部 RPC 链上查询)
15
62
  // ============================================================================
16
63
  /**
17
64
  * 检测 Pump.fun Bonding Curve
@@ -22,10 +69,7 @@ async function detectPumpBondingCurve(mint, connection, debug) {
22
69
  const info = await getBondingCurveInfo(connection, mint);
23
70
  if (!info)
24
71
  return null;
25
- // Pump.fun graduation: bonding curve graduates when 800M tokens are sold.
26
- // Initial virtual tokens is approx 1,073,000,000. Graduation is at approx 273,000,000.
27
- // We use a more robust token-based progress calculation which matches industry tools.
28
- const TOTAL_TOKENS_FOR_SALE = 793100000000000n; // Approx 793M tokens with 6 decimals
72
+ const TOTAL_TOKENS_FOR_SALE = 793100000000000n;
29
73
  const tokensSold = 1073000000000000n - info.virtualTokenReserves;
30
74
  const progress = Math.min(100, Number(tokensSold * 10000n / TOTAL_TOKENS_FOR_SALE) / 100);
31
75
  return {
@@ -52,30 +96,42 @@ async function detectPumpBondingCurve(mint, connection, debug) {
52
96
  }
53
97
  }
54
98
  /**
55
- * 检测 Meteora DBC
99
+ * 检测 Meteora DBC(RPC 链上)
56
100
  */
57
101
  async function detectMeteoraDbc(mint, connection, debug) {
58
102
  try {
59
- const { findDbcPoolByBaseMint, getDbcPoolInfo } = await import('../dex/meteora/dbc.js');
60
- const poolAddress = await findDbcPoolByBaseMint(mint, connection);
61
- if (!poolAddress)
103
+ const { getDbcClient } = await import('../dex/meteora/client.js');
104
+ const BN = (await import('bn.js')).default;
105
+ const client = getDbcClient(connection);
106
+ const pool = await client.state.getPoolByBaseMint(mint);
107
+ if (!pool)
62
108
  return null;
63
- const poolInfo = await getDbcPoolInfo(poolAddress, connection);
109
+ const poolAddress = pool.publicKey.toBase58();
110
+ const poolState = pool.account;
111
+ const configState = await client.state.getPoolConfig(poolState.config);
112
+ const sqrtPriceNum = poolState.sqrtPrice.toNumber() / Math.pow(2, 64);
113
+ const currentPrice = sqrtPriceNum * sqrtPriceNum;
114
+ const quoteReserve = poolState.quoteReserve;
115
+ const migrationThreshold = configState.migrationQuoteThreshold;
116
+ const progressPercent = migrationThreshold.gt(new BN(0))
117
+ ? Math.min((quoteReserve.toNumber() / migrationThreshold.toNumber()) * 100, 100)
118
+ : 0;
119
+ const isMigrated = quoteReserve.gte(migrationThreshold);
64
120
  return {
65
121
  type: 'meteora_dbc',
66
122
  address: poolAddress,
67
- complete: poolInfo.isMigrated,
68
- reserveQuote: poolInfo.quoteReserve,
69
- reserveQuoteRaw: BigInt(poolInfo.quoteReserve),
70
- reserveToken: poolInfo.baseReserve,
71
- reserveTokenRaw: BigInt(poolInfo.baseReserve),
72
- realQuoteReserve: poolInfo.quoteReserve,
73
- realQuoteReserveRaw: BigInt(poolInfo.quoteReserve),
74
- realTokenReserve: poolInfo.baseReserve,
75
- realTokenReserveRaw: BigInt(poolInfo.baseReserve),
76
- price: poolInfo.currentPrice,
77
- progress: poolInfo.progressPercent,
78
- creator: poolInfo.creator,
123
+ complete: isMigrated,
124
+ reserveQuote: poolState.quoteReserve.toString(),
125
+ reserveQuoteRaw: BigInt(poolState.quoteReserve.toString()),
126
+ reserveToken: poolState.baseReserve.toString(),
127
+ reserveTokenRaw: BigInt(poolState.baseReserve.toString()),
128
+ realQuoteReserve: poolState.quoteReserve.toString(),
129
+ realQuoteReserveRaw: BigInt(poolState.quoteReserve.toString()),
130
+ realTokenReserve: poolState.baseReserve.toString(),
131
+ realTokenReserveRaw: BigInt(poolState.baseReserve.toString()),
132
+ price: currentPrice,
133
+ progress: progressPercent,
134
+ creator: poolState.creator?.toBase58(),
79
135
  };
80
136
  }
81
137
  catch (err) {
@@ -85,7 +141,7 @@ async function detectMeteoraDbc(mint, connection, debug) {
85
141
  }
86
142
  }
87
143
  /**
88
- * 检测 Raydium LaunchLab
144
+ * 检测 Raydium LaunchLab(RPC 链上)
89
145
  */
90
146
  async function detectRaydiumLaunchLab(mint, connection, debug) {
91
147
  try {
@@ -107,7 +163,6 @@ async function detectRaydiumLaunchLab(mint, connection, debug) {
107
163
  decimalB: poolInfo.mintDecimalsB,
108
164
  }).toNumber();
109
165
  const isMigrated = poolInfo.status !== undefined && poolInfo.status >= 2;
110
- // Progress calculation for Raydium LaunchLab
111
166
  const target = BigInt(poolInfo.totalFundRaisingB?.toString() || '0');
112
167
  const current = BigInt(poolInfo.realB?.toString() || '0');
113
168
  const progress = target > 0n ? Math.min(100, Number(current * 10000n / target) / 100) : 0;
@@ -133,80 +188,382 @@ async function detectRaydiumLaunchLab(mint, connection, debug) {
133
188
  }
134
189
  }
135
190
  // ============================================================================
136
- // 外盘检测 (Jupiter API)
191
+ // 外盘检测(RPC 链上 + 免费公开 API 发现池子)
137
192
  // ============================================================================
138
193
  /**
139
- * 使用 Jupiter API 检测外盘信息
194
+ * 检测 PumpSwap 外盘池子(RPC 链上,通过 swapSolanaState 直接读储备并算价格)
140
195
  */
141
- async function detectWithJupiter(mint, debug) {
196
+ async function detectPumpSwapPool(mint, connection, decimals, debug) {
142
197
  try {
143
- const info = await getTokenInfoV2(mint);
144
- if (!info || !info.liquidity || info.liquidity < 100) {
198
+ const { getPumpSwapBundlePoolInfo } = await import('../dex/pump/pump-swap-bundle.js');
199
+ const info = await getPumpSwapBundlePoolInfo(connection, mint);
200
+ if (!info || info.quoteReserve === 0n)
145
201
  return null;
146
- }
202
+ const baseDecimals = decimals ?? 6;
203
+ const reserveQuoteNum = Number(info.quoteReserve) / 1e9;
204
+ const reserveBaseNum = Number(info.baseReserve) / (10 ** baseDecimals);
205
+ const price = reserveBaseNum > 0 ? reserveQuoteNum / reserveBaseNum : undefined;
147
206
  return {
148
- platform: 'JUPITER_AGGREGATED',
149
- poolAddress: info.graduatedPool || '',
207
+ platform: 'PUMP_SWAP',
208
+ poolAddress: info.poolAddress,
150
209
  quoteToken: WSOL,
151
210
  quoteSymbol: 'SOL',
152
211
  quoteDecimals: 9,
153
212
  baseToken: mint,
154
- reserveQuote: info.liquidity.toFixed(2),
155
- reserveQuoteRaw: BigInt(Math.floor(info.liquidity)),
156
- price: info.usdPrice ?? undefined,
157
- mcap: info.mcap ?? undefined,
158
- liquidity: info.liquidity,
159
- fdv: info.fdv ?? undefined,
160
- isVerified: info.isVerified ?? false,
161
- extra: {
162
- launchpad: info.launchpad,
163
- organicScore: info.organicScore,
164
- stats24h: info.stats24h,
165
- reserveBase: info.liquidity && info.usdPrice ? (info.liquidity / 2 / info.usdPrice).toString() : undefined,
213
+ reserveQuote: reserveQuoteNum.toFixed(4),
214
+ reserveQuoteRaw: info.quoteReserve,
215
+ reserveBase: reserveBaseNum.toFixed(4),
216
+ reserveBaseRaw: info.baseReserve,
217
+ price,
218
+ };
219
+ }
220
+ catch (err) {
221
+ if (debug)
222
+ console.log('[LP Inspect] PumpSwap pool check failed:', err);
223
+ return null;
224
+ }
225
+ }
226
+ /**
227
+ * 检测 Meteora DLMM 外盘池子
228
+ * 池子发现:免费 Meteora API → 储备/价格:RPC 链上读取
229
+ */
230
+ async function detectMeteoraDlmmPool(mint, connection, debug) {
231
+ try {
232
+ // 免费 Meteora API 查找池子
233
+ const resp = await fetch(`https://dlmm-api.meteora.ag/pair/all_by_groups?include_token_mints=${mint}`, { signal: AbortSignal.timeout(5000) });
234
+ if (!resp.ok)
235
+ return null;
236
+ const data = await resp.json();
237
+ let poolAddress = null;
238
+ if (data?.groups) {
239
+ for (const group of data.groups) {
240
+ if (group.pairs) {
241
+ for (const pair of group.pairs) {
242
+ if (pair.mint_x === mint || pair.mint_y === mint) {
243
+ poolAddress = pair.address;
244
+ break;
245
+ }
246
+ }
247
+ }
248
+ if (poolAddress)
249
+ break;
166
250
  }
251
+ }
252
+ if (!poolAddress)
253
+ return null;
254
+ // RPC 链上读储备和价格
255
+ const { getDlmmPoolInfo } = await import('../dex/meteora/dlmm.js');
256
+ const poolInfo = await getDlmmPoolInfo(poolAddress, connection);
257
+ const isBaseX = poolInfo.tokenXMint === mint;
258
+ const reserveQuoteRaw = BigInt(isBaseX ? (poolInfo.tokenYReserve || '0') : (poolInfo.tokenXReserve || '0'));
259
+ const reserveBaseRaw = BigInt(isBaseX ? (poolInfo.tokenXReserve || '0') : (poolInfo.tokenYReserve || '0'));
260
+ const quoteToken = isBaseX ? poolInfo.tokenYMint : poolInfo.tokenXMint;
261
+ const reserveQuoteNum = Number(reserveQuoteRaw) / 1e9;
262
+ return {
263
+ platform: 'METEORA_DLMM',
264
+ poolAddress,
265
+ quoteToken,
266
+ quoteSymbol: quoteToken === WSOL ? 'SOL' : 'UNKNOWN',
267
+ quoteDecimals: 9,
268
+ baseToken: mint,
269
+ reserveQuote: reserveQuoteNum.toFixed(4),
270
+ reserveQuoteRaw,
271
+ reserveBase: reserveBaseRaw.toString(),
272
+ reserveBaseRaw,
273
+ price: poolInfo.currentPrice > 0 ? poolInfo.currentPrice : undefined,
167
274
  };
168
275
  }
169
276
  catch (err) {
170
277
  if (debug)
171
- console.log('[LP Inspect] Jupiter check failed:', err);
278
+ console.log('[LP Inspect] Meteora DLMM check failed:', err);
172
279
  return null;
173
280
  }
174
281
  }
175
282
  /**
176
- * 检测 PumpSwap 外盘池子(Pump.fun 毕业后的 AMM)
283
+ * 检测 Meteora DAMM v1 池子(DBC 毕业后的目标池)
284
+ * 通过 DBC 的 migration 记录或 DexScreener 免费 API 发现池地址 → RPC 读储备
177
285
  */
178
- async function detectPumpSwapPool(mint, connection, debug) {
286
+ async function detectMeteoraDammPool(mint, connection, debug) {
179
287
  try {
180
- const { getPumpSwapPoolInfo } = await import('../dex/pump/pump-swap.js');
181
- const poolInfo = await getPumpSwapPoolInfo(connection, mint);
182
- if (!poolInfo)
288
+ // 通过 DexScreener 免费 API 查找 Meteora 类型的池子
289
+ const resp = await fetch(`https://api.dexscreener.com/latest/dex/tokens/${mint}`, { signal: AbortSignal.timeout(5000) });
290
+ if (!resp.ok)
183
291
  return null;
184
- const WSOL = 'So11111111111111111111111111111111111111112';
185
- const poolPubkey = new PublicKey(poolInfo.poolAddress);
186
- const baseAta = await import('@solana/spl-token').then(m => m.getAssociatedTokenAddress(new PublicKey(mint), poolPubkey, true));
187
- const quoteAta = await import('@solana/spl-token').then(m => m.getAssociatedTokenAddress(new PublicKey(WSOL), poolPubkey, true));
188
- const [baseAccount, quoteAccount] = await Promise.all([
189
- connection.getTokenAccountBalance(baseAta).catch(() => null),
190
- connection.getTokenAccountBalance(quoteAta).catch(() => null),
191
- ]);
192
- const reserveQuoteRaw = quoteAccount?.value?.amount ? BigInt(quoteAccount.value.amount) : 0n;
193
- const reserveQuote = (Number(reserveQuoteRaw) / 1e9).toFixed(4);
194
- const reserveBase = baseAccount?.value?.uiAmountString || '0';
292
+ const data = await resp.json();
293
+ // 查找 Meteora DAMM / Dynamic AMM 池子
294
+ const meteoraPair = data?.pairs?.find(p => p.dexId === 'meteora' || p.dexId === 'meteora_dlmm');
295
+ if (!meteoraPair)
296
+ return null;
297
+ const poolAddress = meteoraPair.pairAddress;
298
+ // 尝试用 SDK RPC 读取(getDammV1PoolInfo)
299
+ try {
300
+ const { getDammV1PoolInfo } = await import('../dex/meteora/damm-v1.js');
301
+ const poolInfo = await getDammV1PoolInfo(poolAddress, connection);
302
+ const isBaseA = poolInfo.tokenAMint === mint;
303
+ const reserveQuoteRaw = BigInt(isBaseA ? poolInfo.tokenBReserve : poolInfo.tokenAReserve);
304
+ const reserveBaseRaw = BigInt(isBaseA ? poolInfo.tokenAReserve : poolInfo.tokenBReserve);
305
+ const quoteToken = isBaseA ? poolInfo.tokenBMint : poolInfo.tokenAMint;
306
+ const reserveQuoteNum = Number(reserveQuoteRaw) / 1e9;
307
+ return {
308
+ platform: 'METEORA_DAMM',
309
+ poolAddress,
310
+ quoteToken,
311
+ quoteSymbol: quoteToken === WSOL ? 'SOL' : 'UNKNOWN',
312
+ quoteDecimals: 9,
313
+ baseToken: mint,
314
+ reserveQuote: reserveQuoteNum.toFixed(4),
315
+ reserveQuoteRaw,
316
+ reserveBase: reserveBaseRaw.toString(),
317
+ reserveBaseRaw,
318
+ price: poolInfo.currentPrice > 0 ? poolInfo.currentPrice : undefined,
319
+ };
320
+ }
321
+ catch {
322
+ // DAMM v1 读取失败,用 DexScreener 数据兜底
323
+ if (debug)
324
+ console.log('[LP Inspect] Meteora DAMM v1 RPC failed, using DexScreener data');
325
+ const priceUsd = meteoraPair.priceUsd ? parseFloat(meteoraPair.priceUsd) : undefined;
326
+ return {
327
+ platform: 'METEORA_DAMM',
328
+ poolAddress,
329
+ quoteToken: meteoraPair.quoteToken.address,
330
+ quoteSymbol: meteoraPair.quoteToken.symbol || 'SOL',
331
+ quoteDecimals: 9,
332
+ baseToken: mint,
333
+ reserveQuote: '0',
334
+ reserveQuoteRaw: 0n,
335
+ price: priceUsd,
336
+ liquidity: meteoraPair.liquidity?.usd,
337
+ fdv: meteoraPair.fdv,
338
+ };
339
+ }
340
+ }
341
+ catch (err) {
342
+ if (debug)
343
+ console.log('[LP Inspect] Meteora DAMM check failed:', err);
344
+ return null;
345
+ }
346
+ }
347
+ /**
348
+ * 检测 Raydium 外盘池子(CPMM / AMM)
349
+ * 池子发现:DexScreener 免费 API → 储备:RPC 链上读取
350
+ */
351
+ async function detectRaydiumPool(mint, connection, debug) {
352
+ try {
353
+ const resp = await fetch(`https://api.dexscreener.com/latest/dex/tokens/${mint}`, { signal: AbortSignal.timeout(5000) });
354
+ if (!resp.ok)
355
+ return null;
356
+ const data = await resp.json();
357
+ const raydiumPair = data?.pairs?.find(p => p.dexId === 'raydium');
358
+ if (!raydiumPair)
359
+ return null;
360
+ const poolAddress = raydiumPair.pairAddress;
361
+ // 尝试用 Raydium SDK RPC 读取 CPMM 池信息
362
+ try {
363
+ const { initRaydium } = await import('../dex/raydium/raydium.js');
364
+ const raydium = await initRaydium(connection);
365
+ const rpcData = await raydium.cpmm.getRpcPoolInfo(poolAddress);
366
+ if (rpcData) {
367
+ const mintA = rpcData.mintA?.toBase58?.() || rpcData.mintA?.toString?.() || '';
368
+ const mintB = rpcData.mintB?.toBase58?.() || rpcData.mintB?.toString?.() || '';
369
+ const isBaseA = mintA === mint;
370
+ const vaultA = BigInt(rpcData.vaultAAmount?.toString() || '0');
371
+ const vaultB = BigInt(rpcData.vaultBAmount?.toString() || '0');
372
+ const reserveQuoteRaw = isBaseA ? vaultB : vaultA;
373
+ const reserveBaseRaw = isBaseA ? vaultA : vaultB;
374
+ const quoteToken = isBaseA ? mintB : mintA;
375
+ const reserveQuoteNum = Number(reserveQuoteRaw) / 1e9;
376
+ return {
377
+ platform: 'RAYDIUM_CPMM',
378
+ poolAddress,
379
+ quoteToken,
380
+ quoteSymbol: quoteToken === WSOL ? 'SOL' : 'UNKNOWN',
381
+ quoteDecimals: 9,
382
+ baseToken: mint,
383
+ reserveQuote: reserveQuoteNum.toFixed(4),
384
+ reserveQuoteRaw,
385
+ reserveBase: reserveBaseRaw.toString(),
386
+ reserveBaseRaw,
387
+ };
388
+ }
389
+ }
390
+ catch {
391
+ if (debug)
392
+ console.log('[LP Inspect] Raydium CPMM RPC failed, using DexScreener data');
393
+ }
394
+ // RPC 失败时用 DexScreener 数据兜底
395
+ const priceUsd = raydiumPair.priceUsd ? parseFloat(raydiumPair.priceUsd) : undefined;
195
396
  return {
196
- platform: 'PUMP_SWAP',
197
- poolAddress: poolInfo.poolAddress,
397
+ platform: 'RAYDIUM_AMM',
398
+ poolAddress,
399
+ quoteToken: raydiumPair.quoteToken.address,
400
+ quoteSymbol: raydiumPair.quoteToken.symbol || 'SOL',
401
+ quoteDecimals: 9,
402
+ baseToken: mint,
403
+ reserveQuote: '0',
404
+ reserveQuoteRaw: 0n,
405
+ price: priceUsd,
406
+ liquidity: raydiumPair.liquidity?.usd,
407
+ fdv: raydiumPair.fdv,
408
+ };
409
+ }
410
+ catch (err) {
411
+ if (debug)
412
+ console.log('[LP Inspect] Raydium pool check failed:', err);
413
+ return null;
414
+ }
415
+ }
416
+ /**
417
+ * 检测 Orca Whirlpool 外盘池子
418
+ * 池子发现:DexScreener 免费 API → 储备/价格:RPC 链上读取
419
+ */
420
+ async function detectOrcaPool(mint, connection, debug) {
421
+ try {
422
+ const resp = await fetch(`https://api.dexscreener.com/latest/dex/tokens/${mint}`, { signal: AbortSignal.timeout(5000) });
423
+ if (!resp.ok)
424
+ return null;
425
+ const data = await resp.json();
426
+ const orcaPair = data?.pairs?.find(p => p.dexId === 'orca');
427
+ if (!orcaPair)
428
+ return null;
429
+ const poolAddress = orcaPair.pairAddress;
430
+ // 尝试 RPC 读取 Orca Whirlpool 池信息
431
+ try {
432
+ const { getOrcaPoolInfo } = await import('../dex/orca/orca.js');
433
+ const poolInfo = await getOrcaPoolInfo(poolAddress, connection);
434
+ const isBaseA = poolInfo.tokenMintA === mint;
435
+ const quoteToken = isBaseA ? poolInfo.tokenMintB : poolInfo.tokenMintA;
436
+ const price = poolInfo.price > 0 ? poolInfo.price : undefined;
437
+ return {
438
+ platform: 'ORCA_WHIRLPOOL',
439
+ poolAddress,
440
+ quoteToken,
441
+ quoteSymbol: quoteToken === WSOL ? 'SOL' : 'UNKNOWN',
442
+ quoteDecimals: 9,
443
+ baseToken: mint,
444
+ reserveQuote: '0',
445
+ reserveQuoteRaw: 0n,
446
+ price,
447
+ liquidity: orcaPair.liquidity?.usd,
448
+ };
449
+ }
450
+ catch {
451
+ if (debug)
452
+ console.log('[LP Inspect] Orca RPC failed, using DexScreener data');
453
+ }
454
+ // RPC 失败时用 DexScreener 数据兜底
455
+ const priceUsd = orcaPair.priceUsd ? parseFloat(orcaPair.priceUsd) : undefined;
456
+ return {
457
+ platform: 'ORCA_WHIRLPOOL',
458
+ poolAddress,
459
+ quoteToken: orcaPair.quoteToken.address,
460
+ quoteSymbol: orcaPair.quoteToken.symbol || 'SOL',
461
+ quoteDecimals: 9,
462
+ baseToken: mint,
463
+ reserveQuote: '0',
464
+ reserveQuoteRaw: 0n,
465
+ price: priceUsd,
466
+ liquidity: orcaPair.liquidity?.usd,
467
+ fdv: orcaPair.fdv,
468
+ };
469
+ }
470
+ catch (err) {
471
+ if (debug)
472
+ console.log('[LP Inspect] Orca pool check failed:', err);
473
+ return null;
474
+ }
475
+ }
476
+ /**
477
+ * 通过 DexScreener 免费 API 聚合检测所有外盘池子
478
+ * 一次请求返回所有 DEX 的池子,比逐个 DEX 请求高效
479
+ */
480
+ async function detectAllPoolsViaDexScreener(mint, connection, decimals, debug) {
481
+ const pools = [];
482
+ try {
483
+ const resp = await fetch(`https://api.dexscreener.com/latest/dex/tokens/${mint}`, { signal: AbortSignal.timeout(8000) });
484
+ if (!resp.ok)
485
+ return pools;
486
+ const data = await resp.json();
487
+ if (!data?.pairs)
488
+ return pools;
489
+ // 只取 Solana 链上的
490
+ const solanaPairs = data.pairs.filter(p => p.chainId === 'solana');
491
+ for (const pair of solanaPairs) {
492
+ const platform = mapDexIdToPlatform(pair.dexId);
493
+ if (platform === 'UNKNOWN')
494
+ continue;
495
+ const isBase = pair.baseToken.address === mint;
496
+ const quoteToken = isBase ? pair.quoteToken.address : pair.baseToken.address;
497
+ const quoteSymbol = isBase ? pair.quoteToken.symbol : pair.baseToken.symbol;
498
+ const priceUsd = pair.priceUsd ? parseFloat(pair.priceUsd) : undefined;
499
+ const poolInfo = {
500
+ platform,
501
+ poolAddress: pair.pairAddress,
502
+ quoteToken,
503
+ quoteSymbol,
504
+ quoteDecimals: quoteToken === WSOL ? 9 : 6,
505
+ baseToken: mint,
506
+ reserveQuote: pair.liquidity?.quote != null ? pair.liquidity.quote.toFixed(4) : '0',
507
+ reserveQuoteRaw: BigInt(Math.floor((pair.liquidity?.quote ?? 0) * 1e9)),
508
+ reserveBase: pair.liquidity?.base != null ? pair.liquidity.base.toFixed(4) : '0',
509
+ price: priceUsd,
510
+ liquidity: pair.liquidity?.usd,
511
+ fdv: pair.fdv,
512
+ mcap: pair.marketCap,
513
+ };
514
+ pools.push(poolInfo);
515
+ }
516
+ }
517
+ catch (err) {
518
+ if (debug)
519
+ console.log('[LP Inspect] DexScreener aggregate check failed:', err);
520
+ }
521
+ return pools;
522
+ }
523
+ function mapDexIdToPlatform(dexId) {
524
+ switch (dexId) {
525
+ case 'raydium': return 'RAYDIUM_CPMM';
526
+ case 'orca': return 'ORCA_WHIRLPOOL';
527
+ case 'meteora': return 'METEORA_DAMM';
528
+ case 'meteora_dlmm': return 'METEORA_DLMM';
529
+ case 'pumpswap': return 'PUMP_SWAP';
530
+ case 'pumpfun': return 'PUMP_SWAP';
531
+ default: return 'UNKNOWN';
532
+ }
533
+ }
534
+ /**
535
+ * Jupiter Tokens V2 作为可选 fallback(仅在配置了 API Key 时尝试)
536
+ */
537
+ async function detectWithJupiterFallback(mint, debug) {
538
+ try {
539
+ const { getTokenInfoV2 } = await import('../dex/jup/tokens.js');
540
+ const info = await getTokenInfoV2(mint);
541
+ if (!info)
542
+ return null;
543
+ return {
544
+ platform: 'JUPITER_AGGREGATED',
545
+ poolAddress: info.graduatedPool || '',
198
546
  quoteToken: WSOL,
199
547
  quoteSymbol: 'SOL',
200
548
  quoteDecimals: 9,
201
549
  baseToken: mint,
202
- reserveQuote,
203
- reserveQuoteRaw,
204
- extra: { reserveBase, creator: poolInfo.creator },
550
+ reserveQuote: info.liquidity?.toFixed(2) || '0',
551
+ reserveQuoteRaw: BigInt(Math.floor(info.liquidity || 0)),
552
+ price: info.usdPrice ?? undefined,
553
+ mcap: info.mcap ?? undefined,
554
+ liquidity: info.liquidity ?? undefined,
555
+ fdv: info.fdv ?? undefined,
556
+ isVerified: info.isVerified ?? false,
557
+ extra: {
558
+ launchpad: info.launchpad,
559
+ organicScore: info.organicScore,
560
+ stats24h: info.stats24h,
561
+ }
205
562
  };
206
563
  }
207
- catch (err) {
564
+ catch {
208
565
  if (debug)
209
- console.log('[LP Inspect] PumpSwap pool check failed:', err);
566
+ console.log('[LP Inspect] Jupiter fallback skipped (no API key or failed)');
210
567
  return null;
211
568
  }
212
569
  }
@@ -215,36 +572,51 @@ async function detectPumpSwapPool(mint, connection, debug) {
215
572
  // ============================================================================
216
573
  /**
217
574
  * 检测 Solana 代币的 LP 信息
575
+ *
576
+ * 全链上 + 免费 API,不依赖 Jupiter 付费 Key:
577
+ * - Phase 1: Mint info + 内盘 bonding curve 检测 + SOL/USD 价格(全并行)
578
+ * - Phase 2: PumpSwap RPC 链上直读(最快最准)+ DexScreener 免费聚合(并行)
579
+ * - PumpSwap RPC 结果始终优先,DexScreener 仅补充其他 DEX 池子和 USD 指标
580
+ * - 每个检测函数有独立超时保护
218
581
  */
219
582
  export async function inspectSolanaTokenLP(mint, options = {}) {
220
583
  const startTime = Date.now();
221
584
  const connection = options.connection || createConnection(options.rpcUrl);
222
585
  const debug = options.debug;
586
+ const timeout = options.timeout || DEFAULT_DETECT_TIMEOUT;
587
+ const minLiquidity = options.minLiquidity ?? 0;
223
588
  const result = {
224
589
  mint,
225
590
  platform: 'UNKNOWN',
226
591
  pools: [],
227
592
  };
228
- // 0. 获取代币基本信息
229
- try {
230
- const mintInfo = await connection.getParsedAccountInfo(new PublicKey(mint));
231
- if (mintInfo.value?.data && 'parsed' in mintInfo.value.data) {
232
- const parsed = mintInfo.value.data.parsed;
233
- result.decimals = parsed.info.decimals;
234
- result.totalSupplyRaw = BigInt(parsed.info.supply);
235
- result.totalSupply = (Number(result.totalSupplyRaw) / Math.pow(10, result.decimals)).toString();
236
- }
593
+ // === Phase 1: Mint info + 内盘检测 + SOL 价格预取,全部并行 ===
594
+ const mintInfoPromise = withTimeout(connection.getParsedAccountInfo(new PublicKey(mint)).catch(() => null), timeout, null);
595
+ const solPricePromise = getCachedSolPrice();
596
+ const bondingPromise = !options.skipBondingCurve
597
+ ? Promise.all([
598
+ withTimeout(detectPumpBondingCurve(mint, connection, debug), timeout, null),
599
+ withTimeout(detectMeteoraDbc(mint, connection, debug), timeout, null),
600
+ withTimeout(detectRaydiumLaunchLab(mint, connection, debug), timeout, null),
601
+ ])
602
+ : Promise.resolve([null, null, null]);
603
+ const [mintResult, [pump, meteora, raydium], solPrice] = await Promise.all([
604
+ mintInfoPromise,
605
+ bondingPromise,
606
+ solPricePromise,
607
+ ]);
608
+ if (debug)
609
+ console.log(`[LP Inspect] Phase 1 done in ${Date.now() - startTime}ms | SOL=$${solPrice}`);
610
+ // 处理 mint 信息
611
+ if (mintResult?.value?.data && 'parsed' in mintResult.value.data) {
612
+ const parsed = mintResult.value.data.parsed;
613
+ result.decimals = parsed.info.decimals;
614
+ result.totalSupplyRaw = BigInt(parsed.info.supply);
615
+ result.totalSupply = (Number(result.totalSupplyRaw) / Math.pow(10, result.decimals)).toString();
237
616
  }
238
- catch { }
239
- // 1. 内盘检测
617
+ // 处理内盘检测结果(未毕业的 bonding curve)
240
618
  if (!options.skipBondingCurve) {
241
- const [pump, meteora, raydium] = await Promise.all([
242
- detectPumpBondingCurve(mint, connection, debug),
243
- detectMeteoraDbc(mint, connection, debug),
244
- detectRaydiumLaunchLab(mint, connection, debug),
245
- ]);
246
619
  const candidates = [pump, meteora, raydium].filter((c) => c != null && !c.complete);
247
- // 多个平台检测到时,优先选择储备最高的(更可能是实际活跃池子)
248
620
  const bc = candidates.length > 1
249
621
  ? candidates.reduce((best, cur) => {
250
622
  const bestSol = Number(best.realQuoteReserve || best.reserveQuote || 0);
@@ -253,43 +625,92 @@ export async function inspectSolanaTokenLP(mint, options = {}) {
253
625
  })
254
626
  : candidates[0] ?? null;
255
627
  if (bc) {
256
- // 计算内盘估算流动性 (USD)
257
- try {
258
- const { getSolPrice } = await import('../dex/jup/price.js');
259
- const solPrice = await getSolPrice();
260
- if (solPrice) {
261
- const realSol = Number(bc.realQuoteReserve || 0);
262
- bc.liquidity = realSol * solPrice * 2; // 简单估算:SOL价值 * 2
263
- }
628
+ if (solPrice) {
629
+ const realSol = Number(bc.realQuoteReserve || 0);
630
+ bc.liquidity = realSol * solPrice * 2;
264
631
  }
265
- catch { }
266
632
  result.bondingCurve = bc;
267
633
  result.platform = bc.type === 'pump' ? 'PUMP_BONDING_CURVE' :
268
634
  bc.type === 'meteora_dbc' ? 'METEORA_DBC' : 'RAYDIUM_LAUNCHLAB';
269
635
  result.elapsed = Date.now() - startTime;
636
+ if (debug)
637
+ console.log(`[LP Inspect] ✓ ${result.platform} in ${result.elapsed}ms`);
270
638
  return result;
271
639
  }
272
640
  }
273
- // 2. 外盘检测:PumpSwap + Jupiter 并行
641
+ // === Phase 2: 外盘检测 ===
642
+ // 策略:PumpSwap RPC(链上直读,最快最准)+ DexScreener(免费聚合)并行
643
+ // Jupiter 不再阻塞主路径,仅作为后台补充
274
644
  if (!options.skipPools) {
275
- const [pumpSwapPool, jupPool] = await Promise.all([
276
- detectPumpSwapPool(mint, connection, debug),
277
- detectWithJupiter(mint, debug),
645
+ const phase2Start = Date.now();
646
+ const [pumpSwapPool, dexScreenerPools] = await Promise.all([
647
+ withTimeout(detectPumpSwapPool(mint, connection, result.decimals, debug), timeout, null),
648
+ withTimeout(detectAllPoolsViaDexScreener(mint, connection, result.decimals, debug), timeout, []),
278
649
  ]);
650
+ if (debug)
651
+ console.log(`[LP Inspect] Phase 2 done in ${Date.now() - phase2Start}ms | PumpSwap=${!!pumpSwapPool} DexScreener=${dexScreenerPools.length}`);
652
+ // --- 1. PumpSwap RPC 链上数据(最高优先级,储备量精确) ---
279
653
  if (pumpSwapPool) {
280
- result.bestPool = pumpSwapPool;
654
+ if (solPrice) {
655
+ const quoteNum = Number(pumpSwapPool.reserveQuoteRaw) / 1e9;
656
+ pumpSwapPool.liquidity = quoteNum * solPrice * 2;
657
+ // 如果 price 是 SOL 计价,转换为 USD
658
+ if (pumpSwapPool.price != null && pumpSwapPool.price > 0) {
659
+ pumpSwapPool.price = pumpSwapPool.price * solPrice;
660
+ }
661
+ }
662
+ // 从 DexScreener 补充 USD 指标(mcap/fdv),不覆盖链上储备
663
+ const dsPumpPool = dexScreenerPools.find(p => p.platform === 'PUMP_SWAP');
664
+ if (dsPumpPool) {
665
+ if (dsPumpPool.mcap)
666
+ pumpSwapPool.mcap = dsPumpPool.mcap;
667
+ if (dsPumpPool.fdv)
668
+ pumpSwapPool.fdv = dsPumpPool.fdv;
669
+ if (dsPumpPool.price && !pumpSwapPool.price)
670
+ pumpSwapPool.price = dsPumpPool.price;
671
+ }
281
672
  result.pools.push(pumpSwapPool);
282
- result.platform = 'PUMP_SWAP';
283
673
  }
284
- if (jupPool) {
285
- if (!result.bestPool) {
286
- result.bestPool = jupPool;
287
- result.platform = jupPool.platform;
674
+ // --- 2. DexScreener 其他 DEX 池子(去重 PumpSwap) ---
675
+ for (const pool of dexScreenerPools) {
676
+ // 跳过 PumpSwap(已有 RPC 链上数据,或地址相同的重复项)
677
+ if (pool.platform === 'PUMP_SWAP' && pumpSwapPool)
678
+ continue;
679
+ const isDupe = result.pools.some(p => p.poolAddress === pool.poolAddress);
680
+ if (!isDupe) {
681
+ result.pools.push(pool);
682
+ }
683
+ }
684
+ // --- 3. 根据 minLiquidity 过滤 ---
685
+ if (minLiquidity > 0) {
686
+ const filtered = result.pools.filter(p => (p.liquidity ?? 0) >= minLiquidity);
687
+ if (filtered.length > 0) {
688
+ result.pools = filtered;
288
689
  }
289
- result.pools.push(jupPool);
690
+ }
691
+ // --- 4. 选最佳池子 ---
692
+ // 规则:有链上储备(reserveQuoteRaw > 0)的优先;其次按 liquidity 降序
693
+ if (result.pools.length > 0) {
694
+ result.pools.sort((a, b) => {
695
+ const aHasReserves = a.reserveQuoteRaw > 0n ? 1 : 0;
696
+ const bHasReserves = b.reserveQuoteRaw > 0n ? 1 : 0;
697
+ if (aHasReserves !== bHasReserves)
698
+ return bHasReserves - aHasReserves;
699
+ if (a.liquidity != null && b.liquidity != null)
700
+ return b.liquidity - a.liquidity;
701
+ if (a.liquidity != null)
702
+ return -1;
703
+ if (b.liquidity != null)
704
+ return 1;
705
+ return 0;
706
+ });
707
+ result.bestPool = result.pools[0];
708
+ result.platform = result.bestPool.platform;
290
709
  }
291
710
  }
292
711
  result.elapsed = Date.now() - startTime;
712
+ if (debug)
713
+ console.log(`[LP Inspect] ✓ ${result.platform} (${result.pools.length} pools) in ${result.elapsed}ms`);
293
714
  return result;
294
715
  }
295
716
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"lp-inspect.js","sourceRoot":"","sources":["../../src/utils/lp-inspect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lp-inspect.js","sourceRoot":"","sources":["../../src/utils/lp-inspect.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solana-meme-sdk",
3
- "version": "1.1.2",
3
+ "version": "1.1.5",
4
4
  "description": "Solana Meme Token SDK - DEX Trading, Token Creation, and Bundle Services",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",