@coinbarrel/sdk 1.3.0 → 2.0.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/README.md +305 -305
- package/dist/accounts.d.ts.map +1 -1
- package/dist/accounts.js +48 -62
- package/dist/accounts.js.map +1 -1
- package/dist/constants.d.ts +2 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +20 -21
- package/dist/constants.js.map +1 -1
- package/dist/create.js +18 -21
- package/dist/create.js.map +1 -1
- package/dist/curve.d.ts +25 -2
- package/dist/curve.d.ts.map +1 -1
- package/dist/curve.js +121 -73
- package/dist/curve.js.map +1 -1
- package/dist/index.d.ts +22 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +54 -92
- package/dist/index.js.map +1 -1
- package/dist/metadata.js +8 -15
- package/dist/metadata.js.map +1 -1
- package/dist/pda.d.ts +18 -0
- package/dist/pda.d.ts.map +1 -1
- package/dist/pda.js +54 -36
- package/dist/pda.js.map +1 -1
- package/dist/pool.js +54 -61
- package/dist/pool.js.map +1 -1
- package/dist/rewards.js +28 -32
- package/dist/rewards.js.map +1 -1
- package/dist/types.d.ts +2 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -2
- package/dist/types.js.map +1 -1
- package/package.json +45 -44
package/dist/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* CoinBarrel SDK
|
|
4
3
|
*
|
|
@@ -27,82 +26,26 @@
|
|
|
27
26
|
*
|
|
28
27
|
* @packageDocumentation
|
|
29
28
|
*/
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
if (k2 === undefined) k2 = k;
|
|
39
|
-
o[k2] = m[k];
|
|
40
|
-
}));
|
|
41
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
42
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
43
|
-
}) : function(o, v) {
|
|
44
|
-
o["default"] = v;
|
|
45
|
-
});
|
|
46
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
47
|
-
var ownKeys = function(o) {
|
|
48
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
49
|
-
var ar = [];
|
|
50
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
51
|
-
return ar;
|
|
52
|
-
};
|
|
53
|
-
return ownKeys(o);
|
|
54
|
-
};
|
|
55
|
-
return function (mod) {
|
|
56
|
-
if (mod && mod.__esModule) return mod;
|
|
57
|
-
var result = {};
|
|
58
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
59
|
-
__setModuleDefault(result, mod);
|
|
60
|
-
return result;
|
|
61
|
-
};
|
|
62
|
-
})();
|
|
63
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
64
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
65
|
-
};
|
|
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;
|
|
68
|
-
exports.solToLamports = solToLamports;
|
|
69
|
-
exports.lamportsToSol = lamportsToSol;
|
|
70
|
-
exports.toRawAmount = toRawAmount;
|
|
71
|
-
exports.toUiAmount = toUiAmount;
|
|
72
|
-
const constants_js_1 = require("./constants.js");
|
|
73
|
-
const pda = __importStar(require("./pda.js"));
|
|
74
|
-
const accounts = __importStar(require("./accounts.js"));
|
|
75
|
-
const curve = __importStar(require("./curve.js"));
|
|
76
|
-
const pool = __importStar(require("./pool.js"));
|
|
77
|
-
const metadata = __importStar(require("./metadata.js"));
|
|
78
|
-
const create = __importStar(require("./create.js"));
|
|
79
|
-
const rewards = __importStar(require("./rewards.js"));
|
|
29
|
+
import { PROGRAM_IDS, ADMIN_FEE_RECIPIENTS, LAMPORTS_PER_SOL } from './constants.js';
|
|
30
|
+
import * as pda from './pda.js';
|
|
31
|
+
import * as accounts from './accounts.js';
|
|
32
|
+
import * as curve from './curve.js';
|
|
33
|
+
import * as pool from './pool.js';
|
|
34
|
+
import * as metadata from './metadata.js';
|
|
35
|
+
import * as create from './create.js';
|
|
36
|
+
import * as rewards from './rewards.js';
|
|
80
37
|
// ============= Re-exports =============
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
var pool_js_1 = require("./pool.js");
|
|
93
|
-
Object.defineProperty(exports, "getSwapSolToTokenQuote", { enumerable: true, get: function () { return pool_js_1.getSwapSolToTokenQuote; } });
|
|
94
|
-
Object.defineProperty(exports, "getSwapTokenToSolQuote", { enumerable: true, get: function () { return pool_js_1.getSwapTokenToSolQuote; } });
|
|
95
|
-
var metadata_js_1 = require("./metadata.js");
|
|
96
|
-
Object.defineProperty(exports, "getTokenMetadata", { enumerable: true, get: function () { return metadata_js_1.getTokenMetadata; } });
|
|
97
|
-
Object.defineProperty(exports, "getTokenMetadataJson", { enumerable: true, get: function () { return metadata_js_1.getTokenMetadataJson; } });
|
|
98
|
-
Object.defineProperty(exports, "batchGetTokenMetadata", { enumerable: true, get: function () { return metadata_js_1.batchGetTokenMetadata; } });
|
|
99
|
-
Object.defineProperty(exports, "getMetadataPda", { enumerable: true, get: function () { return metadata_js_1.getMetadataPda; } });
|
|
100
|
-
Object.defineProperty(exports, "parseMetaplexMetadata", { enumerable: true, get: function () { return metadata_js_1.parseMetaplexMetadata; } });
|
|
101
|
-
var create_js_1 = require("./create.js");
|
|
102
|
-
Object.defineProperty(exports, "buildCreateBarrelTokenInstruction", { enumerable: true, get: function () { return create_js_1.buildCreateBarrelTokenInstruction; } });
|
|
103
|
-
var rewards_js_1 = require("./rewards.js");
|
|
104
|
-
Object.defineProperty(exports, "buildClaimHolderRewardsCurveInstruction", { enumerable: true, get: function () { return rewards_js_1.buildClaimHolderRewardsCurveInstruction; } });
|
|
105
|
-
Object.defineProperty(exports, "buildClaimHolderRewardsInstruction", { enumerable: true, get: function () { return rewards_js_1.buildClaimHolderRewardsInstruction; } });
|
|
38
|
+
export * from './constants.js';
|
|
39
|
+
export * from './types.js';
|
|
40
|
+
export * from './pda.js';
|
|
41
|
+
export { getBondingCurveState, getPoolState, getMarketInfo, getUserTokenBalance, } from './accounts.js';
|
|
42
|
+
export { getBuyQuote, getSellQuote, willTriggerMigration, MIGRATION_THRESHOLDS, buildBuyOnCurveInstruction, buildBuyOnCurveWithMigrationInstruction, // deprecated, alias for buildBuyOnCurveInstruction
|
|
43
|
+
} from './curve.js';
|
|
44
|
+
export { getMigrationPDAs } from './pda.js';
|
|
45
|
+
export { getSwapSolToTokenQuote, getSwapTokenToSolQuote } from './pool.js';
|
|
46
|
+
export { getTokenMetadata, getTokenMetadataJson, batchGetTokenMetadata, getMetadataPda, parseMetaplexMetadata, } from './metadata.js';
|
|
47
|
+
export { buildCreateBarrelTokenInstruction } from './create.js';
|
|
48
|
+
export { buildClaimHolderRewardsCurveInstruction, buildClaimHolderRewardsInstruction, } from './rewards.js';
|
|
106
49
|
// ============= SDK Class =============
|
|
107
50
|
/**
|
|
108
51
|
* CoinBarrel SDK - Main entry point
|
|
@@ -116,7 +59,7 @@ Object.defineProperty(exports, "buildClaimHolderRewardsInstruction", { enumerabl
|
|
|
116
59
|
* Fee recipients are read from on-chain state and cannot be modified.
|
|
117
60
|
* The program enforces that all fees go to the correct recipients.
|
|
118
61
|
*/
|
|
119
|
-
class CoinBarrel {
|
|
62
|
+
export class CoinBarrel {
|
|
120
63
|
/** Solana RPC connection */
|
|
121
64
|
connection;
|
|
122
65
|
/** Network (devnet or mainnet) */
|
|
@@ -132,8 +75,8 @@ class CoinBarrel {
|
|
|
132
75
|
constructor(config) {
|
|
133
76
|
this.connection = config.connection;
|
|
134
77
|
this.network = config.network;
|
|
135
|
-
this.programId =
|
|
136
|
-
this.adminFeeRecipient =
|
|
78
|
+
this.programId = PROGRAM_IDS[config.network];
|
|
79
|
+
this.adminFeeRecipient = ADMIN_FEE_RECIPIENTS[config.network];
|
|
137
80
|
this.curve = new CurveModule(this);
|
|
138
81
|
this.pool = new PoolModule(this);
|
|
139
82
|
}
|
|
@@ -152,14 +95,16 @@ class CoinBarrel {
|
|
|
152
95
|
return accounts.getUserTokenBalance(this.connection, tokenMint, user);
|
|
153
96
|
}
|
|
154
97
|
/**
|
|
155
|
-
* Check if a token is on bonding curve (not yet graduated)
|
|
98
|
+
* Check if a token is on bonding curve (not yet graduated to pool)
|
|
99
|
+
* Returns true if curve exists AND pool does not exist
|
|
156
100
|
*/
|
|
157
101
|
async isOnCurve(tokenMint) {
|
|
158
102
|
const curveState = await accounts.getBondingCurveState(this.connection, tokenMint, this.programId);
|
|
159
103
|
if (!curveState)
|
|
160
104
|
return false;
|
|
161
|
-
//
|
|
162
|
-
|
|
105
|
+
// Check if pool exists - if it does, token has graduated
|
|
106
|
+
const poolState = await accounts.getPoolState(this.connection, tokenMint, this.programId);
|
|
107
|
+
return poolState === null;
|
|
163
108
|
}
|
|
164
109
|
/**
|
|
165
110
|
* Check if a token has graduated to AMM pool
|
|
@@ -263,7 +208,6 @@ class CoinBarrel {
|
|
|
263
208
|
return rewards.buildClaimHolderRewardsInstruction(this.connection, { tokenMint, holder }, this.programId);
|
|
264
209
|
}
|
|
265
210
|
}
|
|
266
|
-
exports.CoinBarrel = CoinBarrel;
|
|
267
211
|
// ============= Curve Module =============
|
|
268
212
|
/**
|
|
269
213
|
* Bonding Curve Operations
|
|
@@ -297,10 +241,12 @@ class CurveModule {
|
|
|
297
241
|
return curve.getSellQuote(this.sdk.connection, tokenMint, tokenAmount, this.sdk.programId);
|
|
298
242
|
}
|
|
299
243
|
/**
|
|
300
|
-
* Build buy instruction
|
|
244
|
+
* Build buy instruction with migration accounts
|
|
301
245
|
*
|
|
302
|
-
* @remarks
|
|
303
|
-
*
|
|
246
|
+
* @remarks
|
|
247
|
+
* - Always includes migration accounts - if threshold is reached, pool is created atomically
|
|
248
|
+
* - Requires ~600K compute units when migration triggers
|
|
249
|
+
* - Fee recipients are read from on-chain and cannot be modified
|
|
304
250
|
*/
|
|
305
251
|
async buildBuyInstruction(params) {
|
|
306
252
|
return curve.buildBuyOnCurveInstruction(this.sdk.connection, params, this.sdk.programId);
|
|
@@ -317,6 +263,22 @@ class CurveModule {
|
|
|
317
263
|
async buildSellMaxInstruction(params) {
|
|
318
264
|
return curve.buildSellMaxOnCurveInstruction(this.sdk.connection, params, this.sdk.programId);
|
|
319
265
|
}
|
|
266
|
+
/**
|
|
267
|
+
* Check if a buy will trigger the migration threshold
|
|
268
|
+
*
|
|
269
|
+
* @param tokenMint Token to buy
|
|
270
|
+
* @param lamportsIn SOL amount in lamports
|
|
271
|
+
* @returns true if this buy will trigger migration
|
|
272
|
+
*/
|
|
273
|
+
async willTriggerMigration(tokenMint, lamportsIn) {
|
|
274
|
+
return curve.willTriggerMigration(this.sdk.connection, tokenMint, lamportsIn, this.sdk.programId);
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* @deprecated Use buildBuyInstruction instead - it now always includes migration accounts
|
|
278
|
+
*/
|
|
279
|
+
async buildBuyWithMigrationInstruction(params) {
|
|
280
|
+
return this.buildBuyInstruction(params);
|
|
281
|
+
}
|
|
320
282
|
}
|
|
321
283
|
// ============= Pool Module =============
|
|
322
284
|
/**
|
|
@@ -377,25 +339,25 @@ class PoolModule {
|
|
|
377
339
|
/**
|
|
378
340
|
* Convert SOL to lamports
|
|
379
341
|
*/
|
|
380
|
-
function solToLamports(sol) {
|
|
381
|
-
return BigInt(Math.floor(sol * Number(
|
|
342
|
+
export function solToLamports(sol) {
|
|
343
|
+
return BigInt(Math.floor(sol * Number(LAMPORTS_PER_SOL)));
|
|
382
344
|
}
|
|
383
345
|
/**
|
|
384
346
|
* Convert lamports to SOL
|
|
385
347
|
*/
|
|
386
|
-
function lamportsToSol(lamports) {
|
|
387
|
-
return Number(lamports) / Number(
|
|
348
|
+
export function lamportsToSol(lamports) {
|
|
349
|
+
return Number(lamports) / Number(LAMPORTS_PER_SOL);
|
|
388
350
|
}
|
|
389
351
|
/**
|
|
390
352
|
* Convert token amount to raw (with decimals)
|
|
391
353
|
*/
|
|
392
|
-
function toRawAmount(amount, decimals = 6) {
|
|
354
|
+
export function toRawAmount(amount, decimals = 6) {
|
|
393
355
|
return BigInt(Math.floor(amount * 10 ** decimals));
|
|
394
356
|
}
|
|
395
357
|
/**
|
|
396
358
|
* Convert raw amount to UI (without decimals)
|
|
397
359
|
*/
|
|
398
|
-
function toUiAmount(rawAmount, decimals = 6) {
|
|
360
|
+
export function toUiAmount(rawAmount, decimals = 6) {
|
|
399
361
|
return Number(rawAmount) / 10 ** decimals;
|
|
400
362
|
}
|
|
401
363
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/metadata.js
CHANGED
|
@@ -1,22 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Token Metadata Fetching
|
|
4
3
|
* Read Metaplex token metadata for CoinBarrel tokens
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
exports.parseMetaplexMetadata = parseMetaplexMetadata;
|
|
9
|
-
exports.getTokenMetadata = getTokenMetadata;
|
|
10
|
-
exports.getTokenMetadataJson = getTokenMetadataJson;
|
|
11
|
-
exports.batchGetTokenMetadata = batchGetTokenMetadata;
|
|
12
|
-
const web3_js_1 = require("@solana/web3.js");
|
|
13
|
-
const constants_js_1 = require("./constants.js");
|
|
5
|
+
import { PublicKey } from '@solana/web3.js';
|
|
6
|
+
import { TOKEN_METADATA_PROGRAM_ID } from './constants.js';
|
|
14
7
|
// ============= PDA =============
|
|
15
8
|
/**
|
|
16
9
|
* Derive Metaplex metadata PDA for a token mint
|
|
17
10
|
*/
|
|
18
|
-
function getMetadataPda(mint) {
|
|
19
|
-
const [pda] =
|
|
11
|
+
export function getMetadataPda(mint) {
|
|
12
|
+
const [pda] = PublicKey.findProgramAddressSync([Buffer.from('metadata'), TOKEN_METADATA_PROGRAM_ID.toBuffer(), mint.toBuffer()], TOKEN_METADATA_PROGRAM_ID);
|
|
20
13
|
return pda;
|
|
21
14
|
}
|
|
22
15
|
// ============= Parsing =============
|
|
@@ -45,7 +38,7 @@ function readLengthPrefixedString(data, offset) {
|
|
|
45
38
|
* - symbol: 4 bytes length + string
|
|
46
39
|
* - uri: 4 bytes length + string
|
|
47
40
|
*/
|
|
48
|
-
function parseMetaplexMetadata(data) {
|
|
41
|
+
export function parseMetaplexMetadata(data) {
|
|
49
42
|
try {
|
|
50
43
|
if (!data || data.length < 65)
|
|
51
44
|
return null;
|
|
@@ -86,7 +79,7 @@ function parseMetaplexMetadata(data) {
|
|
|
86
79
|
* }
|
|
87
80
|
* ```
|
|
88
81
|
*/
|
|
89
|
-
async function getTokenMetadata(connection, mint) {
|
|
82
|
+
export async function getTokenMetadata(connection, mint) {
|
|
90
83
|
try {
|
|
91
84
|
const metadataPda = getMetadataPda(mint);
|
|
92
85
|
const accountInfo = await connection.getAccountInfo(metadataPda);
|
|
@@ -102,7 +95,7 @@ async function getTokenMetadata(connection, mint) {
|
|
|
102
95
|
/**
|
|
103
96
|
* Fetch on-chain Metaplex metadata and then fetch the off-chain JSON pointed to by the URI.
|
|
104
97
|
*/
|
|
105
|
-
async function getTokenMetadataJson(connection, mint, options) {
|
|
98
|
+
export async function getTokenMetadataJson(connection, mint, options) {
|
|
106
99
|
const meta = await getTokenMetadata(connection, mint);
|
|
107
100
|
if (!meta)
|
|
108
101
|
return null;
|
|
@@ -175,7 +168,7 @@ async function getTokenMetadataJson(connection, mint, options) {
|
|
|
175
168
|
* }
|
|
176
169
|
* ```
|
|
177
170
|
*/
|
|
178
|
-
async function batchGetTokenMetadata(connection, mints) {
|
|
171
|
+
export async function batchGetTokenMetadata(connection, mints) {
|
|
179
172
|
const results = new Map();
|
|
180
173
|
if (mints.length === 0) {
|
|
181
174
|
return results;
|
package/dist/metadata.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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"}
|
package/dist/pda.d.ts
CHANGED
|
@@ -43,6 +43,24 @@ export declare function getLpMintPda(pool: PublicKey, programId: PublicKey): Pub
|
|
|
43
43
|
* Derive LP vault PDA (holds burned/locked LP tokens)
|
|
44
44
|
*/
|
|
45
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;
|
|
46
64
|
/**
|
|
47
65
|
* Derive holder reward account PDA for a user + token
|
|
48
66
|
* Used for tracking holder rewards across buys/sells
|
package/dist/pda.d.ts.map
CHANGED
|
@@ -1 +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;;;GAGG;AACH,wBAAgB,kBAAkB,CACjC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,SAAS,GAClB,SAAS,CAMX"}
|
|
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
|
@@ -1,99 +1,117 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* PDA Derivation Helpers
|
|
4
3
|
* All Program Derived Addresses for CoinBarrel AMM
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
exports.getBondingAuthorityPda = getBondingAuthorityPda;
|
|
9
|
-
exports.getSolEscrowPda = getSolEscrowPda;
|
|
10
|
-
exports.getPoolPda = getPoolPda;
|
|
11
|
-
exports.getPoolAuthorityPda = getPoolAuthorityPda;
|
|
12
|
-
exports.getVaultPda = getVaultPda;
|
|
13
|
-
exports.getPoolWsolVaultPda = getPoolWsolVaultPda;
|
|
14
|
-
exports.getPoolTokenVaultPda = getPoolTokenVaultPda;
|
|
15
|
-
exports.getLpMintPda = getLpMintPda;
|
|
16
|
-
exports.getLpVaultPda = getLpVaultPda;
|
|
17
|
-
exports.getHolderRewardPda = getHolderRewardPda;
|
|
18
|
-
const web3_js_1 = require("@solana/web3.js");
|
|
19
|
-
const constants_js_1 = require("./constants.js");
|
|
5
|
+
import { PublicKey } from '@solana/web3.js';
|
|
6
|
+
import { SEEDS, NATIVE_MINT } from './constants.js';
|
|
20
7
|
// ============= Bonding Curve PDAs =============
|
|
21
8
|
/**
|
|
22
9
|
* Derive bonding curve PDA for a token mint
|
|
23
10
|
*/
|
|
24
|
-
function getBondingCurvePda(mint, programId) {
|
|
25
|
-
const [pda] =
|
|
11
|
+
export function getBondingCurvePda(mint, programId) {
|
|
12
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.BONDING, mint.toBuffer()], programId);
|
|
26
13
|
return pda;
|
|
27
14
|
}
|
|
28
15
|
/**
|
|
29
16
|
* Derive bonding authority PDA (signs transfers from curve)
|
|
30
17
|
*/
|
|
31
|
-
function getBondingAuthorityPda(bondingCurve, programId) {
|
|
32
|
-
const [pda] =
|
|
18
|
+
export function getBondingAuthorityPda(bondingCurve, programId) {
|
|
19
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.BONDING_AUTHORITY, bondingCurve.toBuffer()], programId);
|
|
33
20
|
return pda;
|
|
34
21
|
}
|
|
35
22
|
/**
|
|
36
23
|
* Derive SOL escrow PDA for bonding curve
|
|
37
24
|
*/
|
|
38
|
-
function getSolEscrowPda(bondingCurve, programId) {
|
|
39
|
-
const [pda] =
|
|
25
|
+
export function getSolEscrowPda(bondingCurve, programId) {
|
|
26
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.BONDING_SOL, bondingCurve.toBuffer()], programId);
|
|
40
27
|
return pda;
|
|
41
28
|
}
|
|
42
29
|
// ============= AMM Pool PDAs =============
|
|
43
30
|
/**
|
|
44
31
|
* Derive pool PDA for a WSOL <-> Token pair
|
|
45
32
|
*/
|
|
46
|
-
function getPoolPda(tokenMint, programId) {
|
|
47
|
-
const [pda] =
|
|
33
|
+
export function getPoolPda(tokenMint, programId) {
|
|
34
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.POOL, NATIVE_MINT.toBuffer(), tokenMint.toBuffer()], programId);
|
|
48
35
|
return pda;
|
|
49
36
|
}
|
|
50
37
|
/**
|
|
51
38
|
* Derive pool authority PDA (signs transfers from pool vaults)
|
|
52
39
|
*/
|
|
53
|
-
function getPoolAuthorityPda(pool, programId) {
|
|
54
|
-
const [pda] =
|
|
40
|
+
export function getPoolAuthorityPda(pool, programId) {
|
|
41
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.AUTHORITY, pool.toBuffer()], programId);
|
|
55
42
|
return pda;
|
|
56
43
|
}
|
|
57
44
|
/**
|
|
58
45
|
* Derive vault PDA for a pool + mint
|
|
59
46
|
*/
|
|
60
|
-
function getVaultPda(pool, mint, programId) {
|
|
61
|
-
const [pda] =
|
|
47
|
+
export function getVaultPda(pool, mint, programId) {
|
|
48
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.VAULT, pool.toBuffer(), mint.toBuffer()], programId);
|
|
62
49
|
return pda;
|
|
63
50
|
}
|
|
64
51
|
/**
|
|
65
52
|
* Derive WSOL vault PDA for a pool
|
|
66
53
|
*/
|
|
67
|
-
function getPoolWsolVaultPda(pool, programId) {
|
|
68
|
-
return getVaultPda(pool,
|
|
54
|
+
export function getPoolWsolVaultPda(pool, programId) {
|
|
55
|
+
return getVaultPda(pool, NATIVE_MINT, programId);
|
|
69
56
|
}
|
|
70
57
|
/**
|
|
71
58
|
* Derive token vault PDA for a pool
|
|
72
59
|
*/
|
|
73
|
-
function getPoolTokenVaultPda(pool, tokenMint, programId) {
|
|
60
|
+
export function getPoolTokenVaultPda(pool, tokenMint, programId) {
|
|
74
61
|
return getVaultPda(pool, tokenMint, programId);
|
|
75
62
|
}
|
|
76
63
|
/**
|
|
77
64
|
* Derive LP mint PDA for a pool
|
|
78
65
|
*/
|
|
79
|
-
function getLpMintPda(pool, programId) {
|
|
80
|
-
const [pda] =
|
|
66
|
+
export function getLpMintPda(pool, programId) {
|
|
67
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.LP_MINT, pool.toBuffer()], programId);
|
|
81
68
|
return pda;
|
|
82
69
|
}
|
|
83
70
|
/**
|
|
84
71
|
* Derive LP vault PDA (holds burned/locked LP tokens)
|
|
85
72
|
*/
|
|
86
|
-
function getLpVaultPda(pool, programId) {
|
|
87
|
-
const [pda] =
|
|
73
|
+
export function getLpVaultPda(pool, programId) {
|
|
74
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.LP_VAULT, pool.toBuffer()], programId);
|
|
88
75
|
return pda;
|
|
89
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Derive all PDAs needed for inline migration from bonding curve to pool.
|
|
79
|
+
* Used when a buy reaches the migration threshold and triggers auto-migration.
|
|
80
|
+
*
|
|
81
|
+
* @param tokenMint - The token mint being migrated
|
|
82
|
+
* @param programId - CoinBarrel program ID
|
|
83
|
+
* @returns All migration PDAs and pool bump
|
|
84
|
+
*/
|
|
85
|
+
export function getMigrationPDAs(tokenMint, programId) {
|
|
86
|
+
// Pool: seeds = ["pool", wsol_mint, token_mint]
|
|
87
|
+
const [poolPda, poolBump] = PublicKey.findProgramAddressSync([SEEDS.POOL, NATIVE_MINT.toBuffer(), tokenMint.toBuffer()], programId);
|
|
88
|
+
// Token A vault (WSOL): seeds = ["vault", pool, wsol_mint]
|
|
89
|
+
const [tokenAVaultPda] = PublicKey.findProgramAddressSync([SEEDS.VAULT, poolPda.toBuffer(), NATIVE_MINT.toBuffer()], programId);
|
|
90
|
+
// Token B vault: seeds = ["vault", pool, token_mint]
|
|
91
|
+
const [tokenBVaultPda] = PublicKey.findProgramAddressSync([SEEDS.VAULT, poolPda.toBuffer(), tokenMint.toBuffer()], programId);
|
|
92
|
+
// LP mint: seeds = ["lp_mint", pool]
|
|
93
|
+
const [lpMintPda] = PublicKey.findProgramAddressSync([SEEDS.LP_MINT, poolPda.toBuffer()], programId);
|
|
94
|
+
// LP vault: seeds = ["lp_vault", pool]
|
|
95
|
+
const [lpVaultPda] = PublicKey.findProgramAddressSync([SEEDS.LP_VAULT, poolPda.toBuffer()], programId);
|
|
96
|
+
// Pool authority: seeds = ["authority", pool]
|
|
97
|
+
const [poolAuthorityPda] = PublicKey.findProgramAddressSync([SEEDS.AUTHORITY, poolPda.toBuffer()], programId);
|
|
98
|
+
return {
|
|
99
|
+
poolPda,
|
|
100
|
+
poolBump,
|
|
101
|
+
tokenAVaultPda,
|
|
102
|
+
tokenBVaultPda,
|
|
103
|
+
lpMintPda,
|
|
104
|
+
lpVaultPda,
|
|
105
|
+
poolAuthorityPda,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
90
108
|
// ============= Holder Reward PDAs =============
|
|
91
109
|
/**
|
|
92
110
|
* Derive holder reward account PDA for a user + token
|
|
93
111
|
* Used for tracking holder rewards across buys/sells
|
|
94
112
|
*/
|
|
95
|
-
function getHolderRewardPda(tokenMint, holder, programId) {
|
|
96
|
-
const [pda] =
|
|
113
|
+
export function getHolderRewardPda(tokenMint, holder, programId) {
|
|
114
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.HOLDER_REWARD, tokenMint.toBuffer(), holder.toBuffer()], programId);
|
|
97
115
|
return pda;
|
|
98
116
|
}
|
|
99
117
|
//# sourceMappingURL=pda.js.map
|
package/dist/pda.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pda.js","sourceRoot":"","sources":["../src/pda.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pda.js","sourceRoot":"","sources":["../src/pda.ts"],"names":[],"mappings":"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"}
|