@liquid-af/sdk 0.10.4 → 0.11.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/client.d.ts +2 -5
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +3 -3
  4. package/dist/client.js.map +1 -1
  5. package/dist/idl/liquid.d.ts +2490 -2490
  6. package/dist/idl/liquid.d.ts.map +1 -1
  7. package/dist/idl/liquid.json +2490 -2490
  8. package/dist/idl/liquid_events.d.ts +5 -12
  9. package/dist/idl/liquid_events.d.ts.map +1 -1
  10. package/dist/idl/liquid_events.json +5 -12
  11. package/dist/idl/liquid_fees.d.ts +8 -30
  12. package/dist/idl/liquid_fees.d.ts.map +1 -1
  13. package/dist/idl/liquid_fees.json +8 -30
  14. package/dist/idl/liquid_state.d.ts +72 -72
  15. package/dist/idl/liquid_state.d.ts.map +1 -1
  16. package/dist/idl/liquid_state.json +72 -72
  17. package/dist/idl/liquid_swap.d.ts +998 -998
  18. package/dist/idl/liquid_swap.d.ts.map +1 -1
  19. package/dist/idl/liquid_swap.json +998 -998
  20. package/dist/instructions/liquid-fees.d.ts +3 -6
  21. package/dist/instructions/liquid-fees.d.ts.map +1 -1
  22. package/dist/instructions/liquid-fees.js +6 -11
  23. package/dist/instructions/liquid-fees.js.map +1 -1
  24. package/dist/math/bonding-curve.d.ts.map +1 -1
  25. package/dist/math/bonding-curve.js +6 -4
  26. package/dist/math/bonding-curve.js.map +1 -1
  27. package/dist/math/fees.d.ts +5 -2
  28. package/dist/math/fees.d.ts.map +1 -1
  29. package/dist/math/fees.js +32 -13
  30. package/dist/math/fees.js.map +1 -1
  31. package/dist/pda/liquid-fees.d.ts +3 -3
  32. package/dist/pda/liquid-fees.d.ts.map +1 -1
  33. package/dist/pda/liquid-fees.js +4 -4
  34. package/dist/pda/liquid-fees.js.map +1 -1
  35. package/package.json +1 -1
  36. package/src/client.ts +2 -9
  37. package/src/idl/liquid.json +2490 -2490
  38. package/src/idl/liquid.ts +2490 -2490
  39. package/src/idl/liquid_events.json +5 -12
  40. package/src/idl/liquid_events.ts +5 -12
  41. package/src/idl/liquid_fees.json +8 -30
  42. package/src/idl/liquid_fees.ts +8 -30
  43. package/src/idl/liquid_state.json +72 -72
  44. package/src/idl/liquid_state.ts +72 -72
  45. package/src/idl/liquid_swap.json +998 -998
  46. package/src/idl/liquid_swap.ts +998 -998
  47. package/src/instructions/liquid-fees.ts +4 -27
  48. package/src/math/bonding-curve.ts +6 -4
  49. package/src/math/fees.ts +33 -15
  50. package/src/pda/liquid-fees.ts +3 -4
