@kamino-finance/klend-sdk 7.1.4-beta.0 → 7.1.4

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 (240) hide show
  1. package/dist/@codegen/klend/accounts/LendingMarket.d.ts +3 -144
  2. package/dist/@codegen/klend/accounts/LendingMarket.d.ts.map +1 -1
  3. package/dist/@codegen/klend/accounts/LendingMarket.js +3 -105
  4. package/dist/@codegen/klend/accounts/LendingMarket.js.map +1 -1
  5. package/dist/@codegen/klend/accounts/Obligation.d.ts +15 -30
  6. package/dist/@codegen/klend/accounts/Obligation.d.ts.map +1 -1
  7. package/dist/@codegen/klend/accounts/Obligation.js +21 -31
  8. package/dist/@codegen/klend/accounts/Obligation.js.map +1 -1
  9. package/dist/@codegen/klend/accounts/Reserve.d.ts +0 -6
  10. package/dist/@codegen/klend/accounts/Reserve.d.ts.map +1 -1
  11. package/dist/@codegen/klend/accounts/Reserve.js +2 -9
  12. package/dist/@codegen/klend/accounts/Reserve.js.map +1 -1
  13. package/dist/@codegen/klend/accounts/UserState.d.ts +75 -0
  14. package/dist/@codegen/klend/accounts/UserState.d.ts.map +1 -1
  15. package/dist/@codegen/klend/accounts/UserState.js +25 -0
  16. package/dist/@codegen/klend/accounts/UserState.js.map +1 -1
  17. package/dist/@codegen/klend/accounts/index.d.ts +0 -6
  18. package/dist/@codegen/klend/accounts/index.d.ts.map +1 -1
  19. package/dist/@codegen/klend/accounts/index.js +1 -7
  20. package/dist/@codegen/klend/accounts/index.js.map +1 -1
  21. package/dist/@codegen/klend/errors/custom.d.ts +2 -226
  22. package/dist/@codegen/klend/errors/custom.d.ts.map +1 -1
  23. package/dist/@codegen/klend/errors/custom.js +3 -396
  24. package/dist/@codegen/klend/errors/custom.js.map +1 -1
  25. package/dist/@codegen/klend/instructions/idlMissingTypes.d.ts +2 -1
  26. package/dist/@codegen/klend/instructions/idlMissingTypes.d.ts.map +1 -1
  27. package/dist/@codegen/klend/instructions/idlMissingTypes.js +2 -6
  28. package/dist/@codegen/klend/instructions/idlMissingTypes.js.map +1 -1
  29. package/dist/@codegen/klend/instructions/index.d.ts +0 -16
  30. package/dist/@codegen/klend/instructions/index.d.ts.map +1 -1
  31. package/dist/@codegen/klend/instructions/index.js +1 -18
  32. package/dist/@codegen/klend/instructions/index.js.map +1 -1
  33. package/dist/@codegen/klend/instructions/initReserve.d.ts +1 -1
  34. package/dist/@codegen/klend/instructions/initReserve.d.ts.map +1 -1
  35. package/dist/@codegen/klend/instructions/initReserve.js +5 -1
  36. package/dist/@codegen/klend/instructions/initReserve.js.map +1 -1
  37. package/dist/@codegen/klend/instructions/liquidateObligationAndRedeemReserveCollateral.js +1 -1
  38. package/dist/@codegen/klend/instructions/updateGlobalConfig.d.ts +1 -1
  39. package/dist/@codegen/klend/instructions/updateGlobalConfig.d.ts.map +1 -1
  40. package/dist/@codegen/klend/instructions/updateGlobalConfig.js +0 -1
  41. package/dist/@codegen/klend/instructions/updateGlobalConfig.js.map +1 -1
  42. package/dist/@codegen/klend/instructions/updateReserveConfig.d.ts +1 -1
  43. package/dist/@codegen/klend/instructions/updateReserveConfig.d.ts.map +1 -1
  44. package/dist/@codegen/klend/instructions/updateReserveConfig.js +0 -1
  45. package/dist/@codegen/klend/instructions/updateReserveConfig.js.map +1 -1
  46. package/dist/@codegen/klend/instructions/withdrawObligationCollateral.js +1 -1
  47. package/dist/@codegen/klend/instructions/withdrawObligationCollateralV2.js +1 -1
  48. package/dist/@codegen/klend/types/AssetTier.d.ts +45 -0
  49. package/dist/@codegen/klend/types/AssetTier.d.ts.map +1 -0
  50. package/dist/@codegen/klend/types/AssetTier.js +132 -0
  51. package/dist/@codegen/klend/types/AssetTier.js.map +1 -0
  52. package/dist/@codegen/klend/types/ObligationLiquidity.d.ts +5 -35
  53. package/dist/@codegen/klend/types/ObligationLiquidity.d.ts.map +1 -1
  54. package/dist/@codegen/klend/types/ObligationLiquidity.js +7 -17
  55. package/dist/@codegen/klend/types/ObligationLiquidity.js.map +1 -1
  56. package/dist/@codegen/klend/types/ObligationOrder.d.ts +4 -4
  57. package/dist/@codegen/klend/types/ObligationOrder.js +2 -2
  58. package/dist/@codegen/klend/types/ReserveConfig.d.ts +29 -141
  59. package/dist/@codegen/klend/types/ReserveConfig.d.ts.map +1 -1
  60. package/dist/@codegen/klend/types/ReserveConfig.js +25 -89
  61. package/dist/@codegen/klend/types/ReserveConfig.js.map +1 -1
  62. package/dist/@codegen/klend/types/ReserveFees.d.ts +8 -8
  63. package/dist/@codegen/klend/types/ReserveFees.d.ts.map +1 -1
  64. package/dist/@codegen/klend/types/ReserveFees.js +8 -8
  65. package/dist/@codegen/klend/types/ReserveFees.js.map +1 -1
  66. package/dist/@codegen/klend/types/ReserveLiquidity.d.ts +8 -26
  67. package/dist/@codegen/klend/types/ReserveLiquidity.d.ts.map +1 -1
  68. package/dist/@codegen/klend/types/ReserveLiquidity.js +8 -14
  69. package/dist/@codegen/klend/types/ReserveLiquidity.js.map +1 -1
  70. package/dist/@codegen/klend/types/UpdateConfigMode.d.ts +14 -92
  71. package/dist/@codegen/klend/types/UpdateConfigMode.d.ts.map +1 -1
  72. package/dist/@codegen/klend/types/UpdateConfigMode.js +23 -168
  73. package/dist/@codegen/klend/types/UpdateConfigMode.js.map +1 -1
  74. package/dist/@codegen/klend/types/UpdateLendingMarketMode.d.ts +0 -130
  75. package/dist/@codegen/klend/types/UpdateLendingMarketMode.d.ts.map +1 -1
  76. package/dist/@codegen/klend/types/UpdateLendingMarketMode.js +1 -241
  77. package/dist/@codegen/klend/types/UpdateLendingMarketMode.js.map +1 -1
  78. package/dist/@codegen/klend/types/index.d.ts +8 -10
  79. package/dist/@codegen/klend/types/index.d.ts.map +1 -1
  80. package/dist/@codegen/klend/types/index.js +3 -7
  81. package/dist/@codegen/klend/types/index.js.map +1 -1
  82. package/dist/@codegen/klend/zero_padding/ObligationZP.d.ts +4 -9
  83. package/dist/@codegen/klend/zero_padding/ObligationZP.d.ts.map +1 -1
  84. package/dist/@codegen/klend/zero_padding/ObligationZP.js +13 -22
  85. package/dist/@codegen/klend/zero_padding/ObligationZP.js.map +1 -1
  86. package/dist/classes/action.d.ts +3 -30
  87. package/dist/classes/action.d.ts.map +1 -1
  88. package/dist/classes/action.js +10 -364
  89. package/dist/classes/action.js.map +1 -1
  90. package/dist/classes/manager.d.ts.map +1 -1
  91. package/dist/classes/manager.js +0 -10
  92. package/dist/classes/manager.js.map +1 -1
  93. package/dist/classes/market.d.ts +2 -6
  94. package/dist/classes/market.d.ts.map +1 -1
  95. package/dist/classes/market.js +6 -26
  96. package/dist/classes/market.js.map +1 -1
  97. package/dist/classes/obligation.js +1 -1
  98. package/dist/classes/obligation.js.map +1 -1
  99. package/dist/classes/reserve.d.ts.map +1 -1
  100. package/dist/classes/reserve.js +7 -13
  101. package/dist/classes/reserve.js.map +1 -1
  102. package/dist/classes/unstakingPool.d.ts +3 -20
  103. package/dist/classes/unstakingPool.d.ts.map +1 -1
  104. package/dist/classes/unstakingPool.js +8 -62
  105. package/dist/classes/unstakingPool.js.map +1 -1
  106. package/dist/classes/vault.d.ts +1 -1
  107. package/dist/classes/vault.d.ts.map +1 -1
  108. package/dist/classes/vault.js +46 -28
  109. package/dist/classes/vault.js.map +1 -1
  110. package/dist/idl/klend.json +293 -2186
  111. package/dist/lending_operations/index.d.ts +0 -1
  112. package/dist/lending_operations/index.d.ts.map +1 -1
  113. package/dist/lending_operations/index.js +0 -1
  114. package/dist/lending_operations/index.js.map +1 -1
  115. package/dist/manager/client_kamino_manager.js +9 -12
  116. package/dist/manager/client_kamino_manager.js.map +1 -1
  117. package/dist/utils/ata.d.ts +10 -1
  118. package/dist/utils/ata.d.ts.map +1 -1
  119. package/dist/utils/ata.js +47 -0
  120. package/dist/utils/ata.js.map +1 -1
  121. package/dist/utils/managerTypes.d.ts.map +1 -1
  122. package/dist/utils/managerTypes.js +4 -9
  123. package/dist/utils/managerTypes.js.map +1 -1
  124. package/dist/utils/seeds.d.ts +14 -10
  125. package/dist/utils/seeds.d.ts.map +1 -1
  126. package/dist/utils/seeds.js +22 -25
  127. package/dist/utils/seeds.js.map +1 -1
  128. package/package.json +1 -1
  129. package/src/@codegen/klend/accounts/LendingMarket.ts +5 -210
  130. package/src/@codegen/klend/accounts/Obligation.ts +31 -53
  131. package/src/@codegen/klend/accounts/Reserve.ts +2 -13
  132. package/src/@codegen/klend/accounts/UserState.ts +75 -0
  133. package/src/@codegen/klend/accounts/index.ts +0 -6
  134. package/src/@codegen/klend/errors/custom.ts +2 -427
  135. package/src/@codegen/klend/instructions/idlMissingTypes.ts +4 -7
  136. package/src/@codegen/klend/instructions/index.ts +0 -34
  137. package/src/@codegen/klend/instructions/initReserve.ts +6 -2
  138. package/src/@codegen/klend/instructions/liquidateObligationAndRedeemReserveCollateral.ts +1 -1
  139. package/src/@codegen/klend/instructions/updateGlobalConfig.ts +1 -2
  140. package/src/@codegen/klend/instructions/updateReserveConfig.ts +1 -2
  141. package/src/@codegen/klend/instructions/withdrawObligationCollateral.ts +1 -1
  142. package/src/@codegen/klend/instructions/withdrawObligationCollateralV2.ts +1 -1
  143. package/src/@codegen/klend/types/AssetTier.ts +119 -0
  144. package/src/@codegen/klend/types/ObligationLiquidity.ts +9 -39
  145. package/src/@codegen/klend/types/ObligationOrder.ts +4 -4
  146. package/src/@codegen/klend/types/ReserveConfig.ts +39 -171
  147. package/src/@codegen/klend/types/ReserveFees.ts +12 -12
  148. package/src/@codegen/klend/types/ReserveLiquidity.ts +12 -30
  149. package/src/@codegen/klend/types/UpdateConfigMode.ts +26 -206
  150. package/src/@codegen/klend/types/UpdateLendingMarketMode.ts +0 -300
  151. package/src/@codegen/klend/types/index.ts +16 -45
  152. package/src/@codegen/klend/zero_padding/ObligationZP.ts +13 -22
  153. package/src/classes/action.ts +8 -577
  154. package/src/classes/manager.ts +0 -11
  155. package/src/classes/market.ts +5 -36
  156. package/src/classes/obligation.ts +1 -1
  157. package/src/classes/reserve.ts +8 -13
  158. package/src/classes/unstakingPool.ts +6 -83
  159. package/src/classes/vault.ts +57 -38
  160. package/src/idl/klend.json +294 -2187
  161. package/src/lending_operations/index.ts +0 -1
  162. package/src/manager/client_kamino_manager.ts +9 -13
  163. package/src/utils/ata.ts +79 -0
  164. package/src/utils/managerTypes.ts +4 -9
  165. package/src/utils/seeds.ts +26 -28
  166. package/dist/@codegen/klend/accounts/PoolState.d.ts +0 -53
  167. package/dist/@codegen/klend/accounts/PoolState.d.ts.map +0 -1
  168. package/dist/@codegen/klend/accounts/PoolState.js +0 -167
  169. package/dist/@codegen/klend/accounts/PoolState.js.map +0 -1
  170. package/dist/@codegen/klend/accounts/UnstakeTicket.d.ts +0 -41
  171. package/dist/@codegen/klend/accounts/UnstakeTicket.d.ts.map +0 -1
  172. package/dist/@codegen/klend/accounts/UnstakeTicket.js +0 -143
  173. package/dist/@codegen/klend/accounts/UnstakeTicket.js.map +0 -1
  174. package/dist/@codegen/klend/accounts/WithdrawTicket.d.ts +0 -132
  175. package/dist/@codegen/klend/accounts/WithdrawTicket.d.ts.map +0 -1
  176. package/dist/@codegen/klend/accounts/WithdrawTicket.js +0 -191
  177. package/dist/@codegen/klend/accounts/WithdrawTicket.js.map +0 -1
  178. package/dist/@codegen/klend/instructions/enqueueToWithdraw.d.ts +0 -39
  179. package/dist/@codegen/klend/instructions/enqueueToWithdraw.d.ts.map +0 -1
  180. package/dist/@codegen/klend/instructions/enqueueToWithdraw.js +0 -67
  181. package/dist/@codegen/klend/instructions/enqueueToWithdraw.js.map +0 -1
  182. package/dist/@codegen/klend/instructions/fillBorrowOrder.d.ts +0 -36
  183. package/dist/@codegen/klend/instructions/fillBorrowOrder.d.ts.map +0 -1
  184. package/dist/@codegen/klend/instructions/fillBorrowOrder.js +0 -49
  185. package/dist/@codegen/klend/instructions/fillBorrowOrder.js.map +0 -1
  186. package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.d.ts +0 -47
  187. package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.d.ts.map +0 -1
  188. package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.js +0 -66
  189. package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.js.map +0 -1
  190. package/dist/@codegen/klend/instructions/setBorrowOrder.d.ts +0 -31
  191. package/dist/@codegen/klend/instructions/setBorrowOrder.d.ts.map +0 -1
  192. package/dist/@codegen/klend/instructions/setBorrowOrder.js +0 -64
  193. package/dist/@codegen/klend/instructions/setBorrowOrder.js.map +0 -1
  194. package/dist/@codegen/klend/instructions/unstakeLstCollateralEnd.d.ts +0 -53
  195. package/dist/@codegen/klend/instructions/unstakeLstCollateralEnd.d.ts.map +0 -1
  196. package/dist/@codegen/klend/instructions/unstakeLstCollateralEnd.js +0 -190
  197. package/dist/@codegen/klend/instructions/unstakeLstCollateralEnd.js.map +0 -1
  198. package/dist/@codegen/klend/instructions/unstakeLstCollateralStart.d.ts +0 -70
  199. package/dist/@codegen/klend/instructions/unstakeLstCollateralStart.d.ts.map +0 -1
  200. package/dist/@codegen/klend/instructions/unstakeLstCollateralStart.js +0 -261
  201. package/dist/@codegen/klend/instructions/unstakeLstCollateralStart.js.map +0 -1
  202. package/dist/@codegen/klend/instructions/withdrawObligationUsol.d.ts +0 -41
  203. package/dist/@codegen/klend/instructions/withdrawObligationUsol.d.ts.map +0 -1
  204. package/dist/@codegen/klend/instructions/withdrawObligationUsol.js +0 -135
  205. package/dist/@codegen/klend/instructions/withdrawObligationUsol.js.map +0 -1
  206. package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.d.ts +0 -51
  207. package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.d.ts.map +0 -1
  208. package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.js +0 -28
  209. package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.js.map +0 -1
  210. package/dist/@codegen/klend/types/BorrowOrder.d.ts +0 -192
  211. package/dist/@codegen/klend/types/BorrowOrder.d.ts.map +0 -1
  212. package/dist/@codegen/klend/types/BorrowOrder.js +0 -194
  213. package/dist/@codegen/klend/types/BorrowOrder.js.map +0 -1
  214. package/dist/@codegen/klend/types/BorrowOrderConfigArgs.d.ts +0 -39
  215. package/dist/@codegen/klend/types/BorrowOrderConfigArgs.d.ts.map +0 -1
  216. package/dist/@codegen/klend/types/BorrowOrderConfigArgs.js +0 -100
  217. package/dist/@codegen/klend/types/BorrowOrderConfigArgs.js.map +0 -1
  218. package/dist/@codegen/klend/types/WithdrawQueue.d.ts +0 -64
  219. package/dist/@codegen/klend/types/WithdrawQueue.d.ts.map +0 -1
  220. package/dist/@codegen/klend/types/WithdrawQueue.js +0 -104
  221. package/dist/@codegen/klend/types/WithdrawQueue.js.map +0 -1
  222. package/dist/lending_operations/unstake_lst_collateral.d.ts +0 -12
  223. package/dist/lending_operations/unstake_lst_collateral.d.ts.map +0 -1
  224. package/dist/lending_operations/unstake_lst_collateral.js +0 -104
  225. package/dist/lending_operations/unstake_lst_collateral.js.map +0 -1
  226. package/src/@codegen/klend/accounts/PoolState.ts +0 -192
  227. package/src/@codegen/klend/accounts/UnstakeTicket.ts +0 -160
  228. package/src/@codegen/klend/accounts/WithdrawTicket.ts +0 -256
  229. package/src/@codegen/klend/instructions/enqueueToWithdraw.ts +0 -89
  230. package/src/@codegen/klend/instructions/fillBorrowOrder.ts +0 -96
  231. package/src/@codegen/klend/instructions/recoverInvalidTicketCollateral.ts +0 -96
  232. package/src/@codegen/klend/instructions/setBorrowOrder.ts +0 -77
  233. package/src/@codegen/klend/instructions/unstakeLstCollateralEnd.ts +0 -251
  234. package/src/@codegen/klend/instructions/unstakeLstCollateralStart.ts +0 -353
  235. package/src/@codegen/klend/instructions/withdrawObligationUsol.ts +0 -168
  236. package/src/@codegen/klend/instructions/withdrawQueuedLiquidity.ts +0 -92
  237. package/src/@codegen/klend/types/BorrowOrder.ts +0 -267
  238. package/src/@codegen/klend/types/BorrowOrderConfigArgs.ts +0 -87
  239. package/src/@codegen/klend/types/WithdrawQueue.ts +0 -117
  240. package/src/lending_operations/unstake_lst_collateral.ts +0 -174
