@liquid-af/sdk 0.6.1 → 0.7.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.
Files changed (50) hide show
  1. package/dist/accounts/liquid-fees.d.ts +1 -1
  2. package/dist/accounts/liquid-fees.d.ts.map +1 -1
  3. package/dist/accounts/liquid-fees.js +2 -2
  4. package/dist/accounts/liquid-fees.js.map +1 -1
  5. package/dist/client.d.ts +7 -6
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +6 -6
  8. package/dist/client.js.map +1 -1
  9. package/dist/idl/liquid.d.ts +2581 -2490
  10. package/dist/idl/liquid.d.ts.map +1 -1
  11. package/dist/idl/liquid.json +2581 -2490
  12. package/dist/idl/liquid_events.d.ts +205 -1
  13. package/dist/idl/liquid_events.d.ts.map +1 -1
  14. package/dist/idl/liquid_events.json +205 -1
  15. package/dist/idl/liquid_fees.d.ts +121 -6
  16. package/dist/idl/liquid_fees.d.ts.map +1 -1
  17. package/dist/idl/liquid_fees.json +121 -6
  18. package/dist/idl/liquid_state.d.ts +72 -72
  19. package/dist/idl/liquid_state.d.ts.map +1 -1
  20. package/dist/idl/liquid_state.json +72 -72
  21. package/dist/idl/liquid_swap.d.ts +1022 -998
  22. package/dist/idl/liquid_swap.d.ts.map +1 -1
  23. package/dist/idl/liquid_swap.json +1022 -998
  24. package/dist/instructions/liquid-fees.d.ts +4 -2
  25. package/dist/instructions/liquid-fees.d.ts.map +1 -1
  26. package/dist/instructions/liquid-fees.js +12 -9
  27. package/dist/instructions/liquid-fees.js.map +1 -1
  28. package/dist/pda/index.d.ts.map +1 -1
  29. package/dist/pda/index.js +2 -2
  30. package/dist/pda/index.js.map +1 -1
  31. package/dist/pda/liquid-fees.d.ts +3 -2
  32. package/dist/pda/liquid-fees.d.ts.map +1 -1
  33. package/dist/pda/liquid-fees.js +4 -3
  34. package/dist/pda/liquid-fees.js.map +1 -1
  35. package/package.json +1 -1
  36. package/src/accounts/liquid-fees.ts +6 -1
  37. package/src/client.ts +21 -8
  38. package/src/idl/liquid.json +2581 -2490
  39. package/src/idl/liquid.ts +2581 -2490
  40. package/src/idl/liquid_events.json +205 -1
  41. package/src/idl/liquid_events.ts +205 -1
  42. package/src/idl/liquid_fees.json +121 -6
  43. package/src/idl/liquid_fees.ts +121 -6
  44. package/src/idl/liquid_state.json +72 -72
  45. package/src/idl/liquid_state.ts +72 -72
  46. package/src/idl/liquid_swap.json +1022 -998
  47. package/src/idl/liquid_swap.ts +1022 -998
  48. package/src/instructions/liquid-fees.ts +32 -10
  49. package/src/pda/index.ts +10 -2
  50. package/src/pda/liquid-fees.ts +4 -2
