@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
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Account Fetching and Parsing
|
|
3
|
+
* Read on-chain account data for bonding curves and pools
|
|
4
|
+
*/
|
|
5
|
+
import { Connection, PublicKey } from '@solana/web3.js';
|
|
6
|
+
import type { BondingCurveState, PoolState, MarketInfo } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Fetch and parse bonding curve state
|
|
9
|
+
*/
|
|
10
|
+
export declare function getBondingCurveState(connection: Connection, tokenMint: PublicKey, programId: PublicKey): Promise<BondingCurveState | null>;
|
|
11
|
+
/**
|
|
12
|
+
* Get SOL balance in bonding curve escrow
|
|
13
|
+
*/
|
|
14
|
+
export declare function getCurveSolBalance(connection: Connection, tokenMint: PublicKey, programId: PublicKey): Promise<bigint>;
|
|
15
|
+
/**
|
|
16
|
+
* Fetch and parse pool state
|
|
17
|
+
*/
|
|
18
|
+
export declare function getPoolState(connection: Connection, tokenMint: PublicKey, programId: PublicKey): Promise<PoolState | null>;
|
|
19
|
+
/**
|
|
20
|
+
* Get pool vault balances
|
|
21
|
+
* Uses vault addresses stored in Pool state rather than deriving PDAs
|
|
22
|
+
*/
|
|
23
|
+
export declare function getPoolBalances(connection: Connection, tokenMint: PublicKey, programId: PublicKey): Promise<{
|
|
24
|
+
solBalance: bigint;
|
|
25
|
+
tokenBalance: bigint;
|
|
26
|
+
} | null>;
|
|
27
|
+
/**
|
|
28
|
+
* Get comprehensive market info for a token
|
|
29
|
+
* Automatically detects if on bonding curve or AMM pool
|
|
30
|
+
*/
|
|
31
|
+
export declare function getMarketInfo(connection: Connection, tokenMint: PublicKey, programId: PublicKey): Promise<MarketInfo | null>;
|
|
32
|
+
/**
|
|
33
|
+
* Get user's token balance
|
|
34
|
+
*/
|
|
35
|
+
export declare function getUserTokenBalance(connection: Connection, tokenMint: PublicKey, user: PublicKey): Promise<bigint>;
|
|
36
|
+
//# sourceMappingURL=accounts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA4B3E;;GAEG;AACH,wBAAsB,oBAAoB,CACzC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA8BnC;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACvC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,MAAM,CAAC,CAKjB;AAID;;GAEG;AACH,wBAAsB,YAAY,CACjC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA0B3B;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACpC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAyB9D;AAID;;;GAGG;AACH,wBAAsB,aAAa,CAClC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAwD5B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACxC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,SAAS,GACb,OAAO,CAAC,MAAM,CAAC,CAQjB"}
|
package/dist/accounts.js
CHANGED
|
@@ -39,7 +39,8 @@ function readBool(data, offset) {
|
|
|
39
39
|
async function getBondingCurveState(connection, tokenMint, programId) {
|
|
40
40
|
const bondingCurve = (0, pda_js_1.getBondingCurvePda)(tokenMint, programId);
|
|
41
41
|
const accountInfo = await connection.getAccountInfo(bondingCurve);
|
|
42
|
-
|
|
42
|
+
// 8 (discriminator) + 232 (struct) = 240 bytes minimum
|
|
43
|
+
if (!accountInfo || accountInfo.data.length < 240) {
|
|
43
44
|
return null;
|
|
44
45
|
}
|
|
45
46
|
const data = accountInfo.data;
|
|
@@ -59,7 +60,8 @@ async function getBondingCurveState(connection, tokenMint, programId) {
|
|
|
59
60
|
minPriceLamportsPerToken: readU64LE(data, O.MIN_PRICE),
|
|
60
61
|
maxSupply: readU128LE(data, O.MAX_SUPPLY),
|
|
61
62
|
totalSold: readU128LE(data, O.TOTAL_SOLD),
|
|
62
|
-
|
|
63
|
+
accumulatedHolderRewardsSol: readU64LE(data, O.ACCUMULATED_HOLDER_REWARDS_SOL),
|
|
64
|
+
rewardPerTokenStored: readU128LE(data, O.REWARD_PER_TOKEN_STORED),
|
|
63
65
|
};
|
|
64
66
|
}
|
|
65
67
|
/**
|
|
@@ -133,40 +135,14 @@ async function getPoolBalances(connection, tokenMint, programId) {
|
|
|
133
135
|
* Automatically detects if on bonding curve or AMM pool
|
|
134
136
|
*/
|
|
135
137
|
async function getMarketInfo(connection, tokenMint, programId) {
|
|
136
|
-
//
|
|
137
|
-
const curveState = await getBondingCurveState(connection, tokenMint, programId);
|
|
138
|
-
if (curveState && !curveState.paused) {
|
|
139
|
-
// Check if curve has been migrated (total_sold >= max_supply means graduated)
|
|
140
|
-
if (curveState.totalSold < curveState.maxSupply) {
|
|
141
|
-
// Still on bonding curve
|
|
142
|
-
const solBalance = await getCurveSolBalance(connection, tokenMint, programId);
|
|
143
|
-
// Calculate price from virtual reserves: price = vSol / vToken
|
|
144
|
-
const price = curveState.vToken > 0n ? (curveState.vSol * constants_js_1.LAMPORTS_PER_SOL) / curveState.vToken : 0n;
|
|
145
|
-
// Market cap = circulating supply * price
|
|
146
|
-
const marketCapSol = curveState.totalSold > 0n ? (curveState.totalSold * price) / constants_js_1.LAMPORTS_PER_SOL : 0n;
|
|
147
|
-
return {
|
|
148
|
-
tokenMint,
|
|
149
|
-
phase: 'curve',
|
|
150
|
-
price,
|
|
151
|
-
solReserve: solBalance,
|
|
152
|
-
tokenReserve: curveState.maxSupply - curveState.totalSold,
|
|
153
|
-
marketCapSol,
|
|
154
|
-
circulatingSupply: curveState.totalSold,
|
|
155
|
-
feeBps: curveState.feeBps,
|
|
156
|
-
paused: curveState.paused,
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
// Try AMM pool
|
|
138
|
+
// Check if pool exists first (token has graduated)
|
|
161
139
|
const poolState = await getPoolState(connection, tokenMint, programId);
|
|
162
140
|
const poolBalances = poolState ? await getPoolBalances(connection, tokenMint, programId) : null;
|
|
163
141
|
if (poolState && poolBalances) {
|
|
164
|
-
//
|
|
142
|
+
// Token is on AMM pool (graduated)
|
|
165
143
|
const price = poolBalances.tokenBalance > 0n
|
|
166
144
|
? (poolBalances.solBalance * constants_js_1.LAMPORTS_PER_SOL) / poolBalances.tokenBalance
|
|
167
145
|
: 0n;
|
|
168
|
-
// For pool, circulating = total supply - vault balance
|
|
169
|
-
// We'd need to fetch total supply, for now use a placeholder
|
|
170
146
|
const marketCapSol = poolBalances.tokenBalance > 0n
|
|
171
147
|
? poolBalances.solBalance * 2n // Approximate: 2x the SOL in pool
|
|
172
148
|
: 0n;
|
|
@@ -179,7 +155,25 @@ async function getMarketInfo(connection, tokenMint, programId) {
|
|
|
179
155
|
marketCapSol,
|
|
180
156
|
circulatingSupply: 0n, // Would need total supply query
|
|
181
157
|
feeBps: Number(poolState.feeRate),
|
|
182
|
-
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
// Try bonding curve (not yet graduated)
|
|
161
|
+
const curveState = await getBondingCurveState(connection, tokenMint, programId);
|
|
162
|
+
if (curveState) {
|
|
163
|
+
const solBalance = await getCurveSolBalance(connection, tokenMint, programId);
|
|
164
|
+
// Calculate price from virtual reserves: price = vSol / vToken
|
|
165
|
+
const price = curveState.vToken > 0n ? (curveState.vSol * constants_js_1.LAMPORTS_PER_SOL) / curveState.vToken : 0n;
|
|
166
|
+
// Market cap = circulating supply * price
|
|
167
|
+
const marketCapSol = curveState.totalSold > 0n ? (curveState.totalSold * price) / constants_js_1.LAMPORTS_PER_SOL : 0n;
|
|
168
|
+
return {
|
|
169
|
+
tokenMint,
|
|
170
|
+
phase: 'curve',
|
|
171
|
+
price,
|
|
172
|
+
solReserve: solBalance,
|
|
173
|
+
tokenReserve: curveState.maxSupply - curveState.totalSold,
|
|
174
|
+
marketCapSol,
|
|
175
|
+
circulatingSupply: curveState.totalSold,
|
|
176
|
+
feeBps: curveState.feeBps,
|
|
183
177
|
};
|
|
184
178
|
}
|
|
185
179
|
return null;
|
|
@@ -197,3 +191,4 @@ async function getUserTokenBalance(connection, tokenMint, user) {
|
|
|
197
191
|
return 0n;
|
|
198
192
|
}
|
|
199
193
|
}
|
|
194
|
+
//# sourceMappingURL=accounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CoinBarrel SDK Constants
|
|
3
|
+
* Network-specific program IDs and configuration
|
|
4
|
+
*/
|
|
5
|
+
import { PublicKey } from '@solana/web3.js';
|
|
6
|
+
export type Network = 'devnet' | 'mainnet';
|
|
7
|
+
export declare const PROGRAM_IDS: Record<Network, PublicKey>;
|
|
8
|
+
export declare const ADMIN_FEE_RECIPIENTS: Record<Network, PublicKey>;
|
|
9
|
+
export declare const NATIVE_MINT: PublicKey;
|
|
10
|
+
export declare const TOKEN_METADATA_PROGRAM_ID: PublicKey;
|
|
11
|
+
export declare const SEEDS: {
|
|
12
|
+
readonly BONDING: Buffer<ArrayBuffer>;
|
|
13
|
+
readonly BONDING_AUTHORITY: Buffer<ArrayBuffer>;
|
|
14
|
+
readonly BONDING_SOL: Buffer<ArrayBuffer>;
|
|
15
|
+
readonly POOL: Buffer<ArrayBuffer>;
|
|
16
|
+
readonly AUTHORITY: Buffer<ArrayBuffer>;
|
|
17
|
+
readonly VAULT: Buffer<ArrayBuffer>;
|
|
18
|
+
readonly LP_MINT: Buffer<ArrayBuffer>;
|
|
19
|
+
readonly LP_VAULT: Buffer<ArrayBuffer>;
|
|
20
|
+
readonly HOLDER_REWARD: Buffer<ArrayBuffer>;
|
|
21
|
+
};
|
|
22
|
+
export declare const DISCRIMINATORS: {
|
|
23
|
+
readonly initialize_barrel_curve: Buffer<ArrayBuffer>;
|
|
24
|
+
readonly create_barrel_token: Buffer<ArrayBuffer>;
|
|
25
|
+
readonly buy_on_curve: Buffer<ArrayBuffer>;
|
|
26
|
+
readonly sell_on_curve: Buffer<ArrayBuffer>;
|
|
27
|
+
readonly sell_max_on_curve: Buffer<ArrayBuffer>;
|
|
28
|
+
readonly configure_bonding_fees: Buffer<ArrayBuffer>;
|
|
29
|
+
readonly configure_virtual_curve: Buffer<ArrayBuffer>;
|
|
30
|
+
readonly initialize_pool: Buffer<ArrayBuffer>;
|
|
31
|
+
readonly swap_sol_to_token: Buffer<ArrayBuffer>;
|
|
32
|
+
readonly swap_token_to_sol: Buffer<ArrayBuffer>;
|
|
33
|
+
readonly swap_token_to_sol_max: Buffer<ArrayBuffer>;
|
|
34
|
+
readonly swap: Buffer<ArrayBuffer>;
|
|
35
|
+
readonly add_liquidity: Buffer<ArrayBuffer>;
|
|
36
|
+
readonly remove_liquidity: Buffer<ArrayBuffer>;
|
|
37
|
+
readonly migrate_barrel: Buffer<ArrayBuffer>;
|
|
38
|
+
readonly claim_holder_rewards: Buffer<ArrayBuffer>;
|
|
39
|
+
readonly claim_holder_rewards_curve: Buffer<ArrayBuffer>;
|
|
40
|
+
readonly init_holder_reward_account_curve: Buffer<ArrayBuffer>;
|
|
41
|
+
readonly init_holder_reward_account_pool: Buffer<ArrayBuffer>;
|
|
42
|
+
};
|
|
43
|
+
export declare const BONDING_CURVE_OFFSETS: {
|
|
44
|
+
readonly DISCRIMINATOR: 0;
|
|
45
|
+
readonly TOKEN_MINT: 8;
|
|
46
|
+
readonly TOKEN_VAULT: number;
|
|
47
|
+
readonly ADMIN_FEE_RECIPIENT: number;
|
|
48
|
+
readonly CREATOR_FEE_RECIPIENT: number;
|
|
49
|
+
readonly FEE_BPS: number;
|
|
50
|
+
readonly VARIANT: number;
|
|
51
|
+
readonly BUMP: number;
|
|
52
|
+
readonly V_TOKEN: number;
|
|
53
|
+
readonly V_SOL: number;
|
|
54
|
+
readonly AMP_BPS: number;
|
|
55
|
+
readonly TRADER_REWARDS_SHARE_BPS: number;
|
|
56
|
+
readonly MIN_PRICE: number;
|
|
57
|
+
readonly MAX_SUPPLY: number;
|
|
58
|
+
readonly TOTAL_SOLD: number;
|
|
59
|
+
readonly ACCUMULATED_HOLDER_REWARDS_SOL: number;
|
|
60
|
+
readonly REWARD_PER_TOKEN_STORED: number;
|
|
61
|
+
};
|
|
62
|
+
export declare const POOL_OFFSETS: {
|
|
63
|
+
readonly DISCRIMINATOR: 0;
|
|
64
|
+
readonly TOKEN_A_MINT: 8;
|
|
65
|
+
readonly TOKEN_B_MINT: number;
|
|
66
|
+
readonly TOKEN_A_VAULT: number;
|
|
67
|
+
readonly TOKEN_B_VAULT: number;
|
|
68
|
+
readonly LP_MINT: number;
|
|
69
|
+
readonly FEE_RATE: number;
|
|
70
|
+
readonly AUTHORITY: number;
|
|
71
|
+
readonly BUMP: number;
|
|
72
|
+
readonly IS_LOCKED: number;
|
|
73
|
+
readonly POOL_TYPE: number;
|
|
74
|
+
readonly TRADER_REWARDS_SHARE_BPS: number;
|
|
75
|
+
readonly ADMIN_FEE_RECIPIENT: number;
|
|
76
|
+
readonly CREATOR_FEE_RECIPIENT: number;
|
|
77
|
+
};
|
|
78
|
+
export declare const DEFAULT_DECIMALS = 6;
|
|
79
|
+
export declare const DEFAULT_SLIPPAGE_BPS = 100;
|
|
80
|
+
export declare const LAMPORTS_PER_SOL = 1000000000n;
|
|
81
|
+
export declare const TOKEN_DECIMALS_MULTIPLIER = 1000000n;
|
|
82
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +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;;;;;;;;;;;;;;;;;;;;CA2BjB,CAAC;AAKX,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;CAmBxB,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
|
@@ -76,7 +76,9 @@ exports.BONDING_CURVE_OFFSETS = {
|
|
|
76
76
|
MIN_PRICE: 8 + 168,
|
|
77
77
|
MAX_SUPPLY: 8 + 176,
|
|
78
78
|
TOTAL_SOLD: 8 + 192,
|
|
79
|
-
|
|
79
|
+
// paused field removed - migration is instant, no pause needed
|
|
80
|
+
ACCUMULATED_HOLDER_REWARDS_SOL: 8 + 208,
|
|
81
|
+
REWARD_PER_TOKEN_STORED: 8 + 216,
|
|
80
82
|
};
|
|
81
83
|
exports.POOL_OFFSETS = {
|
|
82
84
|
DISCRIMINATOR: 0,
|
|
@@ -99,3 +101,4 @@ exports.DEFAULT_DECIMALS = 6;
|
|
|
99
101
|
exports.DEFAULT_SLIPPAGE_BPS = 100; // 1%
|
|
100
102
|
exports.LAMPORTS_PER_SOL = 1000000000n;
|
|
101
103
|
exports.TOKEN_DECIMALS_MULTIPLIER = 1000000n; // 10^6 for 6 decimals
|
|
104
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../src/create.ts"],"names":[],"mappings":"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"}
|
package/dist/curve.d.ts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bonding Curve Operations
|
|
3
|
+
* Buy and sell tokens on the bonding curve
|
|
4
|
+
*/
|
|
5
|
+
import { Connection, PublicKey, TransactionInstruction } from '@solana/web3.js';
|
|
6
|
+
import type { BuyOnCurveParams, SellOnCurveParams, SellMaxOnCurveParams, BuyQuote, SellQuote } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Calculate buy quote for bonding curve
|
|
9
|
+
* Uses amplified constant product formula matching the program:
|
|
10
|
+
* k = vSol_eff * vToken_eff where _eff = base * amp_bps / 10000
|
|
11
|
+
*/
|
|
12
|
+
export declare function getBuyQuote(connection: Connection, tokenMint: PublicKey, solIn: bigint, programId: PublicKey): Promise<BuyQuote | null>;
|
|
13
|
+
/**
|
|
14
|
+
* Calculate sell quote for bonding curve
|
|
15
|
+
* Uses amplified constant product formula matching the program
|
|
16
|
+
*/
|
|
17
|
+
export declare function getSellQuote(connection: Connection, tokenMint: PublicKey, tokensIn: bigint, programId: PublicKey): Promise<SellQuote | null>;
|
|
18
|
+
/**
|
|
19
|
+
* Build buy_on_curve instruction
|
|
20
|
+
*
|
|
21
|
+
* IMPORTANT: This instruction ALWAYS includes migration accounts in remaining_accounts.
|
|
22
|
+
* Migration accounts are required by the program - if the buy triggers the threshold,
|
|
23
|
+
* the program will atomically create the pool and migrate liquidity.
|
|
24
|
+
*
|
|
25
|
+
* Fee recipients are read from on-chain state and cannot be modified.
|
|
26
|
+
*/
|
|
27
|
+
export declare function buildBuyOnCurveInstruction(connection: Connection, params: BuyOnCurveParams, programId: PublicKey): Promise<TransactionInstruction[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Build sell_on_curve instruction
|
|
30
|
+
*
|
|
31
|
+
* IMPORTANT: Fee recipients are read from on-chain state and cannot be modified.
|
|
32
|
+
* Includes holder reward account in remaining_accounts for auto-payout.
|
|
33
|
+
*/
|
|
34
|
+
export declare function buildSellOnCurveInstruction(connection: Connection, params: SellOnCurveParams, programId: PublicKey): Promise<TransactionInstruction[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Build sell_max_on_curve instruction (sell entire balance)
|
|
37
|
+
* Includes holder reward account in remaining_accounts for auto-payout.
|
|
38
|
+
*/
|
|
39
|
+
export declare function buildSellMaxOnCurveInstruction(connection: Connection, params: SellMaxOnCurveParams, programId: PublicKey): Promise<TransactionInstruction[]>;
|
|
40
|
+
/**
|
|
41
|
+
* Migration thresholds by variant (in lamports)
|
|
42
|
+
* Variant 0: 90 SOL
|
|
43
|
+
* Variant 1: 120 SOL
|
|
44
|
+
*/
|
|
45
|
+
export declare const MIGRATION_THRESHOLDS: Record<number, bigint>;
|
|
46
|
+
/**
|
|
47
|
+
* Check if a buy will trigger migration threshold
|
|
48
|
+
*
|
|
49
|
+
* @param connection - Solana RPC connection
|
|
50
|
+
* @param tokenMint - Token mint address
|
|
51
|
+
* @param lamportsIn - Amount of SOL (lamports) being spent
|
|
52
|
+
* @param programId - CoinBarrel program ID
|
|
53
|
+
* @returns true if this buy will push the escrow past migration threshold
|
|
54
|
+
*/
|
|
55
|
+
export declare function willTriggerMigration(connection: Connection, tokenMint: PublicKey, lamportsIn: bigint, programId: PublicKey): Promise<boolean>;
|
|
56
|
+
/**
|
|
57
|
+
* @deprecated Use buildBuyOnCurveInstruction instead - it now always includes migration accounts
|
|
58
|
+
*/
|
|
59
|
+
export declare const buildBuyOnCurveWithMigrationInstruction: typeof buildBuyOnCurveInstruction;
|
|
60
|
+
//# sourceMappingURL=curve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curve.d.ts","sourceRoot":"","sources":["../src/curve.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAiB,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAiB/F,OAAO,KAAK,EACX,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,QAAQ,EACR,SAAS,EACT,MAAM,YAAY,CAAC;AAYpB;;;;GAIG;AACH,wBAAsB,WAAW,CAChC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAiD1B;AAED;;;GAGG;AACH,wBAAsB,YAAY,CACjC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CA+C3B;AAID;;;;;;;;GAQG;AACH,wBAAsB,0BAA0B,CAC/C,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAoEnC;AAED;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAChD,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAqCnC;AAED;;;GAGG;AACH,wBAAsB,8BAA8B,CACnD,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,oBAAoB,EAC5B,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAqCnC;AAID;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGvD,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACzC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,OAAO,CAAC,CAqBlB;AAED;;GAEG;AACH,eAAO,MAAM,uCAAuC,mCAA6B,CAAC"}
|
package/dist/curve.js
CHANGED
|
@@ -4,14 +4,17 @@
|
|
|
4
4
|
* Buy and sell tokens on the bonding curve
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.buildBuyOnCurveWithMigrationInstruction = exports.MIGRATION_THRESHOLDS = void 0;
|
|
7
8
|
exports.getBuyQuote = getBuyQuote;
|
|
8
9
|
exports.getSellQuote = getSellQuote;
|
|
9
10
|
exports.buildBuyOnCurveInstruction = buildBuyOnCurveInstruction;
|
|
10
11
|
exports.buildSellOnCurveInstruction = buildSellOnCurveInstruction;
|
|
11
12
|
exports.buildSellMaxOnCurveInstruction = buildSellMaxOnCurveInstruction;
|
|
13
|
+
exports.willTriggerMigration = willTriggerMigration;
|
|
12
14
|
const web3_js_1 = require("@solana/web3.js");
|
|
13
15
|
const spl_token_1 = require("@solana/spl-token");
|
|
14
16
|
const constants_js_1 = require("./constants.js");
|
|
17
|
+
const web3_js_2 = require("@solana/web3.js");
|
|
15
18
|
const pda_js_1 = require("./pda.js");
|
|
16
19
|
const accounts_js_1 = require("./accounts.js");
|
|
17
20
|
// ============= Buffer Helpers =============
|
|
@@ -28,7 +31,7 @@ function writeU64LE(n) {
|
|
|
28
31
|
*/
|
|
29
32
|
async function getBuyQuote(connection, tokenMint, solIn, programId) {
|
|
30
33
|
const state = await (0, accounts_js_1.getBondingCurveState)(connection, tokenMint, programId);
|
|
31
|
-
if (!state
|
|
34
|
+
if (!state)
|
|
32
35
|
return null;
|
|
33
36
|
const feeBps = BigInt(state.feeBps);
|
|
34
37
|
const totalFee = (solIn * feeBps) / 10000n;
|
|
@@ -74,7 +77,7 @@ async function getBuyQuote(connection, tokenMint, solIn, programId) {
|
|
|
74
77
|
*/
|
|
75
78
|
async function getSellQuote(connection, tokenMint, tokensIn, programId) {
|
|
76
79
|
const state = await (0, accounts_js_1.getBondingCurveState)(connection, tokenMint, programId);
|
|
77
|
-
if (!state
|
|
80
|
+
if (!state)
|
|
78
81
|
return null;
|
|
79
82
|
// Amplified constant product formula (matches program)
|
|
80
83
|
// SOL out (gross) = vSOL_eff - k/(vTOKEN_eff + delta_eff)
|
|
@@ -116,8 +119,11 @@ async function getSellQuote(connection, tokenMint, tokensIn, programId) {
|
|
|
116
119
|
/**
|
|
117
120
|
* Build buy_on_curve instruction
|
|
118
121
|
*
|
|
119
|
-
* IMPORTANT:
|
|
120
|
-
*
|
|
122
|
+
* IMPORTANT: This instruction ALWAYS includes migration accounts in remaining_accounts.
|
|
123
|
+
* Migration accounts are required by the program - if the buy triggers the threshold,
|
|
124
|
+
* the program will atomically create the pool and migrate liquidity.
|
|
125
|
+
*
|
|
126
|
+
* Fee recipients are read from on-chain state and cannot be modified.
|
|
121
127
|
*/
|
|
122
128
|
async function buildBuyOnCurveInstruction(connection, params, programId) {
|
|
123
129
|
const { tokenMint, buyer, lamportsIn } = params;
|
|
@@ -126,14 +132,13 @@ async function buildBuyOnCurveInstruction(connection, params, programId) {
|
|
|
126
132
|
if (!state) {
|
|
127
133
|
throw new Error('Bonding curve not found for this token');
|
|
128
134
|
}
|
|
129
|
-
if (state.paused) {
|
|
130
|
-
throw new Error('Bonding curve is paused');
|
|
131
|
-
}
|
|
132
135
|
const bondingCurve = (0, pda_js_1.getBondingCurvePda)(tokenMint, programId);
|
|
133
136
|
const bondingAuthority = (0, pda_js_1.getBondingAuthorityPda)(bondingCurve, programId);
|
|
134
137
|
const solEscrow = (0, pda_js_1.getSolEscrowPda)(bondingCurve, programId);
|
|
135
138
|
const buyerAta = (0, spl_token_1.getAssociatedTokenAddressSync)(tokenMint, buyer);
|
|
136
139
|
const holderRewardAccount = (0, pda_js_1.getHolderRewardPda)(tokenMint, buyer, programId);
|
|
140
|
+
// Always derive migration PDAs - program requires them
|
|
141
|
+
const migrationPDAs = (0, pda_js_1.getMigrationPDAs)(tokenMint, programId);
|
|
137
142
|
const instructions = [];
|
|
138
143
|
// Check if buyer's ATA exists, create if needed
|
|
139
144
|
try {
|
|
@@ -142,10 +147,14 @@ async function buildBuyOnCurveInstruction(connection, params, programId) {
|
|
|
142
147
|
catch {
|
|
143
148
|
instructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(buyer, buyerAta, buyer, tokenMint));
|
|
144
149
|
}
|
|
145
|
-
// Build buy instruction with
|
|
150
|
+
// Build buy instruction with migration accounts in remaining_accounts
|
|
151
|
+
// Layout for inline_migrate (remaining_accounts indices 1-14, index 0 is holder_reward_account which is formal):
|
|
152
|
+
// [1] pool, [2] wsol_mint, [3] token_a_vault, [4] token_b_vault, [5] lp_mint, [6] lp_vault, [7] pool_authority, [8] rent
|
|
153
|
+
// [9] token_vault (bonding), [10] sol_escrow, [11] bonding_authority, [12] creator_fee_recipient, [13] buyer, [14] system_program
|
|
146
154
|
const buyIx = new web3_js_1.TransactionInstruction({
|
|
147
155
|
programId,
|
|
148
156
|
keys: [
|
|
157
|
+
// Formal accounts (match BuyOnCurve struct)
|
|
149
158
|
{ pubkey: bondingCurve, isWritable: true, isSigner: false },
|
|
150
159
|
{ pubkey: state.tokenVault, isWritable: true, isSigner: false },
|
|
151
160
|
{ pubkey: tokenMint, isWritable: false, isSigner: false },
|
|
@@ -153,13 +162,26 @@ async function buildBuyOnCurveInstruction(connection, params, programId) {
|
|
|
153
162
|
{ pubkey: bondingAuthority, isWritable: false, isSigner: false },
|
|
154
163
|
{ pubkey: buyerAta, isWritable: true, isSigner: false },
|
|
155
164
|
{ pubkey: buyer, isWritable: true, isSigner: true },
|
|
156
|
-
// Fee recipients - read from on-chain state, cannot be modified
|
|
157
165
|
{ pubkey: state.adminFeeRecipient, isWritable: true, isSigner: false },
|
|
158
166
|
{ pubkey: state.creatorFeeRecipient, isWritable: true, isSigner: false },
|
|
159
|
-
// Holder reward account - auto-initialized by program
|
|
160
167
|
{ pubkey: holderRewardAccount, isWritable: true, isSigner: false },
|
|
161
168
|
{ pubkey: spl_token_1.TOKEN_PROGRAM_ID, isWritable: false, isSigner: false },
|
|
162
169
|
{ pubkey: web3_js_1.SystemProgram.programId, isWritable: false, isSigner: false },
|
|
170
|
+
// Migration accounts (remaining_accounts[1-14])
|
|
171
|
+
{ pubkey: migrationPDAs.poolPda, isWritable: true, isSigner: false },
|
|
172
|
+
{ pubkey: constants_js_1.NATIVE_MINT, isWritable: false, isSigner: false },
|
|
173
|
+
{ pubkey: migrationPDAs.tokenAVaultPda, isWritable: true, isSigner: false },
|
|
174
|
+
{ pubkey: migrationPDAs.tokenBVaultPda, isWritable: true, isSigner: false },
|
|
175
|
+
{ pubkey: migrationPDAs.lpMintPda, isWritable: true, isSigner: false },
|
|
176
|
+
{ pubkey: migrationPDAs.lpVaultPda, isWritable: true, isSigner: false },
|
|
177
|
+
{ pubkey: migrationPDAs.poolAuthorityPda, isWritable: false, isSigner: false },
|
|
178
|
+
{ pubkey: web3_js_2.SYSVAR_RENT_PUBKEY, isWritable: false, isSigner: false },
|
|
179
|
+
{ pubkey: state.tokenVault, isWritable: true, isSigner: false },
|
|
180
|
+
{ pubkey: solEscrow, isWritable: true, isSigner: false },
|
|
181
|
+
{ pubkey: bondingAuthority, isWritable: false, isSigner: false },
|
|
182
|
+
{ pubkey: state.creatorFeeRecipient, isWritable: true, isSigner: false },
|
|
183
|
+
{ pubkey: buyer, isWritable: true, isSigner: false },
|
|
184
|
+
{ pubkey: web3_js_1.SystemProgram.programId, isWritable: false, isSigner: false },
|
|
163
185
|
],
|
|
164
186
|
data: Buffer.concat([constants_js_1.DISCRIMINATORS.buy_on_curve, writeU64LE(lamportsIn)]),
|
|
165
187
|
});
|
|
@@ -179,9 +201,6 @@ async function buildSellOnCurveInstruction(connection, params, programId) {
|
|
|
179
201
|
if (!state) {
|
|
180
202
|
throw new Error('Bonding curve not found for this token');
|
|
181
203
|
}
|
|
182
|
-
if (state.paused) {
|
|
183
|
-
throw new Error('Bonding curve is paused');
|
|
184
|
-
}
|
|
185
204
|
const bondingCurve = (0, pda_js_1.getBondingCurvePda)(tokenMint, programId);
|
|
186
205
|
const bondingAuthority = (0, pda_js_1.getBondingAuthorityPda)(bondingCurve, programId);
|
|
187
206
|
const solEscrow = (0, pda_js_1.getSolEscrowPda)(bondingCurve, programId);
|
|
@@ -220,9 +239,6 @@ async function buildSellMaxOnCurveInstruction(connection, params, programId) {
|
|
|
220
239
|
if (!state) {
|
|
221
240
|
throw new Error('Bonding curve not found for this token');
|
|
222
241
|
}
|
|
223
|
-
if (state.paused) {
|
|
224
|
-
throw new Error('Bonding curve is paused');
|
|
225
|
-
}
|
|
226
242
|
const bondingCurve = (0, pda_js_1.getBondingCurvePda)(tokenMint, programId);
|
|
227
243
|
const bondingAuthority = (0, pda_js_1.getBondingAuthorityPda)(bondingCurve, programId);
|
|
228
244
|
const solEscrow = (0, pda_js_1.getSolEscrowPda)(bondingCurve, programId);
|
|
@@ -250,3 +266,45 @@ async function buildSellMaxOnCurveInstruction(connection, params, programId) {
|
|
|
250
266
|
});
|
|
251
267
|
return [sellMaxIx];
|
|
252
268
|
}
|
|
269
|
+
// ============= Migration Helpers =============
|
|
270
|
+
/**
|
|
271
|
+
* Migration thresholds by variant (in lamports)
|
|
272
|
+
* Variant 0: 90 SOL
|
|
273
|
+
* Variant 1: 120 SOL
|
|
274
|
+
*/
|
|
275
|
+
exports.MIGRATION_THRESHOLDS = {
|
|
276
|
+
0: 90000000000n, // 90 SOL
|
|
277
|
+
1: 120000000000n, // 120 SOL
|
|
278
|
+
};
|
|
279
|
+
/**
|
|
280
|
+
* Check if a buy will trigger migration threshold
|
|
281
|
+
*
|
|
282
|
+
* @param connection - Solana RPC connection
|
|
283
|
+
* @param tokenMint - Token mint address
|
|
284
|
+
* @param lamportsIn - Amount of SOL (lamports) being spent
|
|
285
|
+
* @param programId - CoinBarrel program ID
|
|
286
|
+
* @returns true if this buy will push the escrow past migration threshold
|
|
287
|
+
*/
|
|
288
|
+
async function willTriggerMigration(connection, tokenMint, lamportsIn, programId) {
|
|
289
|
+
const state = await (0, accounts_js_1.getBondingCurveState)(connection, tokenMint, programId);
|
|
290
|
+
if (!state)
|
|
291
|
+
return false;
|
|
292
|
+
const bondingCurve = (0, pda_js_1.getBondingCurvePda)(tokenMint, programId);
|
|
293
|
+
const solEscrow = (0, pda_js_1.getSolEscrowPda)(bondingCurve, programId);
|
|
294
|
+
// Get current escrow balance
|
|
295
|
+
const escrowInfo = await connection.getAccountInfo(solEscrow);
|
|
296
|
+
const currentEscrow = BigInt(escrowInfo ? escrowInfo.lamports : 0);
|
|
297
|
+
// Calculate approximate net SOL that will be added to escrow
|
|
298
|
+
// Net = lamportsIn * (1 - feeBps/10000)
|
|
299
|
+
const feeBps = BigInt(state.feeBps);
|
|
300
|
+
const approxNetToEscrow = (lamportsIn * (10000n - feeBps)) / 10000n;
|
|
301
|
+
const postBuyEscrow = currentEscrow + approxNetToEscrow;
|
|
302
|
+
// Get threshold for this variant
|
|
303
|
+
const threshold = exports.MIGRATION_THRESHOLDS[state.variant] ?? exports.MIGRATION_THRESHOLDS[0];
|
|
304
|
+
return postBuyEscrow >= threshold;
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* @deprecated Use buildBuyOnCurveInstruction instead - it now always includes migration accounts
|
|
308
|
+
*/
|
|
309
|
+
exports.buildBuyOnCurveWithMigrationInstruction = buildBuyOnCurveInstruction;
|
|
310
|
+
//# sourceMappingURL=curve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curve.js","sourceRoot":"","sources":["../src/curve.ts"],"names":[],"mappings":"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"}
|