@coinbarrel/sdk 1.2.0 → 2.0.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/dist/accounts.d.ts +36 -0
- package/dist/accounts.d.ts.map +1 -0
- package/dist/accounts.js +26 -31
- package/dist/accounts.js.map +1 -0
- package/dist/constants.d.ts +82 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +4 -1
- package/dist/constants.js.map +1 -0
- package/dist/create.d.ts +26 -0
- package/dist/create.d.ts.map +1 -0
- package/dist/create.js +1 -0
- package/dist/create.js.map +1 -0
- package/dist/curve.d.ts +60 -0
- package/dist/curve.d.ts.map +1 -0
- package/dist/curve.js +74 -16
- package/dist/curve.js.map +1 -0
- package/dist/index.d.ts +274 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -7
- package/dist/index.js.map +1 -0
- package/dist/metadata.d.ts +94 -0
- package/dist/metadata.d.ts.map +1 -0
- package/dist/metadata.js +1 -0
- package/dist/metadata.js.map +1 -0
- package/dist/pda.d.ts +69 -0
- package/dist/pda.d.ts.map +1 -0
- package/dist/pda.js +33 -0
- package/dist/pda.js.map +1 -0
- package/dist/pool.d.ts +32 -0
- package/dist/pool.d.ts.map +1 -0
- package/dist/pool.js +1 -0
- package/dist/pool.js.map +1 -0
- package/dist/rewards.d.ts +21 -0
- package/dist/rewards.d.ts.map +1 -0
- package/dist/rewards.js +1 -0
- package/dist/rewards.js.map +1 -0
- package/dist/types.d.ts +191 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/package.json +44 -44
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CoinBarrel SDK
|
|
3
|
+
*
|
|
4
|
+
* SDK for integrating with CoinBarrel AMM - bonding curves and liquidity pools on Solana.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { CoinBarrel } from '@coinbarrel/sdk';
|
|
9
|
+
*
|
|
10
|
+
* // Initialize SDK
|
|
11
|
+
* const sdk = new CoinBarrel({
|
|
12
|
+
* connection: new Connection('https://api.mainnet-beta.solana.com'),
|
|
13
|
+
* network: 'mainnet'
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* // Get a buy quote
|
|
17
|
+
* const quote = await sdk.curve.getBuyQuote(tokenMint, solAmount);
|
|
18
|
+
*
|
|
19
|
+
* // Build buy instruction
|
|
20
|
+
* const instructions = await sdk.curve.buildBuyInstruction({
|
|
21
|
+
* tokenMint,
|
|
22
|
+
* buyer: userWallet.publicKey,
|
|
23
|
+
* lamportsIn: BigInt(0.1 * 1e9) // 0.1 SOL
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @packageDocumentation
|
|
28
|
+
*/
|
|
29
|
+
import { Connection, Keypair, PublicKey, TransactionInstruction } from '@solana/web3.js';
|
|
30
|
+
import { type Network } from './constants.js';
|
|
31
|
+
import * as metadata from './metadata.js';
|
|
32
|
+
import type { CoinBarrelConfig, BondingCurveState, PoolState, MarketInfo, BuyOnCurveParams, SellOnCurveParams, SellMaxOnCurveParams, SwapSolToTokenParams, SwapTokenToSolParams, SwapTokenToSolMaxParams, CreateBarrelTokenParams, BuyQuote, SellQuote, SwapQuote } from './types.js';
|
|
33
|
+
export * from './constants.js';
|
|
34
|
+
export * from './types.js';
|
|
35
|
+
export * from './pda.js';
|
|
36
|
+
export { getBondingCurveState, getPoolState, getMarketInfo, getUserTokenBalance, } from './accounts.js';
|
|
37
|
+
export { getBuyQuote, getSellQuote, willTriggerMigration, MIGRATION_THRESHOLDS, buildBuyOnCurveInstruction, buildBuyOnCurveWithMigrationInstruction, } from './curve.js';
|
|
38
|
+
export { getMigrationPDAs } from './pda.js';
|
|
39
|
+
export type { MigrationPDAs } from './pda.js';
|
|
40
|
+
export { getSwapSolToTokenQuote, getSwapTokenToSolQuote } from './pool.js';
|
|
41
|
+
export { getTokenMetadata, getTokenMetadataJson, batchGetTokenMetadata, getMetadataPda, parseMetaplexMetadata, type TokenMetadata, type TokenMetadataJson, } from './metadata.js';
|
|
42
|
+
export { buildCreateBarrelTokenInstruction } from './create.js';
|
|
43
|
+
export { buildClaimHolderRewardsCurveInstruction, buildClaimHolderRewardsInstruction, } from './rewards.js';
|
|
44
|
+
/**
|
|
45
|
+
* CoinBarrel SDK - Main entry point
|
|
46
|
+
*
|
|
47
|
+
* Provides easy access to all CoinBarrel AMM functionality:
|
|
48
|
+
* - Bonding curve trading (pre-graduation)
|
|
49
|
+
* - AMM pool trading (post-graduation)
|
|
50
|
+
* - Market data and quotes
|
|
51
|
+
*
|
|
52
|
+
* @remarks
|
|
53
|
+
* Fee recipients are read from on-chain state and cannot be modified.
|
|
54
|
+
* The program enforces that all fees go to the correct recipients.
|
|
55
|
+
*/
|
|
56
|
+
export declare class CoinBarrel {
|
|
57
|
+
/** Solana RPC connection */
|
|
58
|
+
readonly connection: Connection;
|
|
59
|
+
/** Network (devnet or mainnet) */
|
|
60
|
+
readonly network: Network;
|
|
61
|
+
/** Program ID for the current network */
|
|
62
|
+
readonly programId: PublicKey;
|
|
63
|
+
/** Admin fee recipient for the current network */
|
|
64
|
+
readonly adminFeeRecipient: PublicKey;
|
|
65
|
+
/** Bonding curve operations */
|
|
66
|
+
readonly curve: CurveModule;
|
|
67
|
+
/** AMM pool operations */
|
|
68
|
+
readonly pool: PoolModule;
|
|
69
|
+
constructor(config: CoinBarrelConfig);
|
|
70
|
+
/**
|
|
71
|
+
* Get comprehensive market info for a token
|
|
72
|
+
* Automatically detects if on bonding curve or AMM pool
|
|
73
|
+
*/
|
|
74
|
+
getMarketInfo(tokenMint: PublicKey): Promise<MarketInfo | null>;
|
|
75
|
+
/**
|
|
76
|
+
* Get user's token balance
|
|
77
|
+
*/
|
|
78
|
+
getUserBalance(tokenMint: PublicKey, user: PublicKey): Promise<bigint>;
|
|
79
|
+
/**
|
|
80
|
+
* Check if a token is on bonding curve (not yet graduated to pool)
|
|
81
|
+
* Returns true if curve exists AND pool does not exist
|
|
82
|
+
*/
|
|
83
|
+
isOnCurve(tokenMint: PublicKey): Promise<boolean>;
|
|
84
|
+
/**
|
|
85
|
+
* Check if a token has graduated to AMM pool
|
|
86
|
+
*/
|
|
87
|
+
isOnPool(tokenMint: PublicKey): Promise<boolean>;
|
|
88
|
+
/**
|
|
89
|
+
* Get on-chain token metadata (name, symbol, uri)
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* const meta = await sdk.getTokenMetadata(tokenMint);
|
|
94
|
+
* console.log(meta?.name, meta?.symbol);
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
getTokenMetadata(tokenMint: PublicKey): Promise<metadata.TokenMetadata | null>;
|
|
98
|
+
/**
|
|
99
|
+
* Get full token metadata including off-chain JSON (image, description, socials)
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* const meta = await sdk.getTokenMetadataJson(tokenMint);
|
|
104
|
+
* console.log(meta?.name, meta?.image, meta?.twitter);
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
getTokenMetadataJson(tokenMint: PublicKey, options?: {
|
|
108
|
+
timeoutMs?: number;
|
|
109
|
+
}): Promise<metadata.TokenMetadataJson | null>;
|
|
110
|
+
/**
|
|
111
|
+
* Batch fetch metadata for multiple tokens (more efficient)
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```typescript
|
|
115
|
+
* const mints = [mint1, mint2, mint3];
|
|
116
|
+
* const metadataMap = await sdk.batchGetTokenMetadata(mints);
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
batchGetTokenMetadata(mints: PublicKey[]): Promise<Map<string, metadata.TokenMetadata | null>>;
|
|
120
|
+
/** Get bonding curve PDA for a token */
|
|
121
|
+
getBondingCurvePda(tokenMint: PublicKey): PublicKey;
|
|
122
|
+
/** Get pool PDA for a token */
|
|
123
|
+
getPoolPda(tokenMint: PublicKey): PublicKey;
|
|
124
|
+
/** Get holder reward PDA for a user + token */
|
|
125
|
+
getHolderRewardPda(tokenMint: PublicKey, holder: PublicKey): PublicKey;
|
|
126
|
+
/** Get Metaplex metadata PDA for a token */
|
|
127
|
+
getMetadataPda(tokenMint: PublicKey): PublicKey;
|
|
128
|
+
/**
|
|
129
|
+
* Build create barrel token instruction
|
|
130
|
+
*
|
|
131
|
+
* Creates a new token with atomically revoked mint/freeze authority.
|
|
132
|
+
* Returns the instruction and a mint keypair that must sign the transaction.
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* ```typescript
|
|
136
|
+
* const { instructions, mintKeypair } = sdk.buildCreateTokenInstruction({
|
|
137
|
+
* payer: wallet.publicKey,
|
|
138
|
+
* name: "My Token",
|
|
139
|
+
* symbol: "MTK",
|
|
140
|
+
* uri: "https://...",
|
|
141
|
+
* creatorFeeRecipient: wallet.publicKey,
|
|
142
|
+
* });
|
|
143
|
+
*
|
|
144
|
+
* // Add mintKeypair as signer when sending transaction
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
147
|
+
buildCreateTokenInstruction(params: CreateBarrelTokenParams): {
|
|
148
|
+
instructions: TransactionInstruction[];
|
|
149
|
+
mintKeypair: Keypair;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Build claim holder rewards instruction for bonding curve
|
|
153
|
+
*
|
|
154
|
+
* Claims accumulated holder rewards paid in SOL.
|
|
155
|
+
*/
|
|
156
|
+
buildClaimRewardsCurveInstruction(tokenMint: PublicKey, holder: PublicKey): Promise<TransactionInstruction[]>;
|
|
157
|
+
/**
|
|
158
|
+
* Build claim holder rewards instruction for AMM pool
|
|
159
|
+
*
|
|
160
|
+
* Claims accumulated holder rewards (WSOL unwrapped to SOL).
|
|
161
|
+
*/
|
|
162
|
+
buildClaimRewardsPoolInstruction(tokenMint: PublicKey, holder: PublicKey): Promise<TransactionInstruction[]>;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Bonding Curve Operations
|
|
166
|
+
* For trading tokens that haven't graduated yet
|
|
167
|
+
*/
|
|
168
|
+
declare class CurveModule {
|
|
169
|
+
private sdk;
|
|
170
|
+
constructor(sdk: CoinBarrel);
|
|
171
|
+
/**
|
|
172
|
+
* Get bonding curve state
|
|
173
|
+
*/
|
|
174
|
+
getState(tokenMint: PublicKey): Promise<BondingCurveState | null>;
|
|
175
|
+
/**
|
|
176
|
+
* Get buy quote - how many tokens for X SOL
|
|
177
|
+
* @param tokenMint Token to buy
|
|
178
|
+
* @param solAmount SOL amount in lamports
|
|
179
|
+
*/
|
|
180
|
+
getBuyQuote(tokenMint: PublicKey, solAmount: bigint): Promise<BuyQuote | null>;
|
|
181
|
+
/**
|
|
182
|
+
* Get sell quote - how much SOL for X tokens
|
|
183
|
+
* @param tokenMint Token to sell
|
|
184
|
+
* @param tokenAmount Token amount (raw, with decimals)
|
|
185
|
+
*/
|
|
186
|
+
getSellQuote(tokenMint: PublicKey, tokenAmount: bigint): Promise<SellQuote | null>;
|
|
187
|
+
/**
|
|
188
|
+
* Build buy instruction with migration accounts
|
|
189
|
+
*
|
|
190
|
+
* @remarks
|
|
191
|
+
* - Always includes migration accounts - if threshold is reached, pool is created atomically
|
|
192
|
+
* - Requires ~600K compute units when migration triggers
|
|
193
|
+
* - Fee recipients are read from on-chain and cannot be modified
|
|
194
|
+
*/
|
|
195
|
+
buildBuyInstruction(params: BuyOnCurveParams): Promise<TransactionInstruction[]>;
|
|
196
|
+
/**
|
|
197
|
+
* Build sell instruction
|
|
198
|
+
*/
|
|
199
|
+
buildSellInstruction(params: SellOnCurveParams): Promise<TransactionInstruction[]>;
|
|
200
|
+
/**
|
|
201
|
+
* Build sell max instruction (sell entire balance)
|
|
202
|
+
*/
|
|
203
|
+
buildSellMaxInstruction(params: SellMaxOnCurveParams): Promise<TransactionInstruction[]>;
|
|
204
|
+
/**
|
|
205
|
+
* Check if a buy will trigger the migration threshold
|
|
206
|
+
*
|
|
207
|
+
* @param tokenMint Token to buy
|
|
208
|
+
* @param lamportsIn SOL amount in lamports
|
|
209
|
+
* @returns true if this buy will trigger migration
|
|
210
|
+
*/
|
|
211
|
+
willTriggerMigration(tokenMint: PublicKey, lamportsIn: bigint): Promise<boolean>;
|
|
212
|
+
/**
|
|
213
|
+
* @deprecated Use buildBuyInstruction instead - it now always includes migration accounts
|
|
214
|
+
*/
|
|
215
|
+
buildBuyWithMigrationInstruction(params: BuyOnCurveParams): Promise<TransactionInstruction[]>;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* AMM Pool Operations
|
|
219
|
+
* For trading tokens that have graduated to the AMM
|
|
220
|
+
*/
|
|
221
|
+
declare class PoolModule {
|
|
222
|
+
private sdk;
|
|
223
|
+
constructor(sdk: CoinBarrel);
|
|
224
|
+
/**
|
|
225
|
+
* Get pool state
|
|
226
|
+
*/
|
|
227
|
+
getState(tokenMint: PublicKey): Promise<PoolState | null>;
|
|
228
|
+
/**
|
|
229
|
+
* Get pool balances
|
|
230
|
+
*/
|
|
231
|
+
getBalances(tokenMint: PublicKey): Promise<{
|
|
232
|
+
solBalance: bigint;
|
|
233
|
+
tokenBalance: bigint;
|
|
234
|
+
} | null>;
|
|
235
|
+
/**
|
|
236
|
+
* Get swap quote for SOL -> Token
|
|
237
|
+
*/
|
|
238
|
+
getSwapSolToTokenQuote(tokenMint: PublicKey, solAmount: bigint): Promise<SwapQuote | null>;
|
|
239
|
+
/**
|
|
240
|
+
* Get swap quote for Token -> SOL
|
|
241
|
+
*/
|
|
242
|
+
getSwapTokenToSolQuote(tokenMint: PublicKey, tokenAmount: bigint): Promise<SwapQuote | null>;
|
|
243
|
+
/**
|
|
244
|
+
* Build swap SOL to token instruction
|
|
245
|
+
*
|
|
246
|
+
* @remarks Fee recipients are read from on-chain and cannot be modified.
|
|
247
|
+
*/
|
|
248
|
+
buildSwapSolToTokenInstruction(params: SwapSolToTokenParams): Promise<TransactionInstruction[]>;
|
|
249
|
+
/**
|
|
250
|
+
* Build swap token to SOL instruction
|
|
251
|
+
*/
|
|
252
|
+
buildSwapTokenToSolInstruction(params: SwapTokenToSolParams): Promise<TransactionInstruction[]>;
|
|
253
|
+
/**
|
|
254
|
+
* Build swap token to SOL max instruction (sell entire balance)
|
|
255
|
+
*/
|
|
256
|
+
buildSwapTokenToSolMaxInstruction(params: SwapTokenToSolMaxParams): Promise<TransactionInstruction[]>;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Convert SOL to lamports
|
|
260
|
+
*/
|
|
261
|
+
export declare function solToLamports(sol: number): bigint;
|
|
262
|
+
/**
|
|
263
|
+
* Convert lamports to SOL
|
|
264
|
+
*/
|
|
265
|
+
export declare function lamportsToSol(lamports: bigint): number;
|
|
266
|
+
/**
|
|
267
|
+
* Convert token amount to raw (with decimals)
|
|
268
|
+
*/
|
|
269
|
+
export declare function toRawAmount(amount: number, decimals?: number): bigint;
|
|
270
|
+
/**
|
|
271
|
+
* Convert raw amount to UI (without decimals)
|
|
272
|
+
*/
|
|
273
|
+
export declare function toUiAmount(rawAmount: bigint, decimals?: number): number;
|
|
274
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -64,7 +64,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
64
64
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
65
65
|
};
|
|
66
66
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
67
|
-
exports.CoinBarrel = exports.buildClaimHolderRewardsInstruction = exports.buildClaimHolderRewardsCurveInstruction = exports.buildCreateBarrelTokenInstruction = exports.parseMetaplexMetadata = exports.getMetadataPda = exports.batchGetTokenMetadata = exports.getTokenMetadataJson = exports.getTokenMetadata = exports.getSwapTokenToSolQuote = exports.getSwapSolToTokenQuote = exports.getSellQuote = exports.getBuyQuote = exports.getUserTokenBalance = exports.getMarketInfo = exports.getPoolState = exports.getBondingCurveState = void 0;
|
|
67
|
+
exports.CoinBarrel = exports.buildClaimHolderRewardsInstruction = exports.buildClaimHolderRewardsCurveInstruction = exports.buildCreateBarrelTokenInstruction = exports.parseMetaplexMetadata = exports.getMetadataPda = exports.batchGetTokenMetadata = exports.getTokenMetadataJson = exports.getTokenMetadata = exports.getSwapTokenToSolQuote = exports.getSwapSolToTokenQuote = exports.getMigrationPDAs = exports.buildBuyOnCurveWithMigrationInstruction = exports.buildBuyOnCurveInstruction = exports.MIGRATION_THRESHOLDS = exports.willTriggerMigration = exports.getSellQuote = exports.getBuyQuote = exports.getUserTokenBalance = exports.getMarketInfo = exports.getPoolState = exports.getBondingCurveState = void 0;
|
|
68
68
|
exports.solToLamports = solToLamports;
|
|
69
69
|
exports.lamportsToSol = lamportsToSol;
|
|
70
70
|
exports.toRawAmount = toRawAmount;
|
|
@@ -89,6 +89,12 @@ Object.defineProperty(exports, "getUserTokenBalance", { enumerable: true, get: f
|
|
|
89
89
|
var curve_js_1 = require("./curve.js");
|
|
90
90
|
Object.defineProperty(exports, "getBuyQuote", { enumerable: true, get: function () { return curve_js_1.getBuyQuote; } });
|
|
91
91
|
Object.defineProperty(exports, "getSellQuote", { enumerable: true, get: function () { return curve_js_1.getSellQuote; } });
|
|
92
|
+
Object.defineProperty(exports, "willTriggerMigration", { enumerable: true, get: function () { return curve_js_1.willTriggerMigration; } });
|
|
93
|
+
Object.defineProperty(exports, "MIGRATION_THRESHOLDS", { enumerable: true, get: function () { return curve_js_1.MIGRATION_THRESHOLDS; } });
|
|
94
|
+
Object.defineProperty(exports, "buildBuyOnCurveInstruction", { enumerable: true, get: function () { return curve_js_1.buildBuyOnCurveInstruction; } });
|
|
95
|
+
Object.defineProperty(exports, "buildBuyOnCurveWithMigrationInstruction", { enumerable: true, get: function () { return curve_js_1.buildBuyOnCurveWithMigrationInstruction; } });
|
|
96
|
+
var pda_js_1 = require("./pda.js");
|
|
97
|
+
Object.defineProperty(exports, "getMigrationPDAs", { enumerable: true, get: function () { return pda_js_1.getMigrationPDAs; } });
|
|
92
98
|
var pool_js_1 = require("./pool.js");
|
|
93
99
|
Object.defineProperty(exports, "getSwapSolToTokenQuote", { enumerable: true, get: function () { return pool_js_1.getSwapSolToTokenQuote; } });
|
|
94
100
|
Object.defineProperty(exports, "getSwapTokenToSolQuote", { enumerable: true, get: function () { return pool_js_1.getSwapTokenToSolQuote; } });
|
|
@@ -152,14 +158,16 @@ class CoinBarrel {
|
|
|
152
158
|
return accounts.getUserTokenBalance(this.connection, tokenMint, user);
|
|
153
159
|
}
|
|
154
160
|
/**
|
|
155
|
-
* Check if a token is on bonding curve (not yet graduated)
|
|
161
|
+
* Check if a token is on bonding curve (not yet graduated to pool)
|
|
162
|
+
* Returns true if curve exists AND pool does not exist
|
|
156
163
|
*/
|
|
157
164
|
async isOnCurve(tokenMint) {
|
|
158
165
|
const curveState = await accounts.getBondingCurveState(this.connection, tokenMint, this.programId);
|
|
159
166
|
if (!curveState)
|
|
160
167
|
return false;
|
|
161
|
-
//
|
|
162
|
-
|
|
168
|
+
// Check if pool exists - if it does, token has graduated
|
|
169
|
+
const poolState = await accounts.getPoolState(this.connection, tokenMint, this.programId);
|
|
170
|
+
return poolState === null;
|
|
163
171
|
}
|
|
164
172
|
/**
|
|
165
173
|
* Check if a token has graduated to AMM pool
|
|
@@ -297,10 +305,12 @@ class CurveModule {
|
|
|
297
305
|
return curve.getSellQuote(this.sdk.connection, tokenMint, tokenAmount, this.sdk.programId);
|
|
298
306
|
}
|
|
299
307
|
/**
|
|
300
|
-
* Build buy instruction
|
|
308
|
+
* Build buy instruction with migration accounts
|
|
301
309
|
*
|
|
302
|
-
* @remarks
|
|
303
|
-
*
|
|
310
|
+
* @remarks
|
|
311
|
+
* - Always includes migration accounts - if threshold is reached, pool is created atomically
|
|
312
|
+
* - Requires ~600K compute units when migration triggers
|
|
313
|
+
* - Fee recipients are read from on-chain and cannot be modified
|
|
304
314
|
*/
|
|
305
315
|
async buildBuyInstruction(params) {
|
|
306
316
|
return curve.buildBuyOnCurveInstruction(this.sdk.connection, params, this.sdk.programId);
|
|
@@ -317,6 +327,22 @@ class CurveModule {
|
|
|
317
327
|
async buildSellMaxInstruction(params) {
|
|
318
328
|
return curve.buildSellMaxOnCurveInstruction(this.sdk.connection, params, this.sdk.programId);
|
|
319
329
|
}
|
|
330
|
+
/**
|
|
331
|
+
* Check if a buy will trigger the migration threshold
|
|
332
|
+
*
|
|
333
|
+
* @param tokenMint Token to buy
|
|
334
|
+
* @param lamportsIn SOL amount in lamports
|
|
335
|
+
* @returns true if this buy will trigger migration
|
|
336
|
+
*/
|
|
337
|
+
async willTriggerMigration(tokenMint, lamportsIn) {
|
|
338
|
+
return curve.willTriggerMigration(this.sdk.connection, tokenMint, lamportsIn, this.sdk.programId);
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* @deprecated Use buildBuyInstruction instead - it now always includes migration accounts
|
|
342
|
+
*/
|
|
343
|
+
async buildBuyWithMigrationInstruction(params) {
|
|
344
|
+
return this.buildBuyInstruction(params);
|
|
345
|
+
}
|
|
320
346
|
}
|
|
321
347
|
// ============= Pool Module =============
|
|
322
348
|
/**
|
|
@@ -398,3 +424,4 @@ function toRawAmount(amount, decimals = 6) {
|
|
|
398
424
|
function toUiAmount(rawAmount, decimals = 6) {
|
|
399
425
|
return Number(rawAmount) / 10 ** decimals;
|
|
400
426
|
}
|
|
427
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token Metadata Fetching
|
|
3
|
+
* Read Metaplex token metadata for CoinBarrel tokens
|
|
4
|
+
*/
|
|
5
|
+
import { Connection, PublicKey } from '@solana/web3.js';
|
|
6
|
+
/**
|
|
7
|
+
* On-chain token metadata from Metaplex
|
|
8
|
+
*/
|
|
9
|
+
export interface TokenMetadata {
|
|
10
|
+
/** Token name */
|
|
11
|
+
name: string;
|
|
12
|
+
/** Token symbol/ticker */
|
|
13
|
+
symbol: string;
|
|
14
|
+
/** URI pointing to off-chain JSON metadata */
|
|
15
|
+
uri: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Off-chain token metadata JSON (common Metaplex-style schema).
|
|
19
|
+
*
|
|
20
|
+
* This is intentionally permissive since creators may include extra fields.
|
|
21
|
+
*/
|
|
22
|
+
export interface TokenMetadataJson extends TokenMetadata {
|
|
23
|
+
/** Short description */
|
|
24
|
+
description?: string;
|
|
25
|
+
/** Image URL */
|
|
26
|
+
image?: string;
|
|
27
|
+
/** Project website / external URL */
|
|
28
|
+
external_url?: string;
|
|
29
|
+
/** Common socials */
|
|
30
|
+
twitter?: string;
|
|
31
|
+
telegram?: string;
|
|
32
|
+
website?: string;
|
|
33
|
+
[key: string]: unknown;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Derive Metaplex metadata PDA for a token mint
|
|
37
|
+
*/
|
|
38
|
+
export declare function getMetadataPda(mint: PublicKey): PublicKey;
|
|
39
|
+
/**
|
|
40
|
+
* Parse Metaplex metadata from raw account data
|
|
41
|
+
*
|
|
42
|
+
* Layout:
|
|
43
|
+
* - key: 1 byte
|
|
44
|
+
* - update_authority: 32 bytes
|
|
45
|
+
* - mint: 32 bytes
|
|
46
|
+
* - name: 4 bytes length + string
|
|
47
|
+
* - symbol: 4 bytes length + string
|
|
48
|
+
* - uri: 4 bytes length + string
|
|
49
|
+
*/
|
|
50
|
+
export declare function parseMetaplexMetadata(data: Buffer): TokenMetadata | null;
|
|
51
|
+
/**
|
|
52
|
+
* Fetch on-chain token metadata from Metaplex
|
|
53
|
+
*
|
|
54
|
+
* Returns the name, symbol, and URI stored on-chain.
|
|
55
|
+
* Use `getTokenMetadataJson` to also fetch the off-chain JSON.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const metadata = await getTokenMetadata(connection, tokenMint);
|
|
60
|
+
* if (metadata) {
|
|
61
|
+
* console.log(metadata.name); // "My Token"
|
|
62
|
+
* console.log(metadata.symbol); // "MTK"
|
|
63
|
+
* console.log(metadata.uri); // "https://..."
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export declare function getTokenMetadata(connection: Connection, mint: PublicKey): Promise<TokenMetadata | null>;
|
|
68
|
+
/**
|
|
69
|
+
* Fetch on-chain Metaplex metadata and then fetch the off-chain JSON pointed to by the URI.
|
|
70
|
+
*/
|
|
71
|
+
export declare function getTokenMetadataJson(connection: Connection, mint: PublicKey, options?: {
|
|
72
|
+
timeoutMs?: number;
|
|
73
|
+
}): Promise<TokenMetadataJson | null>;
|
|
74
|
+
/**
|
|
75
|
+
* Batch fetch metadata for multiple tokens
|
|
76
|
+
*
|
|
77
|
+
* More efficient than calling getTokenMetadata individually.
|
|
78
|
+
*
|
|
79
|
+
* @param connection - Solana RPC connection
|
|
80
|
+
* @param mints - Array of token mint addresses
|
|
81
|
+
* @returns Map of mint address string to metadata
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* const mints = [mint1, mint2, mint3];
|
|
86
|
+
* const metadataMap = await batchGetTokenMetadata(connection, mints);
|
|
87
|
+
*
|
|
88
|
+
* for (const [mintStr, metadata] of metadataMap) {
|
|
89
|
+
* console.log(`${mintStr}: ${metadata?.name}`);
|
|
90
|
+
* }
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
export declare function batchGetTokenMetadata(connection: Connection, mints: PublicKey[]): Promise<Map<string, TokenMetadata | null>>;
|
|
94
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAKxD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;CACZ;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACvD,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAID;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAMzD;AAmBD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA0BxE;AAID;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,gBAAgB,CACrC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,SAAS,GACb,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAa/B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACzC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,SAAS,EACf,OAAO,CAAC,EAAE;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAC,GAC5B,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA4DnC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,qBAAqB,CAC1C,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,SAAS,EAAE,GAChB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC,CAAC,CAuC5C"}
|
package/dist/metadata.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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"}
|
package/dist/pda.d.ts
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PDA Derivation Helpers
|
|
3
|
+
* All Program Derived Addresses for CoinBarrel AMM
|
|
4
|
+
*/
|
|
5
|
+
import { PublicKey } from '@solana/web3.js';
|
|
6
|
+
/**
|
|
7
|
+
* Derive bonding curve PDA for a token mint
|
|
8
|
+
*/
|
|
9
|
+
export declare function getBondingCurvePda(mint: PublicKey, programId: PublicKey): PublicKey;
|
|
10
|
+
/**
|
|
11
|
+
* Derive bonding authority PDA (signs transfers from curve)
|
|
12
|
+
*/
|
|
13
|
+
export declare function getBondingAuthorityPda(bondingCurve: PublicKey, programId: PublicKey): PublicKey;
|
|
14
|
+
/**
|
|
15
|
+
* Derive SOL escrow PDA for bonding curve
|
|
16
|
+
*/
|
|
17
|
+
export declare function getSolEscrowPda(bondingCurve: PublicKey, programId: PublicKey): PublicKey;
|
|
18
|
+
/**
|
|
19
|
+
* Derive pool PDA for a WSOL <-> Token pair
|
|
20
|
+
*/
|
|
21
|
+
export declare function getPoolPda(tokenMint: PublicKey, programId: PublicKey): PublicKey;
|
|
22
|
+
/**
|
|
23
|
+
* Derive pool authority PDA (signs transfers from pool vaults)
|
|
24
|
+
*/
|
|
25
|
+
export declare function getPoolAuthorityPda(pool: PublicKey, programId: PublicKey): PublicKey;
|
|
26
|
+
/**
|
|
27
|
+
* Derive vault PDA for a pool + mint
|
|
28
|
+
*/
|
|
29
|
+
export declare function getVaultPda(pool: PublicKey, mint: PublicKey, programId: PublicKey): PublicKey;
|
|
30
|
+
/**
|
|
31
|
+
* Derive WSOL vault PDA for a pool
|
|
32
|
+
*/
|
|
33
|
+
export declare function getPoolWsolVaultPda(pool: PublicKey, programId: PublicKey): PublicKey;
|
|
34
|
+
/**
|
|
35
|
+
* Derive token vault PDA for a pool
|
|
36
|
+
*/
|
|
37
|
+
export declare function getPoolTokenVaultPda(pool: PublicKey, tokenMint: PublicKey, programId: PublicKey): PublicKey;
|
|
38
|
+
/**
|
|
39
|
+
* Derive LP mint PDA for a pool
|
|
40
|
+
*/
|
|
41
|
+
export declare function getLpMintPda(pool: PublicKey, programId: PublicKey): PublicKey;
|
|
42
|
+
/**
|
|
43
|
+
* Derive LP vault PDA (holds burned/locked LP tokens)
|
|
44
|
+
*/
|
|
45
|
+
export declare function getLpVaultPda(pool: PublicKey, programId: PublicKey): PublicKey;
|
|
46
|
+
export interface MigrationPDAs {
|
|
47
|
+
poolPda: PublicKey;
|
|
48
|
+
poolBump: number;
|
|
49
|
+
tokenAVaultPda: PublicKey;
|
|
50
|
+
tokenBVaultPda: PublicKey;
|
|
51
|
+
lpMintPda: PublicKey;
|
|
52
|
+
lpVaultPda: PublicKey;
|
|
53
|
+
poolAuthorityPda: PublicKey;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Derive all PDAs needed for inline migration from bonding curve to pool.
|
|
57
|
+
* Used when a buy reaches the migration threshold and triggers auto-migration.
|
|
58
|
+
*
|
|
59
|
+
* @param tokenMint - The token mint being migrated
|
|
60
|
+
* @param programId - CoinBarrel program ID
|
|
61
|
+
* @returns All migration PDAs and pool bump
|
|
62
|
+
*/
|
|
63
|
+
export declare function getMigrationPDAs(tokenMint: PublicKey, programId: PublicKey): MigrationPDAs;
|
|
64
|
+
/**
|
|
65
|
+
* Derive holder reward account PDA for a user + token
|
|
66
|
+
* Used for tracking holder rewards across buys/sells
|
|
67
|
+
*/
|
|
68
|
+
export declare function getHolderRewardPda(tokenMint: PublicKey, holder: PublicKey, programId: PublicKey): PublicKey;
|
|
69
|
+
//# sourceMappingURL=pda.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pda.d.ts","sourceRoot":"","sources":["../src/pda.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAK5C;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,CAGnF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,CAM/F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,CAMxF;AAID;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,CAMhF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,CAGpF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,CAM7F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,CAEpF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,GAClB,SAAS,CAEX;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,CAG7E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,CAG9E;AAID,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,SAAS,CAAC;IAC1B,cAAc,EAAE,SAAS,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,gBAAgB,EAAE,SAAS,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,aAAa,CA8C1F;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CACjC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,GAClB,SAAS,CAMX"}
|
package/dist/pda.js
CHANGED
|
@@ -14,6 +14,7 @@ exports.getPoolWsolVaultPda = getPoolWsolVaultPda;
|
|
|
14
14
|
exports.getPoolTokenVaultPda = getPoolTokenVaultPda;
|
|
15
15
|
exports.getLpMintPda = getLpMintPda;
|
|
16
16
|
exports.getLpVaultPda = getLpVaultPda;
|
|
17
|
+
exports.getMigrationPDAs = getMigrationPDAs;
|
|
17
18
|
exports.getHolderRewardPda = getHolderRewardPda;
|
|
18
19
|
const web3_js_1 = require("@solana/web3.js");
|
|
19
20
|
const constants_js_1 = require("./constants.js");
|
|
@@ -87,6 +88,37 @@ function getLpVaultPda(pool, programId) {
|
|
|
87
88
|
const [pda] = web3_js_1.PublicKey.findProgramAddressSync([constants_js_1.SEEDS.LP_VAULT, pool.toBuffer()], programId);
|
|
88
89
|
return pda;
|
|
89
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Derive all PDAs needed for inline migration from bonding curve to pool.
|
|
93
|
+
* Used when a buy reaches the migration threshold and triggers auto-migration.
|
|
94
|
+
*
|
|
95
|
+
* @param tokenMint - The token mint being migrated
|
|
96
|
+
* @param programId - CoinBarrel program ID
|
|
97
|
+
* @returns All migration PDAs and pool bump
|
|
98
|
+
*/
|
|
99
|
+
function getMigrationPDAs(tokenMint, programId) {
|
|
100
|
+
// Pool: seeds = ["pool", wsol_mint, token_mint]
|
|
101
|
+
const [poolPda, poolBump] = web3_js_1.PublicKey.findProgramAddressSync([constants_js_1.SEEDS.POOL, constants_js_1.NATIVE_MINT.toBuffer(), tokenMint.toBuffer()], programId);
|
|
102
|
+
// Token A vault (WSOL): seeds = ["vault", pool, wsol_mint]
|
|
103
|
+
const [tokenAVaultPda] = web3_js_1.PublicKey.findProgramAddressSync([constants_js_1.SEEDS.VAULT, poolPda.toBuffer(), constants_js_1.NATIVE_MINT.toBuffer()], programId);
|
|
104
|
+
// Token B vault: seeds = ["vault", pool, token_mint]
|
|
105
|
+
const [tokenBVaultPda] = web3_js_1.PublicKey.findProgramAddressSync([constants_js_1.SEEDS.VAULT, poolPda.toBuffer(), tokenMint.toBuffer()], programId);
|
|
106
|
+
// LP mint: seeds = ["lp_mint", pool]
|
|
107
|
+
const [lpMintPda] = web3_js_1.PublicKey.findProgramAddressSync([constants_js_1.SEEDS.LP_MINT, poolPda.toBuffer()], programId);
|
|
108
|
+
// LP vault: seeds = ["lp_vault", pool]
|
|
109
|
+
const [lpVaultPda] = web3_js_1.PublicKey.findProgramAddressSync([constants_js_1.SEEDS.LP_VAULT, poolPda.toBuffer()], programId);
|
|
110
|
+
// Pool authority: seeds = ["authority", pool]
|
|
111
|
+
const [poolAuthorityPda] = web3_js_1.PublicKey.findProgramAddressSync([constants_js_1.SEEDS.AUTHORITY, poolPda.toBuffer()], programId);
|
|
112
|
+
return {
|
|
113
|
+
poolPda,
|
|
114
|
+
poolBump,
|
|
115
|
+
tokenAVaultPda,
|
|
116
|
+
tokenBVaultPda,
|
|
117
|
+
lpMintPda,
|
|
118
|
+
lpVaultPda,
|
|
119
|
+
poolAuthorityPda,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
90
122
|
// ============= Holder Reward PDAs =============
|
|
91
123
|
/**
|
|
92
124
|
* Derive holder reward account PDA for a user + token
|
|
@@ -96,3 +128,4 @@ function getHolderRewardPda(tokenMint, holder, programId) {
|
|
|
96
128
|
const [pda] = web3_js_1.PublicKey.findProgramAddressSync([constants_js_1.SEEDS.HOLDER_REWARD, tokenMint.toBuffer(), holder.toBuffer()], programId);
|
|
97
129
|
return pda;
|
|
98
130
|
}
|
|
131
|
+
//# sourceMappingURL=pda.js.map
|
package/dist/pda.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pda.js","sourceRoot":"","sources":["../src/pda.ts"],"names":[],"mappings":"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"}
|