@liquid-af/sdk 0.1.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 (225) hide show
  1. package/README.md +776 -0
  2. package/dist/accounts/index.d.ts +5 -0
  3. package/dist/accounts/index.d.ts.map +1 -0
  4. package/dist/accounts/index.js +5 -0
  5. package/dist/accounts/index.js.map +1 -0
  6. package/dist/accounts/liquid-fees.d.ts +63 -0
  7. package/dist/accounts/liquid-fees.d.ts.map +1 -0
  8. package/dist/accounts/liquid-fees.js +27 -0
  9. package/dist/accounts/liquid-fees.js.map +1 -0
  10. package/dist/accounts/liquid-state.d.ts +112 -0
  11. package/dist/accounts/liquid-state.d.ts.map +1 -0
  12. package/dist/accounts/liquid-state.js +92 -0
  13. package/dist/accounts/liquid-state.js.map +1 -0
  14. package/dist/accounts/liquid-swap.d.ts +97 -0
  15. package/dist/accounts/liquid-swap.d.ts.map +1 -0
  16. package/dist/accounts/liquid-swap.js +54 -0
  17. package/dist/accounts/liquid-swap.js.map +1 -0
  18. package/dist/accounts/liquid.d.ts +175 -0
  19. package/dist/accounts/liquid.d.ts.map +1 -0
  20. package/dist/accounts/liquid.js +66 -0
  21. package/dist/accounts/liquid.js.map +1 -0
  22. package/dist/client.d.ts +621 -0
  23. package/dist/client.d.ts.map +1 -0
  24. package/dist/client.js +511 -0
  25. package/dist/client.js.map +1 -0
  26. package/dist/config.d.ts +56 -0
  27. package/dist/config.d.ts.map +1 -0
  28. package/dist/config.js +44 -0
  29. package/dist/config.js.map +1 -0
  30. package/dist/errors.d.ts +39 -0
  31. package/dist/errors.d.ts.map +1 -0
  32. package/dist/errors.js +63 -0
  33. package/dist/errors.js.map +1 -0
  34. package/dist/events/index.d.ts +4 -0
  35. package/dist/events/index.d.ts.map +1 -0
  36. package/dist/events/index.js +2 -0
  37. package/dist/events/index.js.map +1 -0
  38. package/dist/events/parser.d.ts +40 -0
  39. package/dist/events/parser.d.ts.map +1 -0
  40. package/dist/events/parser.js +67 -0
  41. package/dist/events/parser.js.map +1 -0
  42. package/dist/events/types.d.ts +286 -0
  43. package/dist/events/types.d.ts.map +1 -0
  44. package/dist/events/types.js +2 -0
  45. package/dist/events/types.js.map +1 -0
  46. package/dist/helpers/index.d.ts +4 -0
  47. package/dist/helpers/index.d.ts.map +1 -0
  48. package/dist/helpers/index.js +3 -0
  49. package/dist/helpers/index.js.map +1 -0
  50. package/dist/helpers/preview.d.ts +259 -0
  51. package/dist/helpers/preview.d.ts.map +1 -0
  52. package/dist/helpers/preview.js +458 -0
  53. package/dist/helpers/preview.js.map +1 -0
  54. package/dist/helpers/user.d.ts +11 -0
  55. package/dist/helpers/user.d.ts.map +1 -0
  56. package/dist/helpers/user.js +20 -0
  57. package/dist/helpers/user.js.map +1 -0
  58. package/dist/idl/index.d.ts +53 -0
  59. package/dist/idl/index.d.ts.map +1 -0
  60. package/dist/idl/index.js +64 -0
  61. package/dist/idl/index.js.map +1 -0
  62. package/dist/idl/liquid.d.ts +10523 -0
  63. package/dist/idl/liquid.d.ts.map +1 -0
  64. package/dist/idl/liquid.js +2 -0
  65. package/dist/idl/liquid.js.map +1 -0
  66. package/dist/idl/liquid.json +10516 -0
  67. package/dist/idl/liquid_fees.d.ts +1520 -0
  68. package/dist/idl/liquid_fees.d.ts.map +1 -0
  69. package/dist/idl/liquid_fees.js +2 -0
  70. package/dist/idl/liquid_fees.js.map +1 -0
  71. package/dist/idl/liquid_fees.json +1513 -0
  72. package/dist/idl/liquid_state.d.ts +2936 -0
  73. package/dist/idl/liquid_state.d.ts.map +1 -0
  74. package/dist/idl/liquid_state.js +2 -0
  75. package/dist/idl/liquid_state.js.map +1 -0
  76. package/dist/idl/liquid_state.json +2929 -0
  77. package/dist/idl/liquid_swap.d.ts +5849 -0
  78. package/dist/idl/liquid_swap.d.ts.map +1 -0
  79. package/dist/idl/liquid_swap.js +2 -0
  80. package/dist/idl/liquid_swap.js.map +1 -0
  81. package/dist/idl/liquid_swap.json +5842 -0
  82. package/dist/index.d.ts +19 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +15 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/instructions/index.d.ts +9 -0
  87. package/dist/instructions/index.d.ts.map +1 -0
  88. package/dist/instructions/index.js +9 -0
  89. package/dist/instructions/index.js.map +1 -0
  90. package/dist/instructions/liquid-fees.d.ts +111 -0
  91. package/dist/instructions/liquid-fees.d.ts.map +1 -0
  92. package/dist/instructions/liquid-fees.js +169 -0
  93. package/dist/instructions/liquid-fees.js.map +1 -0
  94. package/dist/instructions/liquid-state.d.ts +173 -0
  95. package/dist/instructions/liquid-state.d.ts.map +1 -0
  96. package/dist/instructions/liquid-state.js +194 -0
  97. package/dist/instructions/liquid-state.js.map +1 -0
  98. package/dist/instructions/liquid-swap.d.ts +122 -0
  99. package/dist/instructions/liquid-swap.d.ts.map +1 -0
  100. package/dist/instructions/liquid-swap.js +167 -0
  101. package/dist/instructions/liquid-swap.js.map +1 -0
  102. package/dist/instructions/liquid.d.ts +297 -0
  103. package/dist/instructions/liquid.d.ts.map +1 -0
  104. package/dist/instructions/liquid.js +483 -0
  105. package/dist/instructions/liquid.js.map +1 -0
  106. package/dist/instructions/program-cache.d.ts +35 -0
  107. package/dist/instructions/program-cache.d.ts.map +1 -0
  108. package/dist/instructions/program-cache.js +68 -0
  109. package/dist/instructions/program-cache.js.map +1 -0
  110. package/dist/math/amm.d.ts +42 -0
  111. package/dist/math/amm.d.ts.map +1 -0
  112. package/dist/math/amm.js +109 -0
  113. package/dist/math/amm.js.map +1 -0
  114. package/dist/math/bonding-curve.d.ts +34 -0
  115. package/dist/math/bonding-curve.d.ts.map +1 -0
  116. package/dist/math/bonding-curve.js +80 -0
  117. package/dist/math/bonding-curve.js.map +1 -0
  118. package/dist/math/constants.d.ts +14 -0
  119. package/dist/math/constants.d.ts.map +1 -0
  120. package/dist/math/constants.js +14 -0
  121. package/dist/math/constants.js.map +1 -0
  122. package/dist/math/fees.d.ts +88 -0
  123. package/dist/math/fees.d.ts.map +1 -0
  124. package/dist/math/fees.js +135 -0
  125. package/dist/math/fees.js.map +1 -0
  126. package/dist/math/index.d.ts +8 -0
  127. package/dist/math/index.d.ts.map +1 -0
  128. package/dist/math/index.js +6 -0
  129. package/dist/math/index.js.map +1 -0
  130. package/dist/math/tiered-fees.d.ts +80 -0
  131. package/dist/math/tiered-fees.d.ts.map +1 -0
  132. package/dist/math/tiered-fees.js +129 -0
  133. package/dist/math/tiered-fees.js.map +1 -0
  134. package/dist/oracle.d.ts +53 -0
  135. package/dist/oracle.d.ts.map +1 -0
  136. package/dist/oracle.js +70 -0
  137. package/dist/oracle.js.map +1 -0
  138. package/dist/pda/index.d.ts +89 -0
  139. package/dist/pda/index.d.ts.map +1 -0
  140. package/dist/pda/index.js +127 -0
  141. package/dist/pda/index.js.map +1 -0
  142. package/dist/pda/liquid-fees.d.ts +27 -0
  143. package/dist/pda/liquid-fees.d.ts.map +1 -0
  144. package/dist/pda/liquid-fees.js +36 -0
  145. package/dist/pda/liquid-fees.js.map +1 -0
  146. package/dist/pda/liquid-state.d.ts +56 -0
  147. package/dist/pda/liquid-state.d.ts.map +1 -0
  148. package/dist/pda/liquid-state.js +79 -0
  149. package/dist/pda/liquid-state.js.map +1 -0
  150. package/dist/pda/liquid-swap.d.ts +76 -0
  151. package/dist/pda/liquid-swap.d.ts.map +1 -0
  152. package/dist/pda/liquid-swap.js +103 -0
  153. package/dist/pda/liquid-swap.js.map +1 -0
  154. package/dist/pda/liquid.d.ts +67 -0
  155. package/dist/pda/liquid.d.ts.map +1 -0
  156. package/dist/pda/liquid.js +91 -0
  157. package/dist/pda/liquid.js.map +1 -0
  158. package/dist/provider.d.ts +26 -0
  159. package/dist/provider.d.ts.map +1 -0
  160. package/dist/provider.js +47 -0
  161. package/dist/provider.js.map +1 -0
  162. package/dist/transaction/builder.d.ts +30 -0
  163. package/dist/transaction/builder.d.ts.map +1 -0
  164. package/dist/transaction/builder.js +48 -0
  165. package/dist/transaction/builder.js.map +1 -0
  166. package/dist/transaction/index.d.ts +3 -0
  167. package/dist/transaction/index.d.ts.map +1 -0
  168. package/dist/transaction/index.js +3 -0
  169. package/dist/transaction/index.js.map +1 -0
  170. package/dist/transaction/send.d.ts +25 -0
  171. package/dist/transaction/send.d.ts.map +1 -0
  172. package/dist/transaction/send.js +52 -0
  173. package/dist/transaction/send.js.map +1 -0
  174. package/dist/types.d.ts +311 -0
  175. package/dist/types.d.ts.map +1 -0
  176. package/dist/types.js +46 -0
  177. package/dist/types.js.map +1 -0
  178. package/package.json +112 -0
  179. package/src/accounts/index.ts +26 -0
  180. package/src/accounts/liquid-fees.ts +38 -0
  181. package/src/accounts/liquid-state.ts +134 -0
  182. package/src/accounts/liquid-swap.ts +79 -0
  183. package/src/accounts/liquid.ts +100 -0
  184. package/src/client.ts +1001 -0
  185. package/src/config.ts +91 -0
  186. package/src/errors.ts +94 -0
  187. package/src/events/index.ts +42 -0
  188. package/src/events/parser.ts +90 -0
  189. package/src/events/types.ts +310 -0
  190. package/src/helpers/index.ts +23 -0
  191. package/src/helpers/preview.ts +798 -0
  192. package/src/helpers/user.ts +24 -0
  193. package/src/idl/index.ts +94 -0
  194. package/src/idl/liquid.json +10516 -0
  195. package/src/idl/liquid.ts +10522 -0
  196. package/src/idl/liquid_fees.json +1513 -0
  197. package/src/idl/liquid_fees.ts +1519 -0
  198. package/src/idl/liquid_state.json +2929 -0
  199. package/src/idl/liquid_state.ts +2935 -0
  200. package/src/idl/liquid_swap.json +5842 -0
  201. package/src/idl/liquid_swap.ts +5848 -0
  202. package/src/index.ts +98 -0
  203. package/src/instructions/index.ts +109 -0
  204. package/src/instructions/liquid-fees.ts +289 -0
  205. package/src/instructions/liquid-state.ts +336 -0
  206. package/src/instructions/liquid-swap.ts +414 -0
  207. package/src/instructions/liquid.ts +884 -0
  208. package/src/instructions/program-cache.ts +106 -0
  209. package/src/math/amm.ts +146 -0
  210. package/src/math/bonding-curve.ts +122 -0
  211. package/src/math/constants.ts +19 -0
  212. package/src/math/fees.ts +191 -0
  213. package/src/math/index.ts +40 -0
  214. package/src/math/tiered-fees.ts +165 -0
  215. package/src/oracle.ts +97 -0
  216. package/src/pda/index.ts +331 -0
  217. package/src/pda/liquid-fees.ts +58 -0
  218. package/src/pda/liquid-state.ts +123 -0
  219. package/src/pda/liquid-swap.ts +162 -0
  220. package/src/pda/liquid.ts +152 -0
  221. package/src/provider.ts +60 -0
  222. package/src/transaction/builder.ts +80 -0
  223. package/src/transaction/index.ts +6 -0
  224. package/src/transaction/send.ts +72 -0
  225. package/src/types.ts +354 -0