@@ -72,13 +72,12 @@ export interface BuildDistributeTokenFeesParams {
72
72
  export declare function buildDistributeTokenFees(params: BuildDistributeTokenFeesParams): Promise<TransactionInstruction>;
73
73
  export interface BuildClaimFeesParams {
74
74
  recipient: PublicKey;
75
- tokenMint: PublicKey;
76
- quoteMint: PublicKey;
77
75
  config: LiquidConfig;
78
76
  }
79
77
  /**
80
78
  * Builds a claimFees instruction.
81
79
  * Allows a recipient to claim accumulated SOL fees from their vault PDA.
80
+ * Vaults are shared across all fee configs — one claim drains all SOL fees.
82
81
  *
83
82
  * @param params - {@link BuildClaimFeesParams}
84
83
  * @returns Transaction instruction
@@ -86,7 +85,6 @@ export interface BuildClaimFeesParams {
86
85
  export declare function buildClaimFees(params: BuildClaimFeesParams): Promise<TransactionInstruction>;
87
86
  export interface BuildClaimTokenFeesParams {
88
87
  recipient: PublicKey;
89
- tokenMint: PublicKey;
90
88
  quoteMint: PublicKey;
91
89
  recipientTokenAccount?: PublicKey;
92
90
  config: LiquidConfig;
@@ -94,7 +92,7 @@ export interface BuildClaimTokenFeesParams {
94
92
  /**
95
93
  * Builds a claimTokenFees instruction.
96
94
  * Allows a recipient to claim accumulated token fees from their vault ATA.
97
- * Closes the vault ATA after claiming to reclaim rent.
95
+ * Vaults are shared across all fee configs one claim drains all token fees for the quote mint.
98
96
  *
99
97
  * @param params - {@link BuildClaimTokenFeesParams}
100
98
  * @returns Transaction instruction
@@ -115,11 +113,10 @@ export declare function buildInitializeGlobalConfig(params: BuildInitializeGloba
115
113
  /**
116
114
  * Helper: derives recipient vault PDA pairs for use with buildDistributeTokenFees.
117
115
  *
118
- * @param tokenMint - Token mint address
119
116
  * @param recipients - Array of recipient public keys in fee_config order
120
117
  * @param quoteMint - Quote mint for ATA derivation
121
118
  * @param config - Liquid protocol config
122
119
  * @returns Array of RecipientVaultPair for remaining accounts
123
120
  */
124
- export declare function deriveRecipientVaultPairs(tokenMint: PublicKey, recipients: PublicKey[], quoteMint: PublicKey, config: LiquidConfig): RecipientVaultPair[];
121
+ export declare function deriveRecipientVaultPairs(recipients: PublicKey[], quoteMint: PublicKey, config: LiquidConfig): RecipientVaultPair[];
125
122
  //# sourceMappingURL=liquid-fees.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"liquid-fees.d.ts","sourceRoot":"","sources":["../../src/instructions/liquid-fees.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"liquid-fees.d.ts","sourceRoot":"","sources":["../../src/instructions/liquid-fees.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQhD,MAAM,WAAW,0BAA0B;IAC1C,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,CAAC,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACnC,kBAAkB,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACtC,MAAM,EAAE,YAAY,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,0BAA0B,GAChC,OAAO,CAAC,sBAAsB,CAAC,CAgDjC;AAED,MAAM,WAAW,0BAA0B;IAC1C,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,qDAAqD;IACrD,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,0BAA0B,GAChC,OAAO,CAAC,sBAAsB,CAAC,CA0BjC;AAED,MAAM,WAAW,yBAAyB;IACzC,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,SAAS,EAAE,CAAC;IAC7B,MAAM,EAAE,YAAY,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,yBAAyB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAmBjC;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,8BAA8B;IAC9C,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,MAAM,EAAE,YAAY,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,8BAA8B,GACpC,OAAO,CAAC,sBAAsB,CAAC,CAmBjC;AAED,MAAM,WAAW,oBAAoB;IACpC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC7B,MAAM,EAAE,oBAAoB,GAC1B,OAAO,CAAC,sBAAsB,CAAC,CAUjC;AAED,MAAM,WAAW,yBAAyB;IACzC,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,qBAAqB,CAAC,EAAE,SAAS,CAAC;IAClC,MAAM,EAAE,YAAY,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,yBAAyB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAgBjC;AAED,MAAM,WAAW,iCAAiC;IACjD,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,iCAAiC,GACvC,OAAO,CAAC,sBAAsB,CAAC,CAUjC;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACxC,UAAU,EAAE,SAAS,EAAE,EACvB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,YAAY,GAClB,kBAAkB,EAAE,CAatB"}
@@ -115,41 +115,38 @@ export function buildDistributeTokenFees(params) {
115
115
  /**
116
116
  * Builds a claimFees instruction.
117
117
  * Allows a recipient to claim accumulated SOL fees from their vault PDA.
118
+ * Vaults are shared across all fee configs — one claim drains all SOL fees.
118
119
  *
119
120
  * @param params - {@link BuildClaimFeesParams}
120
121
  * @returns Transaction instruction
121
122
  */
122
123
  export function buildClaimFees(params) {
123
- const { recipient, tokenMint, quoteMint, config } = params;
124
+ const { recipient, config } = params;
124
125
  const program = getCachedFeesProgram(config);
125
- const [feeConfig] = getFeeConfigPDA(tokenMint, quoteMint, config.liquidFeesProgramId);
126
126
  return program.methods
127
127
  .claimFees()
128
128
  .accounts({
129
129
  recipient,
130
- feeConfig,
131
130
  })
132
131
  .instruction();
133
132
  }
134
133
  /**
135
134
  * Builds a claimTokenFees instruction.
136
135
  * Allows a recipient to claim accumulated token fees from their vault ATA.
137
- * Closes the vault ATA after claiming to reclaim rent.
136
+ * Vaults are shared across all fee configs one claim drains all token fees for the quote mint.
138
137
  *
139
138
  * @param params - {@link BuildClaimTokenFeesParams}
140
139
  * @returns Transaction instruction
141
140
  */
142
141
  export function buildClaimTokenFees(params) {
143
- const { recipient, tokenMint, quoteMint, recipientTokenAccount, config } = params;
142
+ const { recipient, quoteMint, recipientTokenAccount, config } = params;
144
143
  const program = getCachedFeesProgram(config);
145
- const [feeConfig] = getFeeConfigPDA(tokenMint, quoteMint, config.liquidFeesProgramId);
146
144
  const resolvedRecipientTokenAccount = recipientTokenAccount ??
147
145
  getAssociatedTokenAddressSync(quoteMint, recipient, false);
148
146
  return program.methods
149
147
  .claimTokenFees()
150
148
  .accounts({
151
149
  recipient,
152
- feeConfig,
153
150
  quoteMint,
154
151
  recipientTokenAccount: resolvedRecipientTokenAccount,
155
152
  })
@@ -175,16 +172,14 @@ export function buildInitializeGlobalConfig(params) {
175
172
  /**
176
173
  * Helper: derives recipient vault PDA pairs for use with buildDistributeTokenFees.
177
174
  *
178
- * @param tokenMint - Token mint address
179
175
  * @param recipients - Array of recipient public keys in fee_config order
180
176
  * @param quoteMint - Quote mint for ATA derivation
181
177
  * @param config - Liquid protocol config
182
178
  * @returns Array of RecipientVaultPair for remaining accounts
183
179
  */
184
- export function deriveRecipientVaultPairs(tokenMint, recipients, quoteMint, config) {
185
- const [feeConfig] = getFeeConfigPDA(tokenMint, quoteMint, config.liquidFeesProgramId);
180
+ export function deriveRecipientVaultPairs(recipients, quoteMint, config) {
186
181
  return recipients.map((recipient) => {
187
- const [vaultPda] = getRecipientVaultPDA(feeConfig, recipient, config.liquidFeesProgramId);
182
+ const [vaultPda] = getRecipientVaultPDA(recipient, config.liquidFeesProgramId);
188
183
  const vaultAta = getAssociatedTokenAddressSync(quoteMint, vaultPda, true);
189
184
  return { vaultPda, vaultAta };
190
185
  });
@@ -1 +1 @@
1
- {"version":3,"file":"liquid-fees.js","sourceRoot":"","sources":["../../src/instructions/liquid-fees.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"liquid-fees.js","sourceRoot":"","sources":["../../src/instructions/liquid-fees.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bonding-curve.d.ts","sourceRoot":"","sources":["../../src/math/bonding-curve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,OAAO,CAAC;AACvB,OAAO,KAAK,EACX,qBAAqB,EACrB,sBAAsB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,GACnC,eAAe,EAAE,EACjB,YAAY;IAAE,oBAAoB,EAAE,EAAE,CAAC;IAAC,oBAAoB,EAAE,EAAE,CAAA;CAAE,EAClE,QAAQ,SAAS,EACjB,eAAe,OAAO,EACtB,cAAc,OAAO,KACnB,qBAwCF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,GACpC,gBAAgB,EAAE,EAClB,YAAY;IAAE,oBAAoB,EAAE,EAAE,CAAC;IAAC,oBAAoB,EAAE,EAAE,CAAA;CAAE,EAClE,QAAQ,SAAS,EACjB,eAAe,OAAO,EACtB,cAAc,OAAO,KACnB,sBAyCF,CAAC"}
1
+ {"version":3,"file":"bonding-curve.d.ts","sourceRoot":"","sources":["../../src/math/bonding-curve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,OAAO,CAAC;AACvB,OAAO,KAAK,EACX,qBAAqB,EACrB,sBAAsB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,GACnC,eAAe,EAAE,EACjB,YAAY;IAAE,oBAAoB,EAAE,EAAE,CAAC;IAAC,oBAAoB,EAAE,EAAE,CAAA;CAAE,EAClE,QAAQ,SAAS,EACjB,eAAe,OAAO,EACtB,cAAc,OAAO,KACnB,qBAyCF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,GACpC,gBAAgB,EAAE,EAClB,YAAY;IAAE,oBAAoB,EAAE,EAAE,CAAC;IAAC,oBAAoB,EAAE,EAAE,CAAA;CAAE,EAClE,QAAQ,SAAS,EACjB,eAAe,OAAO,EACtB,cAAc,OAAO,KACnB,sBA0CF,CAAC"}
@@ -19,8 +19,9 @@ export const calculateBuyExpectation = (amountInGross, curveState, config, hasCr
19
19
  const k = curveState.virtualQuoteReserves.mul(curveState.virtualTokenReserves);
20
20
  // New quote reserves after adding net amount
21
21
  const newVirtualQuote = curveState.virtualQuoteReserves.add(amountInNet);
22
- // Solve for new token reserves: newToken = k / newQuote + 1 (ceiling division)
23
- const newVirtualToken = k.div(newVirtualQuote).add(new BN(1));
22
+ // Solve for new token reserves: newToken = k / newQuote
23
+ const { div: q1, mod: r1 } = k.divmod(newVirtualQuote);
24
+ const newVirtualToken = r1.isZero() ? q1 : q1.add(new BN(1));
24
25
  // Tokens out = difference in token reserves
25
26
  const tokensOut = curveState.virtualTokenReserves.sub(newVirtualToken);
26
27
  // On-chain, protocol fee is only reduced by referral amounts that are
@@ -54,8 +55,9 @@ export const calculateSellExpectation = (amountInTokens, curveState, config, has
54
55
  const k = curveState.virtualQuoteReserves.mul(curveState.virtualTokenReserves);
55
56
  // New token reserves after adding sold tokens
56
57
  const newVirtualToken = curveState.virtualTokenReserves.add(amountInTokens);
57
- // Solve for new quote reserves: newQuote = k / newToken + 1 (ceiling division)
58
- const newVirtualQuote = k.div(newVirtualToken).add(new BN(1));
58
+ // Solve for new quote reserves: newQuote = k / newToken
59
+ const { div: q2, mod: r2 } = k.divmod(newVirtualToken);
60
+ const newVirtualQuote = r2.isZero() ? q2 : q2.add(new BN(1));
59
61
  // Gross quote out (before fees)
60
62
  const quoteOutGross = curveState.virtualQuoteReserves.sub(newVirtualQuote);
61
63
  // Calculate fees on gross amount
@@ -1 +1 @@
1
- {"version":3,"file":"bonding-curve.js","sourceRoot":"","sources":["../../src/math/bonding-curve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,OAAO,CAAC;AAKvB,OAAO,EAAE,aAAa,EAAkB,MAAM,WAAW,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACtC,aAAiB,EACjB,UAAkE,EAClE,MAAiB,EACjB,aAAsB,EACtB,YAAqB,EACG,EAAE;IAC1B,MAAM,IAAI,GAAG,aAAa,CACzB,aAAa,EACb,MAAM,EACN,aAAa,EACb,YAAY,CACZ,CAAC;IAEF,uDAAuD;IACvD,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEtD,8BAA8B;IAC9B,MAAM,CAAC,GAAG,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAC5C,UAAU,CAAC,oBAAoB,CAC/B,CAAC;IAEF,6CAA6C;IAC7C,MAAM,eAAe,GAAG,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAEzE,+EAA+E;IAC/E,MAAM,eAAe,GAAG,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9D,4CAA4C;IAC5C,MAAM,SAAS,GAAG,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAEvE,sEAAsE;IACtE,mEAAmE;IACnE,6DAA6D;IAC7D,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW;SAC3C,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;SAC5B,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE9B,OAAO;QACN,GAAG,IAAI;QACP,WAAW,EAAE,oBAAoB;QACjC,SAAS;QACT,eAAe;QACf,eAAe;QACf,WAAW;KACX,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACvC,cAAkB,EAClB,UAAkE,EAClE,MAAiB,EACjB,aAAsB,EACtB,YAAqB,EACI,EAAE;IAC3B,8BAA8B;IAC9B,MAAM,CAAC,GAAG,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAC5C,UAAU,CAAC,oBAAoB,CAC/B,CAAC;IAEF,8CAA8C;IAC9C,MAAM,eAAe,GAAG,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAE5E,+EAA+E;IAC/E,MAAM,eAAe,GAAG,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9D,gCAAgC;IAChC,MAAM,aAAa,GAAG,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAE3E,iCAAiC;IACjC,MAAM,IAAI,GAAG,aAAa,CACzB,aAAa,EACb,MAAM,EACN,aAAa,EACb,YAAY,CACZ,CAAC;IAEF,iCAAiC;IACjC,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEtD,sEAAsE;IACtE,mEAAmE;IACnE,6DAA6D;IAC7D,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW;SAC3C,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC;SAC5B,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE9B,OAAO;QACN,GAAG,IAAI;QACP,WAAW,EAAE,oBAAoB;QACjC,aAAa;QACb,WAAW;QACX,eAAe;QACf,eAAe;KACf,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"bonding-curve.js","sourceRoot":"","sources":["../../src/math/bonding-curve.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import type { PublicKey } from "@solana/web3.js";
3
3
  import type { FeeDistribution, FeeRecipient, DistributionResult } from "../types.js";
4
4
  /**
5
5
  * Calculates basis points of an amount.
6
- * result = (amount * bps) / 10000
6
+ * result = ceil(amount * bps / 10000)
7
7
  *
8
8
  * @param amount - The amount to calculate basis points of
9
9
  * @param bps - Basis points (1 bps = 0.01%)
@@ -21,7 +21,10 @@ export interface FeeConfig {
21
21
  }
22
22
  /**
23
23
  * Calculates fee distribution for a given trade amount.
24
- * Referral fees are carved from the protocol fee, not the trade amount.
24
+ * Matches the on-chain algorithm in `trade_utils::fees::calculate_fees`:
25
+ * - Single ceiling division for total fees
26
+ * - Proportional floor distribution for creator; protocol gets remainder (dust)
27
+ * - Referral fees use ceiling (carved from protocol fee, not trade amount)
25
28
  *
26
29
  * @param amount - Gross trade amount (before fees)
27
30
  * @param config - Fee configuration in basis points
@@ -1 +1 @@
1
- {"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../../src/math/fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,OAAO,CAAC;AACvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EACX,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,MAAM,aAAa,CAAC;AAErB;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,QAAQ,EAAE,EAAE,KAAK,MAAM,KAAG,EACG,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,SAAS;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,GACzB,QAAQ,EAAE,EACV,QAAQ,SAAS,EACjB,eAAe,OAAO,EACtB,cAAc,OAAO,KACnB,eAyBF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GACjC,cAAc,MAAM,EACpB,YAAY,YAAY,EAAE,KACxB,kBAAkB,EAMpB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,GACtC,cAAc,MAAM,EACpB,YAAY,YAAY,EAAE,KACxB,MAKF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,GACrC,cAAc,MAAM,EACpB,YAAY,YAAY,EAAE,KACxB,MAOF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC5B,SAAS,SAAS,EAAE,EACpB,UAAU,MAAM,EAAE,KAChB,YAAY,EAQd,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GACjC,OAAO,MAAM,EACb,SAAS,SAAS,EAAE,KAClB,YAAY,EAYd,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,SAAS,KAAG,YAAY,EAErE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,YAAY,YAAY,EAAE,KAAG,OAGlE,CAAC"}
1
+ {"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../../src/math/fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,OAAO,CAAC;AACvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EACX,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,MAAM,aAAa,CAAC;AAErB;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,QAAQ,EAAE,EAAE,KAAK,MAAM,KAAG,EAKjD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,SAAS;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,GACzB,QAAQ,EAAE,EACV,QAAQ,SAAS,EACjB,eAAe,OAAO,EACtB,cAAc,OAAO,KACnB,eAoCF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GACjC,cAAc,MAAM,EACpB,YAAY,YAAY,EAAE,KACxB,kBAAkB,EAMpB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,GACtC,cAAc,MAAM,EACpB,YAAY,YAAY,EAAE,KACxB,MAKF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,GACrC,cAAc,MAAM,EACpB,YAAY,YAAY,EAAE,KACxB,MAOF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC5B,SAAS,SAAS,EAAE,EACpB,UAAU,MAAM,EAAE,KAChB,YAAY,EAQd,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GACjC,OAAO,MAAM,EACb,SAAS,SAAS,EAAE,KAClB,YAAY,EAYd,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,SAAS,KAAG,YAAY,EAErE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,YAAY,YAAY,EAAE,KAAG,OAGlE,CAAC"}
package/dist/math/fees.js CHANGED
@@ -2,16 +2,25 @@ import BN from "bn.js";
2
2
  import { BPS_DENOMINATOR, MIN_VAULT_BALANCE } from "./constants.js";
3
3
  /**
4
4
  * Calculates basis points of an amount.
5
- * result = (amount * bps) / 10000
5
+ * result = ceil(amount * bps / 10000)
6
6
  *
7
7
  * @param amount - The amount to calculate basis points of
8
8
  * @param bps - Basis points (1 bps = 0.01%)
9
9
  * @returns The calculated portion
10
10
  */
11
- export const calcBps = (amount, bps) => amount.mul(new BN(bps)).div(new BN(BPS_DENOMINATOR));
11
+ export const calcBps = (amount, bps) => {
12
+ if (bps === 0)
13
+ return new BN(0);
14
+ const numerator = amount.mul(new BN(bps));
15
+ const denom = new BN(BPS_DENOMINATOR);
16
+ return numerator.add(denom).sub(new BN(1)).div(denom);
17
+ };
12
18
  /**
13
19
  * Calculates fee distribution for a given trade amount.
14
- * Referral fees are carved from the protocol fee, not the trade amount.
20
+ * Matches the on-chain algorithm in `trade_utils::fees::calculate_fees`:
21
+ * - Single ceiling division for total fees
22
+ * - Proportional floor distribution for creator; protocol gets remainder (dust)
23
+ * - Referral fees use ceiling (carved from protocol fee, not trade amount)
15
24
  *
16
25
  * @param amount - Gross trade amount (before fees)
17
26
  * @param config - Fee configuration in basis points
@@ -20,20 +29,30 @@ export const calcBps = (amount, bps) => amount.mul(new BN(bps)).div(new BN(BPS_D
20
29
  * @returns Fee distribution breakdown
21
30
  */
22
31
  export const calculateFees = (amount, config, hasCreatorRef, hasTraderRef) => {
23
- const baseProtocolFee = calcBps(amount, config.protocolFeeBps);
24
- const creatorFee = calcBps(amount, config.creatorFeeBps);
25
- // Referral amounts are BPS of the protocol fee (not trade amount)
32
+ const totalBps = config.protocolFeeBps + config.creatorFeeBps;
33
+ if (totalBps === 0) {
34
+ return {
35
+ protocolFee: new BN(0),
36
+ creatorFee: new BN(0),
37
+ creatorReferralFee: new BN(0),
38
+ traderReferralFee: new BN(0),
39
+ totalFees: new BN(0),
40
+ };
41
+ }
42
+ // Single ceiling division for total fees (matches on-chain)
43
+ const totalFees = calcBps(amount, totalBps);
44
+ // Proportional floor distribution: creator gets floor, protocol gets remainder
45
+ const creatorFee = totalFees
46
+ .mul(new BN(config.creatorFeeBps))
47
+ .div(new BN(totalBps));
48
+ const protocolFee = totalFees.sub(creatorFee);
49
+ // Referral amounts are ceiling BPS of the protocol fee (not trade amount)
26
50
  const creatorReferralFee = hasCreatorRef
27
- ? calcBps(baseProtocolFee, config.creatorReferralBps)
51
+ ? calcBps(protocolFee, config.creatorReferralBps)
28
52
  : new BN(0);
29
53
  const traderReferralFee = hasTraderRef
30
- ? calcBps(baseProtocolFee, config.traderReferralBps)
54
+ ? calcBps(protocolFee, config.traderReferralBps)
31
55
  : new BN(0);
32
- // Protocol fee starts at base amount. On-chain, it is only reduced
33
- // when referral transfers actually succeed.
34
- const protocolFee = baseProtocolFee;
35
- // Referrals are carved from protocol fee (not additive), so total = protocol + creator.
36
- const totalFees = protocolFee.add(creatorFee);
37
56
  return {
38
57
  protocolFee,
39
58
  creatorFee,
@@ -1 +1 @@
1
- {"version":3,"file":"fees.js","sourceRoot":"","sources":["../../src/math/fees.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fees.js","sourceRoot":"","sources":["../../src/math/fees.ts"],"names":[],"mappings":"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"}
@@ -24,12 +24,12 @@ export declare const getFeeGlobalConfigPDA: (programId: PublicKey) => [PublicKey
24
24
  */
25
25
  export declare const getFeeVaultPDA: (feeConfig: PublicKey, programId: PublicKey) => [PublicKey, number];
26
26
  /**
27
- * Derives the recipient vault PDA for a specific recipient within a fee config.
27
+ * Derives the recipient vault PDA for a specific recipient.
28
+ * Vaults are shared across all fee configs — one vault per recipient.
28
29
  *
29
- * @param feeConfig - Fee config PDA address
30
30
  * @param recipient - Recipient wallet address
31
31
  * @param programId - Liquid Fees program ID
32
32
  * @returns Tuple of [PDA address, bump seed]
33
33
  */
34
- export declare const getRecipientVaultPDA: (feeConfig: PublicKey, recipient: PublicKey, programId: PublicKey) => [PublicKey, number];
34
+ export declare const getRecipientVaultPDA: (recipient: PublicKey, programId: PublicKey) => [PublicKey, number];
35
35
  //# sourceMappingURL=liquid-fees.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"liquid-fees.d.ts","sourceRoot":"","sources":["../../src/pda/liquid-fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAO5C;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAC3B,WAAW,SAAS,EACpB,WAAW,SAAS,EACpB,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAKpB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GACjC,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAEpB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAC1B,WAAW,SAAS,EACpB,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAKpB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAChC,WAAW,SAAS,EACpB,WAAW,SAAS,EACpB,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAKpB,CAAC"}
1
+ {"version":3,"file":"liquid-fees.d.ts","sourceRoot":"","sources":["../../src/pda/liquid-fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAO5C;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAC3B,WAAW,SAAS,EACpB,WAAW,SAAS,EACpB,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAKpB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GACjC,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAEpB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAC1B,WAAW,SAAS,EACpB,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAKpB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAChC,WAAW,SAAS,EACpB,WAAW,SAAS,KAClB,CAAC,SAAS,EAAE,MAAM,CAKpB,CAAC"}
@@ -34,14 +34,14 @@ export const getFeeVaultPDA = (feeConfig, programId) => {
34
34
  return PublicKey.findProgramAddressSync([SEED_FEE_VAULT, feeConfig.toBuffer()], programId);
35
35
  };
36
36
  /**
37
- * Derives the recipient vault PDA for a specific recipient within a fee config.
37
+ * Derives the recipient vault PDA for a specific recipient.
38
+ * Vaults are shared across all fee configs — one vault per recipient.
38
39
  *
39
- * @param feeConfig - Fee config PDA address
40
40
  * @param recipient - Recipient wallet address
41
41
  * @param programId - Liquid Fees program ID
42
42
  * @returns Tuple of [PDA address, bump seed]
43
43
  */
44
- export const getRecipientVaultPDA = (feeConfig, recipient, programId) => {
45
- return PublicKey.findProgramAddressSync([SEED_RECIPIENT_VAULT, feeConfig.toBuffer(), recipient.toBuffer()], programId);
44
+ export const getRecipientVaultPDA = (recipient, programId) => {
45
+ return PublicKey.findProgramAddressSync([SEED_RECIPIENT_VAULT, recipient.toBuffer()], programId);
46
46
  };
47
47
  //# sourceMappingURL=liquid-fees.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"liquid-fees.js","sourceRoot":"","sources":["../../src/pda/liquid-fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAChD,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACxD,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,SAAoB,EACpB,SAAoB,EACpB,SAAoB,EACE,EAAE;IACxB,OAAO,SAAS,CAAC,sBAAsB,CACtC,CAAC,eAAe,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EAC7D,SAAS,CACT,CAAC;AACH,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACpC,SAAoB,EACE,EAAE;IACxB,OAAO,SAAS,CAAC,sBAAsB,CAAC,CAAC,kBAAkB,CAAC,EAAE,SAAS,CAAC,CAAC;AAC1E,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC7B,SAAoB,EACpB,SAAoB,EACE,EAAE;IACxB,OAAO,SAAS,CAAC,sBAAsB,CACtC,CAAC,cAAc,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EACtC,SAAS,CACT,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CACnC,SAAoB,EACpB,SAAoB,EACpB,SAAoB,EACE,EAAE;IACxB,OAAO,SAAS,CAAC,sBAAsB,CACtC,CAAC,oBAAoB,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EAClE,SAAS,CACT,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"liquid-fees.js","sourceRoot":"","sources":["../../src/pda/liquid-fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAChD,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACxD,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC9B,SAAoB,EACpB,SAAoB,EACpB,SAAoB,EACE,EAAE;IACxB,OAAO,SAAS,CAAC,sBAAsB,CACtC,CAAC,eAAe,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EAC7D,SAAS,CACT,CAAC;AACH,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACpC,SAAoB,EACE,EAAE;IACxB,OAAO,SAAS,CAAC,sBAAsB,CAAC,CAAC,kBAAkB,CAAC,EAAE,SAAS,CAAC,CAAC;AAC1E,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC7B,SAAoB,EACpB,SAAoB,EACE,EAAE;IACxB,OAAO,SAAS,CAAC,sBAAsB,CACtC,CAAC,cAAc,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EACtC,SAAS,CACT,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CACnC,SAAoB,EACpB,SAAoB,EACE,EAAE;IACxB,OAAO,SAAS,CAAC,sBAAsB,CACtC,CAAC,oBAAoB,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EAC5C,SAAS,CACT,CAAC;AACH,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liquid-af/sdk",
3
- "version": "0.10.4",
3
+ "version": "0.11.0",
4
4
  "description": "TypeScript SDK for the Liquid DeFi protocol on Solana",
5
5
  "type": "module",
6
6
  "publishConfig": {
package/src/client.ts CHANGED
@@ -709,8 +709,6 @@ export class LiquidClient {
709
709
  /** Builds a claimFees instruction. Recipient claims accumulated SOL from their vault PDA. */
710
710
  buildClaimFees(params: {
711
711
  recipient: PublicKey;
712
- tokenMint: PublicKey;
713
- quoteMint: PublicKey;
714
712
  }): Promise<TransactionInstruction> {
715
713
  return buildClaimFees({ ...params, config: this.config });
716
714
  }
@@ -718,7 +716,6 @@ export class LiquidClient {
718
716
  /** Builds a claimTokenFees instruction. Recipient claims accumulated tokens from their vault ATA. */
719
717
  buildClaimTokenFees(params: {
720
718
  recipient: PublicKey;
721
- tokenMint: PublicKey;
722
719
  quoteMint: PublicKey;
723
720
  }): Promise<TransactionInstruction> {
724
721
  return buildClaimTokenFees({ ...params, config: this.config });
@@ -1027,13 +1024,9 @@ export class LiquidClient {
1027
1024
  return getFeeVaultPDA(feeConfig, this.config.liquidFeesProgramId);
1028
1025
  }
1029
1026
 
1030
- /** Derives the recipient vault PDA for a specific recipient within a fee config. */
1031
- getRecipientVaultPDA(
1032
- feeConfig: PublicKey,
1033
- recipient: PublicKey,
1034
- ): [PublicKey, number] {
1027
+ /** Derives the recipient vault PDA for a specific recipient. */
1028
+ getRecipientVaultPDA(recipient: PublicKey): [PublicKey, number] {
1035
1029
  return getRecipientVaultPDA(
1036
- feeConfig,
1037
1030
  recipient,
1038
1031
  this.config.liquidFeesProgramId,
1039
1032
  );