@coinbarrel/sdk 2.0.0 → 2.0.2
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.js +25 -33
- package/dist/accounts.js.map +1 -1
- package/dist/constants.js +17 -20
- 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.map +1 -1
- package/dist/curve.js +68 -76
- package/dist/curve.js.map +1 -1
- package/dist/index.js +28 -92
- package/dist/index.js.map +1 -1
- package/dist/metadata.js +8 -15
- package/dist/metadata.js.map +1 -1
- package/dist/pda.js +30 -44
- 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.js +1 -2
- package/dist/types.js.map +1 -1
- package/package.json +2 -1
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.js
CHANGED
|
@@ -1,91 +1,77 @@
|
|
|
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.getMigrationPDAs = getMigrationPDAs;
|
|
18
|
-
exports.getHolderRewardPda = getHolderRewardPda;
|
|
19
|
-
const web3_js_1 = require("@solana/web3.js");
|
|
20
|
-
const constants_js_1 = require("./constants.js");
|
|
5
|
+
import { PublicKey } from '@solana/web3.js';
|
|
6
|
+
import { SEEDS, NATIVE_MINT } from './constants.js';
|
|
21
7
|
// ============= Bonding Curve PDAs =============
|
|
22
8
|
/**
|
|
23
9
|
* Derive bonding curve PDA for a token mint
|
|
24
10
|
*/
|
|
25
|
-
function getBondingCurvePda(mint, programId) {
|
|
26
|
-
const [pda] =
|
|
11
|
+
export function getBondingCurvePda(mint, programId) {
|
|
12
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.BONDING, mint.toBuffer()], programId);
|
|
27
13
|
return pda;
|
|
28
14
|
}
|
|
29
15
|
/**
|
|
30
16
|
* Derive bonding authority PDA (signs transfers from curve)
|
|
31
17
|
*/
|
|
32
|
-
function getBondingAuthorityPda(bondingCurve, programId) {
|
|
33
|
-
const [pda] =
|
|
18
|
+
export function getBondingAuthorityPda(bondingCurve, programId) {
|
|
19
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.BONDING_AUTHORITY, bondingCurve.toBuffer()], programId);
|
|
34
20
|
return pda;
|
|
35
21
|
}
|
|
36
22
|
/**
|
|
37
23
|
* Derive SOL escrow PDA for bonding curve
|
|
38
24
|
*/
|
|
39
|
-
function getSolEscrowPda(bondingCurve, programId) {
|
|
40
|
-
const [pda] =
|
|
25
|
+
export function getSolEscrowPda(bondingCurve, programId) {
|
|
26
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.BONDING_SOL, bondingCurve.toBuffer()], programId);
|
|
41
27
|
return pda;
|
|
42
28
|
}
|
|
43
29
|
// ============= AMM Pool PDAs =============
|
|
44
30
|
/**
|
|
45
31
|
* Derive pool PDA for a WSOL <-> Token pair
|
|
46
32
|
*/
|
|
47
|
-
function getPoolPda(tokenMint, programId) {
|
|
48
|
-
const [pda] =
|
|
33
|
+
export function getPoolPda(tokenMint, programId) {
|
|
34
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.POOL, NATIVE_MINT.toBuffer(), tokenMint.toBuffer()], programId);
|
|
49
35
|
return pda;
|
|
50
36
|
}
|
|
51
37
|
/**
|
|
52
38
|
* Derive pool authority PDA (signs transfers from pool vaults)
|
|
53
39
|
*/
|
|
54
|
-
function getPoolAuthorityPda(pool, programId) {
|
|
55
|
-
const [pda] =
|
|
40
|
+
export function getPoolAuthorityPda(pool, programId) {
|
|
41
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.AUTHORITY, pool.toBuffer()], programId);
|
|
56
42
|
return pda;
|
|
57
43
|
}
|
|
58
44
|
/**
|
|
59
45
|
* Derive vault PDA for a pool + mint
|
|
60
46
|
*/
|
|
61
|
-
function getVaultPda(pool, mint, programId) {
|
|
62
|
-
const [pda] =
|
|
47
|
+
export function getVaultPda(pool, mint, programId) {
|
|
48
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.VAULT, pool.toBuffer(), mint.toBuffer()], programId);
|
|
63
49
|
return pda;
|
|
64
50
|
}
|
|
65
51
|
/**
|
|
66
52
|
* Derive WSOL vault PDA for a pool
|
|
67
53
|
*/
|
|
68
|
-
function getPoolWsolVaultPda(pool, programId) {
|
|
69
|
-
return getVaultPda(pool,
|
|
54
|
+
export function getPoolWsolVaultPda(pool, programId) {
|
|
55
|
+
return getVaultPda(pool, NATIVE_MINT, programId);
|
|
70
56
|
}
|
|
71
57
|
/**
|
|
72
58
|
* Derive token vault PDA for a pool
|
|
73
59
|
*/
|
|
74
|
-
function getPoolTokenVaultPda(pool, tokenMint, programId) {
|
|
60
|
+
export function getPoolTokenVaultPda(pool, tokenMint, programId) {
|
|
75
61
|
return getVaultPda(pool, tokenMint, programId);
|
|
76
62
|
}
|
|
77
63
|
/**
|
|
78
64
|
* Derive LP mint PDA for a pool
|
|
79
65
|
*/
|
|
80
|
-
function getLpMintPda(pool, programId) {
|
|
81
|
-
const [pda] =
|
|
66
|
+
export function getLpMintPda(pool, programId) {
|
|
67
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.LP_MINT, pool.toBuffer()], programId);
|
|
82
68
|
return pda;
|
|
83
69
|
}
|
|
84
70
|
/**
|
|
85
71
|
* Derive LP vault PDA (holds burned/locked LP tokens)
|
|
86
72
|
*/
|
|
87
|
-
function getLpVaultPda(pool, programId) {
|
|
88
|
-
const [pda] =
|
|
73
|
+
export function getLpVaultPda(pool, programId) {
|
|
74
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.LP_VAULT, pool.toBuffer()], programId);
|
|
89
75
|
return pda;
|
|
90
76
|
}
|
|
91
77
|
/**
|
|
@@ -96,19 +82,19 @@ function getLpVaultPda(pool, programId) {
|
|
|
96
82
|
* @param programId - CoinBarrel program ID
|
|
97
83
|
* @returns All migration PDAs and pool bump
|
|
98
84
|
*/
|
|
99
|
-
function getMigrationPDAs(tokenMint, programId) {
|
|
85
|
+
export function getMigrationPDAs(tokenMint, programId) {
|
|
100
86
|
// Pool: seeds = ["pool", wsol_mint, token_mint]
|
|
101
|
-
const [poolPda, poolBump] =
|
|
87
|
+
const [poolPda, poolBump] = PublicKey.findProgramAddressSync([SEEDS.POOL, NATIVE_MINT.toBuffer(), tokenMint.toBuffer()], programId);
|
|
102
88
|
// Token A vault (WSOL): seeds = ["vault", pool, wsol_mint]
|
|
103
|
-
const [tokenAVaultPda] =
|
|
89
|
+
const [tokenAVaultPda] = PublicKey.findProgramAddressSync([SEEDS.VAULT, poolPda.toBuffer(), NATIVE_MINT.toBuffer()], programId);
|
|
104
90
|
// Token B vault: seeds = ["vault", pool, token_mint]
|
|
105
|
-
const [tokenBVaultPda] =
|
|
91
|
+
const [tokenBVaultPda] = PublicKey.findProgramAddressSync([SEEDS.VAULT, poolPda.toBuffer(), tokenMint.toBuffer()], programId);
|
|
106
92
|
// LP mint: seeds = ["lp_mint", pool]
|
|
107
|
-
const [lpMintPda] =
|
|
93
|
+
const [lpMintPda] = PublicKey.findProgramAddressSync([SEEDS.LP_MINT, poolPda.toBuffer()], programId);
|
|
108
94
|
// LP vault: seeds = ["lp_vault", pool]
|
|
109
|
-
const [lpVaultPda] =
|
|
95
|
+
const [lpVaultPda] = PublicKey.findProgramAddressSync([SEEDS.LP_VAULT, poolPda.toBuffer()], programId);
|
|
110
96
|
// Pool authority: seeds = ["authority", pool]
|
|
111
|
-
const [poolAuthorityPda] =
|
|
97
|
+
const [poolAuthorityPda] = PublicKey.findProgramAddressSync([SEEDS.AUTHORITY, poolPda.toBuffer()], programId);
|
|
112
98
|
return {
|
|
113
99
|
poolPda,
|
|
114
100
|
poolBump,
|
|
@@ -124,8 +110,8 @@ function getMigrationPDAs(tokenMint, programId) {
|
|
|
124
110
|
* Derive holder reward account PDA for a user + token
|
|
125
111
|
* Used for tracking holder rewards across buys/sells
|
|
126
112
|
*/
|
|
127
|
-
function getHolderRewardPda(tokenMint, holder, programId) {
|
|
128
|
-
const [pda] =
|
|
113
|
+
export function getHolderRewardPda(tokenMint, holder, programId) {
|
|
114
|
+
const [pda] = PublicKey.findProgramAddressSync([SEEDS.HOLDER_REWARD, tokenMint.toBuffer(), holder.toBuffer()], programId);
|
|
129
115
|
return pda;
|
|
130
116
|
}
|
|
131
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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"}
|
package/dist/pool.js
CHANGED
|
@@ -1,19 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* AMM Pool Operations
|
|
4
3
|
* Swap tokens on graduated AMM pools
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
exports.buildSwapTokenToSolMaxInstruction = buildSwapTokenToSolMaxInstruction;
|
|
12
|
-
const web3_js_1 = require("@solana/web3.js");
|
|
13
|
-
const spl_token_1 = require("@solana/spl-token");
|
|
14
|
-
const constants_js_1 = require("./constants.js");
|
|
15
|
-
const pda_js_1 = require("./pda.js");
|
|
16
|
-
const accounts_js_1 = require("./accounts.js");
|
|
5
|
+
import { SystemProgram, TransactionInstruction, } from "@solana/web3.js";
|
|
6
|
+
import { TOKEN_PROGRAM_ID, getAssociatedTokenAddressSync, createAssociatedTokenAccountInstruction, createCloseAccountInstruction, getAccount, } from "@solana/spl-token";
|
|
7
|
+
import { DISCRIMINATORS, NATIVE_MINT } from "./constants.js";
|
|
8
|
+
import { getPoolPda, getPoolAuthorityPda, getHolderRewardPda, } from "./pda.js";
|
|
9
|
+
import { getPoolState, getPoolBalances } from "./accounts.js";
|
|
17
10
|
// ============= Buffer Helpers =============
|
|
18
11
|
function writeU64LE(n) {
|
|
19
12
|
const b = Buffer.alloc(8);
|
|
@@ -24,9 +17,9 @@ function writeU64LE(n) {
|
|
|
24
17
|
/**
|
|
25
18
|
* Calculate swap quote for SOL -> Token
|
|
26
19
|
*/
|
|
27
|
-
async function getSwapSolToTokenQuote(connection, tokenMint, solIn, programId) {
|
|
28
|
-
const balances = await
|
|
29
|
-
const state = await
|
|
20
|
+
export async function getSwapSolToTokenQuote(connection, tokenMint, solIn, programId) {
|
|
21
|
+
const balances = await getPoolBalances(connection, tokenMint, programId);
|
|
22
|
+
const state = await getPoolState(connection, tokenMint, programId);
|
|
30
23
|
if (!balances || !state)
|
|
31
24
|
return null;
|
|
32
25
|
const { solBalance, tokenBalance } = balances;
|
|
@@ -55,9 +48,9 @@ async function getSwapSolToTokenQuote(connection, tokenMint, solIn, programId) {
|
|
|
55
48
|
/**
|
|
56
49
|
* Calculate swap quote for Token -> SOL
|
|
57
50
|
*/
|
|
58
|
-
async function getSwapTokenToSolQuote(connection, tokenMint, tokensIn, programId) {
|
|
59
|
-
const balances = await
|
|
60
|
-
const state = await
|
|
51
|
+
export async function getSwapTokenToSolQuote(connection, tokenMint, tokensIn, programId) {
|
|
52
|
+
const balances = await getPoolBalances(connection, tokenMint, programId);
|
|
53
|
+
const state = await getPoolState(connection, tokenMint, programId);
|
|
61
54
|
if (!balances || !state)
|
|
62
55
|
return null;
|
|
63
56
|
const { solBalance, tokenBalance } = balances;
|
|
@@ -90,31 +83,31 @@ async function getSwapTokenToSolQuote(connection, tokenMint, tokensIn, programId
|
|
|
90
83
|
* IMPORTANT: Fee recipients are read from on-chain state and cannot be modified.
|
|
91
84
|
* The program enforces that fees go to the correct recipients.
|
|
92
85
|
*/
|
|
93
|
-
async function buildSwapSolToTokenInstruction(connection, params, programId) {
|
|
86
|
+
export async function buildSwapSolToTokenInstruction(connection, params, programId) {
|
|
94
87
|
const { tokenMint, user, lamportsIn, minimumAmountOut } = params;
|
|
95
88
|
// Fetch pool state to get fee recipients and vault addresses (enforced on-chain)
|
|
96
|
-
const state = await
|
|
89
|
+
const state = await getPoolState(connection, tokenMint, programId);
|
|
97
90
|
if (!state) {
|
|
98
91
|
throw new Error("Pool not found for this token");
|
|
99
92
|
}
|
|
100
93
|
// Determine which vault is WSOL and which is the token based on stored mints
|
|
101
|
-
const isTokenANative = state.tokenAMint.equals(
|
|
94
|
+
const isTokenANative = state.tokenAMint.equals(NATIVE_MINT);
|
|
102
95
|
const wsolVault = isTokenANative ? state.tokenAVault : state.tokenBVault;
|
|
103
96
|
const tokenVault = isTokenANative ? state.tokenBVault : state.tokenAVault;
|
|
104
|
-
const pool =
|
|
105
|
-
const authority =
|
|
106
|
-
const userTokenAta =
|
|
107
|
-
const holderRewardAccount =
|
|
97
|
+
const pool = getPoolPda(tokenMint, programId);
|
|
98
|
+
const authority = getPoolAuthorityPda(pool, programId);
|
|
99
|
+
const userTokenAta = getAssociatedTokenAddressSync(tokenMint, user);
|
|
100
|
+
const holderRewardAccount = getHolderRewardPda(tokenMint, user, programId);
|
|
108
101
|
const instructions = [];
|
|
109
102
|
// Check if user's token ATA exists, create if needed
|
|
110
103
|
try {
|
|
111
|
-
await
|
|
104
|
+
await getAccount(connection, userTokenAta);
|
|
112
105
|
}
|
|
113
106
|
catch {
|
|
114
|
-
instructions.push(
|
|
107
|
+
instructions.push(createAssociatedTokenAccountInstruction(user, userTokenAta, user, tokenMint));
|
|
115
108
|
}
|
|
116
109
|
// Build swap instruction
|
|
117
|
-
const swapIx = new
|
|
110
|
+
const swapIx = new TransactionInstruction({
|
|
118
111
|
programId,
|
|
119
112
|
keys: [
|
|
120
113
|
{ pubkey: pool, isWritable: true, isSigner: false },
|
|
@@ -128,11 +121,11 @@ async function buildSwapSolToTokenInstruction(connection, params, programId) {
|
|
|
128
121
|
// Holder reward account
|
|
129
122
|
{ pubkey: holderRewardAccount, isWritable: true, isSigner: false },
|
|
130
123
|
{ pubkey: user, isWritable: true, isSigner: true },
|
|
131
|
-
{ pubkey:
|
|
132
|
-
{ pubkey:
|
|
124
|
+
{ pubkey: TOKEN_PROGRAM_ID, isWritable: false, isSigner: false },
|
|
125
|
+
{ pubkey: SystemProgram.programId, isWritable: false, isSigner: false },
|
|
133
126
|
],
|
|
134
127
|
data: Buffer.concat([
|
|
135
|
-
|
|
128
|
+
DISCRIMINATORS.swap_sol_to_token,
|
|
136
129
|
writeU64LE(lamportsIn),
|
|
137
130
|
writeU64LE(minimumAmountOut),
|
|
138
131
|
]),
|
|
@@ -145,32 +138,32 @@ async function buildSwapSolToTokenInstruction(connection, params, programId) {
|
|
|
145
138
|
*
|
|
146
139
|
* IMPORTANT: Fee recipients are read from on-chain state and cannot be modified.
|
|
147
140
|
*/
|
|
148
|
-
async function buildSwapTokenToSolInstruction(connection, params, programId) {
|
|
141
|
+
export async function buildSwapTokenToSolInstruction(connection, params, programId) {
|
|
149
142
|
const { tokenMint, user, amountIn, minimumLamportsOut } = params;
|
|
150
143
|
// Fetch pool state to get fee recipients and vault addresses (enforced on-chain)
|
|
151
|
-
const state = await
|
|
144
|
+
const state = await getPoolState(connection, tokenMint, programId);
|
|
152
145
|
if (!state) {
|
|
153
146
|
throw new Error("Pool not found for this token");
|
|
154
147
|
}
|
|
155
148
|
// Determine which vault is WSOL and which is the token based on stored mints
|
|
156
|
-
const isTokenANative = state.tokenAMint.equals(
|
|
149
|
+
const isTokenANative = state.tokenAMint.equals(NATIVE_MINT);
|
|
157
150
|
const wsolVault = isTokenANative ? state.tokenAVault : state.tokenBVault;
|
|
158
151
|
const tokenVault = isTokenANative ? state.tokenBVault : state.tokenAVault;
|
|
159
|
-
const pool =
|
|
160
|
-
const authority =
|
|
161
|
-
const userTokenAta =
|
|
162
|
-
const userWsolAta =
|
|
163
|
-
const holderRewardAccount =
|
|
152
|
+
const pool = getPoolPda(tokenMint, programId);
|
|
153
|
+
const authority = getPoolAuthorityPda(pool, programId);
|
|
154
|
+
const userTokenAta = getAssociatedTokenAddressSync(tokenMint, user);
|
|
155
|
+
const userWsolAta = getAssociatedTokenAddressSync(NATIVE_MINT, user);
|
|
156
|
+
const holderRewardAccount = getHolderRewardPda(tokenMint, user, programId);
|
|
164
157
|
const instructions = [];
|
|
165
158
|
// Create WSOL ATA if needed (for receiving output)
|
|
166
159
|
try {
|
|
167
|
-
await
|
|
160
|
+
await getAccount(connection, userWsolAta);
|
|
168
161
|
}
|
|
169
162
|
catch {
|
|
170
|
-
instructions.push(
|
|
163
|
+
instructions.push(createAssociatedTokenAccountInstruction(user, userWsolAta, user, NATIVE_MINT));
|
|
171
164
|
}
|
|
172
165
|
// Build swap instruction
|
|
173
|
-
const swapIx = new
|
|
166
|
+
const swapIx = new TransactionInstruction({
|
|
174
167
|
programId,
|
|
175
168
|
keys: [
|
|
176
169
|
{ pubkey: pool, isWritable: true, isSigner: false },
|
|
@@ -185,49 +178,49 @@ async function buildSwapTokenToSolInstruction(connection, params, programId) {
|
|
|
185
178
|
// Holder reward account
|
|
186
179
|
{ pubkey: holderRewardAccount, isWritable: true, isSigner: false },
|
|
187
180
|
{ pubkey: user, isWritable: true, isSigner: true },
|
|
188
|
-
{ pubkey:
|
|
189
|
-
{ pubkey:
|
|
181
|
+
{ pubkey: TOKEN_PROGRAM_ID, isWritable: false, isSigner: false },
|
|
182
|
+
{ pubkey: SystemProgram.programId, isWritable: false, isSigner: false },
|
|
190
183
|
],
|
|
191
184
|
data: Buffer.concat([
|
|
192
|
-
|
|
185
|
+
DISCRIMINATORS.swap_token_to_sol,
|
|
193
186
|
writeU64LE(amountIn),
|
|
194
187
|
writeU64LE(minimumLamportsOut),
|
|
195
188
|
]),
|
|
196
189
|
});
|
|
197
190
|
instructions.push(swapIx);
|
|
198
191
|
// Close WSOL account to unwrap to SOL
|
|
199
|
-
instructions.push(
|
|
192
|
+
instructions.push(createCloseAccountInstruction(userWsolAta, user, user));
|
|
200
193
|
return instructions;
|
|
201
194
|
}
|
|
202
195
|
/**
|
|
203
196
|
* Build swap_token_to_sol_max instruction (sell entire balance)
|
|
204
197
|
*/
|
|
205
|
-
async function buildSwapTokenToSolMaxInstruction(connection, params, programId) {
|
|
198
|
+
export async function buildSwapTokenToSolMaxInstruction(connection, params, programId) {
|
|
206
199
|
const { tokenMint, user } = params;
|
|
207
200
|
// Fetch pool state to get fee recipients and vault addresses (enforced on-chain)
|
|
208
|
-
const state = await
|
|
201
|
+
const state = await getPoolState(connection, tokenMint, programId);
|
|
209
202
|
if (!state) {
|
|
210
203
|
throw new Error("Pool not found for this token");
|
|
211
204
|
}
|
|
212
205
|
// Determine which vault is WSOL and which is the token based on stored mints
|
|
213
|
-
const isTokenANative = state.tokenAMint.equals(
|
|
206
|
+
const isTokenANative = state.tokenAMint.equals(NATIVE_MINT);
|
|
214
207
|
const wsolVault = isTokenANative ? state.tokenAVault : state.tokenBVault;
|
|
215
208
|
const tokenVault = isTokenANative ? state.tokenBVault : state.tokenAVault;
|
|
216
|
-
const pool =
|
|
217
|
-
const authority =
|
|
218
|
-
const userTokenAta =
|
|
219
|
-
const userWsolAta =
|
|
220
|
-
const holderRewardAccount =
|
|
209
|
+
const pool = getPoolPda(tokenMint, programId);
|
|
210
|
+
const authority = getPoolAuthorityPda(pool, programId);
|
|
211
|
+
const userTokenAta = getAssociatedTokenAddressSync(tokenMint, user);
|
|
212
|
+
const userWsolAta = getAssociatedTokenAddressSync(NATIVE_MINT, user);
|
|
213
|
+
const holderRewardAccount = getHolderRewardPda(tokenMint, user, programId);
|
|
221
214
|
const instructions = [];
|
|
222
215
|
// Create WSOL ATA if needed (for receiving output)
|
|
223
216
|
try {
|
|
224
|
-
await
|
|
217
|
+
await getAccount(connection, userWsolAta);
|
|
225
218
|
}
|
|
226
219
|
catch {
|
|
227
|
-
instructions.push(
|
|
220
|
+
instructions.push(createAssociatedTokenAccountInstruction(user, userWsolAta, user, NATIVE_MINT));
|
|
228
221
|
}
|
|
229
222
|
// Build swap max instruction
|
|
230
|
-
const swapMaxIx = new
|
|
223
|
+
const swapMaxIx = new TransactionInstruction({
|
|
231
224
|
programId,
|
|
232
225
|
keys: [
|
|
233
226
|
{ pubkey: pool, isWritable: true, isSigner: false },
|
|
@@ -242,14 +235,14 @@ async function buildSwapTokenToSolMaxInstruction(connection, params, programId)
|
|
|
242
235
|
// Holder reward account
|
|
243
236
|
{ pubkey: holderRewardAccount, isWritable: true, isSigner: false },
|
|
244
237
|
{ pubkey: user, isWritable: true, isSigner: true },
|
|
245
|
-
{ pubkey:
|
|
246
|
-
{ pubkey:
|
|
238
|
+
{ pubkey: TOKEN_PROGRAM_ID, isWritable: false, isSigner: false },
|
|
239
|
+
{ pubkey: SystemProgram.programId, isWritable: false, isSigner: false },
|
|
247
240
|
],
|
|
248
|
-
data:
|
|
241
|
+
data: DISCRIMINATORS.swap_token_to_sol_max,
|
|
249
242
|
});
|
|
250
243
|
instructions.push(swapMaxIx);
|
|
251
244
|
// Close WSOL account to unwrap to SOL
|
|
252
|
-
instructions.push(
|
|
245
|
+
instructions.push(createCloseAccountInstruction(userWsolAta, user, user));
|
|
253
246
|
return instructions;
|
|
254
247
|
}
|
|
255
248
|
//# sourceMappingURL=pool.js.map
|
package/dist/pool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
|
package/dist/rewards.js
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Holder Rewards
|
|
4
3
|
* Claim accumulated holder rewards from bonding curves and AMM pools
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const constants_js_1 = require("./constants.js");
|
|
12
|
-
const pda_js_1 = require("./pda.js");
|
|
13
|
-
const accounts_js_1 = require("./accounts.js");
|
|
5
|
+
import { SystemProgram, TransactionInstruction } from '@solana/web3.js';
|
|
6
|
+
import { TOKEN_PROGRAM_ID, getAssociatedTokenAddressSync, createAssociatedTokenAccountInstruction, createCloseAccountInstruction, getAccount, } from '@solana/spl-token';
|
|
7
|
+
import { DISCRIMINATORS, NATIVE_MINT } from './constants.js';
|
|
8
|
+
import { getBondingCurvePda, getSolEscrowPda, getPoolPda, getPoolAuthorityPda, getHolderRewardPda, } from './pda.js';
|
|
9
|
+
import { getPoolState } from './accounts.js';
|
|
14
10
|
// ============= Claim from Bonding Curve =============
|
|
15
11
|
/**
|
|
16
12
|
* Build claim_holder_rewards_curve instruction
|
|
@@ -18,14 +14,14 @@ const accounts_js_1 = require("./accounts.js");
|
|
|
18
14
|
* Claims accumulated holder rewards from a bonding curve.
|
|
19
15
|
* Rewards are paid in SOL directly to the holder's wallet.
|
|
20
16
|
*/
|
|
21
|
-
async function buildClaimHolderRewardsCurveInstruction(connection, params, programId) {
|
|
17
|
+
export async function buildClaimHolderRewardsCurveInstruction(connection, params, programId) {
|
|
22
18
|
const { tokenMint, holder } = params;
|
|
23
19
|
// Derive PDAs
|
|
24
|
-
const bondingCurve =
|
|
25
|
-
const solEscrow =
|
|
26
|
-
const holderTokenAccount =
|
|
27
|
-
const holderRewardAccount =
|
|
28
|
-
const claimIx = new
|
|
20
|
+
const bondingCurve = getBondingCurvePda(tokenMint, programId);
|
|
21
|
+
const solEscrow = getSolEscrowPda(bondingCurve, programId);
|
|
22
|
+
const holderTokenAccount = getAssociatedTokenAddressSync(tokenMint, holder);
|
|
23
|
+
const holderRewardAccount = getHolderRewardPda(tokenMint, holder, programId);
|
|
24
|
+
const claimIx = new TransactionInstruction({
|
|
29
25
|
programId,
|
|
30
26
|
keys: [
|
|
31
27
|
{ pubkey: bondingCurve, isWritable: true, isSigner: false },
|
|
@@ -34,9 +30,9 @@ async function buildClaimHolderRewardsCurveInstruction(connection, params, progr
|
|
|
34
30
|
{ pubkey: holderTokenAccount, isWritable: false, isSigner: false },
|
|
35
31
|
{ pubkey: holderRewardAccount, isWritable: true, isSigner: false },
|
|
36
32
|
{ pubkey: holder, isWritable: true, isSigner: true },
|
|
37
|
-
{ pubkey:
|
|
33
|
+
{ pubkey: SystemProgram.programId, isWritable: false, isSigner: false },
|
|
38
34
|
],
|
|
39
|
-
data:
|
|
35
|
+
data: DISCRIMINATORS.claim_holder_rewards_curve,
|
|
40
36
|
});
|
|
41
37
|
return [claimIx];
|
|
42
38
|
}
|
|
@@ -47,32 +43,32 @@ async function buildClaimHolderRewardsCurveInstruction(connection, params, progr
|
|
|
47
43
|
* Claims accumulated holder rewards from an AMM pool (post-graduation).
|
|
48
44
|
* Rewards are paid in WSOL which is then unwrapped to SOL.
|
|
49
45
|
*/
|
|
50
|
-
async function buildClaimHolderRewardsInstruction(connection, params, programId) {
|
|
46
|
+
export async function buildClaimHolderRewardsInstruction(connection, params, programId) {
|
|
51
47
|
const { tokenMint, holder } = params;
|
|
52
48
|
// Fetch pool state
|
|
53
|
-
const state = await
|
|
49
|
+
const state = await getPoolState(connection, tokenMint, programId);
|
|
54
50
|
if (!state) {
|
|
55
51
|
throw new Error('Pool not found for this token');
|
|
56
52
|
}
|
|
57
53
|
// Derive PDAs
|
|
58
|
-
const pool =
|
|
59
|
-
const authority =
|
|
60
|
-
const holderTokenAccount =
|
|
61
|
-
const holderRewardAccount =
|
|
62
|
-
const holderWsolAccount =
|
|
54
|
+
const pool = getPoolPda(tokenMint, programId);
|
|
55
|
+
const authority = getPoolAuthorityPda(pool, programId);
|
|
56
|
+
const holderTokenAccount = getAssociatedTokenAddressSync(tokenMint, holder);
|
|
57
|
+
const holderRewardAccount = getHolderRewardPda(tokenMint, holder, programId);
|
|
58
|
+
const holderWsolAccount = getAssociatedTokenAddressSync(NATIVE_MINT, holder);
|
|
63
59
|
// Determine which vault is which
|
|
64
|
-
const isTokenANative = state.tokenAMint.equals(
|
|
60
|
+
const isTokenANative = state.tokenAMint.equals(NATIVE_MINT);
|
|
65
61
|
const solVault = isTokenANative ? state.tokenAVault : state.tokenBVault;
|
|
66
62
|
const tokenVault = isTokenANative ? state.tokenBVault : state.tokenAVault;
|
|
67
63
|
const instructions = [];
|
|
68
64
|
// Create WSOL ATA if needed
|
|
69
65
|
try {
|
|
70
|
-
await
|
|
66
|
+
await getAccount(connection, holderWsolAccount);
|
|
71
67
|
}
|
|
72
68
|
catch {
|
|
73
|
-
instructions.push(
|
|
69
|
+
instructions.push(createAssociatedTokenAccountInstruction(holder, holderWsolAccount, holder, NATIVE_MINT));
|
|
74
70
|
}
|
|
75
|
-
const claimIx = new
|
|
71
|
+
const claimIx = new TransactionInstruction({
|
|
76
72
|
programId,
|
|
77
73
|
keys: [
|
|
78
74
|
{ pubkey: pool, isWritable: true, isSigner: false },
|
|
@@ -85,14 +81,14 @@ async function buildClaimHolderRewardsInstruction(connection, params, programId)
|
|
|
85
81
|
{ pubkey: holderRewardAccount, isWritable: true, isSigner: false },
|
|
86
82
|
{ pubkey: authority, isWritable: false, isSigner: false },
|
|
87
83
|
{ pubkey: holder, isWritable: true, isSigner: true },
|
|
88
|
-
{ pubkey:
|
|
89
|
-
{ pubkey:
|
|
84
|
+
{ pubkey: TOKEN_PROGRAM_ID, isWritable: false, isSigner: false },
|
|
85
|
+
{ pubkey: SystemProgram.programId, isWritable: false, isSigner: false },
|
|
90
86
|
],
|
|
91
|
-
data:
|
|
87
|
+
data: DISCRIMINATORS.claim_holder_rewards,
|
|
92
88
|
});
|
|
93
89
|
instructions.push(claimIx);
|
|
94
90
|
// Close WSOL account to unwrap to SOL
|
|
95
|
-
instructions.push(
|
|
91
|
+
instructions.push(createCloseAccountInstruction(holderWsolAccount, holder, holder));
|
|
96
92
|
return instructions;
|
|
97
93
|
}
|
|
98
94
|
//# sourceMappingURL=rewards.js.map
|