@coinbarrel/sdk 1.1.0 → 1.3.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/README.md +305 -253
- package/dist/accounts.js +33 -25
- package/dist/accounts.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +21 -17
- package/dist/constants.js.map +1 -1
- package/dist/create.d.ts +26 -0
- package/dist/create.d.ts.map +1 -0
- package/dist/create.js +101 -0
- package/dist/create.js.map +1 -0
- package/dist/curve.js +57 -50
- package/dist/curve.js.map +1 -1
- package/dist/index.d.ts +48 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +126 -22
- package/dist/index.js.map +1 -1
- package/dist/metadata.d.ts +12 -31
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +60 -95
- package/dist/metadata.js.map +1 -1
- package/dist/pda.js +36 -23
- package/dist/pda.js.map +1 -1
- package/dist/pool.js +61 -54
- package/dist/pool.js.map +1 -1
- package/dist/rewards.d.ts +21 -0
- package/dist/rewards.d.ts.map +1 -0
- package/dist/rewards.js +98 -0
- package/dist/rewards.js.map +1 -0
- package/dist/types.d.ts +33 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -3
package/dist/accounts.js
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* Account Fetching and Parsing
|
|
3
4
|
* Read on-chain account data for bonding curves and pools
|
|
4
5
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.getBondingCurveState = getBondingCurveState;
|
|
8
|
+
exports.getCurveSolBalance = getCurveSolBalance;
|
|
9
|
+
exports.getPoolState = getPoolState;
|
|
10
|
+
exports.getPoolBalances = getPoolBalances;
|
|
11
|
+
exports.getMarketInfo = getMarketInfo;
|
|
12
|
+
exports.getUserTokenBalance = getUserTokenBalance;
|
|
13
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
14
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
15
|
+
const constants_js_1 = require("./constants.js");
|
|
16
|
+
const pda_js_1 = require("./pda.js");
|
|
9
17
|
// ============= Buffer Helpers =============
|
|
10
18
|
function readU16LE(data, offset) {
|
|
11
19
|
return data.readUInt16LE(offset);
|
|
@@ -19,7 +27,7 @@ function readU128LE(data, offset) {
|
|
|
19
27
|
return low + (high << 64n);
|
|
20
28
|
}
|
|
21
29
|
function readPubkey(data, offset) {
|
|
22
|
-
return new PublicKey(data.subarray(offset, offset + 32));
|
|
30
|
+
return new web3_js_1.PublicKey(data.subarray(offset, offset + 32));
|
|
23
31
|
}
|
|
24
32
|
function readBool(data, offset) {
|
|
25
33
|
return data[offset] !== 0;
|
|
@@ -28,14 +36,14 @@ function readBool(data, offset) {
|
|
|
28
36
|
/**
|
|
29
37
|
* Fetch and parse bonding curve state
|
|
30
38
|
*/
|
|
31
|
-
|
|
32
|
-
const bondingCurve = getBondingCurvePda(tokenMint, programId);
|
|
39
|
+
async function getBondingCurveState(connection, tokenMint, programId) {
|
|
40
|
+
const bondingCurve = (0, pda_js_1.getBondingCurvePda)(tokenMint, programId);
|
|
33
41
|
const accountInfo = await connection.getAccountInfo(bondingCurve);
|
|
34
42
|
if (!accountInfo || accountInfo.data.length < 209) {
|
|
35
43
|
return null;
|
|
36
44
|
}
|
|
37
45
|
const data = accountInfo.data;
|
|
38
|
-
const O = BONDING_CURVE_OFFSETS;
|
|
46
|
+
const O = constants_js_1.BONDING_CURVE_OFFSETS;
|
|
39
47
|
return {
|
|
40
48
|
tokenMint: readPubkey(data, O.TOKEN_MINT),
|
|
41
49
|
tokenVault: readPubkey(data, O.TOKEN_VAULT),
|
|
@@ -57,9 +65,9 @@ export async function getBondingCurveState(connection, tokenMint, programId) {
|
|
|
57
65
|
/**
|
|
58
66
|
* Get SOL balance in bonding curve escrow
|
|
59
67
|
*/
|
|
60
|
-
|
|
61
|
-
const bondingCurve = getBondingCurvePda(tokenMint, programId);
|
|
62
|
-
const solEscrow = getSolEscrowPda(bondingCurve, programId);
|
|
68
|
+
async function getCurveSolBalance(connection, tokenMint, programId) {
|
|
69
|
+
const bondingCurve = (0, pda_js_1.getBondingCurvePda)(tokenMint, programId);
|
|
70
|
+
const solEscrow = (0, pda_js_1.getSolEscrowPda)(bondingCurve, programId);
|
|
63
71
|
const balance = await connection.getBalance(solEscrow);
|
|
64
72
|
return BigInt(balance);
|
|
65
73
|
}
|
|
@@ -67,14 +75,14 @@ export async function getCurveSolBalance(connection, tokenMint, programId) {
|
|
|
67
75
|
/**
|
|
68
76
|
* Fetch and parse pool state
|
|
69
77
|
*/
|
|
70
|
-
|
|
71
|
-
const pool = getPoolPda(tokenMint, programId);
|
|
78
|
+
async function getPoolState(connection, tokenMint, programId) {
|
|
79
|
+
const pool = (0, pda_js_1.getPoolPda)(tokenMint, programId);
|
|
72
80
|
const accountInfo = await connection.getAccountInfo(pool);
|
|
73
81
|
if (!accountInfo || accountInfo.data.length < 269) {
|
|
74
82
|
return null;
|
|
75
83
|
}
|
|
76
84
|
const data = accountInfo.data;
|
|
77
|
-
const O = POOL_OFFSETS;
|
|
85
|
+
const O = constants_js_1.POOL_OFFSETS;
|
|
78
86
|
return {
|
|
79
87
|
tokenAMint: readPubkey(data, O.TOKEN_A_MINT),
|
|
80
88
|
tokenBMint: readPubkey(data, O.TOKEN_B_MINT),
|
|
@@ -95,20 +103,20 @@ export async function getPoolState(connection, tokenMint, programId) {
|
|
|
95
103
|
* Get pool vault balances
|
|
96
104
|
* Uses vault addresses stored in Pool state rather than deriving PDAs
|
|
97
105
|
*/
|
|
98
|
-
|
|
106
|
+
async function getPoolBalances(connection, tokenMint, programId) {
|
|
99
107
|
// First fetch pool state to get stored vault addresses
|
|
100
108
|
const state = await getPoolState(connection, tokenMint, programId);
|
|
101
109
|
if (!state) {
|
|
102
110
|
return null;
|
|
103
111
|
}
|
|
104
112
|
// Determine which vault is WSOL and which is the token based on stored mints
|
|
105
|
-
const isTokenANative = state.tokenAMint.equals(NATIVE_MINT);
|
|
113
|
+
const isTokenANative = state.tokenAMint.equals(constants_js_1.NATIVE_MINT);
|
|
106
114
|
const wsolVault = isTokenANative ? state.tokenAVault : state.tokenBVault;
|
|
107
115
|
const tokenVault = isTokenANative ? state.tokenBVault : state.tokenAVault;
|
|
108
116
|
try {
|
|
109
117
|
const [wsolAccount, tokenAccount] = await Promise.all([
|
|
110
|
-
getAccount(connection, wsolVault),
|
|
111
|
-
getAccount(connection, tokenVault),
|
|
118
|
+
(0, spl_token_1.getAccount)(connection, wsolVault),
|
|
119
|
+
(0, spl_token_1.getAccount)(connection, tokenVault),
|
|
112
120
|
]);
|
|
113
121
|
return {
|
|
114
122
|
solBalance: wsolAccount.amount,
|
|
@@ -124,7 +132,7 @@ export async function getPoolBalances(connection, tokenMint, programId) {
|
|
|
124
132
|
* Get comprehensive market info for a token
|
|
125
133
|
* Automatically detects if on bonding curve or AMM pool
|
|
126
134
|
*/
|
|
127
|
-
|
|
135
|
+
async function getMarketInfo(connection, tokenMint, programId) {
|
|
128
136
|
// Try bonding curve first
|
|
129
137
|
const curveState = await getBondingCurveState(connection, tokenMint, programId);
|
|
130
138
|
if (curveState && !curveState.paused) {
|
|
@@ -133,9 +141,9 @@ export async function getMarketInfo(connection, tokenMint, programId) {
|
|
|
133
141
|
// Still on bonding curve
|
|
134
142
|
const solBalance = await getCurveSolBalance(connection, tokenMint, programId);
|
|
135
143
|
// Calculate price from virtual reserves: price = vSol / vToken
|
|
136
|
-
const price = curveState.vToken > 0n ? (curveState.vSol * LAMPORTS_PER_SOL) / curveState.vToken : 0n;
|
|
144
|
+
const price = curveState.vToken > 0n ? (curveState.vSol * constants_js_1.LAMPORTS_PER_SOL) / curveState.vToken : 0n;
|
|
137
145
|
// Market cap = circulating supply * price
|
|
138
|
-
const marketCapSol = curveState.totalSold > 0n ? (curveState.totalSold * price) / LAMPORTS_PER_SOL : 0n;
|
|
146
|
+
const marketCapSol = curveState.totalSold > 0n ? (curveState.totalSold * price) / constants_js_1.LAMPORTS_PER_SOL : 0n;
|
|
139
147
|
return {
|
|
140
148
|
tokenMint,
|
|
141
149
|
phase: 'curve',
|
|
@@ -155,7 +163,7 @@ export async function getMarketInfo(connection, tokenMint, programId) {
|
|
|
155
163
|
if (poolState && poolBalances) {
|
|
156
164
|
// Calculate price from reserves: price = solReserve / tokenReserve
|
|
157
165
|
const price = poolBalances.tokenBalance > 0n
|
|
158
|
-
? (poolBalances.solBalance * LAMPORTS_PER_SOL) / poolBalances.tokenBalance
|
|
166
|
+
? (poolBalances.solBalance * constants_js_1.LAMPORTS_PER_SOL) / poolBalances.tokenBalance
|
|
159
167
|
: 0n;
|
|
160
168
|
// For pool, circulating = total supply - vault balance
|
|
161
169
|
// We'd need to fetch total supply, for now use a placeholder
|
|
@@ -179,10 +187,10 @@ export async function getMarketInfo(connection, tokenMint, programId) {
|
|
|
179
187
|
/**
|
|
180
188
|
* Get user's token balance
|
|
181
189
|
*/
|
|
182
|
-
|
|
190
|
+
async function getUserTokenBalance(connection, tokenMint, user) {
|
|
183
191
|
try {
|
|
184
|
-
const ata = getAssociatedTokenAddressSync(tokenMint, user);
|
|
185
|
-
const account = await getAccount(connection, ata);
|
|
192
|
+
const ata = (0, spl_token_1.getAssociatedTokenAddressSync)(tokenMint, user);
|
|
193
|
+
const account = await (0, spl_token_1.getAccount)(connection, ata);
|
|
186
194
|
return account.amount;
|
|
187
195
|
}
|
|
188
196
|
catch {
|
package/dist/accounts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ export declare const SEEDS: {
|
|
|
21
21
|
};
|
|
22
22
|
export declare const DISCRIMINATORS: {
|
|
23
23
|
readonly initialize_barrel_curve: Buffer<ArrayBuffer>;
|
|
24
|
+
readonly create_barrel_token: Buffer<ArrayBuffer>;
|
|
24
25
|
readonly buy_on_curve: Buffer<ArrayBuffer>;
|
|
25
26
|
readonly sell_on_curve: Buffer<ArrayBuffer>;
|
|
26
27
|
readonly sell_max_on_curve: Buffer<ArrayBuffer>;
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3C,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,CAGlD,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,CAG3D,CAAC;AAGF,eAAO,MAAM,WAAW,WAA+D,CAAC;AAGxF,eAAO,MAAM,yBAAyB,WAErC,CAAC;AAIF,eAAO,MAAM,KAAK;;;;;;;;;;CAUR,CAAC;AAKX,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3C,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,CAGlD,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,CAG3D,CAAC;AAGF,eAAO,MAAM,WAAW,WAA+D,CAAC;AAGxF,eAAO,MAAM,yBAAyB,WAErC,CAAC;AAIF,eAAO,MAAM,KAAK;;;;;;;;;;CAUR,CAAC;AAKX,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;CA2BjB,CAAC;AAKX,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;CAiBxB,CAAC;AAEX,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;CAef,CAAC;AAIX,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,gBAAgB,cAAiB,CAAC;AAC/C,eAAO,MAAM,yBAAyB,WAAa,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -1,23 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/**
|
|
2
3
|
* CoinBarrel SDK Constants
|
|
3
4
|
* Network-specific program IDs and configuration
|
|
4
5
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.TOKEN_DECIMALS_MULTIPLIER = exports.LAMPORTS_PER_SOL = exports.DEFAULT_SLIPPAGE_BPS = exports.DEFAULT_DECIMALS = exports.POOL_OFFSETS = exports.BONDING_CURVE_OFFSETS = exports.DISCRIMINATORS = exports.SEEDS = exports.TOKEN_METADATA_PROGRAM_ID = exports.NATIVE_MINT = exports.ADMIN_FEE_RECIPIENTS = exports.PROGRAM_IDS = void 0;
|
|
8
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
9
|
+
exports.PROGRAM_IDS = {
|
|
10
|
+
devnet: new web3_js_1.PublicKey('AhfARnaxxX61YotZw3mZWLLUFpF8UV6pZmWJBEZCbVC4'),
|
|
11
|
+
mainnet: new web3_js_1.PublicKey('7HxbxHnTUBaUfWjVPbPLs8gqqScmjmBWjRnETBjS9DMj'),
|
|
9
12
|
};
|
|
10
13
|
// Admin fee recipient (CoinBarrel protocol fee wallet)
|
|
11
|
-
|
|
12
|
-
devnet: new PublicKey('4Uw8XhtqVBEXEkjZfWb7agyrhxbSmfDSGWEdxbWonhwu'),
|
|
13
|
-
mainnet: new PublicKey('4Uw8XhtqVBEXEkjZfWb7agyrhxbSmfDSGWEdxbWonhwu'),
|
|
14
|
+
exports.ADMIN_FEE_RECIPIENTS = {
|
|
15
|
+
devnet: new web3_js_1.PublicKey('4Uw8XhtqVBEXEkjZfWb7agyrhxbSmfDSGWEdxbWonhwu'),
|
|
16
|
+
mainnet: new web3_js_1.PublicKey('4Uw8XhtqVBEXEkjZfWb7agyrhxbSmfDSGWEdxbWonhwu'),
|
|
14
17
|
};
|
|
15
18
|
// WSOL mint (same on all networks)
|
|
16
|
-
|
|
19
|
+
exports.NATIVE_MINT = new web3_js_1.PublicKey('So11111111111111111111111111111111111111112');
|
|
17
20
|
// Metaplex Token Metadata Program ID (same on all networks)
|
|
18
|
-
|
|
21
|
+
exports.TOKEN_METADATA_PROGRAM_ID = new web3_js_1.PublicKey('metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s');
|
|
19
22
|
// ============= PDA Seeds =============
|
|
20
|
-
|
|
23
|
+
exports.SEEDS = {
|
|
21
24
|
BONDING: Buffer.from('bonding'),
|
|
22
25
|
BONDING_AUTHORITY: Buffer.from('bonding_authority'),
|
|
23
26
|
BONDING_SOL: Buffer.from('bonding_sol'),
|
|
@@ -30,9 +33,10 @@ export const SEEDS = {
|
|
|
30
33
|
};
|
|
31
34
|
// ============= Instruction Discriminators =============
|
|
32
35
|
// Pre-computed Anchor discriminators (first 8 bytes of sha256("global:<instruction_name>"))
|
|
33
|
-
|
|
36
|
+
exports.DISCRIMINATORS = {
|
|
34
37
|
// Bonding curve
|
|
35
38
|
initialize_barrel_curve: Buffer.from([158, 16, 141, 14, 53, 250, 33, 42]),
|
|
39
|
+
create_barrel_token: Buffer.from([88, 190, 74, 163, 144, 5, 73, 246]),
|
|
36
40
|
buy_on_curve: Buffer.from([6, 20, 84, 191, 116, 79, 21, 147]),
|
|
37
41
|
sell_on_curve: Buffer.from([158, 242, 158, 47, 48, 215, 214, 209]),
|
|
38
42
|
sell_max_on_curve: Buffer.from([42, 184, 90, 220, 13, 36, 18, 77]),
|
|
@@ -56,7 +60,7 @@ export const DISCRIMINATORS = {
|
|
|
56
60
|
};
|
|
57
61
|
// ============= Account Data Offsets =============
|
|
58
62
|
// For parsing on-chain account data
|
|
59
|
-
|
|
63
|
+
exports.BONDING_CURVE_OFFSETS = {
|
|
60
64
|
DISCRIMINATOR: 0,
|
|
61
65
|
TOKEN_MINT: 8,
|
|
62
66
|
TOKEN_VAULT: 8 + 32,
|
|
@@ -74,7 +78,7 @@ export const BONDING_CURVE_OFFSETS = {
|
|
|
74
78
|
TOTAL_SOLD: 8 + 192,
|
|
75
79
|
PAUSED: 8 + 208,
|
|
76
80
|
};
|
|
77
|
-
|
|
81
|
+
exports.POOL_OFFSETS = {
|
|
78
82
|
DISCRIMINATOR: 0,
|
|
79
83
|
TOKEN_A_MINT: 8,
|
|
80
84
|
TOKEN_B_MINT: 8 + 32,
|
|
@@ -91,8 +95,8 @@ export const POOL_OFFSETS = {
|
|
|
91
95
|
CREATOR_FEE_RECIPIENT: 8 + 237,
|
|
92
96
|
};
|
|
93
97
|
// ============= Defaults =============
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
+
exports.DEFAULT_DECIMALS = 6;
|
|
99
|
+
exports.DEFAULT_SLIPPAGE_BPS = 100; // 1%
|
|
100
|
+
exports.LAMPORTS_PER_SOL = 1000000000n;
|
|
101
|
+
exports.TOKEN_DECIMALS_MULTIPLIER = 1000000n; // 10^6 for 6 decimals
|
|
98
102
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/create.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token Creation
|
|
3
|
+
* Create new barrel tokens with atomically revoked mint/freeze authority
|
|
4
|
+
*/
|
|
5
|
+
import { Keypair, PublicKey, TransactionInstruction } from '@solana/web3.js';
|
|
6
|
+
import { type Network } from './constants.js';
|
|
7
|
+
import type { CreateBarrelTokenParams } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Build create_barrel_token instruction
|
|
10
|
+
*
|
|
11
|
+
* Creates a new token with:
|
|
12
|
+
* - Mint authority: revoked immediately after minting 1B tokens
|
|
13
|
+
* - Freeze authority: null from creation
|
|
14
|
+
* - 1B total supply minted to bonding curve vault
|
|
15
|
+
* - Metadata created via Metaplex CPI
|
|
16
|
+
*
|
|
17
|
+
* @param params - Token creation parameters
|
|
18
|
+
* @param programId - CoinBarrel program ID
|
|
19
|
+
* @param network - Network for admin fee recipient
|
|
20
|
+
* @returns Object containing instruction and mint keypair (must sign transaction)
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildCreateBarrelTokenInstruction(params: CreateBarrelTokenParams, programId: PublicKey, network: Network): {
|
|
23
|
+
instructions: TransactionInstruction[];
|
|
24
|
+
mintKeypair: Keypair;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEN,OAAO,EACP,SAAS,EAGT,sBAAsB,EACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAIN,KAAK,OAAO,EACZ,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAuC1D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iCAAiC,CAChD,MAAM,EAAE,uBAAuB,EAC/B,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,GACd;IAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CA6DlE"}
|
package/dist/create.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Token Creation
|
|
4
|
+
* Create new barrel tokens with atomically revoked mint/freeze authority
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.buildCreateBarrelTokenInstruction = buildCreateBarrelTokenInstruction;
|
|
8
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
9
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
10
|
+
const constants_js_1 = require("./constants.js");
|
|
11
|
+
const pda_js_1 = require("./pda.js");
|
|
12
|
+
const metadata_js_1 = require("./metadata.js");
|
|
13
|
+
// ============= Buffer Helpers =============
|
|
14
|
+
function writeU8(n) {
|
|
15
|
+
const b = Buffer.alloc(1);
|
|
16
|
+
b.writeUInt8(n);
|
|
17
|
+
return b;
|
|
18
|
+
}
|
|
19
|
+
function writeU16LE(n) {
|
|
20
|
+
const b = Buffer.alloc(2);
|
|
21
|
+
b.writeUInt16LE(n);
|
|
22
|
+
return b;
|
|
23
|
+
}
|
|
24
|
+
function writePubkey(pk) {
|
|
25
|
+
return pk.toBuffer();
|
|
26
|
+
}
|
|
27
|
+
function writeString(s) {
|
|
28
|
+
const bytes = Buffer.from(s, 'utf-8');
|
|
29
|
+
const lenBuf = Buffer.alloc(4);
|
|
30
|
+
lenBuf.writeUInt32LE(bytes.length);
|
|
31
|
+
return Buffer.concat([lenBuf, bytes]);
|
|
32
|
+
}
|
|
33
|
+
// ============= Token Vault PDA =============
|
|
34
|
+
function getTokenVaultPda(bondingCurve, programId) {
|
|
35
|
+
const [pda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from('token_vault'), bondingCurve.toBuffer()], programId);
|
|
36
|
+
return pda;
|
|
37
|
+
}
|
|
38
|
+
// ============= Instruction Builder =============
|
|
39
|
+
/**
|
|
40
|
+
* Build create_barrel_token instruction
|
|
41
|
+
*
|
|
42
|
+
* Creates a new token with:
|
|
43
|
+
* - Mint authority: revoked immediately after minting 1B tokens
|
|
44
|
+
* - Freeze authority: null from creation
|
|
45
|
+
* - 1B total supply minted to bonding curve vault
|
|
46
|
+
* - Metadata created via Metaplex CPI
|
|
47
|
+
*
|
|
48
|
+
* @param params - Token creation parameters
|
|
49
|
+
* @param programId - CoinBarrel program ID
|
|
50
|
+
* @param network - Network for admin fee recipient
|
|
51
|
+
* @returns Object containing instruction and mint keypair (must sign transaction)
|
|
52
|
+
*/
|
|
53
|
+
function buildCreateBarrelTokenInstruction(params, programId, network) {
|
|
54
|
+
const { payer, name, symbol, uri, decimals = 6, variant = 0, creatorFeeRecipient, traderRewardsShareBps = 2500, // 25% of fees to holders
|
|
55
|
+
} = params;
|
|
56
|
+
// Generate new mint keypair
|
|
57
|
+
const mintKeypair = web3_js_1.Keypair.generate();
|
|
58
|
+
const tokenMint = mintKeypair.publicKey;
|
|
59
|
+
// Derive PDAs
|
|
60
|
+
const bondingCurve = (0, pda_js_1.getBondingCurvePda)(tokenMint, programId);
|
|
61
|
+
const bondingAuthority = (0, pda_js_1.getBondingAuthorityPda)(bondingCurve, programId);
|
|
62
|
+
const tokenVault = getTokenVaultPda(bondingCurve, programId);
|
|
63
|
+
const metadata = (0, metadata_js_1.getMetadataPda)(tokenMint);
|
|
64
|
+
// Admin fee recipient from network config
|
|
65
|
+
const adminFeeRecipient = constants_js_1.ADMIN_FEE_RECIPIENTS[network];
|
|
66
|
+
// Build instruction data
|
|
67
|
+
// Discriminator + decimals(u8) + variant(u8) + admin_fee_recipient(Pubkey) + creator_fee_recipient(Pubkey)
|
|
68
|
+
// + trader_rewards_share_bps(u16) + name(String) + symbol(String) + uri(String)
|
|
69
|
+
const data = Buffer.concat([
|
|
70
|
+
constants_js_1.DISCRIMINATORS.create_barrel_token,
|
|
71
|
+
writeU8(decimals),
|
|
72
|
+
writeU8(variant),
|
|
73
|
+
writePubkey(adminFeeRecipient),
|
|
74
|
+
writePubkey(creatorFeeRecipient),
|
|
75
|
+
writeU16LE(traderRewardsShareBps),
|
|
76
|
+
writeString(name),
|
|
77
|
+
writeString(symbol),
|
|
78
|
+
writeString(uri),
|
|
79
|
+
]);
|
|
80
|
+
const createIx = new web3_js_1.TransactionInstruction({
|
|
81
|
+
programId,
|
|
82
|
+
keys: [
|
|
83
|
+
{ pubkey: tokenMint, isWritable: true, isSigner: true },
|
|
84
|
+
{ pubkey: bondingCurve, isWritable: true, isSigner: false },
|
|
85
|
+
{ pubkey: tokenVault, isWritable: true, isSigner: false },
|
|
86
|
+
{ pubkey: bondingAuthority, isWritable: false, isSigner: false },
|
|
87
|
+
{ pubkey: metadata, isWritable: true, isSigner: false },
|
|
88
|
+
{ pubkey: constants_js_1.TOKEN_METADATA_PROGRAM_ID, isWritable: false, isSigner: false },
|
|
89
|
+
{ pubkey: payer, isWritable: true, isSigner: true },
|
|
90
|
+
{ pubkey: web3_js_1.SystemProgram.programId, isWritable: false, isSigner: false },
|
|
91
|
+
{ pubkey: spl_token_1.TOKEN_PROGRAM_ID, isWritable: false, isSigner: false },
|
|
92
|
+
{ pubkey: web3_js_1.SYSVAR_RENT_PUBKEY, isWritable: false, isSigner: false },
|
|
93
|
+
],
|
|
94
|
+
data,
|
|
95
|
+
});
|
|
96
|
+
return {
|
|
97
|
+
instructions: [createIx],
|
|
98
|
+
mintKeypair,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"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"}
|