@hobba-io/core 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 (190) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +87 -0
  3. package/dist/amountUtils.d.ts +15 -0
  4. package/dist/amountUtils.d.ts.map +1 -0
  5. package/dist/amountUtils.js +59 -0
  6. package/dist/amountUtils.js.map +1 -0
  7. package/dist/constants.d.ts +148 -0
  8. package/dist/constants.d.ts.map +1 -0
  9. package/dist/constants.js +231 -0
  10. package/dist/constants.js.map +1 -0
  11. package/dist/errors.d.ts +7 -0
  12. package/dist/errors.d.ts.map +1 -0
  13. package/dist/errors.js +29 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/executeAction.d.ts +36 -0
  16. package/dist/executeAction.d.ts.map +1 -0
  17. package/dist/executeAction.js +606 -0
  18. package/dist/executeAction.js.map +1 -0
  19. package/dist/executeDepositBorrow.d.ts +49 -0
  20. package/dist/executeDepositBorrow.d.ts.map +1 -0
  21. package/dist/executeDepositBorrow.js +444 -0
  22. package/dist/executeDepositBorrow.js.map +1 -0
  23. package/dist/idl/hobba.json +5072 -0
  24. package/dist/idl.d.ts +783 -0
  25. package/dist/idl.d.ts.map +1 -0
  26. package/dist/idl.js +7 -0
  27. package/dist/idl.js.map +1 -0
  28. package/dist/index.d.ts +17 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +22 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/juplend/accountResolvers.d.ts +106 -0
  33. package/dist/juplend/accountResolvers.d.ts.map +1 -0
  34. package/dist/juplend/accountResolvers.js +148 -0
  35. package/dist/juplend/accountResolvers.js.map +1 -0
  36. package/dist/juplend/operateRemaining.d.ts +11 -0
  37. package/dist/juplend/operateRemaining.d.ts.map +1 -0
  38. package/dist/juplend/operateRemaining.js +46 -0
  39. package/dist/juplend/operateRemaining.js.map +1 -0
  40. package/dist/juplend/positionInit.d.ts +34 -0
  41. package/dist/juplend/positionInit.d.ts.map +1 -0
  42. package/dist/juplend/positionInit.js +56 -0
  43. package/dist/juplend/positionInit.js.map +1 -0
  44. package/dist/juplend/positionParser.d.ts +8 -0
  45. package/dist/juplend/positionParser.d.ts.map +1 -0
  46. package/dist/juplend/positionParser.js +30 -0
  47. package/dist/juplend/positionParser.js.map +1 -0
  48. package/dist/juplend/sdkApi.d.ts +39 -0
  49. package/dist/juplend/sdkApi.d.ts.map +1 -0
  50. package/dist/juplend/sdkApi.js +68 -0
  51. package/dist/juplend/sdkApi.js.map +1 -0
  52. package/dist/juplend/tickMath.d.ts +19 -0
  53. package/dist/juplend/tickMath.d.ts.map +1 -0
  54. package/dist/juplend/tickMath.js +91 -0
  55. package/dist/juplend/tickMath.js.map +1 -0
  56. package/dist/juplend/tickUtils.d.ts +20 -0
  57. package/dist/juplend/tickUtils.d.ts.map +1 -0
  58. package/dist/juplend/tickUtils.js +115 -0
  59. package/dist/juplend/tickUtils.js.map +1 -0
  60. package/dist/juplend/vaultConfigParser.d.ts +25 -0
  61. package/dist/juplend/vaultConfigParser.d.ts.map +1 -0
  62. package/dist/juplend/vaultConfigParser.js +38 -0
  63. package/dist/juplend/vaultConfigParser.js.map +1 -0
  64. package/dist/kamino/accountResolvers.d.ts +110 -0
  65. package/dist/kamino/accountResolvers.d.ts.map +1 -0
  66. package/dist/kamino/accountResolvers.js +220 -0
  67. package/dist/kamino/accountResolvers.js.map +1 -0
  68. package/dist/kamino/obligationParser.d.ts +13 -0
  69. package/dist/kamino/obligationParser.d.ts.map +1 -0
  70. package/dist/kamino/obligationParser.js +92 -0
  71. package/dist/kamino/obligationParser.js.map +1 -0
  72. package/dist/kamino/refreshInstructions.d.ts +4 -0
  73. package/dist/kamino/refreshInstructions.d.ts.map +1 -0
  74. package/dist/kamino/refreshInstructions.js +32 -0
  75. package/dist/kamino/refreshInstructions.js.map +1 -0
  76. package/dist/limits.d.ts +87 -0
  77. package/dist/limits.d.ts.map +1 -0
  78. package/dist/limits.js +174 -0
  79. package/dist/limits.js.map +1 -0
  80. package/dist/marketConfig.d.ts +35 -0
  81. package/dist/marketConfig.d.ts.map +1 -0
  82. package/dist/marketConfig.js +85 -0
  83. package/dist/marketConfig.js.map +1 -0
  84. package/dist/oracle/scopePrice.d.ts +7 -0
  85. package/dist/oracle/scopePrice.d.ts.map +1 -0
  86. package/dist/oracle/scopePrice.js +31 -0
  87. package/dist/oracle/scopePrice.js.map +1 -0
  88. package/dist/pdas.d.ts +33 -0
  89. package/dist/pdas.d.ts.map +1 -0
  90. package/dist/pdas.js +116 -0
  91. package/dist/pdas.js.map +1 -0
  92. package/dist/position.d.ts +45 -0
  93. package/dist/position.d.ts.map +1 -0
  94. package/dist/position.js +68 -0
  95. package/dist/position.js.map +1 -0
  96. package/dist/positionMetrics.d.ts +108 -0
  97. package/dist/positionMetrics.d.ts.map +1 -0
  98. package/dist/positionMetrics.js +238 -0
  99. package/dist/positionMetrics.js.map +1 -0
  100. package/dist/program.d.ts +12 -0
  101. package/dist/program.d.ts.map +1 -0
  102. package/dist/program.js +24 -0
  103. package/dist/program.js.map +1 -0
  104. package/dist/quote.d.ts +90 -0
  105. package/dist/quote.d.ts.map +1 -0
  106. package/dist/quote.js +198 -0
  107. package/dist/quote.js.map +1 -0
  108. package/dist/rates/borrowRates.d.ts +44 -0
  109. package/dist/rates/borrowRates.d.ts.map +1 -0
  110. package/dist/rates/borrowRates.js +229 -0
  111. package/dist/rates/borrowRates.js.map +1 -0
  112. package/dist/rates/collateralInfo.d.ts +21 -0
  113. package/dist/rates/collateralInfo.d.ts.map +1 -0
  114. package/dist/rates/collateralInfo.js +104 -0
  115. package/dist/rates/collateralInfo.js.map +1 -0
  116. package/dist/rates/constants.d.ts +22 -0
  117. package/dist/rates/constants.d.ts.map +1 -0
  118. package/dist/rates/constants.js +70 -0
  119. package/dist/rates/constants.js.map +1 -0
  120. package/dist/rates/index.d.ts +11 -0
  121. package/dist/rates/index.d.ts.map +1 -0
  122. package/dist/rates/index.js +11 -0
  123. package/dist/rates/index.js.map +1 -0
  124. package/dist/rates/kaminoApi.d.ts +24 -0
  125. package/dist/rates/kaminoApi.d.ts.map +1 -0
  126. package/dist/rates/kaminoApi.js +98 -0
  127. package/dist/rates/kaminoApi.js.map +1 -0
  128. package/dist/rates/supplyRates.d.ts +23 -0
  129. package/dist/rates/supplyRates.d.ts.map +1 -0
  130. package/dist/rates/supplyRates.js +67 -0
  131. package/dist/rates/supplyRates.js.map +1 -0
  132. package/dist/transactionBuilder.d.ts +5 -0
  133. package/dist/transactionBuilder.d.ts.map +1 -0
  134. package/dist/transactionBuilder.js +287 -0
  135. package/dist/transactionBuilder.js.map +1 -0
  136. package/dist/txHelpers.d.ts +16 -0
  137. package/dist/txHelpers.d.ts.map +1 -0
  138. package/dist/txHelpers.js +82 -0
  139. package/dist/txHelpers.js.map +1 -0
  140. package/dist/userState.d.ts +21 -0
  141. package/dist/userState.d.ts.map +1 -0
  142. package/dist/userState.js +60 -0
  143. package/dist/userState.js.map +1 -0
  144. package/dist/vault/vaultAccounts.d.ts +82 -0
  145. package/dist/vault/vaultAccounts.d.ts.map +1 -0
  146. package/dist/vault/vaultAccounts.js +275 -0
  147. package/dist/vault/vaultAccounts.js.map +1 -0
  148. package/dist/wallet.d.ts +12 -0
  149. package/dist/wallet.d.ts.map +1 -0
  150. package/dist/wallet.js +2 -0
  151. package/dist/wallet.js.map +1 -0
  152. package/package.json +63 -0
  153. package/src/amountUtils.ts +69 -0
  154. package/src/constants.ts +263 -0
  155. package/src/errors.ts +33 -0
  156. package/src/executeAction.ts +884 -0
  157. package/src/executeDepositBorrow.ts +677 -0
  158. package/src/idl/hobba.json +5072 -0
  159. package/src/idl.ts +7 -0
  160. package/src/index.ts +21 -0
  161. package/src/juplend/accountResolvers.ts +207 -0
  162. package/src/juplend/operateRemaining.ts +81 -0
  163. package/src/juplend/positionInit.ts +86 -0
  164. package/src/juplend/positionParser.ts +41 -0
  165. package/src/juplend/sdkApi.ts +112 -0
  166. package/src/juplend/tickMath.ts +82 -0
  167. package/src/juplend/tickUtils.ts +163 -0
  168. package/src/juplend/vaultConfigParser.ts +45 -0
  169. package/src/kamino/accountResolvers.ts +299 -0
  170. package/src/kamino/obligationParser.ts +123 -0
  171. package/src/kamino/refreshInstructions.ts +45 -0
  172. package/src/limits.ts +222 -0
  173. package/src/marketConfig.ts +139 -0
  174. package/src/oracle/scopePrice.ts +31 -0
  175. package/src/pdas.ts +226 -0
  176. package/src/position.ts +131 -0
  177. package/src/positionMetrics.ts +387 -0
  178. package/src/program.ts +30 -0
  179. package/src/quote.ts +310 -0
  180. package/src/rates/borrowRates.ts +270 -0
  181. package/src/rates/collateralInfo.ts +136 -0
  182. package/src/rates/constants.ts +87 -0
  183. package/src/rates/index.ts +38 -0
  184. package/src/rates/kaminoApi.ts +134 -0
  185. package/src/rates/supplyRates.ts +102 -0
  186. package/src/transactionBuilder.ts +324 -0
  187. package/src/txHelpers.ts +107 -0
  188. package/src/userState.ts +91 -0
  189. package/src/vault/vaultAccounts.ts +365 -0
  190. package/src/wallet.ts +12 -0
