solana-meme-kit 0.3.0 → 0.3.1
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/dist/core/MemeKit.d.ts +30 -0
- package/dist/core/MemeKit.d.ts.map +1 -0
- package/dist/core/MemeKit.js +193 -0
- package/dist/core/MemeKit.js.map +1 -0
- package/dist/core/utils.d.ts +16 -0
- package/dist/core/utils.d.ts.map +1 -0
- package/dist/core/utils.js +39 -0
- package/dist/core/utils.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/managers/JitoManager.d.ts +17 -0
- package/dist/managers/JitoManager.d.ts.map +1 -0
- package/dist/managers/JitoManager.js +64 -0
- package/dist/managers/JitoManager.js.map +1 -0
- package/dist/managers/LiquidityManager.d.ts +16 -0
- package/dist/managers/LiquidityManager.d.ts.map +1 -0
- package/dist/managers/LiquidityManager.js +121 -0
- package/dist/managers/LiquidityManager.js.map +1 -0
- package/dist/managers/MarketManager.d.ts +17 -0
- package/dist/managers/MarketManager.d.ts.map +1 -0
- package/dist/managers/MarketManager.js +182 -0
- package/dist/managers/MarketManager.js.map +1 -0
- package/dist/managers/TokenManager.d.ts +18 -0
- package/dist/managers/TokenManager.d.ts.map +1 -0
- package/dist/managers/TokenManager.js +64 -0
- package/dist/managers/TokenManager.js.map +1 -0
- package/dist/strategies/LiquidityStrategy.d.ts +33 -0
- package/dist/strategies/LiquidityStrategy.d.ts.map +1 -0
- package/dist/strategies/LiquidityStrategy.js +2 -0
- package/dist/strategies/LiquidityStrategy.js.map +1 -0
- package/dist/strategies/meteora/DLMMManager.d.ts +20 -0
- package/dist/strategies/meteora/DLMMManager.d.ts.map +1 -0
- package/dist/strategies/meteora/DLMMManager.js +82 -0
- package/dist/strategies/meteora/DLMMManager.js.map +1 -0
- package/dist/strategies/meteora/index.d.ts +2 -0
- package/dist/strategies/meteora/index.d.ts.map +1 -0
- package/dist/strategies/meteora/index.js +3 -0
- package/dist/strategies/meteora/index.js.map +1 -0
- package/dist/strategies/raydium/AMMManager.d.ts +20 -0
- package/dist/strategies/raydium/AMMManager.d.ts.map +1 -0
- package/dist/strategies/raydium/AMMManager.js +96 -0
- package/dist/strategies/raydium/AMMManager.js.map +1 -0
- package/dist/strategies/raydium/CPMMManager.d.ts +20 -0
- package/dist/strategies/raydium/CPMMManager.d.ts.map +1 -0
- package/dist/strategies/raydium/CPMMManager.js +121 -0
- package/dist/strategies/raydium/CPMMManager.js.map +1 -0
- package/dist/strategies/raydium/index.d.ts +3 -0
- package/dist/strategies/raydium/index.d.ts.map +1 -0
- package/dist/strategies/raydium/index.js +4 -0
- package/dist/strategies/raydium/index.js.map +1 -0
- package/dist/utils/jitoTools.d.ts +14 -0
- package/dist/utils/jitoTools.d.ts.map +1 -0
- package/dist/utils/jitoTools.js +78 -0
- package/dist/utils/jitoTools.js.map +1 -0
- package/package.json +5 -2
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { Connection, Keypair, PublicKey, TransactionInstruction, Transaction, } from "@solana/web3.js";
|
|
2
|
+
import { Logger } from "../../core/utils";
|
|
3
|
+
import { Raydium, TxVersion, getCpmmPdaPoolId, CREATE_CPMM_POOL_PROGRAM, } from "@raydium-io/raydium-sdk-v2";
|
|
4
|
+
import { BN } from "bn.js";
|
|
5
|
+
const WSOL = new PublicKey("So11111111111111111111111111111111111111112");
|
|
6
|
+
/**
|
|
7
|
+
* Raydium CPMM (Constant Product Market Maker) Strategy
|
|
8
|
+
* Uses the newer CP-Swap program - no OpenBook market required
|
|
9
|
+
* Cost: ~0.15 SOL
|
|
10
|
+
*/
|
|
11
|
+
export class CPMMManager {
|
|
12
|
+
connection;
|
|
13
|
+
wallet;
|
|
14
|
+
cluster;
|
|
15
|
+
raydium = null;
|
|
16
|
+
constructor(connection, wallet, cluster = "mainnet-beta") {
|
|
17
|
+
this.connection = connection;
|
|
18
|
+
this.wallet = wallet;
|
|
19
|
+
this.cluster = cluster;
|
|
20
|
+
}
|
|
21
|
+
async loadSdk() {
|
|
22
|
+
if (!this.raydium) {
|
|
23
|
+
Logger.info("Loading Raydium SDK...");
|
|
24
|
+
this.raydium = await Raydium.load({
|
|
25
|
+
connection: this.connection,
|
|
26
|
+
owner: this.wallet,
|
|
27
|
+
cluster: this.cluster === "mainnet-beta" ? "mainnet" : this.cluster,
|
|
28
|
+
disableLoadToken: true,
|
|
29
|
+
});
|
|
30
|
+
Logger.info(`Raydium SDK loaded for cluster: ${this.cluster}`);
|
|
31
|
+
}
|
|
32
|
+
return this.raydium;
|
|
33
|
+
}
|
|
34
|
+
async initialize(options, mint) {
|
|
35
|
+
Logger.info("Initializing Raydium CPMM Strategy...");
|
|
36
|
+
// Load SDK to verify it works
|
|
37
|
+
const raydium = await this.loadSdk();
|
|
38
|
+
const solLiquidityAmount = options.liquidity?.solAmount ?? options.solLiquidityAmount ?? 0;
|
|
39
|
+
const tokenLiquidityAmount = options.liquidity?.tokenAmount ?? options.tokenLiquidityAmount ?? 0;
|
|
40
|
+
// Token amounts with proper decimals
|
|
41
|
+
const mintAAmount = new BN(tokenLiquidityAmount * Math.pow(10, options.decimals || 6));
|
|
42
|
+
const mintBAmount = new BN(solLiquidityAmount * Math.pow(10, 9));
|
|
43
|
+
Logger.info(`CPMM Pool Config:`);
|
|
44
|
+
Logger.info(` Token: ${mint.toBase58().slice(0, 8)}...`);
|
|
45
|
+
Logger.info(` Quote: WSOL`);
|
|
46
|
+
Logger.info(` Token Amount: ${tokenLiquidityAmount}`);
|
|
47
|
+
Logger.info(` SOL Amount: ${solLiquidityAmount}`);
|
|
48
|
+
Logger.info(` Cluster: ${this.cluster}`);
|
|
49
|
+
// Derive pool ID (deterministic from mints and config)
|
|
50
|
+
const programId = this.cluster === "devnet"
|
|
51
|
+
? new PublicKey("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW")
|
|
52
|
+
: CREATE_CPMM_POOL_PROGRAM;
|
|
53
|
+
// Get default config ID for the program
|
|
54
|
+
// In production, this would use the actual SDK createPool method
|
|
55
|
+
// For dry-run testing, we demonstrate the SDK loads and can derive addresses
|
|
56
|
+
try {
|
|
57
|
+
// Create pool using Raydium SDK V2
|
|
58
|
+
const { execute, extInfo } = await raydium.cpmm.createPool({
|
|
59
|
+
programId: raydium.cluster === "devnet"
|
|
60
|
+
? new PublicKey("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW")
|
|
61
|
+
: new PublicKey("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),
|
|
62
|
+
poolFeeAccount: raydium.cluster === "devnet"
|
|
63
|
+
? new PublicKey("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2") // Devnet fee account
|
|
64
|
+
: new PublicKey("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyGHZot1r29vn"), // Mainnet fee account
|
|
65
|
+
mintA: {
|
|
66
|
+
address: mint.toBase58(),
|
|
67
|
+
decimals: options.decimals || 6,
|
|
68
|
+
programId: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
|
|
69
|
+
},
|
|
70
|
+
mintB: {
|
|
71
|
+
address: WSOL.toBase58(),
|
|
72
|
+
decimals: 9,
|
|
73
|
+
programId: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
|
|
74
|
+
},
|
|
75
|
+
mintAAmount,
|
|
76
|
+
mintBAmount,
|
|
77
|
+
startTime: new BN(0),
|
|
78
|
+
ownerInfo: {
|
|
79
|
+
useSOLBalance: true,
|
|
80
|
+
},
|
|
81
|
+
associatedOnly: false,
|
|
82
|
+
txVersion: TxVersion.LEGACY,
|
|
83
|
+
feeConfig: {
|
|
84
|
+
id: raydium.cluster === "devnet"
|
|
85
|
+
? new PublicKey("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW").toBase58() // Placeholder or fetch
|
|
86
|
+
: new PublicKey("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C").toBase58(),
|
|
87
|
+
index: 0,
|
|
88
|
+
tradeFeeRate: 25,
|
|
89
|
+
protocolFeeRate: 10000,
|
|
90
|
+
fundFeeRate: 0,
|
|
91
|
+
createPoolFee: "0",
|
|
92
|
+
creatorFeeRate: 0,
|
|
93
|
+
}, // Cast to any to bypass strict SDK V2 internal interface mismatch if needed
|
|
94
|
+
});
|
|
95
|
+
const poolId = new PublicKey(extInfo.address.poolId);
|
|
96
|
+
Logger.info(`CPMM Pool ID: ${poolId.toBase58()}`);
|
|
97
|
+
// Get transaction data
|
|
98
|
+
const txres = await execute({ sendAndConfirm: false });
|
|
99
|
+
// Extract instructions from transaction
|
|
100
|
+
let instructions = [];
|
|
101
|
+
// Handle multiple potential return types from SDK V2 execute
|
|
102
|
+
const signedTx = txres.signedTx;
|
|
103
|
+
if (signedTx instanceof Transaction) {
|
|
104
|
+
instructions = signedTx.instructions;
|
|
105
|
+
}
|
|
106
|
+
Logger.info(`CPMM Pool Creation: ${instructions.length} instructions generated.`);
|
|
107
|
+
return {
|
|
108
|
+
poolId,
|
|
109
|
+
instructions,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
Logger.warn(`CPMM error: ${error.message}`);
|
|
114
|
+
return {
|
|
115
|
+
poolId: PublicKey.default,
|
|
116
|
+
instructions: [],
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=CPMMManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CPMMManager.js","sourceRoot":"","sources":["../../../src/strategies/raydium/CPMMManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/strategies/raydium/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/strategies/raydium/index.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
|
2
|
+
export type BlockEngineRegion = "default" | "ny" | "amsterdam" | "frankfurt" | "tokyo" | "slc";
|
|
3
|
+
export declare const JITO_TIP_ACCOUNT_STRINGS: string[];
|
|
4
|
+
export declare const JITO_TIP_ACCOUNTS: PublicKey[];
|
|
5
|
+
export declare function getRandomTipAccount(): PublicKey;
|
|
6
|
+
export declare function getBlockEngineHost(cluster: "mainnet-beta" | "devnet", region?: BlockEngineRegion): string;
|
|
7
|
+
export type JitoTipFloorPercentile = 25 | 50 | 75 | 95 | 99;
|
|
8
|
+
export interface GetJitoTipFloorOptions {
|
|
9
|
+
percentile?: JitoTipFloorPercentile;
|
|
10
|
+
fallbackSol?: number;
|
|
11
|
+
timeoutMs?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function getJitoTipFloor(options?: GetJitoTipFloorOptions): Promise<number>;
|
|
14
|
+
//# sourceMappingURL=jitoTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jitoTools.d.ts","sourceRoot":"","sources":["../../src/utils/jitoTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,IAAI,GACJ,WAAW,GACX,WAAW,GACX,OAAO,GACP,KAAK,CAAC;AAEV,eAAO,MAAM,wBAAwB,UASpC,CAAC;AAEF,eAAO,MAAM,iBAAiB,aAE7B,CAAC;AAEF,wBAAgB,mBAAmB,IAAI,SAAS,CAI/C;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,cAAc,GAAG,QAAQ,EAClC,MAAM,GAAE,iBAA6B,GACpC,MAAM,CAoBR;AAED,MAAM,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAE5D,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD,wBAAsB,eAAe,CACnC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,MAAM,CAAC,CAwCjB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
|
2
|
+
export const JITO_TIP_ACCOUNT_STRINGS = [
|
|
3
|
+
"96gYZGLnJYVFmbjzopPSU6QiEV5fGqZNyN9nmNhvrZU5",
|
|
4
|
+
"HFqU5x63VTqvQss8hp11i4wVV8bD44PvwucfZ2bU7gRe",
|
|
5
|
+
"Cw8CFyM9FkoMi7K7Crf6HNQqf4uEMzpKw6QNghXLvLkY",
|
|
6
|
+
"ADuUkR4vqLUMWXxW9gh6D6L8pMSawimctcNZ5pGwDcEt",
|
|
7
|
+
"DfXygSm4jCyNCybVYYK6DwvWqjKee8pbDmJGcLWNDXjh",
|
|
8
|
+
"DttWaMuVvTiduZRnguLF7jNxTgiMBZ1hyAumKUiL2KRL",
|
|
9
|
+
"ADaUMid9yfUytqMBgopwjb2DTLSokTSzL1zt6iGPaS49",
|
|
10
|
+
"3AVi9Tg9Uo68tJfuvoKvqKNWKkC5wPdSSdeBnizKZ6jT",
|
|
11
|
+
];
|
|
12
|
+
export const JITO_TIP_ACCOUNTS = JITO_TIP_ACCOUNT_STRINGS.map((a) => new PublicKey(a));
|
|
13
|
+
export function getRandomTipAccount() {
|
|
14
|
+
return JITO_TIP_ACCOUNTS[Math.floor(Math.random() * JITO_TIP_ACCOUNTS.length)];
|
|
15
|
+
}
|
|
16
|
+
export function getBlockEngineHost(cluster, region = "default") {
|
|
17
|
+
if (cluster === "devnet") {
|
|
18
|
+
return "ny.devnet.block-engine.jito.wtf";
|
|
19
|
+
}
|
|
20
|
+
switch (region) {
|
|
21
|
+
case "ny":
|
|
22
|
+
return "ny.mainnet.block-engine.jito.wtf";
|
|
23
|
+
case "amsterdam":
|
|
24
|
+
return "amsterdam.mainnet.block-engine.jito.wtf";
|
|
25
|
+
case "frankfurt":
|
|
26
|
+
return "frankfurt.mainnet.block-engine.jito.wtf";
|
|
27
|
+
case "tokyo":
|
|
28
|
+
return "tokyo.mainnet.block-engine.jito.wtf";
|
|
29
|
+
case "slc":
|
|
30
|
+
return "slc.mainnet.block-engine.jito.wtf";
|
|
31
|
+
case "default":
|
|
32
|
+
default:
|
|
33
|
+
return "mainnet.block-engine.jito.wtf";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function normalizeTipToSol(value) {
|
|
37
|
+
if (!Number.isFinite(value))
|
|
38
|
+
return NaN;
|
|
39
|
+
if (value <= 1)
|
|
40
|
+
return value;
|
|
41
|
+
if (value > 1e11)
|
|
42
|
+
return value / 1e15;
|
|
43
|
+
return value / 1e9;
|
|
44
|
+
}
|
|
45
|
+
export async function getJitoTipFloor(options = {}) {
|
|
46
|
+
const percentile = options.percentile ?? 95;
|
|
47
|
+
const fallbackSol = options.fallbackSol ?? 0.001;
|
|
48
|
+
const timeoutMs = options.timeoutMs ?? 2500;
|
|
49
|
+
const controller = new AbortController();
|
|
50
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
51
|
+
try {
|
|
52
|
+
const res = await fetch("https://bundles.jito.wtf/api/v1/bundles/tip_floor", {
|
|
53
|
+
signal: controller.signal,
|
|
54
|
+
});
|
|
55
|
+
if (!res.ok) {
|
|
56
|
+
throw new Error(`tip_floor failed: ${res.status} ${res.statusText}`);
|
|
57
|
+
}
|
|
58
|
+
const json = await res.json();
|
|
59
|
+
const row = Array.isArray(json) ? json[0] : json;
|
|
60
|
+
const key = `landed_tips_${percentile}th_percentile`;
|
|
61
|
+
const raw = row?.[key];
|
|
62
|
+
if (typeof raw !== "number") {
|
|
63
|
+
throw new Error(`tip_floor missing field: ${key}`);
|
|
64
|
+
}
|
|
65
|
+
const sol = normalizeTipToSol(raw);
|
|
66
|
+
if (!Number.isFinite(sol) || sol <= 0) {
|
|
67
|
+
throw new Error("tip_floor returned invalid value");
|
|
68
|
+
}
|
|
69
|
+
return sol;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return fallbackSol;
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
clearTimeout(timeout);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=jitoTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jitoTools.js","sourceRoot":"","sources":["../../src/utils/jitoTools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "solana-meme-kit",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "The abstracted shovel for launching professional Solana tokens. Automated Low-Cost OpenBook Markets and Jito Bundles.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
5
7
|
"module": "dist/index.js",
|
|
6
8
|
"types": "dist/index.d.ts",
|
|
7
9
|
"files": [
|
|
8
10
|
"dist"
|
|
9
11
|
],
|
|
10
12
|
"scripts": {
|
|
11
|
-
"build": "tsc",
|
|
13
|
+
"build": "tsc -p tsconfig.build.json",
|
|
14
|
+
"prepublishOnly": "bun run build",
|
|
12
15
|
"test": "bun test"
|
|
13
16
|
},
|
|
14
17
|
"license": "MIT",
|