solana-meme-kit 0.3.0 → 0.4.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 (62) hide show
  1. package/README.md +493 -3
  2. package/dist/core/MemeKit.d.ts +30 -0
  3. package/dist/core/MemeKit.d.ts.map +1 -0
  4. package/dist/core/MemeKit.js +218 -0
  5. package/dist/core/MemeKit.js.map +1 -0
  6. package/dist/core/utils.d.ts +16 -0
  7. package/dist/core/utils.d.ts.map +1 -0
  8. package/dist/core/utils.js +39 -0
  9. package/dist/core/utils.js.map +1 -0
  10. package/dist/index.d.ts +10 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +16 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/managers/JitoManager.d.ts +17 -0
  15. package/dist/managers/JitoManager.d.ts.map +1 -0
  16. package/dist/managers/JitoManager.js +64 -0
  17. package/dist/managers/JitoManager.js.map +1 -0
  18. package/dist/managers/LiquidityManager.d.ts +16 -0
  19. package/dist/managers/LiquidityManager.d.ts.map +1 -0
  20. package/dist/managers/LiquidityManager.js +121 -0
  21. package/dist/managers/LiquidityManager.js.map +1 -0
  22. package/dist/managers/MarketManager.d.ts +17 -0
  23. package/dist/managers/MarketManager.d.ts.map +1 -0
  24. package/dist/managers/MarketManager.js +182 -0
  25. package/dist/managers/MarketManager.js.map +1 -0
  26. package/dist/managers/TokenManager.d.ts +18 -0
  27. package/dist/managers/TokenManager.d.ts.map +1 -0
  28. package/dist/managers/TokenManager.js +64 -0
  29. package/dist/managers/TokenManager.js.map +1 -0
  30. package/dist/strategies/LiquidityStrategy.d.ts +53 -0
  31. package/dist/strategies/LiquidityStrategy.d.ts.map +1 -0
  32. package/dist/strategies/LiquidityStrategy.js +2 -0
  33. package/dist/strategies/LiquidityStrategy.js.map +1 -0
  34. package/dist/strategies/meteora/DLMMManager.d.ts +25 -0
  35. package/dist/strategies/meteora/DLMMManager.d.ts.map +1 -0
  36. package/dist/strategies/meteora/DLMMManager.js +326 -0
  37. package/dist/strategies/meteora/DLMMManager.js.map +1 -0
  38. package/dist/strategies/meteora/index.d.ts +3 -0
  39. package/dist/strategies/meteora/index.d.ts.map +1 -0
  40. package/dist/strategies/meteora/index.js +4 -0
  41. package/dist/strategies/meteora/index.js.map +1 -0
  42. package/dist/strategies/meteora/presets.d.ts +32 -0
  43. package/dist/strategies/meteora/presets.d.ts.map +1 -0
  44. package/dist/strategies/meteora/presets.js +43 -0
  45. package/dist/strategies/meteora/presets.js.map +1 -0
  46. package/dist/strategies/raydium/AMMManager.d.ts +20 -0
  47. package/dist/strategies/raydium/AMMManager.d.ts.map +1 -0
  48. package/dist/strategies/raydium/AMMManager.js +96 -0
  49. package/dist/strategies/raydium/AMMManager.js.map +1 -0
  50. package/dist/strategies/raydium/CPMMManager.d.ts +20 -0
  51. package/dist/strategies/raydium/CPMMManager.d.ts.map +1 -0
  52. package/dist/strategies/raydium/CPMMManager.js +121 -0
  53. package/dist/strategies/raydium/CPMMManager.js.map +1 -0
  54. package/dist/strategies/raydium/index.d.ts +3 -0
  55. package/dist/strategies/raydium/index.d.ts.map +1 -0
  56. package/dist/strategies/raydium/index.js +4 -0
  57. package/dist/strategies/raydium/index.js.map +1 -0
  58. package/dist/utils/jitoTools.d.ts +14 -0
  59. package/dist/utils/jitoTools.d.ts.map +1 -0
  60. package/dist/utils/jitoTools.js +78 -0
  61. package/dist/utils/jitoTools.js.map +1 -0
  62. package/package.json +5 -2