@@ -1,117 +0,0 @@
1
- import { address, Address } from "@solana/kit" // eslint-disable-line @typescript-eslint/no-unused-vars
2
- import BN from "bn.js" // eslint-disable-line @typescript-eslint/no-unused-vars
3
- import * as types from "../types" // eslint-disable-line @typescript-eslint/no-unused-vars
4
- import * as borsh from "@coral-xyz/borsh"
5
- import { borshAddress } from "../utils"
6
-
7
- export interface WithdrawQueueFields {
8
- /** The part of [ReserveLiquidity::total_available_amount] locked for ticketed withdrawals. */
9
- queuedCollateralAmount: BN
10
- /**
11
- * The sequence number of the next ticket to be issued when enqueueing to withdraw.
12
- * Note: it is also a number of tickets issued so far.
13
- */
14
- nextIssuedTicketSequenceNumber: BN
15
- /**
16
- * The sequence number of the next ticket to be used for actually transferring the withdrawn
17
- * liquidity (assuming it is available in the reserve).
18
- * Note: it is also a number of fully-consumed tickets so far.
19
- */
20
- nextWithdrawableTicketSequenceNumber: BN
21
- }
22
-
23
- export interface WithdrawQueueJSON {
24
- /** The part of [ReserveLiquidity::total_available_amount] locked for ticketed withdrawals. */
25
- queuedCollateralAmount: string
26
- /**
27
- * The sequence number of the next ticket to be issued when enqueueing to withdraw.
28
- * Note: it is also a number of tickets issued so far.
29
- */
30
- nextIssuedTicketSequenceNumber: string
31
- /**
32
- * The sequence number of the next ticket to be used for actually transferring the withdrawn
33
- * liquidity (assuming it is available in the reserve).
34
- * Note: it is also a number of fully-consumed tickets so far.
35
- */
36
- nextWithdrawableTicketSequenceNumber: string
37
- }
38
-
39
- /** A tracker of ticket-based withdrawals. */
40
- export class WithdrawQueue {
41
- /** The part of [ReserveLiquidity::total_available_amount] locked for ticketed withdrawals. */
42
- readonly queuedCollateralAmount: BN
43
- /**
44
- * The sequence number of the next ticket to be issued when enqueueing to withdraw.
45
- * Note: it is also a number of tickets issued so far.
46
- */
47
- readonly nextIssuedTicketSequenceNumber: BN
48
- /**
49
- * The sequence number of the next ticket to be used for actually transferring the withdrawn
50
- * liquidity (assuming it is available in the reserve).
51
- * Note: it is also a number of fully-consumed tickets so far.
52
- */
53
- readonly nextWithdrawableTicketSequenceNumber: BN
54
-
55
- constructor(fields: WithdrawQueueFields) {
56
- this.queuedCollateralAmount = fields.queuedCollateralAmount
57
- this.nextIssuedTicketSequenceNumber = fields.nextIssuedTicketSequenceNumber
58
- this.nextWithdrawableTicketSequenceNumber =
59
- fields.nextWithdrawableTicketSequenceNumber
60
- }
61
-
62
- static layout(property?: string) {
63
- return borsh.struct(
64
- [
65
- borsh.u64("queuedCollateralAmount"),
66
- borsh.u64("nextIssuedTicketSequenceNumber"),
67
- borsh.u64("nextWithdrawableTicketSequenceNumber"),
68
- ],
69
- property
70
- )
71
- }
72
-
73
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
74
- static fromDecoded(obj: any) {
75
- return new WithdrawQueue({
76
- queuedCollateralAmount: obj.queuedCollateralAmount,
77
- nextIssuedTicketSequenceNumber: obj.nextIssuedTicketSequenceNumber,
78
- nextWithdrawableTicketSequenceNumber:
79
- obj.nextWithdrawableTicketSequenceNumber,
80
- })
81
- }
82
-
83
- static toEncodable(fields: WithdrawQueueFields) {
84
- return {
85
- queuedCollateralAmount: fields.queuedCollateralAmount,
86
- nextIssuedTicketSequenceNumber: fields.nextIssuedTicketSequenceNumber,
87
- nextWithdrawableTicketSequenceNumber:
88
- fields.nextWithdrawableTicketSequenceNumber,
89
- }
90
- }
91
-
92
- toJSON(): WithdrawQueueJSON {
93
- return {
94
- queuedCollateralAmount: this.queuedCollateralAmount.toString(),
95
- nextIssuedTicketSequenceNumber:
96
- this.nextIssuedTicketSequenceNumber.toString(),
97
- nextWithdrawableTicketSequenceNumber:
98
- this.nextWithdrawableTicketSequenceNumber.toString(),
99
- }
100
- }
101
-
102
- static fromJSON(obj: WithdrawQueueJSON): WithdrawQueue {
103
- return new WithdrawQueue({
104
- queuedCollateralAmount: new BN(obj.queuedCollateralAmount),
105
- nextIssuedTicketSequenceNumber: new BN(
106
- obj.nextIssuedTicketSequenceNumber
107
- ),
108
- nextWithdrawableTicketSequenceNumber: new BN(
109
- obj.nextWithdrawableTicketSequenceNumber
110
- ),
111
- })
112
- }
113
-
114
- toEncodable() {
115
- return WithdrawQueue.toEncodable(this)
116
- }
117
- }
@@ -1,174 +0,0 @@
1
- import {
2
- Fraction,
3
- getStandardPoolMintRemainingAccounts,
4
- KaminoAction,
5
- KaminoMarket,
6
- KaminoObligation,
7
- KaminoReserve,
8
- maybeGetStakedPoolByMint,
9
- } from '../classes';
10
- import { getFlashLoanInstructions, getScopeRefreshIx } from '../leverage';
11
- import {
12
- createAtasIdempotent,
13
- getComputeBudgetAndPriorityFeeIxs,
14
- ScopePriceRefreshConfig,
15
- SLOTS_PER_DAY,
16
- } from '../utils';
17
- import Decimal from 'decimal.js';
18
- import BN from 'bn.js';
19
- import { Address, IInstruction, none, Option, Slot, TransactionSigner } from '@solana/kit';
20
-
21
- const LST_CONVERSION_MARGIN_BPS = new Decimal(100);
22
- const FULL_BPS = new Decimal(10_000);
23
-
24
- export async function buildUnstakeLstCollateralStartIxs(
25
- market: KaminoMarket,
26
- obligation: KaminoObligation,
27
- owner: TransactionSigner,
28
- lstMint: Address,
29
- referrer: Option<Address>,
30
- currentSlot: Slot,
31
- budgetAndPriorityFeeIxs: IInstruction[] | undefined,
32
- scopeRefreshConfig: ScopePriceRefreshConfig | undefined
33
- ): Promise<{ instructions: IInstruction[]; remainingSigners: TransactionSigner[] }> {
34
- // Get reserves based on obligation
35
- const usolMint = await market.getUsolPoolMint();
36
- const usolReserve = market.getReserveByMint(usolMint);
37
- const lstReserve = market.getReserveByMint(lstMint);
38
- const debtReserve = market.reserves.get(obligation.state.borrows[0].borrowReserve);
39
- if (!usolReserve) {
40
- throw new Error(`Cannot fetch usol reserve for mint ${usolMint}`);
41
- }
42
- if (!lstReserve) {
43
- throw new Error(`Cannot fetch lst reserve for mint ${obligation.state.deposits[0].depositReserve}`);
44
- }
45
- if (!debtReserve) {
46
- throw new Error(`Cannot fetch debt reserve for mint ${obligation.state.borrows[0].borrowReserve}`);
47
- }
48
-
49
- // 0. Compute sol to repay + lst to flash borrow + additional accounts
50
- const stakePool = await maybeGetStakedPoolByMint(market.getRpc(), lstReserve.getLiquidityMint());
51
- if (!stakePool) {
52
- throw new Error(`Cannot fetch stake pool for mint ${lstReserve.getLiquidityMint()}`);
53
- }
54
- const { lstToConvert } = getUnstakeLstCollateralApproximateInputs(
55
- market,
56
- debtReserve,
57
- lstReserve,
58
- obligation,
59
- currentSlot
60
- );
61
- const [depositStakedSolRemainingAccounts, remainingSigners] = await getStandardPoolMintRemainingAccounts(
62
- market.getRpc(),
63
- stakePool[0],
64
- stakePool[1],
65
- new BN(lstToConvert.toString())
66
- );
67
- // 1. Create atas & budget txns
68
- const budgetIxs = budgetAndPriorityFeeIxs || getComputeBudgetAndPriorityFeeIxs(1_400_000);
69
-
70
- const atas = [
71
- { mint: usolReserve.getLiquidityMint(), tokenProgram: usolReserve.getLiquidityTokenProgram() },
72
- { mint: lstReserve.getLiquidityMint(), tokenProgram: lstReserve.getLiquidityTokenProgram() },
73
- ];
74
-
75
- const atasAndIxs = await createAtasIdempotent(owner, atas);
76
- const [, { ata: lstAta }] = atasAndIxs;
77
- const scopeRefreshIx = await getScopeRefreshIx(market, lstReserve, debtReserve, obligation, scopeRefreshConfig);
78
-
79
- // 2. Flash borrow & repay the debt to repay amount needed
80
- const { flashBorrowIx, flashRepayIx } = getFlashLoanInstructions({
81
- borrowIxIndex: budgetIxs.length + atasAndIxs.length + (scopeRefreshIx.length > 0 ? 1 : 0),
82
- userTransferAuthority: owner,
83
- lendingMarketAuthority: await market.getLendingMarketAuthority(),
84
- lendingMarketAddress: market.getAddress(),
85
- reserve: lstReserve,
86
- amountLamports: lstToConvert,
87
- destinationAta: lstAta,
88
- // TODO(referrals): once we support referrals, we will have to replace the placeholder args below:
89
- referrerAccount: none(),
90
- referrerTokenState: none(),
91
- programId: market.programId,
92
- });
93
-
94
- // 3. Repay using the flash borrowed funds & withdraw collateral to swap and pay the flash loan
95
- const unstakeLstCollateralStartAction = await KaminoAction.buildUnstakeLstCollateralStartTxns(
96
- market,
97
- lstToConvert.toString(),
98
- usolReserve.getLiquidityMint(),
99
- lstReserve.getLiquidityMint(),
100
- owner,
101
- currentSlot,
102
- obligation,
103
- depositStakedSolRemainingAccounts,
104
- undefined,
105
- 0,
106
- false,
107
- undefined,
108
- referrer
109
- );
110
-
111
- const instructions = [
112
- ...scopeRefreshIx,
113
- ...budgetIxs,
114
- ...atasAndIxs.map((x) => x.createAtaIx),
115
- flashBorrowIx,
116
- ...KaminoAction.actionToIxs(unstakeLstCollateralStartAction),
117
- flashRepayIx,
118
- ];
119
- return {
120
- instructions,
121
- remainingSigners,
122
- };
123
- }
124
-
125
- export function getUnstakeLstCollateralApproximateInputs(
126
- market: KaminoMarket,
127
- debtReserve: KaminoReserve,
128
- lstReserve: KaminoReserve,
129
- obligation: KaminoObligation,
130
- currentSlot: Slot
131
- ): {
132
- lstToConvert: Decimal;
133
- } {
134
- // Compute the interest rate / curve after 4 days (~2 epochs)
135
- const laterSlot = currentSlot + BigInt(SLOTS_PER_DAY * 4);
136
- const borrow = obligation.state.borrows.find(
137
- (borrow) => borrow.borrowReserve.toString() === debtReserve.address.toString()
138
- );
139
- const lstDeposit = obligation.state.deposits.find(
140
- (deposit) => deposit.depositReserve.toString() === lstReserve.address.toString()
141
- );
142
- if (!borrow) {
143
- throw new Error(
144
- `Could not find borrow ${debtReserve.address.toString()} in obligation ${obligation.obligationAddress.toString()}`
145
- );
146
- }
147
- if (!lstDeposit) {
148
- throw new Error(
149
- `Could not find deposit ${lstReserve.address.toString()} in obligation ${obligation.obligationAddress.toString()}`
150
- );
151
- }
152
- const newInterestRate = obligation.estimateObligationInterestRate(market, debtReserve, borrow, laterSlot);
153
- const debtToRepay = new Fraction(borrow.borrowedAmountSf).toDecimal().mul(newInterestRate);
154
-
155
- // To compute the staked sol to convert we convert the sol to repay
156
- // using the pool ratio, but we cap it at the total amount of deposited
157
- // staked sol in the obligation (converted from collateral -> liquidity)
158
- const lstPrice = lstReserve.getOracleMarketPrice();
159
- const debtPrice = debtReserve.getOracleMarketPrice();
160
- const equivalentLst = debtToRepay.mul(debtPrice).div(lstPrice);
161
- const equivalentLstWithMargin = equivalentLst.mul(FULL_BPS.add(LST_CONVERSION_MARGIN_BPS)).div(FULL_BPS);
162
-
163
- const newCollateralExchangeRate = debtReserve.getEstimatedCollateralExchangeRate(
164
- laterSlot,
165
- market.state.referralFeeBps
166
- );
167
- const lstCollateralAmount = new Decimal(equivalentLstWithMargin.toString()).mul(newCollateralExchangeRate);
168
- const lstCollateralToConvert = Decimal.min(new Decimal(lstDeposit.depositedAmount.toString()), lstCollateralAmount);
169
-
170
- const lstToConvert = lstCollateralToConvert.div(newCollateralExchangeRate).ceil();
171
- return {
172
- lstToConvert,
173
- };
174
- }