@@ -0,0 +1,5072 @@
1
+ {
2
+ "address": "3X2QyJ4Da5b5VaZ6mMcUgUm4V2t8emLrSeRwM4i2YNYH",
3
+ "metadata": {
4
+ "name": "hobba",
5
+ "version": "0.1.0",
6
+ "spec": "0.1.0",
7
+ "description": "Created with Anchor"
8
+ },
9
+ "instructions": [
10
+ {
11
+ "name": "add_to_allowlist",
12
+ "docs": [
13
+ "Add a wallet to the allowlist. Admin-only."
14
+ ],
15
+ "discriminator": [
16
+ 149,
17
+ 143,
18
+ 78,
19
+ 134,
20
+ 241,
21
+ 244,
22
+ 7,
23
+ 56
24
+ ],
25
+ "accounts": [
26
+ {
27
+ "name": "admin",
28
+ "docs": [
29
+ "Signer authorized to add to the allowlist: either the admin or the",
30
+ "hardcoded `REFERRAL_SIGNER` (the latter is scoped to this instruction only)."
31
+ ],
32
+ "writable": true,
33
+ "signer": true
34
+ },
35
+ {
36
+ "name": "program_config",
37
+ "docs": [
38
+ "The program config (verifies admin authority)"
39
+ ],
40
+ "pda": {
41
+ "seeds": [
42
+ {
43
+ "kind": "const",
44
+ "value": [
45
+ 112,
46
+ 114,
47
+ 111,
48
+ 103,
49
+ 114,
50
+ 97,
51
+ 109,
52
+ 95,
53
+ 99,
54
+ 111,
55
+ 110,
56
+ 102,
57
+ 105,
58
+ 103
59
+ ]
60
+ }
61
+ ]
62
+ }
63
+ },
64
+ {
65
+ "name": "wallet",
66
+ "docs": [
67
+ "The wallet to add to the allowlist (non-signer, admin pays rent)"
68
+ ]
69
+ },
70
+ {
71
+ "name": "allowlist_entry",
72
+ "docs": [
73
+ "The AllowlistEntry PDA to create"
74
+ ],
75
+ "writable": true,
76
+ "pda": {
77
+ "seeds": [
78
+ {
79
+ "kind": "const",
80
+ "value": [
81
+ 97,
82
+ 108,
83
+ 108,
84
+ 111,
85
+ 119,
86
+ 108,
87
+ 105,
88
+ 115,
89
+ 116
90
+ ]
91
+ },
92
+ {
93
+ "kind": "account",
94
+ "path": "wallet"
95
+ }
96
+ ]
97
+ }
98
+ },
99
+ {
100
+ "name": "system_program",
101
+ "address": "11111111111111111111111111111111"
102
+ }
103
+ ],
104
+ "args": []
105
+ },
106
+ {
107
+ "name": "borrow",
108
+ "docs": [
109
+ "Borrow USDC against deposited collateral.",
110
+ "Routes to Kamino or JupLend based on user_state.lending_provider.",
111
+ "If the user has vault shares, withdraws from vault first."
112
+ ],
113
+ "discriminator": [
114
+ 228,
115
+ 253,
116
+ 131,
117
+ 202,
118
+ 207,
119
+ 116,
120
+ 89,
121
+ 18
122
+ ],
123
+ "accounts": [
124
+ {
125
+ "name": "owner",
126
+ "docs": [
127
+ "The user borrowing"
128
+ ],
129
+ "writable": true,
130
+ "signer": true,
131
+ "relations": [
132
+ "user_state"
133
+ ]
134
+ },
135
+ {
136
+ "name": "user_state",
137
+ "docs": [
138
+ "The UserState PDA"
139
+ ],
140
+ "writable": true,
141
+ "pda": {
142
+ "seeds": [
143
+ {
144
+ "kind": "const",
145
+ "value": [
146
+ 117,
147
+ 115,
148
+ 101,
149
+ 114,
150
+ 95,
151
+ 115,
152
+ 116,
153
+ 97,
154
+ 116,
155
+ 101
156
+ ]
157
+ },
158
+ {
159
+ "kind": "account",
160
+ "path": "owner"
161
+ },
162
+ {
163
+ "kind": "account",
164
+ "path": "collateral_mint"
165
+ }
166
+ ]
167
+ }
168
+ },
169
+ {
170
+ "name": "collateral_mint"
171
+ },
172
+ {
173
+ "name": "pda_usdc_ata",
174
+ "writable": true
175
+ },
176
+ {
177
+ "name": "user_usdc_ata",
178
+ "docs": [
179
+ "The user's USDC ATA (final destination)"
180
+ ],
181
+ "writable": true
182
+ },
183
+ {
184
+ "name": "token_program",
185
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
186
+ },
187
+ {
188
+ "name": "system_program",
189
+ "docs": [
190
+ "System program"
191
+ ],
192
+ "address": "11111111111111111111111111111111"
193
+ },
194
+ {
195
+ "name": "vault",
196
+ "docs": [
197
+ "The vault account (or placeholder when no vault shares)"
198
+ ],
199
+ "writable": true
200
+ },
201
+ {
202
+ "name": "shares_mint",
203
+ "docs": [
204
+ "The vault shares mint (kToken or star*)"
205
+ ],
206
+ "writable": true
207
+ },
208
+ {
209
+ "name": "pda_shares_ata",
210
+ "writable": true
211
+ },
212
+ {
213
+ "name": "shares_token_program",
214
+ "docs": [
215
+ "Shares token program (SPL Token for shares mint)"
216
+ ]
217
+ },
218
+ {
219
+ "name": "usdc_mint",
220
+ "docs": [
221
+ "USDC mint",
222
+ "upstream lender, so binding the pubkey here prevents redirecting the borrow",
223
+ "liquidity into a non-USDC mint."
224
+ ],
225
+ "writable": true,
226
+ "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
227
+ },
228
+ {
229
+ "name": "program_config",
230
+ "docs": [
231
+ "Operator config - used to check allowlist_enabled flag"
232
+ ],
233
+ "pda": {
234
+ "seeds": [
235
+ {
236
+ "kind": "const",
237
+ "value": [
238
+ 112,
239
+ 114,
240
+ 111,
241
+ 103,
242
+ 114,
243
+ 97,
244
+ 109,
245
+ 95,
246
+ 99,
247
+ 111,
248
+ 110,
249
+ 102,
250
+ 105,
251
+ 103
252
+ ]
253
+ }
254
+ ]
255
+ }
256
+ },
257
+ {
258
+ "name": "allowlist_entry",
259
+ "docs": [
260
+ "Allowlist entry for the owner - checked only when allowlist is enabled"
261
+ ],
262
+ "pda": {
263
+ "seeds": [
264
+ {
265
+ "kind": "const",
266
+ "value": [
267
+ 97,
268
+ 108,
269
+ 108,
270
+ 111,
271
+ 119,
272
+ 108,
273
+ 105,
274
+ 115,
275
+ 116
276
+ ]
277
+ },
278
+ {
279
+ "kind": "account",
280
+ "path": "owner"
281
+ }
282
+ ]
283
+ }
284
+ }
285
+ ],
286
+ "args": [
287
+ {
288
+ "name": "liquidity_amount",
289
+ "type": "u64"
290
+ },
291
+ {
292
+ "name": "vault_remaining_count",
293
+ "type": "u8"
294
+ }
295
+ ]
296
+ },
297
+ {
298
+ "name": "claim_vault_rewards",
299
+ "docs": [
300
+ "Claim vault reward tokens (e.g. KMNO) from kFarms for a user.",
301
+ "Operator-only: refreshes farm state and harvests all reward tokens."
302
+ ],
303
+ "discriminator": [
304
+ 0,
305
+ 152,
306
+ 75,
307
+ 29,
308
+ 195,
309
+ 223,
310
+ 12,
311
+ 101
312
+ ],
313
+ "accounts": [
314
+ {
315
+ "name": "operator",
316
+ "docs": [
317
+ "The operator who can manage vault operations"
318
+ ],
319
+ "writable": true,
320
+ "signer": true
321
+ },
322
+ {
323
+ "name": "user_state",
324
+ "docs": [
325
+ "The UserState PDA (acts as signer for farm CPIs)"
326
+ ],
327
+ "writable": true,
328
+ "pda": {
329
+ "seeds": [
330
+ {
331
+ "kind": "const",
332
+ "value": [
333
+ 117,
334
+ 115,
335
+ 101,
336
+ 114,
337
+ 95,
338
+ 115,
339
+ 116,
340
+ 97,
341
+ 116,
342
+ 101
343
+ ]
344
+ },
345
+ {
346
+ "kind": "account",
347
+ "path": "user"
348
+ },
349
+ {
350
+ "kind": "account",
351
+ "path": "collateral_mint"
352
+ }
353
+ ]
354
+ }
355
+ },
356
+ {
357
+ "name": "user"
358
+ },
359
+ {
360
+ "name": "collateral_mint"
361
+ },
362
+ {
363
+ "name": "farm_state",
364
+ "writable": true
365
+ },
366
+ {
367
+ "name": "user_farm_state",
368
+ "writable": true
369
+ },
370
+ {
371
+ "name": "global_config"
372
+ },
373
+ {
374
+ "name": "farm_vaults_authority"
375
+ },
376
+ {
377
+ "name": "scope_prices"
378
+ },
379
+ {
380
+ "name": "token_program",
381
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
382
+ },
383
+ {
384
+ "name": "farms_program",
385
+ "address": "FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr"
386
+ },
387
+ {
388
+ "name": "system_program",
389
+ "docs": [
390
+ "System program (for ATA creation)"
391
+ ],
392
+ "address": "11111111111111111111111111111111"
393
+ },
394
+ {
395
+ "name": "associated_token_program",
396
+ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
397
+ }
398
+ ],
399
+ "args": []
400
+ },
401
+ {
402
+ "name": "create_juplend_position",
403
+ "docs": [
404
+ "Create a JupLend position for the user.",
405
+ "Must be called BEFORE initialize_user_juplend in the same transaction.",
406
+ "The UserState PDA is still system-owned at this point, allowing it to",
407
+ "fund the position account creation via SystemProgram."
408
+ ],
409
+ "discriminator": [
410
+ 104,
411
+ 5,
412
+ 21,
413
+ 242,
414
+ 70,
415
+ 192,
416
+ 207,
417
+ 163
418
+ ],
419
+ "accounts": [
420
+ {
421
+ "name": "owner",
422
+ "docs": [
423
+ "The user who will own this position"
424
+ ],
425
+ "writable": true,
426
+ "signer": true
427
+ },
428
+ {
429
+ "name": "user_state_pda",
430
+ "docs": [
431
+ "The UserState PDA - NOT yet initialized, still system-owned.",
432
+ "We use it as the signer for JupLend's init_position so the PDA",
433
+ "holds the position NFT. Must be system-owned at this point."
434
+ ],
435
+ "writable": true,
436
+ "pda": {
437
+ "seeds": [
438
+ {
439
+ "kind": "const",
440
+ "value": [
441
+ 117,
442
+ 115,
443
+ 101,
444
+ 114,
445
+ 95,
446
+ 115,
447
+ 116,
448
+ 97,
449
+ 116,
450
+ 101
451
+ ]
452
+ },
453
+ {
454
+ "kind": "account",
455
+ "path": "owner"
456
+ },
457
+ {
458
+ "kind": "account",
459
+ "path": "collateral_mint"
460
+ }
461
+ ]
462
+ }
463
+ },
464
+ {
465
+ "name": "collateral_mint"
466
+ },
467
+ {
468
+ "name": "position",
469
+ "docs": [
470
+ "The position account (PDA of JupLend: [\"position\", vault_id, next_position_id])"
471
+ ],
472
+ "writable": true
473
+ },
474
+ {
475
+ "name": "position_mint",
476
+ "docs": [
477
+ "The position NFT mint (PDA of JupLend: [\"position_mint\", vault_id, next_position_id])"
478
+ ],
479
+ "writable": true
480
+ },
481
+ {
482
+ "name": "position_token_account",
483
+ "docs": [
484
+ "The position token account (ATA of UserState PDA for position_mint)"
485
+ ],
486
+ "writable": true
487
+ },
488
+ {
489
+ "name": "position_metadata",
490
+ "docs": [
491
+ "The position metadata account (Metaplex metadata PDA)"
492
+ ],
493
+ "writable": true
494
+ },
495
+ {
496
+ "name": "juplend_vault_admin",
497
+ "docs": [
498
+ "JupLend vault admin PDA (derived from [\"vault_admin\"])"
499
+ ]
500
+ },
501
+ {
502
+ "name": "juplend_vault_state",
503
+ "docs": [
504
+ "JupLend vault state"
505
+ ],
506
+ "writable": true
507
+ },
508
+ {
509
+ "name": "juplend_program",
510
+ "docs": [
511
+ "JupLend program"
512
+ ],
513
+ "address": "jupr81YtYssSyPt8jbnGuiWon5f6x9TcDEFxYe3Bdzi"
514
+ },
515
+ {
516
+ "name": "metadata_program",
517
+ "docs": [
518
+ "Metaplex Token Metadata program"
519
+ ],
520
+ "address": "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"
521
+ },
522
+ {
523
+ "name": "token_program",
524
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
525
+ },
526
+ {
527
+ "name": "associated_token_program",
528
+ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
529
+ },
530
+ {
531
+ "name": "instruction_sysvar",
532
+ "docs": [
533
+ "Instruction sysvar"
534
+ ],
535
+ "address": "Sysvar1nstructions1111111111111111111111111"
536
+ },
537
+ {
538
+ "name": "program_config",
539
+ "docs": [
540
+ "Operator config - used to check allowlist_enabled flag"
541
+ ],
542
+ "pda": {
543
+ "seeds": [
544
+ {
545
+ "kind": "const",
546
+ "value": [
547
+ 112,
548
+ 114,
549
+ 111,
550
+ 103,
551
+ 114,
552
+ 97,
553
+ 109,
554
+ 95,
555
+ 99,
556
+ 111,
557
+ 110,
558
+ 102,
559
+ 105,
560
+ 103
561
+ ]
562
+ }
563
+ ]
564
+ }
565
+ },
566
+ {
567
+ "name": "allowlist_entry",
568
+ "docs": [
569
+ "Allowlist entry for the owner - checked only when allowlist is enabled"
570
+ ],
571
+ "pda": {
572
+ "seeds": [
573
+ {
574
+ "kind": "const",
575
+ "value": [
576
+ 97,
577
+ 108,
578
+ 108,
579
+ 111,
580
+ 119,
581
+ 108,
582
+ 105,
583
+ 115,
584
+ 116
585
+ ]
586
+ },
587
+ {
588
+ "kind": "account",
589
+ "path": "owner"
590
+ }
591
+ ]
592
+ }
593
+ },
594
+ {
595
+ "name": "rent",
596
+ "address": "SysvarRent111111111111111111111111111111111"
597
+ },
598
+ {
599
+ "name": "system_program",
600
+ "address": "11111111111111111111111111111111"
601
+ }
602
+ ],
603
+ "args": [
604
+ {
605
+ "name": "vault_id",
606
+ "type": "u16"
607
+ },
608
+ {
609
+ "name": "next_position_id",
610
+ "type": "u32"
611
+ }
612
+ ]
613
+ },
614
+ {
615
+ "name": "deposit",
616
+ "docs": [
617
+ "Deposit liquidity (cbBTC) as collateral.",
618
+ "Routes to Kamino or JupLend based on user_state.lending_provider."
619
+ ],
620
+ "discriminator": [
621
+ 242,
622
+ 35,
623
+ 198,
624
+ 137,
625
+ 82,
626
+ 225,
627
+ 242,
628
+ 182
629
+ ],
630
+ "accounts": [
631
+ {
632
+ "name": "owner",
633
+ "docs": [
634
+ "The user depositing collateral"
635
+ ],
636
+ "writable": true,
637
+ "signer": true,
638
+ "relations": [
639
+ "user_state"
640
+ ]
641
+ },
642
+ {
643
+ "name": "user_state",
644
+ "docs": [
645
+ "The UserState PDA"
646
+ ],
647
+ "writable": true,
648
+ "pda": {
649
+ "seeds": [
650
+ {
651
+ "kind": "const",
652
+ "value": [
653
+ 117,
654
+ 115,
655
+ 101,
656
+ 114,
657
+ 95,
658
+ 115,
659
+ 116,
660
+ 97,
661
+ 116,
662
+ 101
663
+ ]
664
+ },
665
+ {
666
+ "kind": "account",
667
+ "path": "owner"
668
+ },
669
+ {
670
+ "kind": "account",
671
+ "path": "collateral_mint"
672
+ }
673
+ ]
674
+ }
675
+ },
676
+ {
677
+ "name": "collateral_mint"
678
+ },
679
+ {
680
+ "name": "user_source_liquidity",
681
+ "docs": [
682
+ "The user's cbBTC token account (source)"
683
+ ],
684
+ "writable": true
685
+ },
686
+ {
687
+ "name": "pda_source_liquidity",
688
+ "docs": [
689
+ "The PDA's cbBTC token account (intermediate for CPI)"
690
+ ],
691
+ "writable": true
692
+ },
693
+ {
694
+ "name": "supply_token_mint"
695
+ },
696
+ {
697
+ "name": "token_program",
698
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
699
+ },
700
+ {
701
+ "name": "associated_token_program",
702
+ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
703
+ },
704
+ {
705
+ "name": "system_program",
706
+ "docs": [
707
+ "System program"
708
+ ],
709
+ "address": "11111111111111111111111111111111"
710
+ },
711
+ {
712
+ "name": "program_config",
713
+ "docs": [
714
+ "Operator config - used to check allowlist_enabled flag"
715
+ ],
716
+ "pda": {
717
+ "seeds": [
718
+ {
719
+ "kind": "const",
720
+ "value": [
721
+ 112,
722
+ 114,
723
+ 111,
724
+ 103,
725
+ 114,
726
+ 97,
727
+ 109,
728
+ 95,
729
+ 99,
730
+ 111,
731
+ 110,
732
+ 102,
733
+ 105,
734
+ 103
735
+ ]
736
+ }
737
+ ]
738
+ }
739
+ },
740
+ {
741
+ "name": "allowlist_entry",
742
+ "docs": [
743
+ "Allowlist entry for the owner - checked only when allowlist is enabled"
744
+ ],
745
+ "pda": {
746
+ "seeds": [
747
+ {
748
+ "kind": "const",
749
+ "value": [
750
+ 97,
751
+ 108,
752
+ 108,
753
+ 111,
754
+ 119,
755
+ 108,
756
+ 105,
757
+ 115,
758
+ 116
759
+ ]
760
+ },
761
+ {
762
+ "kind": "account",
763
+ "path": "owner"
764
+ }
765
+ ]
766
+ }
767
+ }
768
+ ],
769
+ "args": [
770
+ {
771
+ "name": "liquidity_amount",
772
+ "type": "u64"
773
+ }
774
+ ]
775
+ },
776
+ {
777
+ "name": "harvest_vault",
778
+ "docs": [
779
+ "Harvest profits from the vault for a user and repay lending obligation.",
780
+ "Operator-only: computes profit shares on-chain (above deposited cost basis),",
781
+ "withdraws them, repays user's lending obligation, and sends leftover to user."
782
+ ],
783
+ "discriminator": [
784
+ 24,
785
+ 137,
786
+ 236,
787
+ 19,
788
+ 34,
789
+ 56,
790
+ 241,
791
+ 162
792
+ ],
793
+ "accounts": [
794
+ {
795
+ "name": "operator",
796
+ "docs": [
797
+ "The operator who can manage vault operations"
798
+ ],
799
+ "writable": true,
800
+ "signer": true
801
+ },
802
+ {
803
+ "name": "user_state",
804
+ "docs": [
805
+ "The UserState PDA whose profits are being harvested"
806
+ ],
807
+ "writable": true,
808
+ "pda": {
809
+ "seeds": [
810
+ {
811
+ "kind": "const",
812
+ "value": [
813
+ 117,
814
+ 115,
815
+ 101,
816
+ 114,
817
+ 95,
818
+ 115,
819
+ 116,
820
+ 97,
821
+ 116,
822
+ 101
823
+ ]
824
+ },
825
+ {
826
+ "kind": "account",
827
+ "path": "user"
828
+ },
829
+ {
830
+ "kind": "account",
831
+ "path": "collateral_mint"
832
+ }
833
+ ]
834
+ }
835
+ },
836
+ {
837
+ "name": "user"
838
+ },
839
+ {
840
+ "name": "collateral_mint"
841
+ },
842
+ {
843
+ "name": "pda_usdc_ata",
844
+ "writable": true
845
+ },
846
+ {
847
+ "name": "user_usdc_ata",
848
+ "docs": [
849
+ "The user's USDC token account (receives leftover harvest proceeds)"
850
+ ],
851
+ "writable": true
852
+ },
853
+ {
854
+ "name": "vault",
855
+ "docs": [
856
+ "The vault account"
857
+ ],
858
+ "writable": true
859
+ },
860
+ {
861
+ "name": "shares_mint",
862
+ "docs": [
863
+ "The vault shares mint (kToken or star*)"
864
+ ],
865
+ "writable": true
866
+ },
867
+ {
868
+ "name": "pda_shares_ata",
869
+ "writable": true
870
+ },
871
+ {
872
+ "name": "usdc_mint",
873
+ "docs": [
874
+ "USDC mint",
875
+ "this pubkey into the upstream lender's repay path."
876
+ ],
877
+ "writable": true,
878
+ "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
879
+ },
880
+ {
881
+ "name": "token_program",
882
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
883
+ },
884
+ {
885
+ "name": "shares_token_program",
886
+ "docs": [
887
+ "Shares token program (SPL Token for shares mint)"
888
+ ]
889
+ },
890
+ {
891
+ "name": "program_config",
892
+ "docs": [
893
+ "Program config (for profit fee)"
894
+ ],
895
+ "pda": {
896
+ "seeds": [
897
+ {
898
+ "kind": "const",
899
+ "value": [
900
+ 112,
901
+ 114,
902
+ 111,
903
+ 103,
904
+ 114,
905
+ 97,
906
+ 109,
907
+ 95,
908
+ 99,
909
+ 111,
910
+ 110,
911
+ 102,
912
+ 105,
913
+ 103
914
+ ]
915
+ }
916
+ ]
917
+ }
918
+ },
919
+ {
920
+ "name": "treasury_usdc_ata",
921
+ "docs": [
922
+ "Treasury's USDC token account (receives profit fee)"
923
+ ],
924
+ "writable": true
925
+ },
926
+ {
927
+ "name": "user_origin",
928
+ "docs": [
929
+ "Per-owner origin registration for the harvested user",
930
+ "(created at initialize_user, or by the migration crank for pre-origin users)"
931
+ ],
932
+ "pda": {
933
+ "seeds": [
934
+ {
935
+ "kind": "const",
936
+ "value": [
937
+ 117,
938
+ 115,
939
+ 101,
940
+ 114,
941
+ 95,
942
+ 111,
943
+ 114,
944
+ 105,
945
+ 103,
946
+ 105,
947
+ 110
948
+ ]
949
+ },
950
+ {
951
+ "kind": "account",
952
+ "path": "user"
953
+ }
954
+ ]
955
+ }
956
+ },
957
+ {
958
+ "name": "origin_config",
959
+ "docs": [
960
+ "Fee-split config for the harvested user's origin"
961
+ ]
962
+ },
963
+ {
964
+ "name": "origin_usdc_ata",
965
+ "docs": [
966
+ "Origin receiver's USDC token account (receives the origin's share of the profit fee)"
967
+ ],
968
+ "writable": true
969
+ }
970
+ ],
971
+ "args": [
972
+ {
973
+ "name": "vault_remaining_count",
974
+ "type": "u8"
975
+ }
976
+ ]
977
+ },
978
+ {
979
+ "name": "initialize_program",
980
+ "docs": [
981
+ "Initialize the program with an operator.",
982
+ "This must be called once by the deployer/admin."
983
+ ],
984
+ "discriminator": [
985
+ 176,
986
+ 107,
987
+ 205,
988
+ 168,
989
+ 24,
990
+ 157,
991
+ 175,
992
+ 103
993
+ ],
994
+ "accounts": [
995
+ {
996
+ "name": "admin",
997
+ "writable": true,
998
+ "signer": true
999
+ },
1000
+ {
1001
+ "name": "program_config",
1002
+ "writable": true,
1003
+ "pda": {
1004
+ "seeds": [
1005
+ {
1006
+ "kind": "const",
1007
+ "value": [
1008
+ 112,
1009
+ 114,
1010
+ 111,
1011
+ 103,
1012
+ 114,
1013
+ 97,
1014
+ 109,
1015
+ 95,
1016
+ 99,
1017
+ 111,
1018
+ 110,
1019
+ 102,
1020
+ 105,
1021
+ 103
1022
+ ]
1023
+ }
1024
+ ]
1025
+ }
1026
+ },
1027
+ {
1028
+ "name": "program_data",
1029
+ "docs": [
1030
+ "The program's data account — holds the upgrade authority. Gating this",
1031
+ "one-time initialization on it ensures only the program's deployer (the",
1032
+ "upgrade authority) can perform it, preventing a front-runner from seizing",
1033
+ "admin/operator/treasury. Mirrors set_admin / set_treasury."
1034
+ ],
1035
+ "pda": {
1036
+ "seeds": [
1037
+ {
1038
+ "kind": "const",
1039
+ "value": [
1040
+ 37,
1041
+ 104,
1042
+ 101,
1043
+ 104,
1044
+ 240,
1045
+ 200,
1046
+ 75,
1047
+ 165,
1048
+ 201,
1049
+ 246,
1050
+ 135,
1051
+ 24,
1052
+ 163,
1053
+ 37,
1054
+ 39,
1055
+ 94,
1056
+ 130,
1057
+ 80,
1058
+ 152,
1059
+ 158,
1060
+ 136,
1061
+ 46,
1062
+ 228,
1063
+ 107,
1064
+ 213,
1065
+ 142,
1066
+ 173,
1067
+ 180,
1068
+ 126,
1069
+ 173,
1070
+ 224,
1071
+ 82
1072
+ ]
1073
+ }
1074
+ ],
1075
+ "program": {
1076
+ "kind": "const",
1077
+ "value": [
1078
+ 2,
1079
+ 168,
1080
+ 246,
1081
+ 145,
1082
+ 78,
1083
+ 136,
1084
+ 161,
1085
+ 176,
1086
+ 226,
1087
+ 16,
1088
+ 21,
1089
+ 62,
1090
+ 247,
1091
+ 99,
1092
+ 174,
1093
+ 43,
1094
+ 0,
1095
+ 194,
1096
+ 185,
1097
+ 61,
1098
+ 22,
1099
+ 193,
1100
+ 36,
1101
+ 210,
1102
+ 192,
1103
+ 83,
1104
+ 122,
1105
+ 16,
1106
+ 4,
1107
+ 128,
1108
+ 0,
1109
+ 0
1110
+ ]
1111
+ }
1112
+ }
1113
+ },
1114
+ {
1115
+ "name": "system_program",
1116
+ "address": "11111111111111111111111111111111"
1117
+ }
1118
+ ],
1119
+ "args": [
1120
+ {
1121
+ "name": "operator",
1122
+ "type": "pubkey"
1123
+ },
1124
+ {
1125
+ "name": "treasury",
1126
+ "type": "pubkey"
1127
+ }
1128
+ ]
1129
+ },
1130
+ {
1131
+ "name": "initialize_user",
1132
+ "docs": [
1133
+ "Initialize a user state.",
1134
+ "Routes to Kamino (creates obligation + user metadata) or JupLend (stores position ref)",
1135
+ "based on lending_provider parameter (0 = Kamino, 1 = JupLend).",
1136
+ "`origin` records the channel the user signed up through (0 = hobba); it is",
1137
+ "per-wallet — registered on the wallet's first position (its OriginConfig",
1138
+ "PDA must exist) and ignored on later ones (first touch wins)."
1139
+ ],
1140
+ "discriminator": [
1141
+ 111,
1142
+ 17,
1143
+ 185,
1144
+ 250,
1145
+ 60,
1146
+ 122,
1147
+ 38,
1148
+ 254
1149
+ ],
1150
+ "accounts": [
1151
+ {
1152
+ "name": "owner",
1153
+ "docs": [
1154
+ "The user who will own this state"
1155
+ ],
1156
+ "writable": true,
1157
+ "signer": true
1158
+ },
1159
+ {
1160
+ "name": "user_state",
1161
+ "docs": [
1162
+ "The UserState PDA - stores the user's obligation/position reference"
1163
+ ],
1164
+ "writable": true,
1165
+ "pda": {
1166
+ "seeds": [
1167
+ {
1168
+ "kind": "const",
1169
+ "value": [
1170
+ 117,
1171
+ 115,
1172
+ 101,
1173
+ 114,
1174
+ 95,
1175
+ 115,
1176
+ 116,
1177
+ 97,
1178
+ 116,
1179
+ 101
1180
+ ]
1181
+ },
1182
+ {
1183
+ "kind": "account",
1184
+ "path": "owner"
1185
+ },
1186
+ {
1187
+ "kind": "account",
1188
+ "path": "collateral_mint"
1189
+ }
1190
+ ]
1191
+ }
1192
+ },
1193
+ {
1194
+ "name": "collateral_mint"
1195
+ },
1196
+ {
1197
+ "name": "system_program",
1198
+ "address": "11111111111111111111111111111111"
1199
+ },
1200
+ {
1201
+ "name": "program_config",
1202
+ "docs": [
1203
+ "Operator config - used to check allowlist_enabled flag"
1204
+ ],
1205
+ "pda": {
1206
+ "seeds": [
1207
+ {
1208
+ "kind": "const",
1209
+ "value": [
1210
+ 112,
1211
+ 114,
1212
+ 111,
1213
+ 103,
1214
+ 114,
1215
+ 97,
1216
+ 109,
1217
+ 95,
1218
+ 99,
1219
+ 111,
1220
+ 110,
1221
+ 102,
1222
+ 105,
1223
+ 103
1224
+ ]
1225
+ }
1226
+ ]
1227
+ }
1228
+ },
1229
+ {
1230
+ "name": "allowlist_entry",
1231
+ "docs": [
1232
+ "Allowlist entry for the owner - checked only when allowlist is enabled"
1233
+ ],
1234
+ "pda": {
1235
+ "seeds": [
1236
+ {
1237
+ "kind": "const",
1238
+ "value": [
1239
+ 97,
1240
+ 108,
1241
+ 108,
1242
+ 111,
1243
+ 119,
1244
+ 108,
1245
+ 105,
1246
+ 115,
1247
+ 116
1248
+ ]
1249
+ },
1250
+ {
1251
+ "kind": "account",
1252
+ "path": "owner"
1253
+ }
1254
+ ]
1255
+ }
1256
+ },
1257
+ {
1258
+ "name": "deposit_config",
1259
+ "docs": [
1260
+ "Global deposit config for this collateral type (optional — may not exist)"
1261
+ ],
1262
+ "pda": {
1263
+ "seeds": [
1264
+ {
1265
+ "kind": "const",
1266
+ "value": [
1267
+ 100,
1268
+ 101,
1269
+ 112,
1270
+ 111,
1271
+ 115,
1272
+ 105,
1273
+ 116,
1274
+ 95,
1275
+ 99,
1276
+ 111,
1277
+ 110,
1278
+ 102,
1279
+ 105,
1280
+ 103
1281
+ ]
1282
+ },
1283
+ {
1284
+ "kind": "account",
1285
+ "path": "collateral_mint"
1286
+ }
1287
+ ]
1288
+ }
1289
+ },
1290
+ {
1291
+ "name": "user_origin",
1292
+ "docs": [
1293
+ "Per-owner origin registration — created on the wallet's first",
1294
+ "initialize_user; later inits keep the stored origin (first touch wins)"
1295
+ ],
1296
+ "writable": true,
1297
+ "pda": {
1298
+ "seeds": [
1299
+ {
1300
+ "kind": "const",
1301
+ "value": [
1302
+ 117,
1303
+ 115,
1304
+ 101,
1305
+ 114,
1306
+ 95,
1307
+ 111,
1308
+ 114,
1309
+ 105,
1310
+ 103,
1311
+ 105,
1312
+ 110
1313
+ ]
1314
+ },
1315
+ {
1316
+ "kind": "account",
1317
+ "path": "owner"
1318
+ }
1319
+ ]
1320
+ }
1321
+ },
1322
+ {
1323
+ "name": "origin_config",
1324
+ "docs": [
1325
+ "Config for the declared origin — must exist when registering a new",
1326
+ "UserOrigin (deployer registers origins via set_origin_config)",
1327
+ "first registration, ignored once the wallet's origin is already set"
1328
+ ]
1329
+ }
1330
+ ],
1331
+ "args": [
1332
+ {
1333
+ "name": "lending_provider",
1334
+ "type": "u8"
1335
+ },
1336
+ {
1337
+ "name": "origin",
1338
+ "type": "u8"
1339
+ }
1340
+ ]
1341
+ },
1342
+ {
1343
+ "name": "juplend_deposit_borrow",
1344
+ "docs": [
1345
+ "JupLend-only: atomic deposit collateral + borrow USDC in a single operate CPI.",
1346
+ "Saves ~150 bytes of tx space vs. calling deposit + borrow separately",
1347
+ "by eliminating the duplicate operate account list and intermediate tick accounts."
1348
+ ],
1349
+ "discriminator": [
1350
+ 193,
1351
+ 137,
1352
+ 71,
1353
+ 125,
1354
+ 43,
1355
+ 204,
1356
+ 154,
1357
+ 81
1358
+ ],
1359
+ "accounts": [
1360
+ {
1361
+ "name": "owner",
1362
+ "writable": true,
1363
+ "signer": true,
1364
+ "relations": [
1365
+ "user_state"
1366
+ ]
1367
+ },
1368
+ {
1369
+ "name": "user_state",
1370
+ "writable": true,
1371
+ "pda": {
1372
+ "seeds": [
1373
+ {
1374
+ "kind": "const",
1375
+ "value": [
1376
+ 117,
1377
+ 115,
1378
+ 101,
1379
+ 114,
1380
+ 95,
1381
+ 115,
1382
+ 116,
1383
+ 97,
1384
+ 116,
1385
+ 101
1386
+ ]
1387
+ },
1388
+ {
1389
+ "kind": "account",
1390
+ "path": "owner"
1391
+ },
1392
+ {
1393
+ "kind": "account",
1394
+ "path": "collateral_mint"
1395
+ }
1396
+ ]
1397
+ }
1398
+ },
1399
+ {
1400
+ "name": "collateral_mint"
1401
+ },
1402
+ {
1403
+ "name": "user_collateral_ata",
1404
+ "writable": true
1405
+ },
1406
+ {
1407
+ "name": "pda_collateral_ata",
1408
+ "writable": true
1409
+ },
1410
+ {
1411
+ "name": "pda_usdc_ata",
1412
+ "writable": true
1413
+ },
1414
+ {
1415
+ "name": "user_usdc_ata",
1416
+ "writable": true
1417
+ },
1418
+ {
1419
+ "name": "usdc_mint",
1420
+ "docs": [
1421
+ "to the JupLend operate CPI."
1422
+ ],
1423
+ "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
1424
+ },
1425
+ {
1426
+ "name": "token_program",
1427
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
1428
+ },
1429
+ {
1430
+ "name": "associated_token_program",
1431
+ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
1432
+ },
1433
+ {
1434
+ "name": "system_program",
1435
+ "address": "11111111111111111111111111111111"
1436
+ },
1437
+ {
1438
+ "name": "program_config",
1439
+ "pda": {
1440
+ "seeds": [
1441
+ {
1442
+ "kind": "const",
1443
+ "value": [
1444
+ 112,
1445
+ 114,
1446
+ 111,
1447
+ 103,
1448
+ 114,
1449
+ 97,
1450
+ 109,
1451
+ 95,
1452
+ 99,
1453
+ 111,
1454
+ 110,
1455
+ 102,
1456
+ 105,
1457
+ 103
1458
+ ]
1459
+ }
1460
+ ]
1461
+ }
1462
+ },
1463
+ {
1464
+ "name": "allowlist_entry",
1465
+ "pda": {
1466
+ "seeds": [
1467
+ {
1468
+ "kind": "const",
1469
+ "value": [
1470
+ 97,
1471
+ 108,
1472
+ 108,
1473
+ 111,
1474
+ 119,
1475
+ 108,
1476
+ 105,
1477
+ 115,
1478
+ 116
1479
+ ]
1480
+ },
1481
+ {
1482
+ "kind": "account",
1483
+ "path": "owner"
1484
+ }
1485
+ ]
1486
+ }
1487
+ },
1488
+ {
1489
+ "name": "vault_config",
1490
+ "writable": true
1491
+ },
1492
+ {
1493
+ "name": "position",
1494
+ "writable": true
1495
+ }
1496
+ ],
1497
+ "args": [
1498
+ {
1499
+ "name": "col_amount",
1500
+ "type": "u64"
1501
+ },
1502
+ {
1503
+ "name": "debt_amount",
1504
+ "type": "u64"
1505
+ }
1506
+ ]
1507
+ },
1508
+ {
1509
+ "name": "migrate_user_origin",
1510
+ "docs": [
1511
+ "Register UserOrigin = hobba for a pre-origin wallet, proven by one of its",
1512
+ "existing UserState accounts. Permissionless; no-op if already registered."
1513
+ ],
1514
+ "discriminator": [
1515
+ 57,
1516
+ 233,
1517
+ 23,
1518
+ 232,
1519
+ 225,
1520
+ 8,
1521
+ 176,
1522
+ 213
1523
+ ],
1524
+ "accounts": [
1525
+ {
1526
+ "name": "payer",
1527
+ "docs": [
1528
+ "Pays rent for the UserOrigin account"
1529
+ ],
1530
+ "writable": true,
1531
+ "signer": true
1532
+ },
1533
+ {
1534
+ "name": "user_state",
1535
+ "docs": [
1536
+ "as a program-owned UserState whose owner field matches. Read raw so any",
1537
+ "of the wallet's UserState accounts works."
1538
+ ]
1539
+ },
1540
+ {
1541
+ "name": "user_origin",
1542
+ "writable": true,
1543
+ "pda": {
1544
+ "seeds": [
1545
+ {
1546
+ "kind": "const",
1547
+ "value": [
1548
+ 117,
1549
+ 115,
1550
+ 101,
1551
+ 114,
1552
+ 95,
1553
+ 111,
1554
+ 114,
1555
+ 105,
1556
+ 103,
1557
+ 105,
1558
+ 110
1559
+ ]
1560
+ },
1561
+ {
1562
+ "kind": "arg",
1563
+ "path": "owner"
1564
+ }
1565
+ ]
1566
+ }
1567
+ },
1568
+ {
1569
+ "name": "system_program",
1570
+ "address": "11111111111111111111111111111111"
1571
+ }
1572
+ ],
1573
+ "args": [
1574
+ {
1575
+ "name": "owner",
1576
+ "type": "pubkey"
1577
+ }
1578
+ ]
1579
+ },
1580
+ {
1581
+ "name": "operator_borrow",
1582
+ "docs": [
1583
+ "Borrow USDC on behalf of a user and deposit into vault.",
1584
+ "Routes to Kamino or JupLend based on user_state.lending_provider.",
1585
+ "Operator-only: borrows USDC against user's collateral and deposits into current vault.",
1586
+ "Tracks deposited_to_vault as cost basis for profit calculation."
1587
+ ],
1588
+ "discriminator": [
1589
+ 249,
1590
+ 4,
1591
+ 28,
1592
+ 184,
1593
+ 255,
1594
+ 105,
1595
+ 66,
1596
+ 75
1597
+ ],
1598
+ "accounts": [
1599
+ {
1600
+ "name": "operator",
1601
+ "docs": [
1602
+ "The operator who can manage operations"
1603
+ ],
1604
+ "writable": true,
1605
+ "signer": true
1606
+ },
1607
+ {
1608
+ "name": "user_state",
1609
+ "docs": [
1610
+ "The UserState PDA for the user we're borrowing on behalf of"
1611
+ ],
1612
+ "writable": true,
1613
+ "pda": {
1614
+ "seeds": [
1615
+ {
1616
+ "kind": "const",
1617
+ "value": [
1618
+ 117,
1619
+ 115,
1620
+ 101,
1621
+ 114,
1622
+ 95,
1623
+ 115,
1624
+ 116,
1625
+ 97,
1626
+ 116,
1627
+ 101
1628
+ ]
1629
+ },
1630
+ {
1631
+ "kind": "account",
1632
+ "path": "user"
1633
+ },
1634
+ {
1635
+ "kind": "account",
1636
+ "path": "collateral_mint"
1637
+ }
1638
+ ]
1639
+ }
1640
+ },
1641
+ {
1642
+ "name": "user"
1643
+ },
1644
+ {
1645
+ "name": "collateral_mint"
1646
+ },
1647
+ {
1648
+ "name": "pda_usdc_ata",
1649
+ "writable": true
1650
+ },
1651
+ {
1652
+ "name": "vault",
1653
+ "docs": [
1654
+ "The vault account (KVault state or Perena vault state)"
1655
+ ],
1656
+ "writable": true
1657
+ },
1658
+ {
1659
+ "name": "shares_mint",
1660
+ "docs": [
1661
+ "The vault shares mint (kToken or star*)"
1662
+ ],
1663
+ "writable": true
1664
+ },
1665
+ {
1666
+ "name": "pda_shares_ata",
1667
+ "docs": [
1668
+ "The user's PDA shares ATA (destination for vault shares)",
1669
+ "vault shares cannot be redirected to an operator-controlled account."
1670
+ ],
1671
+ "writable": true
1672
+ },
1673
+ {
1674
+ "name": "usdc_mint",
1675
+ "docs": [
1676
+ "USDC mint",
1677
+ "through to the upstream lender, so we pin the pubkey here."
1678
+ ],
1679
+ "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
1680
+ },
1681
+ {
1682
+ "name": "token_program",
1683
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
1684
+ },
1685
+ {
1686
+ "name": "shares_token_program",
1687
+ "docs": [
1688
+ "Shares token program (SPL Token for shares mint)"
1689
+ ]
1690
+ },
1691
+ {
1692
+ "name": "system_program",
1693
+ "docs": [
1694
+ "System program"
1695
+ ],
1696
+ "address": "11111111111111111111111111111111"
1697
+ }
1698
+ ],
1699
+ "args": [
1700
+ {
1701
+ "name": "liquidity_amount",
1702
+ "type": "u64"
1703
+ },
1704
+ {
1705
+ "name": "lender_remaining_count",
1706
+ "type": "u8"
1707
+ },
1708
+ {
1709
+ "name": "vault_provider",
1710
+ "type": "u8"
1711
+ }
1712
+ ]
1713
+ },
1714
+ {
1715
+ "name": "operator_repay",
1716
+ "docs": [
1717
+ "Repay borrowed liquidity on behalf of a user.",
1718
+ "Routes to Kamino or JupLend based on user_state.lending_provider.",
1719
+ "Operator-only: first withdraws from vault, then repays.",
1720
+ "shares_to_withdraw is computed on-chain from liquidity_amount and vault state."
1721
+ ],
1722
+ "discriminator": [
1723
+ 63,
1724
+ 8,
1725
+ 186,
1726
+ 64,
1727
+ 153,
1728
+ 66,
1729
+ 132,
1730
+ 139
1731
+ ],
1732
+ "accounts": [
1733
+ {
1734
+ "name": "operator",
1735
+ "docs": [
1736
+ "The operator who can manage operations"
1737
+ ],
1738
+ "writable": true,
1739
+ "signer": true
1740
+ },
1741
+ {
1742
+ "name": "user_state",
1743
+ "docs": [
1744
+ "The UserState PDA for the user we're repaying on behalf of"
1745
+ ],
1746
+ "writable": true,
1747
+ "pda": {
1748
+ "seeds": [
1749
+ {
1750
+ "kind": "const",
1751
+ "value": [
1752
+ 117,
1753
+ 115,
1754
+ 101,
1755
+ 114,
1756
+ 95,
1757
+ 115,
1758
+ 116,
1759
+ 97,
1760
+ 116,
1761
+ 101
1762
+ ]
1763
+ },
1764
+ {
1765
+ "kind": "account",
1766
+ "path": "user"
1767
+ },
1768
+ {
1769
+ "kind": "account",
1770
+ "path": "collateral_mint"
1771
+ }
1772
+ ]
1773
+ }
1774
+ },
1775
+ {
1776
+ "name": "user"
1777
+ },
1778
+ {
1779
+ "name": "collateral_mint"
1780
+ },
1781
+ {
1782
+ "name": "pda_usdc_ata",
1783
+ "writable": true
1784
+ },
1785
+ {
1786
+ "name": "vault",
1787
+ "docs": [
1788
+ "The vault account"
1789
+ ],
1790
+ "writable": true
1791
+ },
1792
+ {
1793
+ "name": "shares_mint",
1794
+ "docs": [
1795
+ "The vault shares mint (kToken or star*)"
1796
+ ],
1797
+ "writable": true
1798
+ },
1799
+ {
1800
+ "name": "pda_shares_ata",
1801
+ "writable": true
1802
+ },
1803
+ {
1804
+ "name": "usdc_mint",
1805
+ "docs": [
1806
+ "USDC mint",
1807
+ "this pubkey into the upstream lender's repay path."
1808
+ ],
1809
+ "writable": true,
1810
+ "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
1811
+ },
1812
+ {
1813
+ "name": "token_program",
1814
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
1815
+ },
1816
+ {
1817
+ "name": "shares_token_program",
1818
+ "docs": [
1819
+ "Shares token program (SPL Token for shares mint)"
1820
+ ]
1821
+ }
1822
+ ],
1823
+ "args": [
1824
+ {
1825
+ "name": "liquidity_amount",
1826
+ "type": "u64"
1827
+ },
1828
+ {
1829
+ "name": "vault_remaining_count",
1830
+ "type": "u8"
1831
+ }
1832
+ ]
1833
+ },
1834
+ {
1835
+ "name": "prepare_withdraw",
1836
+ "docs": [
1837
+ "Prepare withdraw: unwind vault shares and repay the lender.",
1838
+ "Called before `withdraw` in the same transaction.",
1839
+ "Routes to Kamino or JupLend based on user_state.lending_provider."
1840
+ ],
1841
+ "discriminator": [
1842
+ 176,
1843
+ 181,
1844
+ 35,
1845
+ 185,
1846
+ 28,
1847
+ 116,
1848
+ 22,
1849
+ 50
1850
+ ],
1851
+ "accounts": [
1852
+ {
1853
+ "name": "owner",
1854
+ "docs": [
1855
+ "The user preparing to withdraw"
1856
+ ],
1857
+ "writable": true,
1858
+ "signer": true,
1859
+ "relations": [
1860
+ "user_state"
1861
+ ]
1862
+ },
1863
+ {
1864
+ "name": "user_state",
1865
+ "docs": [
1866
+ "The UserState PDA"
1867
+ ],
1868
+ "writable": true,
1869
+ "pda": {
1870
+ "seeds": [
1871
+ {
1872
+ "kind": "const",
1873
+ "value": [
1874
+ 117,
1875
+ 115,
1876
+ 101,
1877
+ 114,
1878
+ 95,
1879
+ 115,
1880
+ 116,
1881
+ 97,
1882
+ 116,
1883
+ 101
1884
+ ]
1885
+ },
1886
+ {
1887
+ "kind": "account",
1888
+ "path": "owner"
1889
+ },
1890
+ {
1891
+ "kind": "account",
1892
+ "path": "collateral_mint"
1893
+ }
1894
+ ]
1895
+ }
1896
+ },
1897
+ {
1898
+ "name": "collateral_mint"
1899
+ },
1900
+ {
1901
+ "name": "program_config",
1902
+ "docs": [
1903
+ "Operator config - used to check allowlist_enabled flag"
1904
+ ],
1905
+ "pda": {
1906
+ "seeds": [
1907
+ {
1908
+ "kind": "const",
1909
+ "value": [
1910
+ 112,
1911
+ 114,
1912
+ 111,
1913
+ 103,
1914
+ 114,
1915
+ 97,
1916
+ 109,
1917
+ 95,
1918
+ 99,
1919
+ 111,
1920
+ 110,
1921
+ 102,
1922
+ 105,
1923
+ 103
1924
+ ]
1925
+ }
1926
+ ]
1927
+ }
1928
+ },
1929
+ {
1930
+ "name": "allowlist_entry",
1931
+ "docs": [
1932
+ "Allowlist entry for the owner"
1933
+ ],
1934
+ "pda": {
1935
+ "seeds": [
1936
+ {
1937
+ "kind": "const",
1938
+ "value": [
1939
+ 97,
1940
+ 108,
1941
+ 108,
1942
+ 111,
1943
+ 119,
1944
+ 108,
1945
+ 105,
1946
+ 115,
1947
+ 116
1948
+ ]
1949
+ },
1950
+ {
1951
+ "kind": "account",
1952
+ "path": "owner"
1953
+ }
1954
+ ]
1955
+ }
1956
+ },
1957
+ {
1958
+ "name": "pda_usdc_ata",
1959
+ "writable": true
1960
+ },
1961
+ {
1962
+ "name": "vault",
1963
+ "docs": [
1964
+ "The vault account"
1965
+ ],
1966
+ "writable": true
1967
+ },
1968
+ {
1969
+ "name": "shares_mint",
1970
+ "docs": [
1971
+ "The vault shares mint (kToken or star*)"
1972
+ ],
1973
+ "writable": true
1974
+ },
1975
+ {
1976
+ "name": "pda_shares_ata",
1977
+ "writable": true
1978
+ },
1979
+ {
1980
+ "name": "usdc_mint",
1981
+ "docs": [
1982
+ "USDC mint",
1983
+ "upstream lender, so we pin the pubkey here rather than relying on the",
1984
+ "downstream check."
1985
+ ],
1986
+ "writable": true,
1987
+ "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
1988
+ },
1989
+ {
1990
+ "name": "token_program",
1991
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
1992
+ },
1993
+ {
1994
+ "name": "shares_token_program",
1995
+ "docs": [
1996
+ "Shares token program (SPL Token for shares mint)"
1997
+ ]
1998
+ }
1999
+ ],
2000
+ "args": [
2001
+ {
2002
+ "name": "vault_remaining_count",
2003
+ "type": "u8"
2004
+ },
2005
+ {
2006
+ "name": "collateral_to_withdraw",
2007
+ "type": "u64"
2008
+ }
2009
+ ]
2010
+ },
2011
+ {
2012
+ "name": "price_of_share",
2013
+ "docs": [
2014
+ "Get the current price per share of a KVault vault.",
2015
+ "Returns the price in USDC with 6 decimals (e.g., 1_032_000 = 1.032 USDC per share).",
2016
+ "This is calculated as: total_aum / total_shares"
2017
+ ],
2018
+ "discriminator": [
2019
+ 163,
2020
+ 224,
2021
+ 192,
2022
+ 75,
2023
+ 137,
2024
+ 79,
2025
+ 214,
2026
+ 21
2027
+ ],
2028
+ "accounts": [
2029
+ {
2030
+ "name": "vault",
2031
+ "docs": [
2032
+ "The vault account to read (KVault or Perena)"
2033
+ ]
2034
+ }
2035
+ ],
2036
+ "args": [],
2037
+ "returns": {
2038
+ "defined": {
2039
+ "name": "SharePriceResult"
2040
+ }
2041
+ }
2042
+ },
2043
+ {
2044
+ "name": "remove_from_allowlist",
2045
+ "docs": [
2046
+ "Remove a wallet from the allowlist. Admin-only."
2047
+ ],
2048
+ "discriminator": [
2049
+ 45,
2050
+ 46,
2051
+ 214,
2052
+ 56,
2053
+ 189,
2054
+ 77,
2055
+ 242,
2056
+ 227
2057
+ ],
2058
+ "accounts": [
2059
+ {
2060
+ "name": "admin",
2061
+ "docs": [
2062
+ "The admin who manages the allowlist"
2063
+ ],
2064
+ "writable": true,
2065
+ "signer": true
2066
+ },
2067
+ {
2068
+ "name": "program_config",
2069
+ "docs": [
2070
+ "The program config (verifies admin authority)"
2071
+ ],
2072
+ "pda": {
2073
+ "seeds": [
2074
+ {
2075
+ "kind": "const",
2076
+ "value": [
2077
+ 112,
2078
+ 114,
2079
+ 111,
2080
+ 103,
2081
+ 114,
2082
+ 97,
2083
+ 109,
2084
+ 95,
2085
+ 99,
2086
+ 111,
2087
+ 110,
2088
+ 102,
2089
+ 105,
2090
+ 103
2091
+ ]
2092
+ }
2093
+ ]
2094
+ }
2095
+ },
2096
+ {
2097
+ "name": "wallet",
2098
+ "docs": [
2099
+ "The wallet to remove from the allowlist"
2100
+ ]
2101
+ },
2102
+ {
2103
+ "name": "allowlist_entry",
2104
+ "docs": [
2105
+ "The AllowlistEntry PDA to close (rent refunded to admin)"
2106
+ ],
2107
+ "writable": true,
2108
+ "pda": {
2109
+ "seeds": [
2110
+ {
2111
+ "kind": "const",
2112
+ "value": [
2113
+ 97,
2114
+ 108,
2115
+ 108,
2116
+ 111,
2117
+ 119,
2118
+ 108,
2119
+ 105,
2120
+ 115,
2121
+ 116
2122
+ ]
2123
+ },
2124
+ {
2125
+ "kind": "account",
2126
+ "path": "wallet"
2127
+ }
2128
+ ]
2129
+ }
2130
+ }
2131
+ ],
2132
+ "args": []
2133
+ },
2134
+ {
2135
+ "name": "repay",
2136
+ "docs": [
2137
+ "Repay borrowed liquidity (USDC).",
2138
+ "Routes to Kamino or JupLend based on user_state.lending_provider."
2139
+ ],
2140
+ "discriminator": [
2141
+ 234,
2142
+ 103,
2143
+ 67,
2144
+ 82,
2145
+ 208,
2146
+ 234,
2147
+ 219,
2148
+ 166
2149
+ ],
2150
+ "accounts": [
2151
+ {
2152
+ "name": "owner",
2153
+ "docs": [
2154
+ "The user repaying"
2155
+ ],
2156
+ "writable": true,
2157
+ "signer": true,
2158
+ "relations": [
2159
+ "user_state"
2160
+ ]
2161
+ },
2162
+ {
2163
+ "name": "user_state",
2164
+ "docs": [
2165
+ "The UserState PDA"
2166
+ ],
2167
+ "writable": true,
2168
+ "pda": {
2169
+ "seeds": [
2170
+ {
2171
+ "kind": "const",
2172
+ "value": [
2173
+ 117,
2174
+ 115,
2175
+ 101,
2176
+ 114,
2177
+ 95,
2178
+ 115,
2179
+ 116,
2180
+ 97,
2181
+ 116,
2182
+ 101
2183
+ ]
2184
+ },
2185
+ {
2186
+ "kind": "account",
2187
+ "path": "owner"
2188
+ },
2189
+ {
2190
+ "kind": "account",
2191
+ "path": "collateral_mint"
2192
+ }
2193
+ ]
2194
+ }
2195
+ },
2196
+ {
2197
+ "name": "collateral_mint"
2198
+ },
2199
+ {
2200
+ "name": "user_usdc_ata",
2201
+ "docs": [
2202
+ "The user's USDC token account (source for repayment)"
2203
+ ],
2204
+ "writable": true
2205
+ },
2206
+ {
2207
+ "name": "pda_usdc_ata",
2208
+ "writable": true
2209
+ },
2210
+ {
2211
+ "name": "token_program",
2212
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
2213
+ },
2214
+ {
2215
+ "name": "program_config",
2216
+ "docs": [
2217
+ "Operator config - used to check allowlist_enabled flag"
2218
+ ],
2219
+ "pda": {
2220
+ "seeds": [
2221
+ {
2222
+ "kind": "const",
2223
+ "value": [
2224
+ 112,
2225
+ 114,
2226
+ 111,
2227
+ 103,
2228
+ 114,
2229
+ 97,
2230
+ 109,
2231
+ 95,
2232
+ 99,
2233
+ 111,
2234
+ 110,
2235
+ 102,
2236
+ 105,
2237
+ 103
2238
+ ]
2239
+ }
2240
+ ]
2241
+ }
2242
+ },
2243
+ {
2244
+ "name": "allowlist_entry",
2245
+ "docs": [
2246
+ "Allowlist entry for the owner - checked only when allowlist is enabled"
2247
+ ],
2248
+ "pda": {
2249
+ "seeds": [
2250
+ {
2251
+ "kind": "const",
2252
+ "value": [
2253
+ 97,
2254
+ 108,
2255
+ 108,
2256
+ 111,
2257
+ 119,
2258
+ 108,
2259
+ 105,
2260
+ 115,
2261
+ 116
2262
+ ]
2263
+ },
2264
+ {
2265
+ "kind": "account",
2266
+ "path": "owner"
2267
+ }
2268
+ ]
2269
+ }
2270
+ }
2271
+ ],
2272
+ "args": [
2273
+ {
2274
+ "name": "liquidity_amount",
2275
+ "type": "u64"
2276
+ }
2277
+ ]
2278
+ },
2279
+ {
2280
+ "name": "set_admin",
2281
+ "docs": [
2282
+ "Change the admin address. Deployer-only."
2283
+ ],
2284
+ "discriminator": [
2285
+ 251,
2286
+ 163,
2287
+ 0,
2288
+ 52,
2289
+ 91,
2290
+ 194,
2291
+ 187,
2292
+ 92
2293
+ ],
2294
+ "accounts": [
2295
+ {
2296
+ "name": "deployer",
2297
+ "signer": true
2298
+ },
2299
+ {
2300
+ "name": "program_config",
2301
+ "writable": true,
2302
+ "pda": {
2303
+ "seeds": [
2304
+ {
2305
+ "kind": "const",
2306
+ "value": [
2307
+ 112,
2308
+ 114,
2309
+ 111,
2310
+ 103,
2311
+ 114,
2312
+ 97,
2313
+ 109,
2314
+ 95,
2315
+ 99,
2316
+ 111,
2317
+ 110,
2318
+ 102,
2319
+ 105,
2320
+ 103
2321
+ ]
2322
+ }
2323
+ ]
2324
+ }
2325
+ },
2326
+ {
2327
+ "name": "program_data",
2328
+ "docs": [
2329
+ "The program's data account — contains the upgrade authority"
2330
+ ],
2331
+ "pda": {
2332
+ "seeds": [
2333
+ {
2334
+ "kind": "const",
2335
+ "value": [
2336
+ 37,
2337
+ 104,
2338
+ 101,
2339
+ 104,
2340
+ 240,
2341
+ 200,
2342
+ 75,
2343
+ 165,
2344
+ 201,
2345
+ 246,
2346
+ 135,
2347
+ 24,
2348
+ 163,
2349
+ 37,
2350
+ 39,
2351
+ 94,
2352
+ 130,
2353
+ 80,
2354
+ 152,
2355
+ 158,
2356
+ 136,
2357
+ 46,
2358
+ 228,
2359
+ 107,
2360
+ 213,
2361
+ 142,
2362
+ 173,
2363
+ 180,
2364
+ 126,
2365
+ 173,
2366
+ 224,
2367
+ 82
2368
+ ]
2369
+ }
2370
+ ],
2371
+ "program": {
2372
+ "kind": "const",
2373
+ "value": [
2374
+ 2,
2375
+ 168,
2376
+ 246,
2377
+ 145,
2378
+ 78,
2379
+ 136,
2380
+ 161,
2381
+ 176,
2382
+ 226,
2383
+ 16,
2384
+ 21,
2385
+ 62,
2386
+ 247,
2387
+ 99,
2388
+ 174,
2389
+ 43,
2390
+ 0,
2391
+ 194,
2392
+ 185,
2393
+ 61,
2394
+ 22,
2395
+ 193,
2396
+ 36,
2397
+ 210,
2398
+ 192,
2399
+ 83,
2400
+ 122,
2401
+ 16,
2402
+ 4,
2403
+ 128,
2404
+ 0,
2405
+ 0
2406
+ ]
2407
+ }
2408
+ }
2409
+ }
2410
+ ],
2411
+ "args": [
2412
+ {
2413
+ "name": "new_admin",
2414
+ "type": "pubkey"
2415
+ }
2416
+ ]
2417
+ },
2418
+ {
2419
+ "name": "set_allowlist_enabled",
2420
+ "docs": [
2421
+ "Enable or disable the global allowlist. Admin-only."
2422
+ ],
2423
+ "discriminator": [
2424
+ 204,
2425
+ 179,
2426
+ 188,
2427
+ 165,
2428
+ 225,
2429
+ 141,
2430
+ 118,
2431
+ 243
2432
+ ],
2433
+ "accounts": [
2434
+ {
2435
+ "name": "admin",
2436
+ "signer": true
2437
+ },
2438
+ {
2439
+ "name": "program_config",
2440
+ "writable": true,
2441
+ "pda": {
2442
+ "seeds": [
2443
+ {
2444
+ "kind": "const",
2445
+ "value": [
2446
+ 112,
2447
+ 114,
2448
+ 111,
2449
+ 103,
2450
+ 114,
2451
+ 97,
2452
+ 109,
2453
+ 95,
2454
+ 99,
2455
+ 111,
2456
+ 110,
2457
+ 102,
2458
+ 105,
2459
+ 103
2460
+ ]
2461
+ }
2462
+ ]
2463
+ }
2464
+ }
2465
+ ],
2466
+ "args": [
2467
+ {
2468
+ "name": "enabled",
2469
+ "type": "bool"
2470
+ }
2471
+ ]
2472
+ },
2473
+ {
2474
+ "name": "set_default_operator",
2475
+ "docs": [
2476
+ "Set the default operator stored on ProgramConfig. Admin-only.",
2477
+ "",
2478
+ "Only affects users initialized AFTER this call — `initialize_user`",
2479
+ "snapshots `program_config.operator` into each new `UserState`.",
2480
+ "Existing users keep their previously-assigned operator; migrate them",
2481
+ "individually with `set_user_operator` if needed."
2482
+ ],
2483
+ "discriminator": [
2484
+ 251,
2485
+ 221,
2486
+ 34,
2487
+ 16,
2488
+ 209,
2489
+ 222,
2490
+ 115,
2491
+ 240
2492
+ ],
2493
+ "accounts": [
2494
+ {
2495
+ "name": "admin",
2496
+ "docs": [
2497
+ "The admin authority"
2498
+ ],
2499
+ "writable": true,
2500
+ "signer": true
2501
+ },
2502
+ {
2503
+ "name": "program_config",
2504
+ "docs": [
2505
+ "Global program configuration"
2506
+ ],
2507
+ "writable": true,
2508
+ "pda": {
2509
+ "seeds": [
2510
+ {
2511
+ "kind": "const",
2512
+ "value": [
2513
+ 112,
2514
+ 114,
2515
+ 111,
2516
+ 103,
2517
+ 114,
2518
+ 97,
2519
+ 109,
2520
+ 95,
2521
+ 99,
2522
+ 111,
2523
+ 110,
2524
+ 102,
2525
+ 105,
2526
+ 103
2527
+ ]
2528
+ }
2529
+ ]
2530
+ }
2531
+ }
2532
+ ],
2533
+ "args": [
2534
+ {
2535
+ "name": "new_operator",
2536
+ "type": "pubkey"
2537
+ }
2538
+ ]
2539
+ },
2540
+ {
2541
+ "name": "set_deposit_limits",
2542
+ "docs": [
2543
+ "Set global deposit limits for a collateral type. Admin-only.",
2544
+ "min_deposit=0 means no minimum, max_deposit=u64::MAX means no maximum."
2545
+ ],
2546
+ "discriminator": [
2547
+ 167,
2548
+ 127,
2549
+ 131,
2550
+ 202,
2551
+ 2,
2552
+ 109,
2553
+ 0,
2554
+ 80
2555
+ ],
2556
+ "accounts": [
2557
+ {
2558
+ "name": "admin",
2559
+ "writable": true,
2560
+ "signer": true
2561
+ },
2562
+ {
2563
+ "name": "program_config",
2564
+ "pda": {
2565
+ "seeds": [
2566
+ {
2567
+ "kind": "const",
2568
+ "value": [
2569
+ 112,
2570
+ 114,
2571
+ 111,
2572
+ 103,
2573
+ 114,
2574
+ 97,
2575
+ 109,
2576
+ 95,
2577
+ 99,
2578
+ 111,
2579
+ 110,
2580
+ 102,
2581
+ 105,
2582
+ 103
2583
+ ]
2584
+ }
2585
+ ]
2586
+ }
2587
+ },
2588
+ {
2589
+ "name": "collateral_mint"
2590
+ },
2591
+ {
2592
+ "name": "deposit_config",
2593
+ "writable": true,
2594
+ "pda": {
2595
+ "seeds": [
2596
+ {
2597
+ "kind": "const",
2598
+ "value": [
2599
+ 100,
2600
+ 101,
2601
+ 112,
2602
+ 111,
2603
+ 115,
2604
+ 105,
2605
+ 116,
2606
+ 95,
2607
+ 99,
2608
+ 111,
2609
+ 110,
2610
+ 102,
2611
+ 105,
2612
+ 103
2613
+ ]
2614
+ },
2615
+ {
2616
+ "kind": "account",
2617
+ "path": "collateral_mint"
2618
+ }
2619
+ ]
2620
+ }
2621
+ },
2622
+ {
2623
+ "name": "system_program",
2624
+ "address": "11111111111111111111111111111111"
2625
+ }
2626
+ ],
2627
+ "args": [
2628
+ {
2629
+ "name": "min_deposit",
2630
+ "type": "u64"
2631
+ },
2632
+ {
2633
+ "name": "max_deposit",
2634
+ "type": "u64"
2635
+ }
2636
+ ]
2637
+ },
2638
+ {
2639
+ "name": "set_origin_config",
2640
+ "docs": [
2641
+ "Create or update an origin's fee-split config (receiver + share of the",
2642
+ "profit fee, in bps of the fee). Deployer-only."
2643
+ ],
2644
+ "discriminator": [
2645
+ 157,
2646
+ 9,
2647
+ 189,
2648
+ 154,
2649
+ 8,
2650
+ 198,
2651
+ 146,
2652
+ 200
2653
+ ],
2654
+ "accounts": [
2655
+ {
2656
+ "name": "deployer",
2657
+ "writable": true,
2658
+ "signer": true
2659
+ },
2660
+ {
2661
+ "name": "program_data",
2662
+ "docs": [
2663
+ "The program's data account — contains the upgrade authority"
2664
+ ],
2665
+ "pda": {
2666
+ "seeds": [
2667
+ {
2668
+ "kind": "const",
2669
+ "value": [
2670
+ 37,
2671
+ 104,
2672
+ 101,
2673
+ 104,
2674
+ 240,
2675
+ 200,
2676
+ 75,
2677
+ 165,
2678
+ 201,
2679
+ 246,
2680
+ 135,
2681
+ 24,
2682
+ 163,
2683
+ 37,
2684
+ 39,
2685
+ 94,
2686
+ 130,
2687
+ 80,
2688
+ 152,
2689
+ 158,
2690
+ 136,
2691
+ 46,
2692
+ 228,
2693
+ 107,
2694
+ 213,
2695
+ 142,
2696
+ 173,
2697
+ 180,
2698
+ 126,
2699
+ 173,
2700
+ 224,
2701
+ 82
2702
+ ]
2703
+ }
2704
+ ],
2705
+ "program": {
2706
+ "kind": "const",
2707
+ "value": [
2708
+ 2,
2709
+ 168,
2710
+ 246,
2711
+ 145,
2712
+ 78,
2713
+ 136,
2714
+ 161,
2715
+ 176,
2716
+ 226,
2717
+ 16,
2718
+ 21,
2719
+ 62,
2720
+ 247,
2721
+ 99,
2722
+ 174,
2723
+ 43,
2724
+ 0,
2725
+ 194,
2726
+ 185,
2727
+ 61,
2728
+ 22,
2729
+ 193,
2730
+ 36,
2731
+ 210,
2732
+ 192,
2733
+ 83,
2734
+ 122,
2735
+ 16,
2736
+ 4,
2737
+ 128,
2738
+ 0,
2739
+ 0
2740
+ ]
2741
+ }
2742
+ }
2743
+ },
2744
+ {
2745
+ "name": "origin_config",
2746
+ "writable": true
2747
+ },
2748
+ {
2749
+ "name": "receiver_wallet"
2750
+ },
2751
+ {
2752
+ "name": "usdc_mint",
2753
+ "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
2754
+ },
2755
+ {
2756
+ "name": "receiver_usdc_ata",
2757
+ "writable": true
2758
+ },
2759
+ {
2760
+ "name": "token_program",
2761
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
2762
+ },
2763
+ {
2764
+ "name": "associated_token_program",
2765
+ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
2766
+ },
2767
+ {
2768
+ "name": "system_program",
2769
+ "address": "11111111111111111111111111111111"
2770
+ }
2771
+ ],
2772
+ "args": [
2773
+ {
2774
+ "name": "origin",
2775
+ "type": "u8"
2776
+ },
2777
+ {
2778
+ "name": "receiver",
2779
+ "type": "pubkey"
2780
+ },
2781
+ {
2782
+ "name": "fee_share_bps",
2783
+ "type": "u16"
2784
+ }
2785
+ ]
2786
+ },
2787
+ {
2788
+ "name": "set_profit_fee",
2789
+ "docs": [
2790
+ "Set the profit fee in basis points. Admin-only."
2791
+ ],
2792
+ "discriminator": [
2793
+ 207,
2794
+ 222,
2795
+ 151,
2796
+ 187,
2797
+ 42,
2798
+ 125,
2799
+ 117,
2800
+ 218
2801
+ ],
2802
+ "accounts": [
2803
+ {
2804
+ "name": "admin",
2805
+ "signer": true
2806
+ },
2807
+ {
2808
+ "name": "program_config",
2809
+ "writable": true,
2810
+ "pda": {
2811
+ "seeds": [
2812
+ {
2813
+ "kind": "const",
2814
+ "value": [
2815
+ 112,
2816
+ 114,
2817
+ 111,
2818
+ 103,
2819
+ 114,
2820
+ 97,
2821
+ 109,
2822
+ 95,
2823
+ 99,
2824
+ 111,
2825
+ 110,
2826
+ 102,
2827
+ 105,
2828
+ 103
2829
+ ]
2830
+ }
2831
+ ]
2832
+ }
2833
+ }
2834
+ ],
2835
+ "args": [
2836
+ {
2837
+ "name": "profit_fee_bps",
2838
+ "type": "u16"
2839
+ }
2840
+ ]
2841
+ },
2842
+ {
2843
+ "name": "set_treasury",
2844
+ "docs": [
2845
+ "Change the treasury address (receives profit fees). Deployer-only."
2846
+ ],
2847
+ "discriminator": [
2848
+ 57,
2849
+ 97,
2850
+ 196,
2851
+ 95,
2852
+ 195,
2853
+ 206,
2854
+ 106,
2855
+ 136
2856
+ ],
2857
+ "accounts": [
2858
+ {
2859
+ "name": "deployer",
2860
+ "writable": true,
2861
+ "signer": true
2862
+ },
2863
+ {
2864
+ "name": "program_config",
2865
+ "writable": true,
2866
+ "pda": {
2867
+ "seeds": [
2868
+ {
2869
+ "kind": "const",
2870
+ "value": [
2871
+ 112,
2872
+ 114,
2873
+ 111,
2874
+ 103,
2875
+ 114,
2876
+ 97,
2877
+ 109,
2878
+ 95,
2879
+ 99,
2880
+ 111,
2881
+ 110,
2882
+ 102,
2883
+ 105,
2884
+ 103
2885
+ ]
2886
+ }
2887
+ ]
2888
+ }
2889
+ },
2890
+ {
2891
+ "name": "program_data",
2892
+ "docs": [
2893
+ "The program's data account — contains the upgrade authority"
2894
+ ],
2895
+ "pda": {
2896
+ "seeds": [
2897
+ {
2898
+ "kind": "const",
2899
+ "value": [
2900
+ 37,
2901
+ 104,
2902
+ 101,
2903
+ 104,
2904
+ 240,
2905
+ 200,
2906
+ 75,
2907
+ 165,
2908
+ 201,
2909
+ 246,
2910
+ 135,
2911
+ 24,
2912
+ 163,
2913
+ 37,
2914
+ 39,
2915
+ 94,
2916
+ 130,
2917
+ 80,
2918
+ 152,
2919
+ 158,
2920
+ 136,
2921
+ 46,
2922
+ 228,
2923
+ 107,
2924
+ 213,
2925
+ 142,
2926
+ 173,
2927
+ 180,
2928
+ 126,
2929
+ 173,
2930
+ 224,
2931
+ 82
2932
+ ]
2933
+ }
2934
+ ],
2935
+ "program": {
2936
+ "kind": "const",
2937
+ "value": [
2938
+ 2,
2939
+ 168,
2940
+ 246,
2941
+ 145,
2942
+ 78,
2943
+ 136,
2944
+ 161,
2945
+ 176,
2946
+ 226,
2947
+ 16,
2948
+ 21,
2949
+ 62,
2950
+ 247,
2951
+ 99,
2952
+ 174,
2953
+ 43,
2954
+ 0,
2955
+ 194,
2956
+ 185,
2957
+ 61,
2958
+ 22,
2959
+ 193,
2960
+ 36,
2961
+ 210,
2962
+ 192,
2963
+ 83,
2964
+ 122,
2965
+ 16,
2966
+ 4,
2967
+ 128,
2968
+ 0,
2969
+ 0
2970
+ ]
2971
+ }
2972
+ }
2973
+ },
2974
+ {
2975
+ "name": "new_treasury_wallet"
2976
+ },
2977
+ {
2978
+ "name": "usdc_mint",
2979
+ "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
2980
+ },
2981
+ {
2982
+ "name": "treasury_usdc_ata",
2983
+ "writable": true
2984
+ },
2985
+ {
2986
+ "name": "token_program",
2987
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
2988
+ },
2989
+ {
2990
+ "name": "associated_token_program",
2991
+ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
2992
+ },
2993
+ {
2994
+ "name": "system_program",
2995
+ "address": "11111111111111111111111111111111"
2996
+ }
2997
+ ],
2998
+ "args": [
2999
+ {
3000
+ "name": "new_treasury",
3001
+ "type": "pubkey"
3002
+ }
3003
+ ]
3004
+ },
3005
+ {
3006
+ "name": "set_user_deposit_limits",
3007
+ "docs": [
3008
+ "Set per-user deposit limits for a specific collateral. Admin-only.",
3009
+ "Overrides the global limits for this user."
3010
+ ],
3011
+ "discriminator": [
3012
+ 159,
3013
+ 144,
3014
+ 90,
3015
+ 53,
3016
+ 182,
3017
+ 56,
3018
+ 108,
3019
+ 189
3020
+ ],
3021
+ "accounts": [
3022
+ {
3023
+ "name": "admin",
3024
+ "signer": true
3025
+ },
3026
+ {
3027
+ "name": "program_config",
3028
+ "pda": {
3029
+ "seeds": [
3030
+ {
3031
+ "kind": "const",
3032
+ "value": [
3033
+ 112,
3034
+ 114,
3035
+ 111,
3036
+ 103,
3037
+ 114,
3038
+ 97,
3039
+ 109,
3040
+ 95,
3041
+ 99,
3042
+ 111,
3043
+ 110,
3044
+ 102,
3045
+ 105,
3046
+ 103
3047
+ ]
3048
+ }
3049
+ ]
3050
+ }
3051
+ },
3052
+ {
3053
+ "name": "user"
3054
+ },
3055
+ {
3056
+ "name": "collateral_mint"
3057
+ },
3058
+ {
3059
+ "name": "user_state",
3060
+ "writable": true,
3061
+ "pda": {
3062
+ "seeds": [
3063
+ {
3064
+ "kind": "const",
3065
+ "value": [
3066
+ 117,
3067
+ 115,
3068
+ 101,
3069
+ 114,
3070
+ 95,
3071
+ 115,
3072
+ 116,
3073
+ 97,
3074
+ 116,
3075
+ 101
3076
+ ]
3077
+ },
3078
+ {
3079
+ "kind": "account",
3080
+ "path": "user"
3081
+ },
3082
+ {
3083
+ "kind": "account",
3084
+ "path": "collateral_mint"
3085
+ }
3086
+ ]
3087
+ }
3088
+ }
3089
+ ],
3090
+ "args": [
3091
+ {
3092
+ "name": "min_deposit",
3093
+ "type": "u64"
3094
+ },
3095
+ {
3096
+ "name": "max_deposit",
3097
+ "type": "u64"
3098
+ }
3099
+ ]
3100
+ },
3101
+ {
3102
+ "name": "set_user_operator",
3103
+ "docs": [
3104
+ "Set the operator for a specific user. Admin-only.",
3105
+ "This allows assigning different operators to different users."
3106
+ ],
3107
+ "discriminator": [
3108
+ 185,
3109
+ 31,
3110
+ 8,
3111
+ 241,
3112
+ 50,
3113
+ 184,
3114
+ 102,
3115
+ 58
3116
+ ],
3117
+ "accounts": [
3118
+ {
3119
+ "name": "admin",
3120
+ "docs": [
3121
+ "The admin authority"
3122
+ ],
3123
+ "writable": true,
3124
+ "signer": true
3125
+ },
3126
+ {
3127
+ "name": "program_config",
3128
+ "docs": [
3129
+ "Global operator configuration (validates admin authority)"
3130
+ ],
3131
+ "pda": {
3132
+ "seeds": [
3133
+ {
3134
+ "kind": "const",
3135
+ "value": [
3136
+ 112,
3137
+ 114,
3138
+ 111,
3139
+ 103,
3140
+ 114,
3141
+ 97,
3142
+ 109,
3143
+ 95,
3144
+ 99,
3145
+ 111,
3146
+ 110,
3147
+ 102,
3148
+ 105,
3149
+ 103
3150
+ ]
3151
+ }
3152
+ ]
3153
+ }
3154
+ },
3155
+ {
3156
+ "name": "user_state",
3157
+ "docs": [
3158
+ "The UserState PDA to update"
3159
+ ],
3160
+ "writable": true,
3161
+ "pda": {
3162
+ "seeds": [
3163
+ {
3164
+ "kind": "const",
3165
+ "value": [
3166
+ 117,
3167
+ 115,
3168
+ 101,
3169
+ 114,
3170
+ 95,
3171
+ 115,
3172
+ 116,
3173
+ 97,
3174
+ 116,
3175
+ 101
3176
+ ]
3177
+ },
3178
+ {
3179
+ "kind": "account",
3180
+ "path": "user"
3181
+ },
3182
+ {
3183
+ "kind": "account",
3184
+ "path": "collateral_mint"
3185
+ }
3186
+ ]
3187
+ }
3188
+ },
3189
+ {
3190
+ "name": "user"
3191
+ },
3192
+ {
3193
+ "name": "collateral_mint"
3194
+ }
3195
+ ],
3196
+ "args": [
3197
+ {
3198
+ "name": "new_operator",
3199
+ "type": "pubkey"
3200
+ }
3201
+ ]
3202
+ },
3203
+ {
3204
+ "name": "switch_vault",
3205
+ "docs": [
3206
+ "Switch a user's funds from current vault to a new vault.",
3207
+ "Operator-only, per-user: withdraws all from current vault and deposits to new vault.",
3208
+ "The USDC amount is automatically determined from the actual withdrawal."
3209
+ ],
3210
+ "discriminator": [
3211
+ 15,
3212
+ 101,
3213
+ 59,
3214
+ 72,
3215
+ 124,
3216
+ 231,
3217
+ 232,
3218
+ 255
3219
+ ],
3220
+ "accounts": [
3221
+ {
3222
+ "name": "operator",
3223
+ "docs": [
3224
+ "The operator who can manage vault operations"
3225
+ ],
3226
+ "writable": true,
3227
+ "signer": true
3228
+ },
3229
+ {
3230
+ "name": "user_state",
3231
+ "docs": [
3232
+ "The UserState PDA whose funds are being switched"
3233
+ ],
3234
+ "writable": true,
3235
+ "pda": {
3236
+ "seeds": [
3237
+ {
3238
+ "kind": "const",
3239
+ "value": [
3240
+ 117,
3241
+ 115,
3242
+ 101,
3243
+ 114,
3244
+ 95,
3245
+ 115,
3246
+ 116,
3247
+ 97,
3248
+ 116,
3249
+ 101
3250
+ ]
3251
+ },
3252
+ {
3253
+ "kind": "account",
3254
+ "path": "user"
3255
+ },
3256
+ {
3257
+ "kind": "account",
3258
+ "path": "collateral_mint"
3259
+ }
3260
+ ]
3261
+ }
3262
+ },
3263
+ {
3264
+ "name": "user"
3265
+ },
3266
+ {
3267
+ "name": "collateral_mint"
3268
+ },
3269
+ {
3270
+ "name": "old_vault",
3271
+ "docs": [
3272
+ "The current/old vault account"
3273
+ ],
3274
+ "writable": true
3275
+ },
3276
+ {
3277
+ "name": "old_shares_mint",
3278
+ "docs": [
3279
+ "The old vault shares mint"
3280
+ ],
3281
+ "writable": true
3282
+ },
3283
+ {
3284
+ "name": "old_pda_shares_ata",
3285
+ "writable": true
3286
+ },
3287
+ {
3288
+ "name": "new_vault",
3289
+ "docs": [
3290
+ "The new vault account"
3291
+ ],
3292
+ "writable": true
3293
+ },
3294
+ {
3295
+ "name": "new_shares_mint",
3296
+ "docs": [
3297
+ "The new vault shares mint"
3298
+ ],
3299
+ "writable": true
3300
+ },
3301
+ {
3302
+ "name": "new_pda_shares_ata",
3303
+ "docs": [
3304
+ "The user's PDA shares ATA for new vault",
3305
+ "minted vault shares cannot be redirected to an operator-controlled account."
3306
+ ],
3307
+ "writable": true
3308
+ },
3309
+ {
3310
+ "name": "pda_usdc_ata",
3311
+ "writable": true
3312
+ },
3313
+ {
3314
+ "name": "token_mint",
3315
+ "docs": [
3316
+ "The underlying token mint (USDC) - same for both vaults"
3317
+ ],
3318
+ "writable": true
3319
+ },
3320
+ {
3321
+ "name": "token_program",
3322
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
3323
+ },
3324
+ {
3325
+ "name": "shares_token_program",
3326
+ "docs": [
3327
+ "Shares token program (SPL Token for shares mint)"
3328
+ ]
3329
+ }
3330
+ ],
3331
+ "args": [
3332
+ {
3333
+ "name": "old_remaining_count",
3334
+ "type": "u8"
3335
+ },
3336
+ {
3337
+ "name": "new_vault_provider",
3338
+ "type": "u8"
3339
+ }
3340
+ ]
3341
+ },
3342
+ {
3343
+ "name": "withdraw",
3344
+ "docs": [
3345
+ "Withdraw collateral (cbBTC).",
3346
+ "Routes to Kamino or JupLend based on user_state.lending_provider."
3347
+ ],
3348
+ "discriminator": [
3349
+ 183,
3350
+ 18,
3351
+ 70,
3352
+ 156,
3353
+ 148,
3354
+ 109,
3355
+ 161,
3356
+ 34
3357
+ ],
3358
+ "accounts": [
3359
+ {
3360
+ "name": "owner",
3361
+ "docs": [
3362
+ "The user withdrawing collateral"
3363
+ ],
3364
+ "writable": true,
3365
+ "signer": true,
3366
+ "relations": [
3367
+ "user_state"
3368
+ ]
3369
+ },
3370
+ {
3371
+ "name": "user_state",
3372
+ "docs": [
3373
+ "The UserState PDA"
3374
+ ],
3375
+ "writable": true,
3376
+ "pda": {
3377
+ "seeds": [
3378
+ {
3379
+ "kind": "const",
3380
+ "value": [
3381
+ 117,
3382
+ 115,
3383
+ 101,
3384
+ 114,
3385
+ 95,
3386
+ 115,
3387
+ 116,
3388
+ 97,
3389
+ 116,
3390
+ 101
3391
+ ]
3392
+ },
3393
+ {
3394
+ "kind": "account",
3395
+ "path": "owner"
3396
+ },
3397
+ {
3398
+ "kind": "account",
3399
+ "path": "collateral_mint"
3400
+ }
3401
+ ]
3402
+ }
3403
+ },
3404
+ {
3405
+ "name": "collateral_mint"
3406
+ },
3407
+ {
3408
+ "name": "pda_destination_ata",
3409
+ "writable": true
3410
+ },
3411
+ {
3412
+ "name": "user_destination_ata",
3413
+ "docs": [
3414
+ "The user's collateral token account (final destination)"
3415
+ ],
3416
+ "writable": true
3417
+ },
3418
+ {
3419
+ "name": "token_program",
3420
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
3421
+ },
3422
+ {
3423
+ "name": "program_config",
3424
+ "docs": [
3425
+ "Operator config - used to check allowlist_enabled flag"
3426
+ ],
3427
+ "pda": {
3428
+ "seeds": [
3429
+ {
3430
+ "kind": "const",
3431
+ "value": [
3432
+ 112,
3433
+ 114,
3434
+ 111,
3435
+ 103,
3436
+ 114,
3437
+ 97,
3438
+ 109,
3439
+ 95,
3440
+ 99,
3441
+ 111,
3442
+ 110,
3443
+ 102,
3444
+ 105,
3445
+ 103
3446
+ ]
3447
+ }
3448
+ ]
3449
+ }
3450
+ },
3451
+ {
3452
+ "name": "allowlist_entry",
3453
+ "docs": [
3454
+ "Allowlist entry for the owner - checked only when allowlist is enabled"
3455
+ ],
3456
+ "pda": {
3457
+ "seeds": [
3458
+ {
3459
+ "kind": "const",
3460
+ "value": [
3461
+ 97,
3462
+ 108,
3463
+ 108,
3464
+ 111,
3465
+ 119,
3466
+ 108,
3467
+ 105,
3468
+ 115,
3469
+ 116
3470
+ ]
3471
+ },
3472
+ {
3473
+ "kind": "account",
3474
+ "path": "owner"
3475
+ }
3476
+ ]
3477
+ }
3478
+ }
3479
+ ],
3480
+ "args": [
3481
+ {
3482
+ "name": "collateral_amount",
3483
+ "type": "u64"
3484
+ }
3485
+ ]
3486
+ }
3487
+ ],
3488
+ "accounts": [
3489
+ {
3490
+ "name": "AllowlistEntry",
3491
+ "discriminator": [
3492
+ 42,
3493
+ 59,
3494
+ 88,
3495
+ 1,
3496
+ 124,
3497
+ 138,
3498
+ 92,
3499
+ 236
3500
+ ]
3501
+ },
3502
+ {
3503
+ "name": "DepositConfig",
3504
+ "discriminator": [
3505
+ 150,
3506
+ 251,
3507
+ 169,
3508
+ 117,
3509
+ 132,
3510
+ 146,
3511
+ 40,
3512
+ 21
3513
+ ]
3514
+ },
3515
+ {
3516
+ "name": "OriginConfig",
3517
+ "discriminator": [
3518
+ 13,
3519
+ 164,
3520
+ 185,
3521
+ 151,
3522
+ 133,
3523
+ 33,
3524
+ 81,
3525
+ 104
3526
+ ]
3527
+ },
3528
+ {
3529
+ "name": "ProgramConfig",
3530
+ "discriminator": [
3531
+ 196,
3532
+ 210,
3533
+ 90,
3534
+ 231,
3535
+ 144,
3536
+ 149,
3537
+ 140,
3538
+ 63
3539
+ ]
3540
+ },
3541
+ {
3542
+ "name": "UserOrigin",
3543
+ "discriminator": [
3544
+ 56,
3545
+ 195,
3546
+ 70,
3547
+ 79,
3548
+ 199,
3549
+ 188,
3550
+ 237,
3551
+ 67
3552
+ ]
3553
+ },
3554
+ {
3555
+ "name": "UserState",
3556
+ "discriminator": [
3557
+ 72,
3558
+ 177,
3559
+ 85,
3560
+ 249,
3561
+ 76,
3562
+ 167,
3563
+ 186,
3564
+ 126
3565
+ ]
3566
+ }
3567
+ ],
3568
+ "events": [
3569
+ {
3570
+ "name": "OperatorBorrowed",
3571
+ "discriminator": [
3572
+ 24,
3573
+ 8,
3574
+ 210,
3575
+ 75,
3576
+ 230,
3577
+ 173,
3578
+ 170,
3579
+ 30
3580
+ ]
3581
+ },
3582
+ {
3583
+ "name": "OperatorRepaid",
3584
+ "discriminator": [
3585
+ 179,
3586
+ 120,
3587
+ 203,
3588
+ 233,
3589
+ 216,
3590
+ 9,
3591
+ 109,
3592
+ 81
3593
+ ]
3594
+ },
3595
+ {
3596
+ "name": "UserBorrowed",
3597
+ "discriminator": [
3598
+ 137,
3599
+ 105,
3600
+ 74,
3601
+ 145,
3602
+ 30,
3603
+ 158,
3604
+ 175,
3605
+ 26
3606
+ ]
3607
+ },
3608
+ {
3609
+ "name": "UserDeposited",
3610
+ "discriminator": [
3611
+ 83,
3612
+ 166,
3613
+ 194,
3614
+ 102,
3615
+ 87,
3616
+ 104,
3617
+ 88,
3618
+ 137
3619
+ ]
3620
+ },
3621
+ {
3622
+ "name": "UserHarvestPayout",
3623
+ "discriminator": [
3624
+ 50,
3625
+ 162,
3626
+ 78,
3627
+ 134,
3628
+ 120,
3629
+ 22,
3630
+ 249,
3631
+ 60
3632
+ ]
3633
+ },
3634
+ {
3635
+ "name": "UserInitialized",
3636
+ "discriminator": [
3637
+ 66,
3638
+ 195,
3639
+ 5,
3640
+ 223,
3641
+ 42,
3642
+ 84,
3643
+ 135,
3644
+ 60
3645
+ ]
3646
+ },
3647
+ {
3648
+ "name": "UserRepaid",
3649
+ "discriminator": [
3650
+ 166,
3651
+ 36,
3652
+ 192,
3653
+ 17,
3654
+ 135,
3655
+ 77,
3656
+ 253,
3657
+ 109
3658
+ ]
3659
+ },
3660
+ {
3661
+ "name": "UserWithdrawPrepared",
3662
+ "discriminator": [
3663
+ 69,
3664
+ 127,
3665
+ 129,
3666
+ 252,
3667
+ 132,
3668
+ 17,
3669
+ 152,
3670
+ 134
3671
+ ]
3672
+ },
3673
+ {
3674
+ "name": "UserWithdrew",
3675
+ "discriminator": [
3676
+ 44,
3677
+ 122,
3678
+ 143,
3679
+ 104,
3680
+ 47,
3681
+ 75,
3682
+ 111,
3683
+ 86
3684
+ ]
3685
+ },
3686
+ {
3687
+ "name": "VaultHarvested",
3688
+ "discriminator": [
3689
+ 159,
3690
+ 185,
3691
+ 9,
3692
+ 70,
3693
+ 250,
3694
+ 117,
3695
+ 201,
3696
+ 233
3697
+ ]
3698
+ },
3699
+ {
3700
+ "name": "VaultRewardsClaimed",
3701
+ "discriminator": [
3702
+ 116,
3703
+ 197,
3704
+ 119,
3705
+ 97,
3706
+ 245,
3707
+ 117,
3708
+ 100,
3709
+ 64
3710
+ ]
3711
+ },
3712
+ {
3713
+ "name": "VaultSwitched",
3714
+ "discriminator": [
3715
+ 177,
3716
+ 3,
3717
+ 25,
3718
+ 224,
3719
+ 217,
3720
+ 105,
3721
+ 68,
3722
+ 74
3723
+ ]
3724
+ }
3725
+ ],
3726
+ "errors": [
3727
+ {
3728
+ "code": 6000,
3729
+ "name": "InvalidMarketAuthority"
3730
+ },
3731
+ {
3732
+ "code": 6001,
3733
+ "name": "InvalidMarketOwner"
3734
+ },
3735
+ {
3736
+ "code": 6002,
3737
+ "name": "InvalidAccountOwner"
3738
+ },
3739
+ {
3740
+ "code": 6003,
3741
+ "name": "InvalidAmount"
3742
+ },
3743
+ {
3744
+ "code": 6004,
3745
+ "name": "InvalidConfig"
3746
+ },
3747
+ {
3748
+ "code": 6005,
3749
+ "name": "InvalidSigner"
3750
+ },
3751
+ {
3752
+ "code": 6006,
3753
+ "name": "InvalidAccountInput"
3754
+ },
3755
+ {
3756
+ "code": 6007,
3757
+ "name": "MathOverflow"
3758
+ },
3759
+ {
3760
+ "code": 6008,
3761
+ "name": "InsufficientLiquidity"
3762
+ },
3763
+ {
3764
+ "code": 6009,
3765
+ "name": "ReserveStale"
3766
+ },
3767
+ {
3768
+ "code": 6010,
3769
+ "name": "WithdrawTooSmall"
3770
+ },
3771
+ {
3772
+ "code": 6011,
3773
+ "name": "WithdrawTooLarge"
3774
+ },
3775
+ {
3776
+ "code": 6012,
3777
+ "name": "BorrowTooSmall"
3778
+ },
3779
+ {
3780
+ "code": 6013,
3781
+ "name": "BorrowTooLarge"
3782
+ },
3783
+ {
3784
+ "code": 6014,
3785
+ "name": "RepayTooSmall"
3786
+ },
3787
+ {
3788
+ "code": 6015,
3789
+ "name": "LiquidationTooSmall"
3790
+ },
3791
+ {
3792
+ "code": 6016,
3793
+ "name": "ObligationHealthy"
3794
+ },
3795
+ {
3796
+ "code": 6017,
3797
+ "name": "ObligationStale"
3798
+ },
3799
+ {
3800
+ "code": 6018,
3801
+ "name": "ObligationReserveLimit"
3802
+ },
3803
+ {
3804
+ "code": 6019,
3805
+ "name": "InvalidObligationOwner"
3806
+ },
3807
+ {
3808
+ "code": 6020,
3809
+ "name": "ObligationDepositsEmpty"
3810
+ },
3811
+ {
3812
+ "code": 6021,
3813
+ "name": "ObligationBorrowsEmpty"
3814
+ },
3815
+ {
3816
+ "code": 6022,
3817
+ "name": "ObligationDepositsZero"
3818
+ },
3819
+ {
3820
+ "code": 6023,
3821
+ "name": "ObligationBorrowsZero"
3822
+ },
3823
+ {
3824
+ "code": 6024,
3825
+ "name": "InvalidObligationCollateral"
3826
+ },
3827
+ {
3828
+ "code": 6025,
3829
+ "name": "InvalidObligationLiquidity"
3830
+ },
3831
+ {
3832
+ "code": 6026,
3833
+ "name": "ObligationCollateralEmpty"
3834
+ },
3835
+ {
3836
+ "code": 6027,
3837
+ "name": "ObligationLiquidityEmpty"
3838
+ },
3839
+ {
3840
+ "code": 6028,
3841
+ "name": "NegativeInterestRate"
3842
+ },
3843
+ {
3844
+ "code": 6029,
3845
+ "name": "InvalidOracleConfig"
3846
+ },
3847
+ {
3848
+ "code": 6030,
3849
+ "name": "InsufficientProtocolFeesToRedeem"
3850
+ },
3851
+ {
3852
+ "code": 6031,
3853
+ "name": "FlashBorrowCpi"
3854
+ },
3855
+ {
3856
+ "code": 6032,
3857
+ "name": "NoFlashRepayFound"
3858
+ },
3859
+ {
3860
+ "code": 6033,
3861
+ "name": "InvalidFlashRepay"
3862
+ },
3863
+ {
3864
+ "code": 6034,
3865
+ "name": "FlashRepayCpi"
3866
+ },
3867
+ {
3868
+ "code": 6035,
3869
+ "name": "MultipleFlashBorrows"
3870
+ },
3871
+ {
3872
+ "code": 6036,
3873
+ "name": "FlashLoansDisabled"
3874
+ },
3875
+ {
3876
+ "code": 6037,
3877
+ "name": "SwitchboardV2Error"
3878
+ },
3879
+ {
3880
+ "code": 6038,
3881
+ "name": "CouldNotDeserializeScope"
3882
+ },
3883
+ {
3884
+ "code": 6039,
3885
+ "name": "PriceTooOld"
3886
+ },
3887
+ {
3888
+ "code": 6040,
3889
+ "name": "PriceTooDivergentFromTwap"
3890
+ },
3891
+ {
3892
+ "code": 6041,
3893
+ "name": "InvalidTwapPrice"
3894
+ },
3895
+ {
3896
+ "code": 6042,
3897
+ "name": "GlobalEmergencyMode"
3898
+ },
3899
+ {
3900
+ "code": 6043,
3901
+ "name": "InvalidFlag"
3902
+ },
3903
+ {
3904
+ "code": 6044,
3905
+ "name": "PriceNotValid"
3906
+ },
3907
+ {
3908
+ "code": 6045,
3909
+ "name": "PriceIsBiggerThanHeuristic"
3910
+ },
3911
+ {
3912
+ "code": 6046,
3913
+ "name": "PriceIsLowerThanHeuristic"
3914
+ },
3915
+ {
3916
+ "code": 6047,
3917
+ "name": "PriceIsZero"
3918
+ },
3919
+ {
3920
+ "code": 6048,
3921
+ "name": "PriceConfidenceTooWide"
3922
+ },
3923
+ {
3924
+ "code": 6049,
3925
+ "name": "IntegerOverflow"
3926
+ },
3927
+ {
3928
+ "code": 6050,
3929
+ "name": "NoFarmForReserve"
3930
+ },
3931
+ {
3932
+ "code": 6051,
3933
+ "name": "IncorrectInstructionInPosition"
3934
+ },
3935
+ {
3936
+ "code": 6052,
3937
+ "name": "NoPriceFound"
3938
+ },
3939
+ {
3940
+ "code": 6053,
3941
+ "name": "InvalidTwapConfig"
3942
+ },
3943
+ {
3944
+ "code": 6054,
3945
+ "name": "InvalidPythPriceAccount"
3946
+ },
3947
+ {
3948
+ "code": 6055,
3949
+ "name": "InvalidSwitchboardAccount"
3950
+ },
3951
+ {
3952
+ "code": 6056,
3953
+ "name": "InvalidScopePriceAccount"
3954
+ },
3955
+ {
3956
+ "code": 6057,
3957
+ "name": "ObligationCollateralLtvZero"
3958
+ },
3959
+ {
3960
+ "code": 6058,
3961
+ "name": "InvalidObligationSeedsValue"
3962
+ },
3963
+ {
3964
+ "code": 6059,
3965
+ "name": "DeprecatedInvalidObligationId"
3966
+ },
3967
+ {
3968
+ "code": 6060,
3969
+ "name": "InvalidBorrowRateCurvePoint"
3970
+ },
3971
+ {
3972
+ "code": 6061,
3973
+ "name": "InvalidUtilizationRate"
3974
+ },
3975
+ {
3976
+ "code": 6062,
3977
+ "name": "CannotSocializeObligationWithCollateral"
3978
+ },
3979
+ {
3980
+ "code": 6063,
3981
+ "name": "ObligationEmpty"
3982
+ },
3983
+ {
3984
+ "code": 6064,
3985
+ "name": "WithdrawalCapReached"
3986
+ },
3987
+ {
3988
+ "code": 6065,
3989
+ "name": "LastTimestampGreaterThanCurrent"
3990
+ },
3991
+ {
3992
+ "code": 6066,
3993
+ "name": "LiquidationRewardTooSmall"
3994
+ },
3995
+ {
3996
+ "code": 6067,
3997
+ "name": "IsolatedAssetTierViolation"
3998
+ },
3999
+ {
4000
+ "code": 6068,
4001
+ "name": "InconsistentElevationGroup"
4002
+ },
4003
+ {
4004
+ "code": 6069,
4005
+ "name": "InvalidElevationGroup"
4006
+ },
4007
+ {
4008
+ "code": 6070,
4009
+ "name": "InvalidElevationGroupConfig"
4010
+ },
4011
+ {
4012
+ "code": 6071,
4013
+ "name": "UnhealthyElevationGroupLtv"
4014
+ },
4015
+ {
4016
+ "code": 6072,
4017
+ "name": "ElevationGroupNewLoansDisabled"
4018
+ },
4019
+ {
4020
+ "code": 6073,
4021
+ "name": "ReserveDeprecated"
4022
+ },
4023
+ {
4024
+ "code": 6074,
4025
+ "name": "ReferrerAccountNotInitialized"
4026
+ },
4027
+ {
4028
+ "code": 6075,
4029
+ "name": "ReferrerAccountMintMissmatch"
4030
+ },
4031
+ {
4032
+ "code": 6076,
4033
+ "name": "ReferrerAccountWrongAddress"
4034
+ },
4035
+ {
4036
+ "code": 6077,
4037
+ "name": "ReferrerAccountReferrerMissmatch"
4038
+ },
4039
+ {
4040
+ "code": 6078,
4041
+ "name": "ReferrerAccountMissing"
4042
+ },
4043
+ {
4044
+ "code": 6079,
4045
+ "name": "InsufficientReferralFeesToRedeem"
4046
+ },
4047
+ {
4048
+ "code": 6080,
4049
+ "name": "CpiDisabled"
4050
+ },
4051
+ {
4052
+ "code": 6081,
4053
+ "name": "ShortUrlNotAsciiAlphanumeric"
4054
+ },
4055
+ {
4056
+ "code": 6082,
4057
+ "name": "ReserveObsolete"
4058
+ },
4059
+ {
4060
+ "code": 6083,
4061
+ "name": "ElevationGroupAlreadyActivated"
4062
+ },
4063
+ {
4064
+ "code": 6084,
4065
+ "name": "ObligationInObsoleteReserve"
4066
+ },
4067
+ {
4068
+ "code": 6085,
4069
+ "name": "ReferrerStateOwnerMismatch"
4070
+ },
4071
+ {
4072
+ "code": 6086,
4073
+ "name": "UserMetadataOwnerAlreadySet"
4074
+ },
4075
+ {
4076
+ "code": 6087,
4077
+ "name": "CollateralNonLiquidatable"
4078
+ },
4079
+ {
4080
+ "code": 6088,
4081
+ "name": "BorrowingDisabled"
4082
+ },
4083
+ {
4084
+ "code": 6089,
4085
+ "name": "BorrowLimitExceeded"
4086
+ },
4087
+ {
4088
+ "code": 6090,
4089
+ "name": "DepositLimitExceeded"
4090
+ },
4091
+ {
4092
+ "code": 6091,
4093
+ "name": "BorrowingDisabledOutsideElevationGroup"
4094
+ },
4095
+ {
4096
+ "code": 6092,
4097
+ "name": "NetValueRemainingTooSmall"
4098
+ },
4099
+ {
4100
+ "code": 6093,
4101
+ "name": "WorseLtvBlocked"
4102
+ },
4103
+ {
4104
+ "code": 6094,
4105
+ "name": "LiabilitiesBiggerThanAssets"
4106
+ },
4107
+ {
4108
+ "code": 6095,
4109
+ "name": "ReserveTokenBalanceMismatch"
4110
+ },
4111
+ {
4112
+ "code": 6096,
4113
+ "name": "ReserveVaultBalanceMismatch"
4114
+ },
4115
+ {
4116
+ "code": 6097,
4117
+ "name": "ReserveAccountingMismatch"
4118
+ },
4119
+ {
4120
+ "code": 6098,
4121
+ "name": "BorrowingAboveUtilizationRateDisabled"
4122
+ },
4123
+ {
4124
+ "code": 6099,
4125
+ "name": "LiquidationBorrowFactorPriority"
4126
+ },
4127
+ {
4128
+ "code": 6100,
4129
+ "name": "LiquidationLowestLiquidationLtvPriority"
4130
+ },
4131
+ {
4132
+ "code": 6101,
4133
+ "name": "ElevationGroupBorrowLimitExceeded"
4134
+ },
4135
+ {
4136
+ "code": 6102,
4137
+ "name": "ElevationGroupWithoutDebtReserve"
4138
+ },
4139
+ {
4140
+ "code": 6103,
4141
+ "name": "ElevationGroupMaxCollateralReserveZero"
4142
+ },
4143
+ {
4144
+ "code": 6104,
4145
+ "name": "ElevationGroupHasAnotherDebtReserve"
4146
+ },
4147
+ {
4148
+ "code": 6105,
4149
+ "name": "ElevationGroupDebtReserveAsCollateral"
4150
+ },
4151
+ {
4152
+ "code": 6106,
4153
+ "name": "ObligationCollateralExceedsElevationGroupLimit"
4154
+ },
4155
+ {
4156
+ "code": 6107,
4157
+ "name": "ObligationElevationGroupMultipleDebtReserve"
4158
+ },
4159
+ {
4160
+ "code": 6108,
4161
+ "name": "UnsupportedTokenExtension"
4162
+ },
4163
+ {
4164
+ "code": 6109,
4165
+ "name": "InvalidTokenAccount"
4166
+ },
4167
+ {
4168
+ "code": 6110,
4169
+ "name": "DepositDisabledOutsideElevationGroup"
4170
+ },
4171
+ {
4172
+ "code": 6111,
4173
+ "name": "CannotCalculateReferralAmountDueToSlotsMismatch"
4174
+ },
4175
+ {
4176
+ "code": 6112,
4177
+ "name": "ObligationOwnersMustMatch"
4178
+ },
4179
+ {
4180
+ "code": 6113,
4181
+ "name": "ObligationsMustMatch"
4182
+ },
4183
+ {
4184
+ "code": 6114,
4185
+ "name": "LendingMarketsMustMatch"
4186
+ },
4187
+ {
4188
+ "code": 6115,
4189
+ "name": "ObligationCurrentlyMarkedForDeleveraging"
4190
+ },
4191
+ {
4192
+ "code": 6116,
4193
+ "name": "MaximumWithdrawValueZero"
4194
+ },
4195
+ {
4196
+ "code": 6117,
4197
+ "name": "ZeroMaxLtvAssetsInDeposits"
4198
+ },
4199
+ {
4200
+ "code": 6118,
4201
+ "name": "LowestLtvAssetsPriority"
4202
+ },
4203
+ {
4204
+ "code": 6119,
4205
+ "name": "WorseLtvThanUnhealthyLtv"
4206
+ },
4207
+ {
4208
+ "code": 6120,
4209
+ "name": "FarmAccountsMissing"
4210
+ },
4211
+ {
4212
+ "code": 6121,
4213
+ "name": "RepayTooSmallForFullLiquidation"
4214
+ },
4215
+ {
4216
+ "code": 6122,
4217
+ "name": "InsufficientRepayAmount"
4218
+ },
4219
+ {
4220
+ "code": 6123,
4221
+ "name": "OrderIndexOutOfBounds"
4222
+ },
4223
+ {
4224
+ "code": 6124,
4225
+ "name": "InvalidOrderConfiguration"
4226
+ },
4227
+ {
4228
+ "code": 6125,
4229
+ "name": "OrderConfigurationNotSupportedByObligation"
4230
+ },
4231
+ {
4232
+ "code": 6126,
4233
+ "name": "OperationNotPermittedWithCurrentObligationOrders"
4234
+ },
4235
+ {
4236
+ "code": 6127,
4237
+ "name": "OperationNotPermittedMarketImmutable"
4238
+ },
4239
+ {
4240
+ "code": 6128,
4241
+ "name": "OrderCreationDisabled"
4242
+ },
4243
+ {
4244
+ "code": 6129,
4245
+ "name": "NoUpgradeAuthority"
4246
+ },
4247
+ {
4248
+ "code": 6130,
4249
+ "name": "InitialAdminDepositExecuted"
4250
+ },
4251
+ {
4252
+ "code": 6131,
4253
+ "name": "ReserveHasNotReceivedInitialDeposit"
4254
+ },
4255
+ {
4256
+ "code": 6132,
4257
+ "name": "CTokenUsageBlocked"
4258
+ },
4259
+ {
4260
+ "code": 6133,
4261
+ "name": "CannotUseSameReserve"
4262
+ },
4263
+ {
4264
+ "code": 6134,
4265
+ "name": "TransactionIncludesRestrictedPrograms"
4266
+ },
4267
+ {
4268
+ "code": 6135,
4269
+ "name": "BorrowOrderDebtLiquidityMintMismatch"
4270
+ },
4271
+ {
4272
+ "code": 6136,
4273
+ "name": "BorrowOrderMaxBorrowRateExceeded"
4274
+ },
4275
+ {
4276
+ "code": 6137,
4277
+ "name": "BorrowOrderMinDebtTermInsufficient"
4278
+ },
4279
+ {
4280
+ "code": 6138,
4281
+ "name": "BorrowOrderFillTimeLimitExceeded"
4282
+ },
4283
+ {
4284
+ "code": 6139,
4285
+ "name": "ReserveDebtMaturityReached"
4286
+ },
4287
+ {
4288
+ "code": 6140,
4289
+ "name": "NonUpdatableOrderConfiguration"
4290
+ },
4291
+ {
4292
+ "code": 6141,
4293
+ "name": "BorrowOrderExecutionDisabled"
4294
+ },
4295
+ {
4296
+ "code": 6142,
4297
+ "name": "DebtReachedReserveDebtTerm"
4298
+ },
4299
+ {
4300
+ "code": 6143,
4301
+ "name": "ExpectationNotMet"
4302
+ },
4303
+ {
4304
+ "code": 6144,
4305
+ "name": "BorrowOrderFillValueTooSmall"
4306
+ },
4307
+ {
4308
+ "code": 6145,
4309
+ "name": "WithdrawTicketIssuanceDisabled"
4310
+ },
4311
+ {
4312
+ "code": 6146,
4313
+ "name": "WithdrawTicketRedemptionDisabled"
4314
+ },
4315
+ {
4316
+ "code": 6147,
4317
+ "name": "WithdrawTicketStillValid"
4318
+ },
4319
+ {
4320
+ "code": 6148,
4321
+ "name": "WithdrawTicketRequiresFullRedemption"
4322
+ },
4323
+ {
4324
+ "code": 6149,
4325
+ "name": "UserTokenBalanceMismatch"
4326
+ },
4327
+ {
4328
+ "code": 6150,
4329
+ "name": "WithdrawQueuedLiquidityValueTooSmall"
4330
+ },
4331
+ {
4332
+ "code": 6151,
4333
+ "name": "InvalidTokenAccountState"
4334
+ },
4335
+ {
4336
+ "code": 6152,
4337
+ "name": "WithdrawTicketInvalid"
4338
+ },
4339
+ {
4340
+ "code": 6153,
4341
+ "name": "BorrowOrderValueTooSmall"
4342
+ },
4343
+ {
4344
+ "code": 6154,
4345
+ "name": "WithdrawTicketValueTooSmall"
4346
+ },
4347
+ {
4348
+ "code": 6155,
4349
+ "name": "InvalidWithdrawTicketProgressCallbackConfig"
4350
+ },
4351
+ {
4352
+ "code": 6156,
4353
+ "name": "WithdrawTicketProgressCallbackAccountsMissing"
4354
+ },
4355
+ {
4356
+ "code": 6157,
4357
+ "name": "BorrowRolloverConfigurationDisabled"
4358
+ },
4359
+ {
4360
+ "code": 6158,
4361
+ "name": "InvalidObligationConfigUpdateSubject"
4362
+ },
4363
+ {
4364
+ "code": 6159,
4365
+ "name": "BorrowRolloverLiquidityMintMismatch"
4366
+ },
4367
+ {
4368
+ "code": 6160,
4369
+ "name": "ObligationBorrowRolloverNotApplicable"
4370
+ },
4371
+ {
4372
+ "code": 6161,
4373
+ "name": "ObligationBorrowOutsideRolloverWindow"
4374
+ },
4375
+ {
4376
+ "code": 6162,
4377
+ "name": "ObligationBorrowRolloverNotEnabledByOwner"
4378
+ },
4379
+ {
4380
+ "code": 6163,
4381
+ "name": "ObligationBorrowRolloverTargetReserveMismatch"
4382
+ },
4383
+ {
4384
+ "code": 6164,
4385
+ "name": "BorrowRolloverExecutionDisabled"
4386
+ },
4387
+ {
4388
+ "code": 6165,
4389
+ "name": "ObligationAccountingMismatch"
4390
+ },
4391
+ {
4392
+ "code": 6166,
4393
+ "name": "PartialRolloverValueTooSmall"
4394
+ },
4395
+ {
4396
+ "code": 6167,
4397
+ "name": "ObligationBorrowRolloverConfigMismatch"
4398
+ },
4399
+ {
4400
+ "code": 6168,
4401
+ "name": "ObligationBorrowRolloverMustProlongDebtTerm"
4402
+ },
4403
+ {
4404
+ "code": 6169,
4405
+ "name": "RolloverNotSupportedInElevationGroup"
4406
+ },
4407
+ {
4408
+ "code": 6170,
4409
+ "name": "WithdrawTicketCancellationDisabled"
4410
+ },
4411
+ {
4412
+ "code": 6171,
4413
+ "name": "WithdrawTicketFullyCancelled"
4414
+ },
4415
+ {
4416
+ "code": 6172,
4417
+ "name": "CloneSourceReserveDisabled"
4418
+ },
4419
+ {
4420
+ "code": 6173,
4421
+ "name": "CloneTargetReserveAlreadyInUse"
4422
+ },
4423
+ {
4424
+ "code": 6174,
4425
+ "name": "ClonedReserveLiquidityMintMismatch"
4426
+ },
4427
+ {
4428
+ "code": 6175,
4429
+ "name": "ReserveEmergencyMode"
4430
+ },
4431
+ {
4432
+ "code": 6176,
4433
+ "name": "ObligationOwnershipTransferInProgress"
4434
+ },
4435
+ {
4436
+ "code": 6177,
4437
+ "name": "ObligationOwnershipTransferNotInInitiatedState"
4438
+ },
4439
+ {
4440
+ "code": 6178,
4441
+ "name": "ObligationPendingOwnerNotSet"
4442
+ },
4443
+ {
4444
+ "code": 6179,
4445
+ "name": "ObligationInvalidPendingOwner"
4446
+ },
4447
+ {
4448
+ "code": 6180,
4449
+ "name": "ObligationOwnershipTransferNotApproved"
4450
+ },
4451
+ {
4452
+ "code": 6181,
4453
+ "name": "ObligationHasActiveBorrowOrders"
4454
+ },
4455
+ {
4456
+ "code": 6182,
4457
+ "name": "OnlyComputeBudgetCompanionIxsAllowed"
4458
+ },
4459
+ {
4460
+ "code": 6183,
4461
+ "name": "MissingPermissioner"
4462
+ },
4463
+ {
4464
+ "code": 6184,
4465
+ "name": "ReserveRewardsDisabled"
4466
+ }
4467
+ ],
4468
+ "types": [
4469
+ {
4470
+ "name": "AllowlistEntry",
4471
+ "docs": [
4472
+ "Allowlist entry - existence of this PDA means the wallet is allowed"
4473
+ ],
4474
+ "type": {
4475
+ "kind": "struct",
4476
+ "fields": [
4477
+ {
4478
+ "name": "wallet",
4479
+ "type": "pubkey"
4480
+ },
4481
+ {
4482
+ "name": "bump",
4483
+ "type": "u8"
4484
+ }
4485
+ ]
4486
+ }
4487
+ },
4488
+ {
4489
+ "name": "DepositConfig",
4490
+ "docs": [
4491
+ "Global deposit limits per collateral type (admin-configurable)"
4492
+ ],
4493
+ "type": {
4494
+ "kind": "struct",
4495
+ "fields": [
4496
+ {
4497
+ "name": "collateral_mint",
4498
+ "docs": [
4499
+ "The collateral mint this config applies to"
4500
+ ],
4501
+ "type": "pubkey"
4502
+ },
4503
+ {
4504
+ "name": "min_deposit",
4505
+ "docs": [
4506
+ "Minimum deposit amount (default 0)"
4507
+ ],
4508
+ "type": "u64"
4509
+ },
4510
+ {
4511
+ "name": "max_deposit",
4512
+ "docs": [
4513
+ "Maximum deposit amount (default u64::MAX)"
4514
+ ],
4515
+ "type": "u64"
4516
+ },
4517
+ {
4518
+ "name": "bump",
4519
+ "docs": [
4520
+ "Bump seed for this PDA"
4521
+ ],
4522
+ "type": "u8"
4523
+ }
4524
+ ]
4525
+ }
4526
+ },
4527
+ {
4528
+ "name": "OperatorBorrowed",
4529
+ "type": {
4530
+ "kind": "struct",
4531
+ "fields": [
4532
+ {
4533
+ "name": "user",
4534
+ "type": "pubkey"
4535
+ },
4536
+ {
4537
+ "name": "collateral_mint",
4538
+ "type": "pubkey"
4539
+ },
4540
+ {
4541
+ "name": "amount",
4542
+ "type": "u64"
4543
+ }
4544
+ ]
4545
+ }
4546
+ },
4547
+ {
4548
+ "name": "OperatorRepaid",
4549
+ "type": {
4550
+ "kind": "struct",
4551
+ "fields": [
4552
+ {
4553
+ "name": "user",
4554
+ "type": "pubkey"
4555
+ },
4556
+ {
4557
+ "name": "collateral_mint",
4558
+ "type": "pubkey"
4559
+ },
4560
+ {
4561
+ "name": "amount",
4562
+ "type": "u64"
4563
+ }
4564
+ ]
4565
+ }
4566
+ },
4567
+ {
4568
+ "name": "OriginConfig",
4569
+ "docs": [
4570
+ "Per-origin fee-split config (deployer-managed registry).",
4571
+ "The origin's receiver gets `fee_share_bps` of the harvest profit fee;",
4572
+ "the treasury gets the remainder."
4573
+ ],
4574
+ "type": {
4575
+ "kind": "struct",
4576
+ "fields": [
4577
+ {
4578
+ "name": "origin",
4579
+ "docs": [
4580
+ "Origin id this config applies to (0 = hobba)"
4581
+ ],
4582
+ "type": "u8"
4583
+ },
4584
+ {
4585
+ "name": "receiver",
4586
+ "docs": [
4587
+ "Receiver of this origin's share of the harvest profit fee"
4588
+ ],
4589
+ "type": "pubkey"
4590
+ },
4591
+ {
4592
+ "name": "fee_share_bps",
4593
+ "docs": [
4594
+ "Share of the profit fee routed to receiver, in bps of the fee (0..=10_000)"
4595
+ ],
4596
+ "type": "u16"
4597
+ },
4598
+ {
4599
+ "name": "bump",
4600
+ "docs": [
4601
+ "Bump seed for this PDA"
4602
+ ],
4603
+ "type": "u8"
4604
+ }
4605
+ ]
4606
+ }
4607
+ },
4608
+ {
4609
+ "name": "ProgramConfig",
4610
+ "docs": [
4611
+ "Global program configuration"
4612
+ ],
4613
+ "type": {
4614
+ "kind": "struct",
4615
+ "fields": [
4616
+ {
4617
+ "name": "version",
4618
+ "docs": [
4619
+ "Account version for future migrations"
4620
+ ],
4621
+ "type": "u8"
4622
+ },
4623
+ {
4624
+ "name": "operator",
4625
+ "docs": [
4626
+ "The operator authority who can manage vault operations"
4627
+ ],
4628
+ "type": "pubkey"
4629
+ },
4630
+ {
4631
+ "name": "admin",
4632
+ "docs": [
4633
+ "The admin authority (changeable by program upgrade authority)"
4634
+ ],
4635
+ "type": "pubkey"
4636
+ },
4637
+ {
4638
+ "name": "treasury",
4639
+ "docs": [
4640
+ "The treasury authority that receives profit fees (changeable by program upgrade authority)"
4641
+ ],
4642
+ "type": "pubkey"
4643
+ },
4644
+ {
4645
+ "name": "allowlist_enabled",
4646
+ "docs": [
4647
+ "Whether the allowlist is enforced (default true)"
4648
+ ],
4649
+ "type": "bool"
4650
+ },
4651
+ {
4652
+ "name": "profit_fee_bps",
4653
+ "docs": [
4654
+ "Profit fee in basis points (e.g. 1000 = 10%). Applied to harvest_vault proceeds."
4655
+ ],
4656
+ "type": "u16"
4657
+ },
4658
+ {
4659
+ "name": "bump",
4660
+ "docs": [
4661
+ "Bump seed for this PDA"
4662
+ ],
4663
+ "type": "u8"
4664
+ }
4665
+ ]
4666
+ }
4667
+ },
4668
+ {
4669
+ "name": "SharePriceResult",
4670
+ "docs": [
4671
+ "Result of the price calculation"
4672
+ ],
4673
+ "type": {
4674
+ "kind": "struct",
4675
+ "fields": [
4676
+ {
4677
+ "name": "price_per_share",
4678
+ "docs": [
4679
+ "Price per share in USDC with 6 decimals (e.g., 1_032_000 = 1.032 USDC)"
4680
+ ],
4681
+ "type": "u64"
4682
+ },
4683
+ {
4684
+ "name": "total_shares",
4685
+ "docs": [
4686
+ "Total shares issued (raw, with 6 decimals for kTokens)"
4687
+ ],
4688
+ "type": "u64"
4689
+ },
4690
+ {
4691
+ "name": "total_aum",
4692
+ "docs": [
4693
+ "Total AUM in micro-USDC (6 decimals)"
4694
+ ],
4695
+ "type": "u64"
4696
+ },
4697
+ {
4698
+ "name": "token_available",
4699
+ "docs": [
4700
+ "Token available (uninvested) in vault, micro-USDC"
4701
+ ],
4702
+ "type": "u64"
4703
+ }
4704
+ ]
4705
+ }
4706
+ },
4707
+ {
4708
+ "name": "UserBorrowed",
4709
+ "type": {
4710
+ "kind": "struct",
4711
+ "fields": [
4712
+ {
4713
+ "name": "user",
4714
+ "type": "pubkey"
4715
+ },
4716
+ {
4717
+ "name": "collateral_mint",
4718
+ "type": "pubkey"
4719
+ },
4720
+ {
4721
+ "name": "amount",
4722
+ "type": "u64"
4723
+ }
4724
+ ]
4725
+ }
4726
+ },
4727
+ {
4728
+ "name": "UserDeposited",
4729
+ "type": {
4730
+ "kind": "struct",
4731
+ "fields": [
4732
+ {
4733
+ "name": "user",
4734
+ "type": "pubkey"
4735
+ },
4736
+ {
4737
+ "name": "collateral_mint",
4738
+ "type": "pubkey"
4739
+ },
4740
+ {
4741
+ "name": "amount",
4742
+ "type": "u64"
4743
+ }
4744
+ ]
4745
+ }
4746
+ },
4747
+ {
4748
+ "name": "UserHarvestPayout",
4749
+ "type": {
4750
+ "kind": "struct",
4751
+ "fields": [
4752
+ {
4753
+ "name": "user",
4754
+ "type": "pubkey"
4755
+ },
4756
+ {
4757
+ "name": "collateral_mint",
4758
+ "type": "pubkey"
4759
+ },
4760
+ {
4761
+ "name": "gross_harvest",
4762
+ "type": "u64"
4763
+ },
4764
+ {
4765
+ "name": "fee_amount",
4766
+ "docs": [
4767
+ "Total profit fee (origin share + treasury share)"
4768
+ ],
4769
+ "type": "u64"
4770
+ },
4771
+ {
4772
+ "name": "debt_repaid",
4773
+ "type": "u64"
4774
+ },
4775
+ {
4776
+ "name": "user_amount",
4777
+ "type": "u64"
4778
+ },
4779
+ {
4780
+ "name": "origin",
4781
+ "type": "u8"
4782
+ },
4783
+ {
4784
+ "name": "origin_fee",
4785
+ "docs": [
4786
+ "Portion of fee_amount routed to the origin's receiver"
4787
+ ],
4788
+ "type": "u64"
4789
+ }
4790
+ ]
4791
+ }
4792
+ },
4793
+ {
4794
+ "name": "UserInitialized",
4795
+ "docs": [
4796
+ "All position-affecting instructions emit an event with a consistent schema:",
4797
+ "- `user`: the owner of the position",
4798
+ "- `collateral_mint`: the mint identifying the position",
4799
+ "- `amount`: the collateral delta applied by this ix (0 if unchanged)",
4800
+ "- `amount`: the debt (USDC) delta applied by this ix (0 if unchanged)"
4801
+ ],
4802
+ "type": {
4803
+ "kind": "struct",
4804
+ "fields": [
4805
+ {
4806
+ "name": "user",
4807
+ "type": "pubkey"
4808
+ },
4809
+ {
4810
+ "name": "collateral_mint",
4811
+ "type": "pubkey"
4812
+ },
4813
+ {
4814
+ "name": "origin",
4815
+ "type": "u8"
4816
+ }
4817
+ ]
4818
+ }
4819
+ },
4820
+ {
4821
+ "name": "UserOrigin",
4822
+ "docs": [
4823
+ "Per-owner origin registration. One per wallet, shared by all of the",
4824
+ "wallet's positions regardless of collateral mint. Registered on the",
4825
+ "wallet's first initialize_user and immutable thereafter (later inits",
4826
+ "keep the stored origin)."
4827
+ ],
4828
+ "type": {
4829
+ "kind": "struct",
4830
+ "fields": [
4831
+ {
4832
+ "name": "owner",
4833
+ "docs": [
4834
+ "The wallet this origin applies to (Pubkey::default() = not yet registered)"
4835
+ ],
4836
+ "type": "pubkey"
4837
+ },
4838
+ {
4839
+ "name": "origin",
4840
+ "docs": [
4841
+ "Origin id (0 = hobba)"
4842
+ ],
4843
+ "type": "u8"
4844
+ },
4845
+ {
4846
+ "name": "bump",
4847
+ "docs": [
4848
+ "Bump seed for this PDA"
4849
+ ],
4850
+ "type": "u8"
4851
+ }
4852
+ ]
4853
+ }
4854
+ },
4855
+ {
4856
+ "name": "UserRepaid",
4857
+ "type": {
4858
+ "kind": "struct",
4859
+ "fields": [
4860
+ {
4861
+ "name": "user",
4862
+ "type": "pubkey"
4863
+ },
4864
+ {
4865
+ "name": "collateral_mint",
4866
+ "type": "pubkey"
4867
+ },
4868
+ {
4869
+ "name": "amount",
4870
+ "type": "u64"
4871
+ }
4872
+ ]
4873
+ }
4874
+ },
4875
+ {
4876
+ "name": "UserState",
4877
+ "type": {
4878
+ "kind": "struct",
4879
+ "fields": [
4880
+ {
4881
+ "name": "version",
4882
+ "docs": [
4883
+ "Account version for future migrations"
4884
+ ],
4885
+ "type": "u8"
4886
+ },
4887
+ {
4888
+ "name": "owner",
4889
+ "docs": [
4890
+ "The owner/user of this state"
4891
+ ],
4892
+ "type": "pubkey"
4893
+ },
4894
+ {
4895
+ "name": "obligation",
4896
+ "docs": [
4897
+ "The Kamino obligation account managed on behalf of this user"
4898
+ ],
4899
+ "type": "pubkey"
4900
+ },
4901
+ {
4902
+ "name": "lending_market",
4903
+ "docs": [
4904
+ "The Kamino lending market this user operates in",
4905
+ "For JupLend users, this stores the JupLend vault config address"
4906
+ ],
4907
+ "type": "pubkey"
4908
+ },
4909
+ {
4910
+ "name": "lending_provider",
4911
+ "docs": [
4912
+ "Lending provider: 0 = Kamino, 1 = JupLend"
4913
+ ],
4914
+ "type": "u8"
4915
+ },
4916
+ {
4917
+ "name": "bump",
4918
+ "docs": [
4919
+ "Bump seed for the UserState PDA"
4920
+ ],
4921
+ "type": "u8"
4922
+ },
4923
+ {
4924
+ "name": "deposited_to_vault",
4925
+ "docs": [
4926
+ "Total USDC deposited to vault (cost basis for profit calculation, also tracks operator debt principal)"
4927
+ ],
4928
+ "type": "u64"
4929
+ },
4930
+ {
4931
+ "name": "current_vault",
4932
+ "docs": [
4933
+ "The vault this user's shares are currently in (Pubkey::default() = no vault)"
4934
+ ],
4935
+ "type": "pubkey"
4936
+ },
4937
+ {
4938
+ "name": "vault_provider",
4939
+ "docs": [
4940
+ "Vault provider: 0 = KVault (Kamino), 1 = Perena"
4941
+ ],
4942
+ "type": "u8"
4943
+ },
4944
+ {
4945
+ "name": "collateral_mint",
4946
+ "docs": [
4947
+ "The collateral mint identifying this position (e.g. cbBTC or SOL)"
4948
+ ],
4949
+ "type": "pubkey"
4950
+ },
4951
+ {
4952
+ "name": "operator",
4953
+ "docs": [
4954
+ "The operator authority assigned to this user (set from global config on init, admin can change)"
4955
+ ],
4956
+ "type": "pubkey"
4957
+ },
4958
+ {
4959
+ "name": "min_deposit",
4960
+ "docs": [
4961
+ "Minimum deposit amount (default 0)"
4962
+ ],
4963
+ "type": "u64"
4964
+ },
4965
+ {
4966
+ "name": "max_deposit",
4967
+ "docs": [
4968
+ "Maximum deposit amount (default u64::MAX)"
4969
+ ],
4970
+ "type": "u64"
4971
+ }
4972
+ ]
4973
+ }
4974
+ },
4975
+ {
4976
+ "name": "UserWithdrawPrepared",
4977
+ "type": {
4978
+ "kind": "struct",
4979
+ "fields": [
4980
+ {
4981
+ "name": "user",
4982
+ "type": "pubkey"
4983
+ },
4984
+ {
4985
+ "name": "collateral_mint",
4986
+ "type": "pubkey"
4987
+ },
4988
+ {
4989
+ "name": "amount",
4990
+ "type": "u64"
4991
+ }
4992
+ ]
4993
+ }
4994
+ },
4995
+ {
4996
+ "name": "UserWithdrew",
4997
+ "type": {
4998
+ "kind": "struct",
4999
+ "fields": [
5000
+ {
5001
+ "name": "user",
5002
+ "type": "pubkey"
5003
+ },
5004
+ {
5005
+ "name": "collateral_mint",
5006
+ "type": "pubkey"
5007
+ },
5008
+ {
5009
+ "name": "amount",
5010
+ "type": "u64"
5011
+ }
5012
+ ]
5013
+ }
5014
+ },
5015
+ {
5016
+ "name": "VaultHarvested",
5017
+ "type": {
5018
+ "kind": "struct",
5019
+ "fields": [
5020
+ {
5021
+ "name": "user",
5022
+ "type": "pubkey"
5023
+ },
5024
+ {
5025
+ "name": "collateral_mint",
5026
+ "type": "pubkey"
5027
+ },
5028
+ {
5029
+ "name": "amount",
5030
+ "type": "u64"
5031
+ }
5032
+ ]
5033
+ }
5034
+ },
5035
+ {
5036
+ "name": "VaultRewardsClaimed",
5037
+ "type": {
5038
+ "kind": "struct",
5039
+ "fields": [
5040
+ {
5041
+ "name": "user",
5042
+ "type": "pubkey"
5043
+ },
5044
+ {
5045
+ "name": "collateral_mint",
5046
+ "type": "pubkey"
5047
+ },
5048
+ {
5049
+ "name": "amount",
5050
+ "type": "u64"
5051
+ }
5052
+ ]
5053
+ }
5054
+ },
5055
+ {
5056
+ "name": "VaultSwitched",
5057
+ "type": {
5058
+ "kind": "struct",
5059
+ "fields": [
5060
+ {
5061
+ "name": "user",
5062
+ "type": "pubkey"
5063
+ },
5064
+ {
5065
+ "name": "collateral_mint",
5066
+ "type": "pubkey"
5067
+ }
5068
+ ]
5069
+ }
5070
+ }
5071
+ ]
5072
+ }