@@ -0,0 +1,414 @@
1
+ import type { PublicKey, TransactionInstruction } from "@solana/web3.js";
2
+ import {
3
+ getAssociatedTokenAddressSync,
4
+ TOKEN_PROGRAM_ID,
5
+ } from "@solana/spl-token";
6
+ import type BN from "bn.js";
7
+ import type { LiquidConfig } from "../config.js";
8
+ import { getCachedSwapProgram } from "./program-cache.js";
9
+
10
+ export interface BuildCreatePoolParams {
11
+ signer: PublicKey;
12
+ payer?: PublicKey;
13
+ baseMint: PublicKey;
14
+ quoteMint: PublicKey;
15
+ baseTokenProgram: PublicKey;
16
+ quoteTokenProgram: PublicKey;
17
+ initAmountBase: BN;
18
+ initAmountQuote: BN;
19
+ config: LiquidConfig;
20
+ }
21
+
22
+ /**
23
+ * Builds a create pool instruction.
24
+ *
25
+ * @param params - {@link BuildCreatePoolParams}
26
+ * @returns Transaction instruction
27
+ */
28
+ export function buildCreatePool(
29
+ params: BuildCreatePoolParams
30
+ ): Promise<TransactionInstruction> {
31
+ const {
32
+ signer,
33
+ payer,
34
+ baseMint,
35
+ quoteMint,
36
+ baseTokenProgram,
37
+ quoteTokenProgram,
38
+ initAmountBase,
39
+ initAmountQuote,
40
+ config,
41
+ } = params;
42
+
43
+ const program = getCachedSwapProgram(config);
44
+
45
+ const creatorBase = getAssociatedTokenAddressSync(
46
+ baseMint,
47
+ signer,
48
+ false,
49
+ baseTokenProgram
50
+ );
51
+ const creatorQuote = getAssociatedTokenAddressSync(
52
+ quoteMint,
53
+ signer,
54
+ false,
55
+ quoteTokenProgram
56
+ );
57
+
58
+ return program.methods
59
+ .create(initAmountBase, initAmountQuote, null)
60
+ .accounts({
61
+ signer,
62
+ payer: payer ?? signer,
63
+ baseMint,
64
+ quoteMint,
65
+ creatorBase,
66
+ creatorQuote,
67
+ baseTokenProgram,
68
+ quoteTokenProgram,
69
+ })
70
+ .instruction();
71
+ }
72
+
73
+ export interface BuildSwapBuyParams {
74
+ payer: PublicKey;
75
+ creator: PublicKey;
76
+ baseMint: PublicKey;
77
+ quoteMint: PublicKey;
78
+ baseTokenProgram: PublicKey;
79
+ quoteTokenProgram: PublicKey;
80
+ maxAmountIn: BN;
81
+ amountOut: BN;
82
+ feeRecipient: PublicKey;
83
+ oraclePriceFeed?: PublicKey;
84
+ config: LiquidConfig;
85
+ }
86
+
87
+ /**
88
+ * Builds a buy swap instruction (quote -> base).
89
+ *
90
+ * @param params - {@link BuildSwapBuyParams}
91
+ * @returns Transaction instruction
92
+ */
93
+ export function buildSwapBuy(
94
+ params: BuildSwapBuyParams
95
+ ): Promise<TransactionInstruction> {
96
+ const {
97
+ payer,
98
+ creator,
99
+ baseMint,
100
+ quoteMint,
101
+ baseTokenProgram,
102
+ quoteTokenProgram,
103
+ maxAmountIn,
104
+ amountOut,
105
+ feeRecipient,
106
+ oraclePriceFeed,
107
+ config,
108
+ } = params;
109
+
110
+ const program = getCachedSwapProgram(config);
111
+
112
+ const baseTokenAccount = getAssociatedTokenAddressSync(
113
+ baseMint,
114
+ payer,
115
+ false,
116
+ baseTokenProgram
117
+ );
118
+ const quoteTokenAccount = getAssociatedTokenAddressSync(
119
+ quoteMint,
120
+ payer,
121
+ false,
122
+ quoteTokenProgram
123
+ );
124
+ return program.methods
125
+ .buy(maxAmountIn, amountOut)
126
+ .accountsPartial({
127
+ payer,
128
+ creator,
129
+ baseTokenAccount,
130
+ quoteTokenAccount,
131
+ baseTokenProgram,
132
+ quoteTokenProgram,
133
+ baseMint,
134
+ quoteMint,
135
+ feeRecipient,
136
+ liquidState: {
137
+ user: payer,
138
+ tokenMint: baseMint,
139
+ },
140
+ ...(oraclePriceFeed ? { oraclePriceFeed } : {}),
141
+ })
142
+ .instruction();
143
+ }
144
+
145
+ export interface BuildSwapSellParams {
146
+ payer: PublicKey;
147
+ creator: PublicKey;
148
+ baseMint: PublicKey;
149
+ quoteMint: PublicKey;
150
+ baseTokenProgram: PublicKey;
151
+ quoteTokenProgram: PublicKey;
152
+ amountIn: BN;
153
+ minimumAmountOut: BN;
154
+ feeRecipient: PublicKey;
155
+ oraclePriceFeed?: PublicKey;
156
+ config: LiquidConfig;
157
+ }
158
+
159
+ /**
160
+ * Builds a sell swap instruction (base -> quote).
161
+ *
162
+ * @param params - {@link BuildSwapSellParams}
163
+ * @returns Transaction instruction
164
+ */
165
+ export function buildSwapSell(
166
+ params: BuildSwapSellParams
167
+ ): Promise<TransactionInstruction> {
168
+ const {
169
+ payer,
170
+ creator,
171
+ baseMint,
172
+ quoteMint,
173
+ baseTokenProgram,
174
+ quoteTokenProgram,
175
+ amountIn,
176
+ minimumAmountOut,
177
+ feeRecipient,
178
+ oraclePriceFeed,
179
+ config,
180
+ } = params;
181
+
182
+ const program = getCachedSwapProgram(config);
183
+
184
+ const baseTokenAccount = getAssociatedTokenAddressSync(
185
+ baseMint,
186
+ payer,
187
+ false,
188
+ baseTokenProgram
189
+ );
190
+ const quoteTokenAccount = getAssociatedTokenAddressSync(
191
+ quoteMint,
192
+ payer,
193
+ false,
194
+ quoteTokenProgram
195
+ );
196
+ return program.methods
197
+ .sell(amountIn, minimumAmountOut)
198
+ .accountsPartial({
199
+ payer,
200
+ creator,
201
+ baseTokenAccount,
202
+ quoteTokenAccount,
203
+ baseTokenProgram,
204
+ quoteTokenProgram,
205
+ baseMint,
206
+ quoteMint,
207
+ feeRecipient,
208
+ liquidState: {
209
+ user: payer,
210
+ tokenMint: baseMint,
211
+ },
212
+ ...(oraclePriceFeed ? { oraclePriceFeed } : {}),
213
+ })
214
+ .instruction();
215
+ }
216
+
217
+ export interface BuildDepositParams {
218
+ owner: PublicKey;
219
+ poolAddress: PublicKey;
220
+ baseMint: PublicKey;
221
+ quoteMint: PublicKey;
222
+ baseTokenProgram: PublicKey;
223
+ quoteTokenProgram: PublicKey;
224
+ baseVault: PublicKey;
225
+ quoteVault: PublicKey;
226
+ lpMint: PublicKey;
227
+ lpTokenAmount: BN;
228
+ maximumBaseAmount: BN;
229
+ maximumQuoteAmount: BN;
230
+ config: LiquidConfig;
231
+ }
232
+
233
+ /**
234
+ * Builds a deposit (add liquidity) instruction.
235
+ *
236
+ * @param params - {@link BuildDepositParams}
237
+ * @returns Transaction instruction
238
+ */
239
+ export function buildDeposit(
240
+ params: BuildDepositParams
241
+ ): Promise<TransactionInstruction> {
242
+ const {
243
+ owner,
244
+ poolAddress,
245
+ baseMint,
246
+ quoteMint,
247
+ baseTokenProgram,
248
+ quoteTokenProgram,
249
+ baseVault,
250
+ quoteVault,
251
+ lpMint,
252
+ lpTokenAmount,
253
+ maximumBaseAmount,
254
+ maximumQuoteAmount,
255
+ config,
256
+ } = params;
257
+
258
+ const program = getCachedSwapProgram(config);
259
+
260
+ const ownerLpToken = getAssociatedTokenAddressSync(
261
+ lpMint,
262
+ owner,
263
+ false,
264
+ TOKEN_PROGRAM_ID
265
+ );
266
+ const baseAccount = getAssociatedTokenAddressSync(
267
+ baseMint,
268
+ owner,
269
+ false,
270
+ baseTokenProgram
271
+ );
272
+ const quoteAccount = getAssociatedTokenAddressSync(
273
+ quoteMint,
274
+ owner,
275
+ false,
276
+ quoteTokenProgram
277
+ );
278
+
279
+ return program.methods
280
+ .deposit(lpTokenAmount, maximumBaseAmount, maximumQuoteAmount)
281
+ .accounts({
282
+ owner,
283
+ poolState: poolAddress,
284
+ ownerLpToken,
285
+ baseAccount,
286
+ quoteAccount,
287
+ baseMint,
288
+ quoteMint,
289
+ baseVault,
290
+ quoteVault,
291
+ lpMint,
292
+ })
293
+ .instruction();
294
+ }
295
+
296
+ export interface BuildWithdrawParams {
297
+ owner: PublicKey;
298
+ poolAddress: PublicKey;
299
+ baseMint: PublicKey;
300
+ quoteMint: PublicKey;
301
+ baseTokenProgram: PublicKey;
302
+ quoteTokenProgram: PublicKey;
303
+ baseVault: PublicKey;
304
+ quoteVault: PublicKey;
305
+ lpMint: PublicKey;
306
+ lpTokenAmount: BN;
307
+ minimumBaseAmount: BN;
308
+ minimumQuoteAmount: BN;
309
+ config: LiquidConfig;
310
+ }
311
+
312
+ /**
313
+ * Builds a withdraw (remove liquidity) instruction.
314
+ *
315
+ * @param params - {@link BuildWithdrawParams}
316
+ * @returns Transaction instruction
317
+ */
318
+ export function buildWithdraw(
319
+ params: BuildWithdrawParams
320
+ ): Promise<TransactionInstruction> {
321
+ const {
322
+ owner,
323
+ poolAddress,
324
+ baseMint,
325
+ quoteMint,
326
+ baseTokenProgram,
327
+ quoteTokenProgram,
328
+ baseVault,
329
+ quoteVault,
330
+ lpMint,
331
+ lpTokenAmount,
332
+ minimumBaseAmount,
333
+ minimumQuoteAmount,
334
+ config,
335
+ } = params;
336
+
337
+ const program = getCachedSwapProgram(config);
338
+
339
+ const ownerLpToken = getAssociatedTokenAddressSync(
340
+ lpMint,
341
+ owner,
342
+ false,
343
+ TOKEN_PROGRAM_ID
344
+ );
345
+ const baseAccount = getAssociatedTokenAddressSync(
346
+ baseMint,
347
+ owner,
348
+ false,
349
+ baseTokenProgram
350
+ );
351
+ const quoteAccount = getAssociatedTokenAddressSync(
352
+ quoteMint,
353
+ owner,
354
+ false,
355
+ quoteTokenProgram
356
+ );
357
+
358
+ return program.methods
359
+ .withdraw(lpTokenAmount, minimumBaseAmount, minimumQuoteAmount)
360
+ .accounts({
361
+ owner,
362
+ poolState: poolAddress,
363
+ ownerLpToken,
364
+ baseAccount,
365
+ quoteAccount,
366
+ baseMint,
367
+ quoteMint,
368
+ baseVault,
369
+ quoteVault,
370
+ lpMint,
371
+ })
372
+ .instruction();
373
+ }
374
+
375
+ export interface BuildSwapExecuteBuybackParams {
376
+ payer: PublicKey;
377
+ baseMint: PublicKey;
378
+ quoteMint: PublicKey;
379
+ baseTokenProgram: PublicKey;
380
+ quoteTokenProgram: PublicKey;
381
+ config: LiquidConfig;
382
+ }
383
+
384
+ /**
385
+ * Builds an executeBuyback instruction for an AMM pool.
386
+ * Permissionless. Only works when fee config is Revoked.
387
+ *
388
+ * @param params - {@link BuildSwapExecuteBuybackParams}
389
+ * @returns Transaction instruction
390
+ */
391
+ export function buildSwapExecuteBuyback(
392
+ params: BuildSwapExecuteBuybackParams
393
+ ): Promise<TransactionInstruction> {
394
+ const {
395
+ payer,
396
+ baseMint,
397
+ quoteMint,
398
+ baseTokenProgram,
399
+ quoteTokenProgram,
400
+ config,
401
+ } = params;
402
+ const program = getCachedSwapProgram(config);
403
+
404
+ return program.methods
405
+ .executeBuyback()
406
+ .accounts({
407
+ payer,
408
+ baseMint,
409
+ quoteMint,
410
+ baseTokenProgram,
411
+ quoteTokenProgram,
412
+ })
413
+ .instruction();
414
+ }