@coinbarrel/sdk 1.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.
@@ -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;AAe/F,OAAO,KAAK,EACX,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,QAAQ,EACR,SAAS,EACT,MAAM,YAAY,CAAC;AAYpB;;;GAGG;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,CAsC1B;AAED;;GAEG;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,CAsC3B;AAID;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC/C,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAmDnC;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAChD,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAqCnC;AAED;;GAEG;AACH,wBAAsB,8BAA8B,CACnD,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,oBAAoB,EAC5B,SAAS,EAAE,SAAS,GAClB,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAqCnC"}
package/dist/curve.js ADDED
@@ -0,0 +1,218 @@
1
+ /**
2
+ * Bonding Curve Operations
3
+ * Buy and sell tokens on the bonding curve
4
+ */
5
+ import { SystemProgram, TransactionInstruction } from '@solana/web3.js';
6
+ import { TOKEN_PROGRAM_ID, getAssociatedTokenAddressSync, createAssociatedTokenAccountInstruction, getAccount, } from '@solana/spl-token';
7
+ import { DISCRIMINATORS, LAMPORTS_PER_SOL, TOKEN_DECIMALS_MULTIPLIER } from './constants.js';
8
+ import { getBondingCurvePda, getBondingAuthorityPda, getSolEscrowPda, getHolderRewardPda, } from './pda.js';
9
+ import { getBondingCurveState } from './accounts.js';
10
+ // ============= Buffer Helpers =============
11
+ function writeU64LE(n) {
12
+ const b = Buffer.alloc(8);
13
+ b.writeBigUInt64LE(n);
14
+ return b;
15
+ }
16
+ // ============= Quote Calculations =============
17
+ /**
18
+ * Calculate buy quote for bonding curve
19
+ * Uses constant product formula: (vSol + solIn) * (vToken - tokensOut) = k
20
+ */
21
+ export async function getBuyQuote(connection, tokenMint, solIn, programId) {
22
+ const state = await getBondingCurveState(connection, tokenMint, programId);
23
+ if (!state || state.paused)
24
+ return null;
25
+ const feeBps = BigInt(state.feeBps);
26
+ const totalFee = (solIn * feeBps) / 10000n;
27
+ // Fee breakdown: 40% admin, 30% creator, 30% holder rewards (default split)
28
+ const adminFee = (totalFee * 40n) / 100n;
29
+ const creatorFee = (totalFee * 30n) / 100n;
30
+ const holderRewards = totalFee - adminFee - creatorFee;
31
+ const solAfterFee = solIn - totalFee;
32
+ // Constant product: k = vSol * vToken
33
+ const k = state.vSol * state.vToken;
34
+ const newVSol = state.vSol + solAfterFee;
35
+ const newVToken = k / newVSol;
36
+ const tokensOut = state.vToken - newVToken;
37
+ // Price impact
38
+ const priceBeforeLamports = state.vToken > 0n ? (state.vSol * LAMPORTS_PER_SOL) / state.vToken : 0n;
39
+ const priceAfterLamports = newVToken > 0n ? (newVSol * LAMPORTS_PER_SOL) / newVToken : 0n;
40
+ const priceImpactBps = priceBeforeLamports > 0n
41
+ ? Number(((priceAfterLamports - priceBeforeLamports) * 10000n) / priceBeforeLamports)
42
+ : 0;
43
+ return {
44
+ solIn,
45
+ tokensOut,
46
+ adminFee,
47
+ creatorFee,
48
+ holderRewards,
49
+ pricePerToken: tokensOut > 0n ? (solIn * TOKEN_DECIMALS_MULTIPLIER) / tokensOut : 0n,
50
+ priceImpactBps,
51
+ };
52
+ }
53
+ /**
54
+ * Calculate sell quote for bonding curve
55
+ */
56
+ export async function getSellQuote(connection, tokenMint, tokensIn, programId) {
57
+ const state = await getBondingCurveState(connection, tokenMint, programId);
58
+ if (!state || state.paused)
59
+ return null;
60
+ // Constant product: k = vSol * vToken
61
+ const k = state.vSol * state.vToken;
62
+ const newVToken = state.vToken + tokensIn;
63
+ const newVSol = k / newVToken;
64
+ const solOutBeforeFee = state.vSol - newVSol;
65
+ const feeBps = BigInt(state.feeBps);
66
+ const totalFee = (solOutBeforeFee * feeBps) / 10000n;
67
+ // Fee breakdown
68
+ const adminFee = (totalFee * 40n) / 100n;
69
+ const creatorFee = (totalFee * 30n) / 100n;
70
+ const holderRewards = totalFee - adminFee - creatorFee;
71
+ const solOut = solOutBeforeFee - totalFee;
72
+ // Price impact
73
+ const priceBeforeLamports = state.vToken > 0n ? (state.vSol * LAMPORTS_PER_SOL) / state.vToken : 0n;
74
+ const priceAfterLamports = newVToken > 0n ? (newVSol * LAMPORTS_PER_SOL) / newVToken : 0n;
75
+ const priceImpactBps = priceBeforeLamports > 0n
76
+ ? Number(((priceBeforeLamports - priceAfterLamports) * 10000n) / priceBeforeLamports)
77
+ : 0;
78
+ return {
79
+ tokensIn,
80
+ solOut,
81
+ adminFee,
82
+ creatorFee,
83
+ holderRewards,
84
+ pricePerToken: tokensIn > 0n ? (solOut * TOKEN_DECIMALS_MULTIPLIER) / tokensIn : 0n,
85
+ priceImpactBps,
86
+ };
87
+ }
88
+ // ============= Instruction Builders =============
89
+ /**
90
+ * Build buy_on_curve instruction
91
+ *
92
+ * IMPORTANT: Fee recipients are read from on-chain state and cannot be modified.
93
+ * The program enforces that fees go to the correct recipients.
94
+ */
95
+ export async function buildBuyOnCurveInstruction(connection, params, programId) {
96
+ const { tokenMint, buyer, lamportsIn } = params;
97
+ // Fetch curve state to get fee recipients (enforced on-chain)
98
+ const state = await getBondingCurveState(connection, tokenMint, programId);
99
+ if (!state) {
100
+ throw new Error('Bonding curve not found for this token');
101
+ }
102
+ if (state.paused) {
103
+ throw new Error('Bonding curve is paused');
104
+ }
105
+ const bondingCurve = getBondingCurvePda(tokenMint, programId);
106
+ const bondingAuthority = getBondingAuthorityPda(bondingCurve, programId);
107
+ const solEscrow = getSolEscrowPda(bondingCurve, programId);
108
+ const buyerAta = getAssociatedTokenAddressSync(tokenMint, buyer);
109
+ const holderRewardAccount = getHolderRewardPda(tokenMint, buyer, programId);
110
+ const instructions = [];
111
+ // Check if buyer's ATA exists, create if needed
112
+ try {
113
+ await getAccount(connection, buyerAta);
114
+ }
115
+ catch {
116
+ instructions.push(createAssociatedTokenAccountInstruction(buyer, buyerAta, buyer, tokenMint));
117
+ }
118
+ // Build buy instruction with fee recipients from on-chain state
119
+ const buyIx = new TransactionInstruction({
120
+ programId,
121
+ keys: [
122
+ { pubkey: bondingCurve, isWritable: true, isSigner: false },
123
+ { pubkey: state.tokenVault, isWritable: true, isSigner: false },
124
+ { pubkey: tokenMint, isWritable: false, isSigner: false },
125
+ { pubkey: solEscrow, isWritable: true, isSigner: false },
126
+ { pubkey: bondingAuthority, isWritable: false, isSigner: false },
127
+ { pubkey: buyerAta, isWritable: true, isSigner: false },
128
+ { pubkey: buyer, isWritable: true, isSigner: true },
129
+ // Fee recipients - read from on-chain state, cannot be modified
130
+ { pubkey: state.adminFeeRecipient, isWritable: true, isSigner: false },
131
+ { pubkey: state.creatorFeeRecipient, isWritable: true, isSigner: false },
132
+ // Holder reward account - auto-initialized by program
133
+ { pubkey: holderRewardAccount, isWritable: true, isSigner: false },
134
+ { pubkey: TOKEN_PROGRAM_ID, isWritable: false, isSigner: false },
135
+ { pubkey: SystemProgram.programId, isWritable: false, isSigner: false },
136
+ ],
137
+ data: Buffer.concat([DISCRIMINATORS.buy_on_curve, writeU64LE(lamportsIn)]),
138
+ });
139
+ instructions.push(buyIx);
140
+ return instructions;
141
+ }
142
+ /**
143
+ * Build sell_on_curve instruction
144
+ *
145
+ * IMPORTANT: Fee recipients are read from on-chain state and cannot be modified.
146
+ */
147
+ export async function buildSellOnCurveInstruction(connection, params, programId) {
148
+ const { tokenMint, seller, tokenAmount } = params;
149
+ // Fetch curve state to get fee recipients (enforced on-chain)
150
+ const state = await getBondingCurveState(connection, tokenMint, programId);
151
+ if (!state) {
152
+ throw new Error('Bonding curve not found for this token');
153
+ }
154
+ if (state.paused) {
155
+ throw new Error('Bonding curve is paused');
156
+ }
157
+ const bondingCurve = getBondingCurvePda(tokenMint, programId);
158
+ const bondingAuthority = getBondingAuthorityPda(bondingCurve, programId);
159
+ const solEscrow = getSolEscrowPda(bondingCurve, programId);
160
+ const sellerAta = getAssociatedTokenAddressSync(tokenMint, seller);
161
+ const sellIx = new TransactionInstruction({
162
+ programId,
163
+ keys: [
164
+ { pubkey: bondingCurve, isWritable: true, isSigner: false },
165
+ { pubkey: state.tokenVault, isWritable: true, isSigner: false },
166
+ { pubkey: tokenMint, isWritable: false, isSigner: false },
167
+ { pubkey: solEscrow, isWritable: true, isSigner: false },
168
+ { pubkey: bondingAuthority, isWritable: false, isSigner: false },
169
+ { pubkey: sellerAta, isWritable: true, isSigner: false },
170
+ { pubkey: seller, isWritable: true, isSigner: true },
171
+ // Fee recipients - read from on-chain state, cannot be modified
172
+ { pubkey: state.adminFeeRecipient, isWritable: true, isSigner: false },
173
+ { pubkey: state.creatorFeeRecipient, isWritable: true, isSigner: false },
174
+ { pubkey: TOKEN_PROGRAM_ID, isWritable: false, isSigner: false },
175
+ { pubkey: SystemProgram.programId, isWritable: false, isSigner: false },
176
+ ],
177
+ data: Buffer.concat([DISCRIMINATORS.sell_on_curve, writeU64LE(tokenAmount)]),
178
+ });
179
+ return [sellIx];
180
+ }
181
+ /**
182
+ * Build sell_max_on_curve instruction (sell entire balance)
183
+ */
184
+ export async function buildSellMaxOnCurveInstruction(connection, params, programId) {
185
+ const { tokenMint, seller } = params;
186
+ // Fetch curve state to get fee recipients (enforced on-chain)
187
+ const state = await getBondingCurveState(connection, tokenMint, programId);
188
+ if (!state) {
189
+ throw new Error('Bonding curve not found for this token');
190
+ }
191
+ if (state.paused) {
192
+ throw new Error('Bonding curve is paused');
193
+ }
194
+ const bondingCurve = getBondingCurvePda(tokenMint, programId);
195
+ const bondingAuthority = getBondingAuthorityPda(bondingCurve, programId);
196
+ const solEscrow = getSolEscrowPda(bondingCurve, programId);
197
+ const sellerAta = getAssociatedTokenAddressSync(tokenMint, seller);
198
+ const sellMaxIx = new TransactionInstruction({
199
+ programId,
200
+ keys: [
201
+ { pubkey: bondingCurve, isWritable: true, isSigner: false },
202
+ { pubkey: state.tokenVault, isWritable: true, isSigner: false },
203
+ { pubkey: tokenMint, isWritable: false, isSigner: false },
204
+ { pubkey: solEscrow, isWritable: true, isSigner: false },
205
+ { pubkey: bondingAuthority, isWritable: false, isSigner: false },
206
+ { pubkey: sellerAta, isWritable: true, isSigner: false },
207
+ { pubkey: seller, isWritable: true, isSigner: true },
208
+ // Fee recipients - read from on-chain state, cannot be modified
209
+ { pubkey: state.adminFeeRecipient, isWritable: true, isSigner: false },
210
+ { pubkey: state.creatorFeeRecipient, isWritable: true, isSigner: false },
211
+ { pubkey: TOKEN_PROGRAM_ID, isWritable: false, isSigner: false },
212
+ { pubkey: SystemProgram.programId, isWritable: false, isSigner: false },
213
+ ],
214
+ data: DISCRIMINATORS.sell_max_on_curve,
215
+ });
216
+ return [sellMaxIx];
217
+ }
218
+ //# sourceMappingURL=curve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curve.js","sourceRoot":"","sources":["../src/curve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,184 @@
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, PublicKey, TransactionInstruction } from "@solana/web3.js";
30
+ import { type Network } from "./constants.js";
31
+ import type { CoinBarrelConfig, BondingCurveState, PoolState, MarketInfo, BuyOnCurveParams, SellOnCurveParams, SellMaxOnCurveParams, SwapSolToTokenParams, SwapTokenToSolParams, SwapTokenToSolMaxParams, BuyQuote, SellQuote, SwapQuote } from "./types.js";
32
+ export * from "./constants.js";
33
+ export * from "./types.js";
34
+ export * from "./pda.js";
35
+ export { getBondingCurveState, getPoolState, getMarketInfo, getUserTokenBalance } from "./accounts.js";
36
+ export { getBuyQuote, getSellQuote } from "./curve.js";
37
+ export { getSwapSolToTokenQuote, getSwapTokenToSolQuote } from "./pool.js";
38
+ /**
39
+ * CoinBarrel SDK - Main entry point
40
+ *
41
+ * Provides easy access to all CoinBarrel AMM functionality:
42
+ * - Bonding curve trading (pre-graduation)
43
+ * - AMM pool trading (post-graduation)
44
+ * - Market data and quotes
45
+ *
46
+ * @remarks
47
+ * Fee recipients are read from on-chain state and cannot be modified.
48
+ * The program enforces that all fees go to the correct recipients.
49
+ */
50
+ export declare class CoinBarrel {
51
+ /** Solana RPC connection */
52
+ readonly connection: Connection;
53
+ /** Network (devnet or mainnet) */
54
+ readonly network: Network;
55
+ /** Program ID for the current network */
56
+ readonly programId: PublicKey;
57
+ /** Admin fee recipient for the current network */
58
+ readonly adminFeeRecipient: PublicKey;
59
+ /** Bonding curve operations */
60
+ readonly curve: CurveModule;
61
+ /** AMM pool operations */
62
+ readonly pool: PoolModule;
63
+ constructor(config: CoinBarrelConfig);
64
+ /**
65
+ * Get comprehensive market info for a token
66
+ * Automatically detects if on bonding curve or AMM pool
67
+ */
68
+ getMarketInfo(tokenMint: PublicKey): Promise<MarketInfo | null>;
69
+ /**
70
+ * Get user's token balance
71
+ */
72
+ getUserBalance(tokenMint: PublicKey, user: PublicKey): Promise<bigint>;
73
+ /**
74
+ * Check if a token is on bonding curve (not yet graduated)
75
+ */
76
+ isOnCurve(tokenMint: PublicKey): Promise<boolean>;
77
+ /**
78
+ * Check if a token has graduated to AMM pool
79
+ */
80
+ isOnPool(tokenMint: PublicKey): Promise<boolean>;
81
+ /** Get bonding curve PDA for a token */
82
+ getBondingCurvePda(tokenMint: PublicKey): PublicKey;
83
+ /** Get pool PDA for a token */
84
+ getPoolPda(tokenMint: PublicKey): PublicKey;
85
+ /** Get holder reward PDA for a user + token */
86
+ getHolderRewardPda(tokenMint: PublicKey, holder: PublicKey): PublicKey;
87
+ }
88
+ /**
89
+ * Bonding Curve Operations
90
+ * For trading tokens that haven't graduated yet
91
+ */
92
+ declare class CurveModule {
93
+ private sdk;
94
+ constructor(sdk: CoinBarrel);
95
+ /**
96
+ * Get bonding curve state
97
+ */
98
+ getState(tokenMint: PublicKey): Promise<BondingCurveState | null>;
99
+ /**
100
+ * Get buy quote - how many tokens for X SOL
101
+ * @param tokenMint Token to buy
102
+ * @param solAmount SOL amount in lamports
103
+ */
104
+ getBuyQuote(tokenMint: PublicKey, solAmount: bigint): Promise<BuyQuote | null>;
105
+ /**
106
+ * Get sell quote - how much SOL for X tokens
107
+ * @param tokenMint Token to sell
108
+ * @param tokenAmount Token amount (raw, with decimals)
109
+ */
110
+ getSellQuote(tokenMint: PublicKey, tokenAmount: bigint): Promise<SellQuote | null>;
111
+ /**
112
+ * Build buy instruction
113
+ *
114
+ * @remarks Fee recipients are read from on-chain and cannot be modified.
115
+ * The program enforces fees go to the correct recipients.
116
+ */
117
+ buildBuyInstruction(params: BuyOnCurveParams): Promise<TransactionInstruction[]>;
118
+ /**
119
+ * Build sell instruction
120
+ */
121
+ buildSellInstruction(params: SellOnCurveParams): Promise<TransactionInstruction[]>;
122
+ /**
123
+ * Build sell max instruction (sell entire balance)
124
+ */
125
+ buildSellMaxInstruction(params: SellMaxOnCurveParams): Promise<TransactionInstruction[]>;
126
+ }
127
+ /**
128
+ * AMM Pool Operations
129
+ * For trading tokens that have graduated to the AMM
130
+ */
131
+ declare class PoolModule {
132
+ private sdk;
133
+ constructor(sdk: CoinBarrel);
134
+ /**
135
+ * Get pool state
136
+ */
137
+ getState(tokenMint: PublicKey): Promise<PoolState | null>;
138
+ /**
139
+ * Get pool balances
140
+ */
141
+ getBalances(tokenMint: PublicKey): Promise<{
142
+ solBalance: bigint;
143
+ tokenBalance: bigint;
144
+ } | null>;
145
+ /**
146
+ * Get swap quote for SOL -> Token
147
+ */
148
+ getSwapSolToTokenQuote(tokenMint: PublicKey, solAmount: bigint): Promise<SwapQuote | null>;
149
+ /**
150
+ * Get swap quote for Token -> SOL
151
+ */
152
+ getSwapTokenToSolQuote(tokenMint: PublicKey, tokenAmount: bigint): Promise<SwapQuote | null>;
153
+ /**
154
+ * Build swap SOL to token instruction
155
+ *
156
+ * @remarks Fee recipients are read from on-chain and cannot be modified.
157
+ */
158
+ buildSwapSolToTokenInstruction(params: SwapSolToTokenParams): Promise<TransactionInstruction[]>;
159
+ /**
160
+ * Build swap token to SOL instruction
161
+ */
162
+ buildSwapTokenToSolInstruction(params: SwapTokenToSolParams): Promise<TransactionInstruction[]>;
163
+ /**
164
+ * Build swap token to SOL max instruction (sell entire balance)
165
+ */
166
+ buildSwapTokenToSolMaxInstruction(params: SwapTokenToSolMaxParams): Promise<TransactionInstruction[]>;
167
+ }
168
+ /**
169
+ * Convert SOL to lamports
170
+ */
171
+ export declare function solToLamports(sol: number): bigint;
172
+ /**
173
+ * Convert lamports to SOL
174
+ */
175
+ export declare function lamportsToSol(lamports: bigint): number;
176
+ /**
177
+ * Convert token amount to raw (with decimals)
178
+ */
179
+ export declare function toRawAmount(amount: number, decimals?: number): bigint;
180
+ /**
181
+ * Convert raw amount to UI (without decimals)
182
+ */
183
+ export declare function toUiAmount(rawAmount: bigint, decimals?: number): number;
184
+ //# 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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"}