@@ -0,0 +1,182 @@
1
+ import { Connection, Keypair, PublicKey, SystemProgram, Transaction, TransactionInstruction } from '@solana/web3.js';
2
+ import { Market, DexInstructions } from '@openbook-dex/openbook'; // Verify typescript support/exports
3
+ import { ACCOUNT_SIZE, createInitializeAccountInstruction, TOKEN_PROGRAM_ID } from '@solana/spl-token';
4
+ import { Logger } from '../core/utils';
5
+ import { BN } from 'bn.js';
6
+ // OpenBook Program ID (Mainnet)
7
+ // OpenBook Program ID (Mainnet) - V1 Official
8
+ export const OPENBOOK_PROGRAM_ID = new PublicKey('srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX');
9
+ export class MarketManager {
10
+ connection;
11
+ wallet;
12
+ cluster;
13
+ constructor(connection, wallet, cluster = 'mainnet-beta') {
14
+ this.connection = connection;
15
+ this.wallet = wallet;
16
+ this.cluster = cluster;
17
+ }
18
+ async createLowCostMarket(baseMint, quoteMint, baseDecimals, quoteDecimals,
19
+ // Defaults for "Low Cost"
20
+ eventQueueLength = 128, requestQueueLength = 63, orderbookLength = 201) {
21
+ Logger.info('Generating Low-Cost OpenBook Market...');
22
+ const marketKeypair = Keypair.generate();
23
+ const eventQueue = Keypair.generate();
24
+ const requestQueue = Keypair.generate();
25
+ const bids = Keypair.generate();
26
+ const asks = Keypair.generate();
27
+ const vaultSignerNonce = new BN(0); // This usually needs calculation or is found inside the instruction builder
28
+ const [vaultOwner, _vaultSignerNonce] = await PublicKey.findProgramAddress([
29
+ marketKeypair.publicKey.toBuffer(),
30
+ vaultSignerNonce.toArrayLike(Buffer, 'le', 8),
31
+ ], OPENBOOK_PROGRAM_ID);
32
+ // Calculate space and rent
33
+ // We need to look up exact sizes.
34
+ // Standard sizes:
35
+ // EventQ: 8 + 12 * length? Header + events?
36
+ // RequestQ: ...
37
+ // Orderbook: ...
38
+ // For simplicity, we'll try to use the Market.create helper if it allows options,
39
+ // OR manual calculation.
40
+ // The @openbook-dex/openbook package usually exposes `Market.getLayout(programId)` or similar.
41
+ // Let's assume standard low-cost sizes (in bytes) often used:
42
+ // Event Queue (128): 262144 (This is standard 2978 slots? No, 128 is tiny).
43
+ // Let's use specific calculations from v1 documentation/examples if available.
44
+ // PROVISIONAL: Using known valid sizes for "low cost"
45
+ // Event Queue (128 slots) -> ~11308 bytes?
46
+ // Request Queue (63 slots) -> ~5084 bytes?
47
+ // Bids/Asks (201 slots) -> ~14524 bytes?
48
+ // Better strategy: Calculate safely or over-provision slightly less than max.
49
+ // Length * SlotSize + Header
50
+ const EVENT_SLOT_SIZE = 88;
51
+ const REQUEST_SLOT_SIZE = 80;
52
+ const ORDER_SLOT_SIZE = 72;
53
+ const HEADER_SIZE = 32; // Approx, need exact layout
54
+ // Actually, let's use the layout from the SDK
55
+ const totalEventQueueSize = 376 + 128 * 88; // Header + slots
56
+ const totalRequestQueueSize = 332 + 63 * 80;
57
+ const totalOrderbookSize = 104 + 201 * 72;
58
+ Logger.info(`Calculated Sizes - Event: ${totalEventQueueSize}, Request: ${totalRequestQueueSize}, Orderbook: ${totalOrderbookSize}`);
59
+ const lamportsEventQueue = await this.connection.getMinimumBalanceForRentExemption(totalEventQueueSize);
60
+ const lamportsRequestQueue = await this.connection.getMinimumBalanceForRentExemption(totalRequestQueueSize);
61
+ const lamportsOrderbook = await this.connection.getMinimumBalanceForRentExemption(totalOrderbookSize);
62
+ const tx = new Transaction();
63
+ // Create Accounts
64
+ tx.add(SystemProgram.createAccount({
65
+ fromPubkey: this.wallet.publicKey,
66
+ newAccountPubkey: eventQueue.publicKey,
67
+ lamports: lamportsEventQueue,
68
+ space: totalEventQueueSize,
69
+ programId: OPENBOOK_PROGRAM_ID,
70
+ }), SystemProgram.createAccount({
71
+ fromPubkey: this.wallet.publicKey,
72
+ newAccountPubkey: requestQueue.publicKey,
73
+ lamports: lamportsRequestQueue,
74
+ space: totalRequestQueueSize,
75
+ programId: OPENBOOK_PROGRAM_ID,
76
+ }), SystemProgram.createAccount({
77
+ fromPubkey: this.wallet.publicKey,
78
+ newAccountPubkey: bids.publicKey,
79
+ lamports: lamportsOrderbook,
80
+ space: totalOrderbookSize,
81
+ programId: OPENBOOK_PROGRAM_ID,
82
+ }), SystemProgram.createAccount({
83
+ fromPubkey: this.wallet.publicKey,
84
+ newAccountPubkey: asks.publicKey,
85
+ lamports: lamportsOrderbook,
86
+ space: totalOrderbookSize,
87
+ programId: OPENBOOK_PROGRAM_ID,
88
+ }));
89
+ // Initialize Market
90
+ const marketLayoutSpan = Market.getLayout(OPENBOOK_PROGRAM_ID).span;
91
+ const lamportsMarket = await this.connection.getMinimumBalanceForRentExemption(marketLayoutSpan);
92
+ // Create Vaults
93
+ // Vaults are Token Accounts owned by the Market PDA (Vault Owner)
94
+ // We generate random keypairs for them, create the accounts, and init them with Owner = vaultOwner
95
+ const baseVault = Keypair.generate();
96
+ const quoteVault = Keypair.generate();
97
+ const vaultLamports = await this.connection.getMinimumBalanceForRentExemption(ACCOUNT_SIZE);
98
+ tx.add(
99
+ // Create Base Vault Account
100
+ SystemProgram.createAccount({
101
+ fromPubkey: this.wallet.publicKey,
102
+ newAccountPubkey: baseVault.publicKey,
103
+ lamports: vaultLamports,
104
+ space: ACCOUNT_SIZE,
105
+ programId: TOKEN_PROGRAM_ID,
106
+ }),
107
+ // Initialize Base Vault (Owned by Vault Owner PDA)
108
+ createInitializeAccountInstruction(baseVault.publicKey, baseMint, vaultOwner),
109
+ // Create Quote Vault Account
110
+ SystemProgram.createAccount({
111
+ fromPubkey: this.wallet.publicKey,
112
+ newAccountPubkey: quoteVault.publicKey,
113
+ lamports: vaultLamports,
114
+ space: ACCOUNT_SIZE,
115
+ programId: TOKEN_PROGRAM_ID,
116
+ }),
117
+ // Initialize Quote Vault (Owned by Vault Owner PDA)
118
+ createInitializeAccountInstruction(quoteVault.publicKey, quoteMint, vaultOwner));
119
+ tx.add(SystemProgram.createAccount({
120
+ fromPubkey: this.wallet.publicKey,
121
+ newAccountPubkey: marketKeypair.publicKey,
122
+ lamports: lamportsMarket,
123
+ space: marketLayoutSpan,
124
+ programId: OPENBOOK_PROGRAM_ID,
125
+ }), DexInstructions.initializeMarket({
126
+ market: marketKeypair.publicKey,
127
+ requestQueue: requestQueue.publicKey,
128
+ eventQueue: eventQueue.publicKey,
129
+ bids: bids.publicKey,
130
+ asks: asks.publicKey,
131
+ baseVault: baseVault.publicKey,
132
+ quoteVault: quoteVault.publicKey,
133
+ baseMint,
134
+ quoteMint,
135
+ baseLotSize: new BN(1), // Tunable?
136
+ quoteLotSize: new BN(1), // Tunable?
137
+ feeRateBps: 0,
138
+ vaultSignerNonce: _vaultSignerNonce,
139
+ programId: OPENBOOK_PROGRAM_ID,
140
+ quoteDustThreshold: new BN(100), // Standard dust threshold
141
+ // authority // deprecated/not used usually?
142
+ }));
143
+ Logger.info(`Sending Market Creation Transaction (Market ID: ${marketKeypair.publicKey.toString()})...`);
144
+ // Note: This transaction might be large.
145
+ // We strictly need to sign with all these keypairs.
146
+ const signers = [
147
+ this.wallet,
148
+ marketKeypair,
149
+ eventQueue,
150
+ requestQueue,
151
+ bids,
152
+ asks,
153
+ baseVault,
154
+ quoteVault
155
+ ];
156
+ // For now, return the instruction and signers to be sent, or send it here.
157
+ // The architecture says "MarketManager Handles interaction".
158
+ // Let's send it.
159
+ // Using sendTransaction helper from web3.js/connection
160
+ // We need to compile it or use sendTransaction (if passing Keypair as wallet).
161
+ // Let's assume standard behavior.
162
+ try {
163
+ const sig = await this.connection.sendTransaction(tx, signers);
164
+ await this.connection.confirmTransaction(sig);
165
+ Logger.info(`Market Created! Signature: ${sig}`);
166
+ }
167
+ catch (e) {
168
+ Logger.error('Failed to create market', e);
169
+ throw e;
170
+ }
171
+ return {
172
+ marketId: marketKeypair.publicKey.toString(),
173
+ marketState: {
174
+ baseVault: baseVault.publicKey,
175
+ quoteVault: quoteVault.publicKey,
176
+ eventQueue: eventQueue.publicKey,
177
+ // ...
178
+ }
179
+ };
180
+ }
181
+ }
182
+ //# sourceMappingURL=MarketManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarketManager.js","sourceRoot":"","sources":["../../src/managers/MarketManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Connection, Keypair, PublicKey } from '@solana/web3.js';
2
+ export interface TokenConfig {
3
+ name: string;
4
+ symbol: string;
5
+ uri: string;
6
+ decimals?: number;
7
+ initialSupply: number;
8
+ }
9
+ export declare class TokenManager {
10
+ private connection;
11
+ private umi;
12
+ constructor(connection: Connection, payer: Keypair);
13
+ createToken(config: TokenConfig): Promise<{
14
+ mint: Keypair;
15
+ }>;
16
+ revokeAuthorities(mint: PublicKey, payer: Keypair): Promise<void>;
17
+ }
18
+ //# sourceMappingURL=TokenManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenManager.d.ts","sourceRoot":"","sources":["../../src/managers/TokenManager.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjE,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,YAAY;IAGT,OAAO,CAAC,UAAU;IAF9B,OAAO,CAAC,GAAG,CAAC;gBAEQ,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO;IAQpD,WAAW,CAAC,MAAM,EAAE,WAAW;;;IAmC/B,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO;CAyB1D"}
@@ -0,0 +1,64 @@
1
+ import { createUmi } from '@metaplex-foundation/umi-bundle-defaults';
2
+ import { createSignerFromKeypair, signerIdentity, generateSigner, percentAmount, keypairIdentity } from '@metaplex-foundation/umi';
3
+ import { createFungible, mintV1, TokenStandard, mplTokenMetadata } from '@metaplex-foundation/mpl-token-metadata';
4
+ import { fromWeb3JsKeypair, toWeb3JsKeypair } from '@metaplex-foundation/umi-web3js-adapters';
5
+ import { Connection, Keypair, PublicKey } from '@solana/web3.js';
6
+ import { setAuthority, AuthorityType } from '@solana/spl-token';
7
+ import { Logger } from '../core/utils';
8
+ export class TokenManager {
9
+ connection;
10
+ umi;
11
+ constructor(connection, payer) {
12
+ this.connection = connection;
13
+ this.umi = createUmi(connection.rpcEndpoint)
14
+ .use(mplTokenMetadata());
15
+ const keypair = fromWeb3JsKeypair(payer);
16
+ this.umi.use(keypairIdentity(keypair));
17
+ }
18
+ async createToken(config) {
19
+ Logger.info(`Creating token ${config.name} (${config.symbol})...`);
20
+ const mint = generateSigner(this.umi);
21
+ const supply = BigInt(config.initialSupply * (10 ** (config.decimals || 6)));
22
+ // Create the Fungible Token
23
+ // We use createFungible which inherently creates a mint with 0 decimals if not specified,
24
+ // but here we specify it. It defaults to 0 supply.
25
+ const builder = createFungible(this.umi, {
26
+ mint,
27
+ name: config.name,
28
+ symbol: config.symbol,
29
+ uri: config.uri,
30
+ sellerFeeBasisPoints: percentAmount(0),
31
+ decimals: config.decimals || 6,
32
+ });
33
+ await builder.sendAndConfirm(this.umi);
34
+ Logger.info(`Token Mint created: ${mint.publicKey.toString()}`);
35
+ // Mint initial supply to payer
36
+ Logger.info(`Minting ${config.initialSupply} tokens to payer...`);
37
+ await mintV1(this.umi, {
38
+ mint: mint.publicKey,
39
+ amount: supply,
40
+ tokenStandard: TokenStandard.Fungible,
41
+ }).sendAndConfirm(this.umi);
42
+ return {
43
+ mint: toWeb3JsKeypair(mint),
44
+ };
45
+ }
46
+ async revokeAuthorities(mint, payer) {
47
+ Logger.info(`Revoking Mint and Freeze authorities for ${mint.toString()}...`);
48
+ // Revoke Mint Authority
49
+ await setAuthority(this.connection, payer, // Payer
50
+ mint, // Account
51
+ payer, // Current authority
52
+ AuthorityType.MintTokens, null // Set new authority to null to revoke
53
+ );
54
+ Logger.info(`Mint authority revoked for ${mint.toString()}`);
55
+ // Revoke Freeze Authority
56
+ await setAuthority(this.connection, payer, // Payer
57
+ mint, // Account
58
+ payer, // Current authority
59
+ AuthorityType.FreezeAccount, null // Set new authority to null to revoke
60
+ );
61
+ Logger.info(`Freeze authority revoked for ${mint.toString()}`);
62
+ }
63
+ }
64
+ //# sourceMappingURL=TokenManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenManager.js","sourceRoot":"","sources":["../../src/managers/TokenManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { Keypair, TransactionInstruction, PublicKey } from "@solana/web3.js";
2
+ import type { BlockEngineRegion } from "../utils/jitoTools";
3
+ import type { StrategyType } from "@meteora-ag/dlmm";
4
+ export type MeteoraStrategy = "Spot" | "Curve" | "BidAsk";
5
+ export interface MeteoraOptions {
6
+ activationDate?: Date;
7
+ binStep?: number;
8
+ width?: number;
9
+ strategy?: MeteoraStrategy;
10
+ strategyType?: StrategyType;
11
+ lfg?: {
12
+ minPrice?: number;
13
+ maxPrice?: number;
14
+ curvature?: number;
15
+ };
16
+ feeBps?: number;
17
+ baseFactor?: number;
18
+ includeAlphaVault?: boolean;
19
+ }
20
+ export interface LaunchOptions {
21
+ name: string;
22
+ symbol: string;
23
+ description?: string;
24
+ image: string;
25
+ decimals?: number;
26
+ supply?: number;
27
+ solLiquidityAmount?: number;
28
+ tokenLiquidityAmount?: number;
29
+ liquidity?: {
30
+ solAmount: number;
31
+ tokenAmount: number;
32
+ };
33
+ dex?: "meteora" | "meteora:dlmm" | "raydium:cpmm" | "raydium:amm";
34
+ strategy?: "meteora" | "raydium-cpmm" | "raydium-amm";
35
+ devBuySolAmount?: number;
36
+ jitoTip?: number | "auto";
37
+ blockEngine?: BlockEngineRegion;
38
+ meteoraOptions?: {
39
+ activationPoint?: number;
40
+ activationDate?: Date;
41
+ activationType?: "timestamp" | "slot";
42
+ };
43
+ meteora?: MeteoraOptions;
44
+ marketMode?: "low-cost" | "standard";
45
+ }
46
+ export interface LiquidityStrategy {
47
+ initialize(options: LaunchOptions, mint: PublicKey): Promise<{
48
+ poolId: PublicKey;
49
+ instructions: TransactionInstruction[];
50
+ signers?: Keypair[];
51
+ }>;
52
+ }
53
+ //# sourceMappingURL=LiquidityStrategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiquidityStrategy.d.ts","sourceRoot":"","sources":["../../src/strategies/LiquidityStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EACP,sBAAsB,EACtB,SAAS,EACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,IAAI,CAAC;IAEtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B,GAAG,CAAC,EAAE;QACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,EAAE;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAGF,GAAG,CAAC,EAAE,SAAS,GAAG,cAAc,GAAG,cAAc,GAAG,aAAa,CAAC;IAClE,QAAQ,CAAC,EAAE,SAAS,GAAG,cAAc,GAAG,aAAa,CAAC;IAGtD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAEhC,cAAc,CAAC,EAAE;QACf,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,IAAI,CAAC;QACtB,cAAc,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;KACvC,CAAC;IAEF,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;CAGtC;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CACR,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC;QACT,MAAM,EAAE,SAAS,CAAC;QAClB,YAAY,EAAE,sBAAsB,EAAE,CAAC;QACvC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;KACrB,CAAC,CAAC;CACJ"}
@@ -0,0 +1,2 @@
1
+ import { Connection, Keypair, TransactionInstruction, PublicKey, } from "@solana/web3.js";
2
+ //# sourceMappingURL=LiquidityStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiquidityStrategy.js","sourceRoot":"","sources":["../../src/strategies/LiquidityStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,OAAO,EACP,sBAAsB,EACtB,SAAS,GACV,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { Connection, Keypair, PublicKey, TransactionInstruction } from "@solana/web3.js";
2
+ import type { LiquidityStrategy, LaunchOptions } from "../LiquidityStrategy";
3
+ export declare class DLMMManager implements LiquidityStrategy {
4
+ private connection;
5
+ private wallet;
6
+ private cluster;
7
+ private static DEFAULT_BASE_FACTOR;
8
+ private static U16_MAX;
9
+ private static MAX_LFG_BINS_SINGLE_TX;
10
+ private programId;
11
+ constructor(connection: Connection, wallet: Keypair, cluster?: "devnet" | "mainnet-beta");
12
+ /**
13
+ * Calculate the starting Bin ID from a price.
14
+ * Price = solAmount / tokenAmount (adjusted for decimals)
15
+ */
16
+ private calculateActiveBinId;
17
+ private priceToBinId;
18
+ private calculateLfgDistribution;
19
+ initialize(options: LaunchOptions, mint: PublicKey): Promise<{
20
+ poolId: PublicKey;
21
+ instructions: TransactionInstruction[];
22
+ signers?: Keypair[];
23
+ }>;
24
+ }
25
+ //# sourceMappingURL=DLMMManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DLMMManager.d.ts","sourceRoot":"","sources":["../../../src/strategies/meteora/DLMMManager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,OAAO,EACP,SAAS,EACT,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EAEd,MAAM,sBAAsB,CAAC;AA4B9B,qBAAa,WAAY,YAAW,iBAAiB;IAOjD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IARjB,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAS;IAC3C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAS;IAC/B,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAM;IAC3C,OAAO,CAAC,SAAS,CAAY;gBAGnB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,OAAO,EACf,OAAO,GAAE,QAAQ,GAAG,cAA+B;IAK7D;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAwB5B,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,wBAAwB;IAgD1B,UAAU,CACd,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC;QACT,MAAM,EAAE,SAAS,CAAC;QAClB,YAAY,EAAE,sBAAsB,EAAE,CAAC;QACvC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;KACrB,CAAC;CAuYH"}