@@ -12,10 +12,10 @@ import {
12
12
  export interface BuildUpdateFeeConfigParams {
13
13
  authority: PublicKey;
14
14
  tokenMint: PublicKey;
15
+ /** Quote mint used for PDA derivation and token fee vault verification. */
16
+ quoteMint: PublicKey;
15
17
  recipients?: FeeRecipient[] | null;
16
18
  newUpdateAuthority?: PublicKey | null;
17
- /** Required when changing recipients to verify token fee vault is drained. */
18
- quoteMint?: PublicKey;
19
19
  config: LiquidConfig;
20
20
  }
21
21
 
@@ -47,9 +47,10 @@ export function buildUpdateFeeConfig(
47
47
 
48
48
  // When changing recipients, the token fee vault must be passed to verify it's drained
49
49
  let tokenFeeVault: PublicKey | null = null;
50
- if (recipients && quoteMint) {
50
+ if (recipients) {
51
51
  const [feeConfig] = getFeeConfigPDA(
52
52
  tokenMint,
53
+ quoteMint,
53
54
  config.liquidFeesProgramId,
54
55
  );
55
56
  const [feeVault] = getFeeVaultPDA(
@@ -68,9 +69,10 @@ export function buildUpdateFeeConfig(
68
69
  recipients: formattedRecipients,
69
70
  newUpdateAuthority: newUpdateAuthority ?? null,
70
71
  })
71
- .accounts({
72
+ .accountsPartial({
72
73
  authority,
73
74
  tokenMint,
75
+ quoteMint,
74
76
  tokenFeeVault,
75
77
  })
76
78
  .instruction();
@@ -98,7 +100,11 @@ export function buildRevokeFeeConfig(
98
100
  const program = getCachedFeesProgram(config);
99
101
 
100
102
  // Derive token fee vault ATA (fee_vault's ATA for quote_mint)
101
- const [feeConfig] = getFeeConfigPDA(tokenMint, config.liquidFeesProgramId);
103
+ const [feeConfig] = getFeeConfigPDA(
104
+ tokenMint,
105
+ quoteMint,
106
+ config.liquidFeesProgramId,
107
+ );
102
108
  const [feeVault] = getFeeVaultPDA(feeConfig, config.liquidFeesProgramId);
103
109
  const tokenFeeVault = getAssociatedTokenAddressSync(
104
110
  quoteMint,
@@ -111,6 +117,7 @@ export function buildRevokeFeeConfig(
111
117
  .accounts({
112
118
  authority,
113
119
  tokenMint,
120
+ quoteMint,
114
121
  tokenFeeVault,
115
122
  })
116
123
  .instruction();
@@ -119,6 +126,7 @@ export function buildRevokeFeeConfig(
119
126
  export interface BuildDistributeFeesParams {
120
127
  payer: PublicKey;
121
128
  tokenMint: PublicKey;
129
+ quoteMint: PublicKey;
122
130
  recipientVaults: PublicKey[];
123
131
  config: LiquidConfig;
124
132
  }
@@ -135,7 +143,7 @@ export interface BuildDistributeFeesParams {
135
143
  export function buildDistributeFees(
136
144
  params: BuildDistributeFeesParams,
137
145
  ): Promise<TransactionInstruction> {
138
- const { payer, tokenMint, recipientVaults, config } = params;
146
+ const { payer, tokenMint, quoteMint, recipientVaults, config } = params;
139
147
  const program = getCachedFeesProgram(config);
140
148
 
141
149
  return program.methods
@@ -143,6 +151,7 @@ export function buildDistributeFees(
143
151
  .accounts({
144
152
  payer,
145
153
  tokenMint,
154
+ quoteMint,
146
155
  })
147
156
  .remainingAccounts(
148
157
  recipientVaults.map((vault) => ({
@@ -202,6 +211,7 @@ export function buildDistributeTokenFees(
202
211
  export interface BuildClaimFeesParams {
203
212
  recipient: PublicKey;
204
213
  tokenMint: PublicKey;
214
+ quoteMint: PublicKey;
205
215
  config: LiquidConfig;
206
216
  }
207
217
 
@@ -215,9 +225,13 @@ export interface BuildClaimFeesParams {
215
225
  export function buildClaimFees(
216
226
  params: BuildClaimFeesParams,
217
227
  ): Promise<TransactionInstruction> {
218
- const { recipient, tokenMint, config } = params;
228
+ const { recipient, tokenMint, quoteMint, config } = params;
219
229
  const program = getCachedFeesProgram(config);
220
- const [feeConfig] = getFeeConfigPDA(tokenMint, config.liquidFeesProgramId);
230
+ const [feeConfig] = getFeeConfigPDA(
231
+ tokenMint,
232
+ quoteMint,
233
+ config.liquidFeesProgramId,
234
+ );
221
235
 
222
236
  return program.methods
223
237
  .claimFees()
@@ -248,7 +262,11 @@ export function buildClaimTokenFees(
248
262
  ): Promise<TransactionInstruction> {
249
263
  const { recipient, tokenMint, quoteMint, config } = params;
250
264
  const program = getCachedFeesProgram(config);
251
- const [feeConfig] = getFeeConfigPDA(tokenMint, config.liquidFeesProgramId);
265
+ const [feeConfig] = getFeeConfigPDA(
266
+ tokenMint,
267
+ quoteMint,
268
+ config.liquidFeesProgramId,
269
+ );
252
270
 
253
271
  return program.methods
254
272
  .claimTokenFees()
@@ -301,7 +319,11 @@ export function deriveRecipientVaultPairs(
301
319
  quoteMint: PublicKey,
302
320
  config: LiquidConfig,
303
321
  ): RecipientVaultPair[] {
304
- const [feeConfig] = getFeeConfigPDA(tokenMint, config.liquidFeesProgramId);
322
+ const [feeConfig] = getFeeConfigPDA(
323
+ tokenMint,
324
+ quoteMint,
325
+ config.liquidFeesProgramId,
326
+ );
305
327
  return recipients.map((recipient) => {
306
328
  const [vaultPda] = getRecipientVaultPDA(
307
329
  feeConfig,
package/src/pda/index.ts CHANGED
@@ -97,7 +97,11 @@ export const getAllBondingCurvePDAs = (
97
97
  bondingCurve,
98
98
  config.liquidProgramId,
99
99
  );
100
- const [feeConfig] = getFeeConfigPDA(mint, config.liquidFeesProgramId);
100
+ const [feeConfig] = getFeeConfigPDA(
101
+ mint,
102
+ WSOL_MINT,
103
+ config.liquidFeesProgramId,
104
+ );
101
105
  const [feeVault] = getFeeVaultPDA(feeConfig, config.liquidFeesProgramId);
102
106
  const [userProperties] = getUserPropertiesPDA(
103
107
  creator,
@@ -165,7 +169,11 @@ export const getAllPoolPDAs = (
165
169
  );
166
170
  const [ammConfig] = getSwapGlobalConfigPDA(config.liquidSwapProgramId);
167
171
  const [ammAuthority] = getSwapAuthorityPDA(config.liquidSwapProgramId);
168
- const [feeConfig] = getFeeConfigPDA(baseMint, config.liquidFeesProgramId);
172
+ const [feeConfig] = getFeeConfigPDA(
173
+ baseMint,
174
+ quoteMint,
175
+ config.liquidFeesProgramId,
176
+ );
169
177
  const [tokenVolume] = getTokenVolumePDA(
170
178
  baseMint,
171
179
  config.liquidStateProgramId,
@@ -6,18 +6,20 @@ const SEED_GLOBAL_CONFIG = Buffer.from("global_config");
6
6
  const SEED_RECIPIENT_VAULT = Buffer.from("recipient_vault");
7
7
 
8
8
  /**
9
- * Derives the fee config PDA for a token mint.
9
+ * Derives the fee config PDA for a token mint and quote mint pair.
10
10
  *
11
11
  * @param tokenMint - Token mint address
12
+ * @param quoteMint - Quote token mint address (e.g., WSOL for native, USDC for stable)
12
13
  * @param programId - Liquid Fees program ID
13
14
  * @returns Tuple of [PDA address, bump seed]
14
15
  */
15
16
  export const getFeeConfigPDA = (
16
17
  tokenMint: PublicKey,
18
+ quoteMint: PublicKey,
17
19
  programId: PublicKey,
18
20
  ): [PublicKey, number] => {
19
21
  return PublicKey.findProgramAddressSync(
20
- [SEED_FEE_CONFIG, tokenMint.toBuffer()],
22
+ [SEED_FEE_CONFIG, tokenMint.toBuffer(), quoteMint.toBuffer()],
21
23
  programId,
22
24
  );
23
25
  };