@kamino-finance/klend-sdk 7.1.2 → 7.1.4-beta.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 (255) hide show
  1. package/dist/@codegen/klend/accounts/LendingMarket.d.ts +144 -3
  2. package/dist/@codegen/klend/accounts/LendingMarket.d.ts.map +1 -1
  3. package/dist/@codegen/klend/accounts/LendingMarket.js +105 -3
  4. package/dist/@codegen/klend/accounts/LendingMarket.js.map +1 -1
  5. package/dist/@codegen/klend/accounts/Obligation.d.ts +30 -15
  6. package/dist/@codegen/klend/accounts/Obligation.d.ts.map +1 -1
  7. package/dist/@codegen/klend/accounts/Obligation.js +31 -21
  8. package/dist/@codegen/klend/accounts/Obligation.js.map +1 -1
  9. package/dist/@codegen/klend/accounts/PoolState.d.ts +53 -0
  10. package/dist/@codegen/klend/accounts/PoolState.d.ts.map +1 -0
  11. package/dist/@codegen/klend/accounts/PoolState.js +167 -0
  12. package/dist/@codegen/klend/accounts/PoolState.js.map +1 -0
  13. package/dist/@codegen/klend/accounts/Reserve.d.ts +6 -0
  14. package/dist/@codegen/klend/accounts/Reserve.d.ts.map +1 -1
  15. package/dist/@codegen/klend/accounts/Reserve.js +9 -2
  16. package/dist/@codegen/klend/accounts/Reserve.js.map +1 -1
  17. package/dist/@codegen/klend/accounts/UnstakeTicket.d.ts +41 -0
  18. package/dist/@codegen/klend/accounts/UnstakeTicket.d.ts.map +1 -0
  19. package/dist/@codegen/klend/accounts/UnstakeTicket.js +143 -0
  20. package/dist/@codegen/klend/accounts/UnstakeTicket.js.map +1 -0
  21. package/dist/@codegen/klend/accounts/UserState.d.ts +0 -75
  22. package/dist/@codegen/klend/accounts/UserState.d.ts.map +1 -1
  23. package/dist/@codegen/klend/accounts/UserState.js +0 -25
  24. package/dist/@codegen/klend/accounts/UserState.js.map +1 -1
  25. package/dist/@codegen/klend/accounts/WithdrawTicket.d.ts +132 -0
  26. package/dist/@codegen/klend/accounts/WithdrawTicket.d.ts.map +1 -0
  27. package/dist/@codegen/klend/accounts/WithdrawTicket.js +191 -0
  28. package/dist/@codegen/klend/accounts/WithdrawTicket.js.map +1 -0
  29. package/dist/@codegen/klend/accounts/index.d.ts +6 -0
  30. package/dist/@codegen/klend/accounts/index.d.ts.map +1 -1
  31. package/dist/@codegen/klend/accounts/index.js +7 -1
  32. package/dist/@codegen/klend/accounts/index.js.map +1 -1
  33. package/dist/@codegen/klend/errors/custom.d.ts +226 -2
  34. package/dist/@codegen/klend/errors/custom.d.ts.map +1 -1
  35. package/dist/@codegen/klend/errors/custom.js +396 -3
  36. package/dist/@codegen/klend/errors/custom.js.map +1 -1
  37. package/dist/@codegen/klend/instructions/enqueueToWithdraw.d.ts +39 -0
  38. package/dist/@codegen/klend/instructions/enqueueToWithdraw.d.ts.map +1 -0
  39. package/dist/@codegen/klend/instructions/enqueueToWithdraw.js +67 -0
  40. package/dist/@codegen/klend/instructions/enqueueToWithdraw.js.map +1 -0
  41. package/dist/@codegen/klend/instructions/fillBorrowOrder.d.ts +36 -0
  42. package/dist/@codegen/klend/instructions/fillBorrowOrder.d.ts.map +1 -0
  43. package/dist/@codegen/klend/instructions/fillBorrowOrder.js +49 -0
  44. package/dist/@codegen/klend/instructions/fillBorrowOrder.js.map +1 -0
  45. package/dist/@codegen/klend/instructions/idlMissingTypes.d.ts +1 -2
  46. package/dist/@codegen/klend/instructions/idlMissingTypes.d.ts.map +1 -1
  47. package/dist/@codegen/klend/instructions/idlMissingTypes.js +6 -2
  48. package/dist/@codegen/klend/instructions/idlMissingTypes.js.map +1 -1
  49. package/dist/@codegen/klend/instructions/index.d.ts +16 -0
  50. package/dist/@codegen/klend/instructions/index.d.ts.map +1 -1
  51. package/dist/@codegen/klend/instructions/index.js +18 -1
  52. package/dist/@codegen/klend/instructions/index.js.map +1 -1
  53. package/dist/@codegen/klend/instructions/initReserve.d.ts +1 -1
  54. package/dist/@codegen/klend/instructions/initReserve.d.ts.map +1 -1
  55. package/dist/@codegen/klend/instructions/initReserve.js +1 -5
  56. package/dist/@codegen/klend/instructions/initReserve.js.map +1 -1
  57. package/dist/@codegen/klend/instructions/liquidateObligationAndRedeemReserveCollateral.js +1 -1
  58. package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.d.ts +47 -0
  59. package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.d.ts.map +1 -0
  60. package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.js +66 -0
  61. package/dist/@codegen/klend/instructions/recoverInvalidTicketCollateral.js.map +1 -0
  62. package/dist/@codegen/klend/instructions/setBorrowOrder.d.ts +31 -0
  63. package/dist/@codegen/klend/instructions/setBorrowOrder.d.ts.map +1 -0
  64. package/dist/@codegen/klend/instructions/setBorrowOrder.js +64 -0
  65. package/dist/@codegen/klend/instructions/setBorrowOrder.js.map +1 -0
  66. package/dist/@codegen/klend/instructions/unstakeLstCollateralEnd.d.ts +53 -0
  67. package/dist/@codegen/klend/instructions/unstakeLstCollateralEnd.d.ts.map +1 -0
  68. package/dist/@codegen/klend/instructions/unstakeLstCollateralEnd.js +190 -0
  69. package/dist/@codegen/klend/instructions/unstakeLstCollateralEnd.js.map +1 -0
  70. package/dist/@codegen/klend/instructions/unstakeLstCollateralStart.d.ts +70 -0
  71. package/dist/@codegen/klend/instructions/unstakeLstCollateralStart.d.ts.map +1 -0
  72. package/dist/@codegen/klend/instructions/unstakeLstCollateralStart.js +261 -0
  73. package/dist/@codegen/klend/instructions/unstakeLstCollateralStart.js.map +1 -0
  74. package/dist/@codegen/klend/instructions/updateGlobalConfig.d.ts +1 -1
  75. package/dist/@codegen/klend/instructions/updateGlobalConfig.d.ts.map +1 -1
  76. package/dist/@codegen/klend/instructions/updateGlobalConfig.js +1 -0
  77. package/dist/@codegen/klend/instructions/updateGlobalConfig.js.map +1 -1
  78. package/dist/@codegen/klend/instructions/updateReserveConfig.d.ts +1 -1
  79. package/dist/@codegen/klend/instructions/updateReserveConfig.d.ts.map +1 -1
  80. package/dist/@codegen/klend/instructions/updateReserveConfig.js +1 -0
  81. package/dist/@codegen/klend/instructions/updateReserveConfig.js.map +1 -1
  82. package/dist/@codegen/klend/instructions/withdrawObligationCollateral.js +1 -1
  83. package/dist/@codegen/klend/instructions/withdrawObligationCollateralV2.js +1 -1
  84. package/dist/@codegen/klend/instructions/withdrawObligationUsol.d.ts +41 -0
  85. package/dist/@codegen/klend/instructions/withdrawObligationUsol.d.ts.map +1 -0
  86. package/dist/@codegen/klend/instructions/withdrawObligationUsol.js +135 -0
  87. package/dist/@codegen/klend/instructions/withdrawObligationUsol.js.map +1 -0
  88. package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.d.ts +51 -0
  89. package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.d.ts.map +1 -0
  90. package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.js +28 -0
  91. package/dist/@codegen/klend/instructions/withdrawQueuedLiquidity.js.map +1 -0
  92. package/dist/@codegen/klend/types/BorrowOrder.d.ts +192 -0
  93. package/dist/@codegen/klend/types/BorrowOrder.d.ts.map +1 -0
  94. package/dist/@codegen/klend/types/BorrowOrder.js +194 -0
  95. package/dist/@codegen/klend/types/BorrowOrder.js.map +1 -0
  96. package/dist/@codegen/klend/types/BorrowOrderConfigArgs.d.ts +39 -0
  97. package/dist/@codegen/klend/types/BorrowOrderConfigArgs.d.ts.map +1 -0
  98. package/dist/@codegen/klend/types/BorrowOrderConfigArgs.js +100 -0
  99. package/dist/@codegen/klend/types/BorrowOrderConfigArgs.js.map +1 -0
  100. package/dist/@codegen/klend/types/ObligationLiquidity.d.ts +35 -5
  101. package/dist/@codegen/klend/types/ObligationLiquidity.d.ts.map +1 -1
  102. package/dist/@codegen/klend/types/ObligationLiquidity.js +17 -7
  103. package/dist/@codegen/klend/types/ObligationLiquidity.js.map +1 -1
  104. package/dist/@codegen/klend/types/ObligationOrder.d.ts +4 -4
  105. package/dist/@codegen/klend/types/ObligationOrder.js +2 -2
  106. package/dist/@codegen/klend/types/ReserveConfig.d.ts +141 -29
  107. package/dist/@codegen/klend/types/ReserveConfig.d.ts.map +1 -1
  108. package/dist/@codegen/klend/types/ReserveConfig.js +89 -25
  109. package/dist/@codegen/klend/types/ReserveConfig.js.map +1 -1
  110. package/dist/@codegen/klend/types/ReserveFees.d.ts +8 -8
  111. package/dist/@codegen/klend/types/ReserveFees.d.ts.map +1 -1
  112. package/dist/@codegen/klend/types/ReserveFees.js +8 -8
  113. package/dist/@codegen/klend/types/ReserveFees.js.map +1 -1
  114. package/dist/@codegen/klend/types/ReserveLiquidity.d.ts +26 -8
  115. package/dist/@codegen/klend/types/ReserveLiquidity.d.ts.map +1 -1
  116. package/dist/@codegen/klend/types/ReserveLiquidity.js +14 -8
  117. package/dist/@codegen/klend/types/ReserveLiquidity.js.map +1 -1
  118. package/dist/@codegen/klend/types/UpdateConfigMode.d.ts +92 -14
  119. package/dist/@codegen/klend/types/UpdateConfigMode.d.ts.map +1 -1
  120. package/dist/@codegen/klend/types/UpdateConfigMode.js +168 -23
  121. package/dist/@codegen/klend/types/UpdateConfigMode.js.map +1 -1
  122. package/dist/@codegen/klend/types/UpdateLendingMarketMode.d.ts +130 -0
  123. package/dist/@codegen/klend/types/UpdateLendingMarketMode.d.ts.map +1 -1
  124. package/dist/@codegen/klend/types/UpdateLendingMarketMode.js +241 -1
  125. package/dist/@codegen/klend/types/UpdateLendingMarketMode.js.map +1 -1
  126. package/dist/@codegen/klend/types/WithdrawQueue.d.ts +64 -0
  127. package/dist/@codegen/klend/types/WithdrawQueue.d.ts.map +1 -0
  128. package/dist/@codegen/klend/types/WithdrawQueue.js +104 -0
  129. package/dist/@codegen/klend/types/WithdrawQueue.js.map +1 -0
  130. package/dist/@codegen/klend/types/index.d.ts +10 -8
  131. package/dist/@codegen/klend/types/index.d.ts.map +1 -1
  132. package/dist/@codegen/klend/types/index.js +7 -3
  133. package/dist/@codegen/klend/types/index.js.map +1 -1
  134. package/dist/@codegen/klend/zero_padding/ObligationZP.d.ts +9 -4
  135. package/dist/@codegen/klend/zero_padding/ObligationZP.d.ts.map +1 -1
  136. package/dist/@codegen/klend/zero_padding/ObligationZP.js +22 -13
  137. package/dist/@codegen/klend/zero_padding/ObligationZP.js.map +1 -1
  138. package/dist/classes/action.d.ts +30 -3
  139. package/dist/classes/action.d.ts.map +1 -1
  140. package/dist/classes/action.js +364 -10
  141. package/dist/classes/action.js.map +1 -1
  142. package/dist/classes/manager.d.ts.map +1 -1
  143. package/dist/classes/manager.js +10 -0
  144. package/dist/classes/manager.js.map +1 -1
  145. package/dist/classes/market.d.ts +6 -2
  146. package/dist/classes/market.d.ts.map +1 -1
  147. package/dist/classes/market.js +26 -6
  148. package/dist/classes/market.js.map +1 -1
  149. package/dist/classes/obligation.js +1 -1
  150. package/dist/classes/obligation.js.map +1 -1
  151. package/dist/classes/reserve.d.ts.map +1 -1
  152. package/dist/classes/reserve.js +13 -7
  153. package/dist/classes/reserve.js.map +1 -1
  154. package/dist/classes/unstakingPool.d.ts +20 -3
  155. package/dist/classes/unstakingPool.d.ts.map +1 -1
  156. package/dist/classes/unstakingPool.js +62 -8
  157. package/dist/classes/unstakingPool.js.map +1 -1
  158. package/dist/idl/klend.json +2125 -232
  159. package/dist/lending_operations/index.d.ts +1 -0
  160. package/dist/lending_operations/index.d.ts.map +1 -1
  161. package/dist/lending_operations/index.js +1 -0
  162. package/dist/lending_operations/index.js.map +1 -1
  163. package/dist/lending_operations/repay_with_collateral_operations.d.ts.map +1 -1
  164. package/dist/lending_operations/repay_with_collateral_operations.js +0 -2
  165. package/dist/lending_operations/repay_with_collateral_operations.js.map +1 -1
  166. package/dist/lending_operations/swap_collateral_operations.js +0 -1
  167. package/dist/lending_operations/swap_collateral_operations.js.map +1 -1
  168. package/dist/lending_operations/unstake_lst_collateral.d.ts +12 -0
  169. package/dist/lending_operations/unstake_lst_collateral.d.ts.map +1 -0
  170. package/dist/lending_operations/unstake_lst_collateral.js +104 -0
  171. package/dist/lending_operations/unstake_lst_collateral.js.map +1 -0
  172. package/dist/leverage/calcs.d.ts +2 -27
  173. package/dist/leverage/calcs.d.ts.map +1 -1
  174. package/dist/leverage/calcs.js +6 -136
  175. package/dist/leverage/calcs.js.map +1 -1
  176. package/dist/leverage/operations.d.ts +8 -9
  177. package/dist/leverage/operations.d.ts.map +1 -1
  178. package/dist/leverage/operations.js +72 -228
  179. package/dist/leverage/operations.js.map +1 -1
  180. package/dist/leverage/types.d.ts +0 -19
  181. package/dist/leverage/types.d.ts.map +1 -1
  182. package/dist/leverage/utils.d.ts +2 -19
  183. package/dist/leverage/utils.d.ts.map +1 -1
  184. package/dist/leverage/utils.js +0 -164
  185. package/dist/leverage/utils.js.map +1 -1
  186. package/dist/manager/client_kamino_manager.js +11 -8
  187. package/dist/manager/client_kamino_manager.js.map +1 -1
  188. package/dist/utils/managerTypes.d.ts.map +1 -1
  189. package/dist/utils/managerTypes.js +9 -4
  190. package/dist/utils/managerTypes.js.map +1 -1
  191. package/dist/utils/seeds.d.ts +10 -14
  192. package/dist/utils/seeds.d.ts.map +1 -1
  193. package/dist/utils/seeds.js +25 -22
  194. package/dist/utils/seeds.js.map +1 -1
  195. package/package.json +2 -2
  196. package/src/@codegen/klend/accounts/LendingMarket.ts +210 -5
  197. package/src/@codegen/klend/accounts/Obligation.ts +53 -31
  198. package/src/@codegen/klend/accounts/PoolState.ts +192 -0
  199. package/src/@codegen/klend/accounts/Reserve.ts +13 -2
  200. package/src/@codegen/klend/accounts/UnstakeTicket.ts +160 -0
  201. package/src/@codegen/klend/accounts/UserState.ts +0 -75
  202. package/src/@codegen/klend/accounts/WithdrawTicket.ts +256 -0
  203. package/src/@codegen/klend/accounts/index.ts +6 -0
  204. package/src/@codegen/klend/errors/custom.ts +427 -2
  205. package/src/@codegen/klend/instructions/enqueueToWithdraw.ts +89 -0
  206. package/src/@codegen/klend/instructions/fillBorrowOrder.ts +96 -0
  207. package/src/@codegen/klend/instructions/idlMissingTypes.ts +7 -4
  208. package/src/@codegen/klend/instructions/index.ts +34 -0
  209. package/src/@codegen/klend/instructions/initReserve.ts +2 -6
  210. package/src/@codegen/klend/instructions/liquidateObligationAndRedeemReserveCollateral.ts +1 -1
  211. package/src/@codegen/klend/instructions/recoverInvalidTicketCollateral.ts +96 -0
  212. package/src/@codegen/klend/instructions/setBorrowOrder.ts +77 -0
  213. package/src/@codegen/klend/instructions/unstakeLstCollateralEnd.ts +251 -0
  214. package/src/@codegen/klend/instructions/unstakeLstCollateralStart.ts +353 -0
  215. package/src/@codegen/klend/instructions/updateGlobalConfig.ts +2 -1
  216. package/src/@codegen/klend/instructions/updateReserveConfig.ts +2 -1
  217. package/src/@codegen/klend/instructions/withdrawObligationCollateral.ts +1 -1
  218. package/src/@codegen/klend/instructions/withdrawObligationCollateralV2.ts +1 -1
  219. package/src/@codegen/klend/instructions/withdrawObligationUsol.ts +168 -0
  220. package/src/@codegen/klend/instructions/withdrawQueuedLiquidity.ts +92 -0
  221. package/src/@codegen/klend/types/BorrowOrder.ts +267 -0
  222. package/src/@codegen/klend/types/BorrowOrderConfigArgs.ts +87 -0
  223. package/src/@codegen/klend/types/ObligationLiquidity.ts +39 -9
  224. package/src/@codegen/klend/types/ObligationOrder.ts +4 -4
  225. package/src/@codegen/klend/types/ReserveConfig.ts +171 -39
  226. package/src/@codegen/klend/types/ReserveFees.ts +12 -12
  227. package/src/@codegen/klend/types/ReserveLiquidity.ts +30 -12
  228. package/src/@codegen/klend/types/UpdateConfigMode.ts +206 -26
  229. package/src/@codegen/klend/types/UpdateLendingMarketMode.ts +300 -0
  230. package/src/@codegen/klend/types/WithdrawQueue.ts +117 -0
  231. package/src/@codegen/klend/types/index.ts +45 -16
  232. package/src/@codegen/klend/zero_padding/ObligationZP.ts +22 -13
  233. package/src/classes/action.ts +577 -8
  234. package/src/classes/manager.ts +11 -0
  235. package/src/classes/market.ts +36 -5
  236. package/src/classes/obligation.ts +1 -1
  237. package/src/classes/reserve.ts +13 -8
  238. package/src/classes/unstakingPool.ts +83 -6
  239. package/src/idl/klend.json +2126 -233
  240. package/src/lending_operations/index.ts +1 -0
  241. package/src/lending_operations/repay_with_collateral_operations.ts +0 -2
  242. package/src/lending_operations/swap_collateral_operations.ts +0 -1
  243. package/src/lending_operations/unstake_lst_collateral.ts +174 -0
  244. package/src/leverage/calcs.ts +2 -201
  245. package/src/leverage/operations.ts +45 -377
  246. package/src/leverage/types.ts +0 -20
  247. package/src/leverage/utils.ts +3 -320
  248. package/src/manager/client_kamino_manager.ts +11 -8
  249. package/src/utils/managerTypes.ts +9 -4
  250. package/src/utils/seeds.ts +28 -26
  251. package/dist/@codegen/klend/types/AssetTier.d.ts +0 -45
  252. package/dist/@codegen/klend/types/AssetTier.d.ts.map +0 -1
  253. package/dist/@codegen/klend/types/AssetTier.js +0 -132
  254. package/dist/@codegen/klend/types/AssetTier.js.map +0 -1
  255. package/src/@codegen/klend/types/AssetTier.ts +0 -119
@@ -0,0 +1,192 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import {
3
+ address,
4
+ Address,
5
+ fetchEncodedAccount,
6
+ fetchEncodedAccounts,
7
+ GetAccountInfoApi,
8
+ GetMultipleAccountsApi,
9
+ Rpc,
10
+ } from "@solana/kit"
11
+ /* eslint-enable @typescript-eslint/no-unused-vars */
12
+ import BN from "bn.js" // eslint-disable-line @typescript-eslint/no-unused-vars
13
+ import * as borsh from "@coral-xyz/borsh" // eslint-disable-line @typescript-eslint/no-unused-vars
14
+ import { borshAddress } from "../utils" // eslint-disable-line @typescript-eslint/no-unused-vars
15
+ import * as types from "../types" // eslint-disable-line @typescript-eslint/no-unused-vars
16
+ import { PROGRAM_ID } from "../programId"
17
+
18
+ export interface PoolStateFields {
19
+ admin: Address
20
+ pendingAdmin: Address
21
+ basePoolAuthority: Address
22
+ basePoolAuthorityBump: BN
23
+ unstakingSolMint: Address
24
+ wsolVault: Address
25
+ actionAuthority: Address
26
+ poolLookupTable: Address
27
+ sharesIssued: BN
28
+ wsolUnstaking: BN
29
+ wsolInVault: BN
30
+ padding: Array<BN>
31
+ }
32
+
33
+ export interface PoolStateJSON {
34
+ admin: string
35
+ pendingAdmin: string
36
+ basePoolAuthority: string
37
+ basePoolAuthorityBump: string
38
+ unstakingSolMint: string
39
+ wsolVault: string
40
+ actionAuthority: string
41
+ poolLookupTable: string
42
+ sharesIssued: string
43
+ wsolUnstaking: string
44
+ wsolInVault: string
45
+ padding: Array<string>
46
+ }
47
+
48
+ export class PoolState {
49
+ readonly admin: Address
50
+ readonly pendingAdmin: Address
51
+ readonly basePoolAuthority: Address
52
+ readonly basePoolAuthorityBump: BN
53
+ readonly unstakingSolMint: Address
54
+ readonly wsolVault: Address
55
+ readonly actionAuthority: Address
56
+ readonly poolLookupTable: Address
57
+ readonly sharesIssued: BN
58
+ readonly wsolUnstaking: BN
59
+ readonly wsolInVault: BN
60
+ readonly padding: Array<BN>
61
+
62
+ static readonly discriminator = Buffer.from([
63
+ 247, 237, 227, 245, 215, 195, 222, 70,
64
+ ])
65
+
66
+ static readonly layout = borsh.struct<PoolState>([
67
+ borshAddress("admin"),
68
+ borshAddress("pendingAdmin"),
69
+ borshAddress("basePoolAuthority"),
70
+ borsh.u64("basePoolAuthorityBump"),
71
+ borshAddress("unstakingSolMint"),
72
+ borshAddress("wsolVault"),
73
+ borshAddress("actionAuthority"),
74
+ borshAddress("poolLookupTable"),
75
+ borsh.u64("sharesIssued"),
76
+ borsh.u64("wsolUnstaking"),
77
+ borsh.u64("wsolInVault"),
78
+ borsh.array(borsh.u128(), 256, "padding"),
79
+ ])
80
+
81
+ constructor(fields: PoolStateFields) {
82
+ this.admin = fields.admin
83
+ this.pendingAdmin = fields.pendingAdmin
84
+ this.basePoolAuthority = fields.basePoolAuthority
85
+ this.basePoolAuthorityBump = fields.basePoolAuthorityBump
86
+ this.unstakingSolMint = fields.unstakingSolMint
87
+ this.wsolVault = fields.wsolVault
88
+ this.actionAuthority = fields.actionAuthority
89
+ this.poolLookupTable = fields.poolLookupTable
90
+ this.sharesIssued = fields.sharesIssued
91
+ this.wsolUnstaking = fields.wsolUnstaking
92
+ this.wsolInVault = fields.wsolInVault
93
+ this.padding = fields.padding
94
+ }
95
+
96
+ static async fetch(
97
+ rpc: Rpc<GetAccountInfoApi>,
98
+ address: Address,
99
+ programId: Address = PROGRAM_ID
100
+ ): Promise<PoolState | null> {
101
+ const info = await fetchEncodedAccount(rpc, address)
102
+
103
+ if (!info.exists) {
104
+ return null
105
+ }
106
+ if (info.programAddress !== programId) {
107
+ throw new Error(
108
+ `PoolStateFields account ${address} belongs to wrong program ${info.programAddress}, expected ${programId}`
109
+ )
110
+ }
111
+
112
+ return this.decode(Buffer.from(info.data))
113
+ }
114
+
115
+ static async fetchMultiple(
116
+ rpc: Rpc<GetMultipleAccountsApi>,
117
+ addresses: Address[],
118
+ programId: Address = PROGRAM_ID
119
+ ): Promise<Array<PoolState | null>> {
120
+ const infos = await fetchEncodedAccounts(rpc, addresses)
121
+
122
+ return infos.map((info) => {
123
+ if (!info.exists) {
124
+ return null
125
+ }
126
+ if (info.programAddress !== programId) {
127
+ throw new Error(
128
+ `PoolStateFields account ${info.address} belongs to wrong program ${info.programAddress}, expected ${programId}`
129
+ )
130
+ }
131
+
132
+ return this.decode(Buffer.from(info.data))
133
+ })
134
+ }
135
+
136
+ static decode(data: Buffer): PoolState {
137
+ if (!data.slice(0, 8).equals(PoolState.discriminator)) {
138
+ throw new Error("invalid account discriminator")
139
+ }
140
+
141
+ const dec = PoolState.layout.decode(data.slice(8))
142
+
143
+ return new PoolState({
144
+ admin: dec.admin,
145
+ pendingAdmin: dec.pendingAdmin,
146
+ basePoolAuthority: dec.basePoolAuthority,
147
+ basePoolAuthorityBump: dec.basePoolAuthorityBump,
148
+ unstakingSolMint: dec.unstakingSolMint,
149
+ wsolVault: dec.wsolVault,
150
+ actionAuthority: dec.actionAuthority,
151
+ poolLookupTable: dec.poolLookupTable,
152
+ sharesIssued: dec.sharesIssued,
153
+ wsolUnstaking: dec.wsolUnstaking,
154
+ wsolInVault: dec.wsolInVault,
155
+ padding: dec.padding,
156
+ })
157
+ }
158
+
159
+ toJSON(): PoolStateJSON {
160
+ return {
161
+ admin: this.admin,
162
+ pendingAdmin: this.pendingAdmin,
163
+ basePoolAuthority: this.basePoolAuthority,
164
+ basePoolAuthorityBump: this.basePoolAuthorityBump.toString(),
165
+ unstakingSolMint: this.unstakingSolMint,
166
+ wsolVault: this.wsolVault,
167
+ actionAuthority: this.actionAuthority,
168
+ poolLookupTable: this.poolLookupTable,
169
+ sharesIssued: this.sharesIssued.toString(),
170
+ wsolUnstaking: this.wsolUnstaking.toString(),
171
+ wsolInVault: this.wsolInVault.toString(),
172
+ padding: this.padding.map((item) => item.toString()),
173
+ }
174
+ }
175
+
176
+ static fromJSON(obj: PoolStateJSON): PoolState {
177
+ return new PoolState({
178
+ admin: address(obj.admin),
179
+ pendingAdmin: address(obj.pendingAdmin),
180
+ basePoolAuthority: address(obj.basePoolAuthority),
181
+ basePoolAuthorityBump: new BN(obj.basePoolAuthorityBump),
182
+ unstakingSolMint: address(obj.unstakingSolMint),
183
+ wsolVault: address(obj.wsolVault),
184
+ actionAuthority: address(obj.actionAuthority),
185
+ poolLookupTable: address(obj.poolLookupTable),
186
+ sharesIssued: new BN(obj.sharesIssued),
187
+ wsolUnstaking: new BN(obj.wsolUnstaking),
188
+ wsolInVault: new BN(obj.wsolInVault),
189
+ padding: obj.padding.map((item) => new BN(item)),
190
+ })
191
+ }
192
+ }
@@ -39,6 +39,8 @@ export interface ReserveFields {
39
39
  * elevation group when this reserve is part of the collaterals.
40
40
  */
41
41
  borrowedAmountsAgainstThisReserveInElevationGroups: Array<BN>
42
+ /** The tracker of ticket-based withdrawals. */
43
+ withdrawQueue: types.WithdrawQueueFields
42
44
  padding: Array<BN>
43
45
  }
44
46
 
@@ -66,6 +68,8 @@ export interface ReserveJSON {
66
68
  * elevation group when this reserve is part of the collaterals.
67
69
  */
68
70
  borrowedAmountsAgainstThisReserveInElevationGroups: Array<string>
71
+ /** The tracker of ticket-based withdrawals. */
72
+ withdrawQueue: types.WithdrawQueueJSON
69
73
  padding: Array<string>
70
74
  }
71
75
 
@@ -93,6 +97,8 @@ export class Reserve {
93
97
  * elevation group when this reserve is part of the collaterals.
94
98
  */
95
99
  readonly borrowedAmountsAgainstThisReserveInElevationGroups: Array<BN>
100
+ /** The tracker of ticket-based withdrawals. */
101
+ readonly withdrawQueue: types.WithdrawQueue
96
102
  readonly padding: Array<BN>
97
103
 
98
104
  static readonly discriminator = Buffer.from([
@@ -110,14 +116,15 @@ export class Reserve {
110
116
  types.ReserveCollateral.layout("collateral"),
111
117
  borsh.array(borsh.u64(), 150, "reserveCollateralPadding"),
112
118
  types.ReserveConfig.layout("config"),
113
- borsh.array(borsh.u64(), 116, "configPadding"),
119
+ borsh.array(borsh.u64(), 113, "configPadding"),
114
120
  borsh.u64("borrowedAmountOutsideElevationGroup"),
115
121
  borsh.array(
116
122
  borsh.u64(),
117
123
  32,
118
124
  "borrowedAmountsAgainstThisReserveInElevationGroups"
119
125
  ),
120
- borsh.array(borsh.u64(), 207, "padding"),
126
+ types.WithdrawQueue.layout("withdrawQueue"),
127
+ borsh.array(borsh.u64(), 204, "padding"),
121
128
  ])
122
129
 
123
130
  constructor(fields: ReserveFields) {
@@ -136,6 +143,7 @@ export class Reserve {
136
143
  fields.borrowedAmountOutsideElevationGroup
137
144
  this.borrowedAmountsAgainstThisReserveInElevationGroups =
138
145
  fields.borrowedAmountsAgainstThisReserveInElevationGroups
146
+ this.withdrawQueue = new types.WithdrawQueue({ ...fields.withdrawQueue })
139
147
  this.padding = fields.padding
140
148
  }
141
149
 
@@ -202,6 +210,7 @@ export class Reserve {
202
210
  dec.borrowedAmountOutsideElevationGroup,
203
211
  borrowedAmountsAgainstThisReserveInElevationGroups:
204
212
  dec.borrowedAmountsAgainstThisReserveInElevationGroups,
213
+ withdrawQueue: types.WithdrawQueue.fromDecoded(dec.withdrawQueue),
205
214
  padding: dec.padding,
206
215
  })
207
216
  }
@@ -229,6 +238,7 @@ export class Reserve {
229
238
  this.borrowedAmountsAgainstThisReserveInElevationGroups.map((item) =>
230
239
  item.toString()
231
240
  ),
241
+ withdrawQueue: this.withdrawQueue.toJSON(),
232
242
  padding: this.padding.map((item) => item.toString()),
233
243
  }
234
244
  }
@@ -257,6 +267,7 @@ export class Reserve {
257
267
  obj.borrowedAmountsAgainstThisReserveInElevationGroups.map(
258
268
  (item) => new BN(item)
259
269
  ),
270
+ withdrawQueue: types.WithdrawQueue.fromJSON(obj.withdrawQueue),
260
271
  padding: obj.padding.map((item) => new BN(item)),
261
272
  })
262
273
  }
@@ -0,0 +1,160 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import {
3
+ address,
4
+ Address,
5
+ fetchEncodedAccount,
6
+ fetchEncodedAccounts,
7
+ GetAccountInfoApi,
8
+ GetMultipleAccountsApi,
9
+ Rpc,
10
+ } from "@solana/kit"
11
+ /* eslint-enable @typescript-eslint/no-unused-vars */
12
+ import BN from "bn.js" // eslint-disable-line @typescript-eslint/no-unused-vars
13
+ import * as borsh from "@coral-xyz/borsh" // eslint-disable-line @typescript-eslint/no-unused-vars
14
+ import { borshAddress } from "../utils" // eslint-disable-line @typescript-eslint/no-unused-vars
15
+ import * as types from "../types" // eslint-disable-line @typescript-eslint/no-unused-vars
16
+ import { PROGRAM_ID } from "../programId"
17
+
18
+ export interface UnstakeTicketFields {
19
+ authority: Address
20
+ poolState: Address
21
+ obligationMetadata: Address
22
+ initialUsol: BN
23
+ remainingUsol: BN
24
+ minimumEpochToBurn: BN
25
+ padding0: Array<BN>
26
+ padding: Array<BN>
27
+ }
28
+
29
+ export interface UnstakeTicketJSON {
30
+ authority: string
31
+ poolState: string
32
+ obligationMetadata: string
33
+ initialUsol: string
34
+ remainingUsol: string
35
+ minimumEpochToBurn: string
36
+ padding0: Array<string>
37
+ padding: Array<string>
38
+ }
39
+
40
+ export class UnstakeTicket {
41
+ readonly authority: Address
42
+ readonly poolState: Address
43
+ readonly obligationMetadata: Address
44
+ readonly initialUsol: BN
45
+ readonly remainingUsol: BN
46
+ readonly minimumEpochToBurn: BN
47
+ readonly padding0: Array<BN>
48
+ readonly padding: Array<BN>
49
+
50
+ static readonly discriminator = Buffer.from([
51
+ 131, 84, 209, 38, 145, 157, 181, 127,
52
+ ])
53
+
54
+ static readonly layout = borsh.struct<UnstakeTicket>([
55
+ borshAddress("authority"),
56
+ borshAddress("poolState"),
57
+ borshAddress("obligationMetadata"),
58
+ borsh.u64("initialUsol"),
59
+ borsh.u64("remainingUsol"),
60
+ borsh.u64("minimumEpochToBurn"),
61
+ borsh.array(borsh.u64(), 1, "padding0"),
62
+ borsh.array(borsh.u128(), 16, "padding"),
63
+ ])
64
+
65
+ constructor(fields: UnstakeTicketFields) {
66
+ this.authority = fields.authority
67
+ this.poolState = fields.poolState
68
+ this.obligationMetadata = fields.obligationMetadata
69
+ this.initialUsol = fields.initialUsol
70
+ this.remainingUsol = fields.remainingUsol
71
+ this.minimumEpochToBurn = fields.minimumEpochToBurn
72
+ this.padding0 = fields.padding0
73
+ this.padding = fields.padding
74
+ }
75
+
76
+ static async fetch(
77
+ rpc: Rpc<GetAccountInfoApi>,
78
+ address: Address,
79
+ programId: Address = PROGRAM_ID
80
+ ): Promise<UnstakeTicket | null> {
81
+ const info = await fetchEncodedAccount(rpc, address)
82
+
83
+ if (!info.exists) {
84
+ return null
85
+ }
86
+ if (info.programAddress !== programId) {
87
+ throw new Error(
88
+ `UnstakeTicketFields account ${address} belongs to wrong program ${info.programAddress}, expected ${programId}`
89
+ )
90
+ }
91
+
92
+ return this.decode(Buffer.from(info.data))
93
+ }
94
+
95
+ static async fetchMultiple(
96
+ rpc: Rpc<GetMultipleAccountsApi>,
97
+ addresses: Address[],
98
+ programId: Address = PROGRAM_ID
99
+ ): Promise<Array<UnstakeTicket | null>> {
100
+ const infos = await fetchEncodedAccounts(rpc, addresses)
101
+
102
+ return infos.map((info) => {
103
+ if (!info.exists) {
104
+ return null
105
+ }
106
+ if (info.programAddress !== programId) {
107
+ throw new Error(
108
+ `UnstakeTicketFields account ${info.address} belongs to wrong program ${info.programAddress}, expected ${programId}`
109
+ )
110
+ }
111
+
112
+ return this.decode(Buffer.from(info.data))
113
+ })
114
+ }
115
+
116
+ static decode(data: Buffer): UnstakeTicket {
117
+ if (!data.slice(0, 8).equals(UnstakeTicket.discriminator)) {
118
+ throw new Error("invalid account discriminator")
119
+ }
120
+
121
+ const dec = UnstakeTicket.layout.decode(data.slice(8))
122
+
123
+ return new UnstakeTicket({
124
+ authority: dec.authority,
125
+ poolState: dec.poolState,
126
+ obligationMetadata: dec.obligationMetadata,
127
+ initialUsol: dec.initialUsol,
128
+ remainingUsol: dec.remainingUsol,
129
+ minimumEpochToBurn: dec.minimumEpochToBurn,
130
+ padding0: dec.padding0,
131
+ padding: dec.padding,
132
+ })
133
+ }
134
+
135
+ toJSON(): UnstakeTicketJSON {
136
+ return {
137
+ authority: this.authority,
138
+ poolState: this.poolState,
139
+ obligationMetadata: this.obligationMetadata,
140
+ initialUsol: this.initialUsol.toString(),
141
+ remainingUsol: this.remainingUsol.toString(),
142
+ minimumEpochToBurn: this.minimumEpochToBurn.toString(),
143
+ padding0: this.padding0.map((item) => item.toString()),
144
+ padding: this.padding.map((item) => item.toString()),
145
+ }
146
+ }
147
+
148
+ static fromJSON(obj: UnstakeTicketJSON): UnstakeTicket {
149
+ return new UnstakeTicket({
150
+ authority: address(obj.authority),
151
+ poolState: address(obj.poolState),
152
+ obligationMetadata: address(obj.obligationMetadata),
153
+ initialUsol: new BN(obj.initialUsol),
154
+ remainingUsol: new BN(obj.remainingUsol),
155
+ minimumEpochToBurn: new BN(obj.minimumEpochToBurn),
156
+ padding0: obj.padding0.map((item) => new BN(item)),
157
+ padding: obj.padding.map((item) => new BN(item)),
158
+ })
159
+ }
160
+ }
@@ -19,42 +19,17 @@ export interface UserStateFields {
19
19
  userId: BN
20
20
  farmState: Address
21
21
  owner: Address
22
- /** Indicate if this user state is part of a delegated farm */
23
22
  isFarmDelegated: number
24
23
  padding0: Array<number>
25
- /**
26
- * Rewards tally used for computation of gained rewards
27
- * (scaled from `Decimal` representation).
28
- */
29
24
  rewardsTallyScaled: Array<BN>
30
- /** Number of reward tokens ready for claim */
31
25
  rewardsIssuedUnclaimed: Array<BN>
32
26
  lastClaimTs: Array<BN>
33
- /**
34
- * User stake deposited and usable, generating rewards and fees.
35
- * (scaled from `Decimal` representation).
36
- */
37
27
  activeStakeScaled: BN
38
- /**
39
- * User stake deposited but not usable and not generating rewards yet.
40
- * (scaled from `Decimal` representation).
41
- */
42
28
  pendingDepositStakeScaled: BN
43
- /**
44
- * After this timestamp, pending user stake can be moved to user stake
45
- * Initialized to now() + delayed user stake period
46
- */
47
29
  pendingDepositStakeTs: BN
48
- /**
49
- * User deposits unstaked, pending for withdrawal, not usable and not generating rewards.
50
- * (scaled from `Decimal` representation).
51
- */
52
30
  pendingWithdrawalUnstakeScaled: BN
53
- /** After this timestamp, user can withdraw their deposit. */
54
31
  pendingWithdrawalUnstakeTs: BN
55
- /** User bump used for account address validation */
56
32
  bump: BN
57
- /** Delegatee used for initialisation - useful to check against */
58
33
  delegatee: Address
59
34
  lastStakeTs: BN
60
35
  padding1: Array<BN>
@@ -64,42 +39,17 @@ export interface UserStateJSON {
64
39
  userId: string
65
40
  farmState: string
66
41
  owner: string
67
- /** Indicate if this user state is part of a delegated farm */
68
42
  isFarmDelegated: number
69
43
  padding0: Array<number>
70
- /**
71
- * Rewards tally used for computation of gained rewards
72
- * (scaled from `Decimal` representation).
73
- */
74
44
  rewardsTallyScaled: Array<string>
75
- /** Number of reward tokens ready for claim */
76
45
  rewardsIssuedUnclaimed: Array<string>
77
46
  lastClaimTs: Array<string>
78
- /**
79
- * User stake deposited and usable, generating rewards and fees.
80
- * (scaled from `Decimal` representation).
81
- */
82
47
  activeStakeScaled: string
83
- /**
84
- * User stake deposited but not usable and not generating rewards yet.
85
- * (scaled from `Decimal` representation).
86
- */
87
48
  pendingDepositStakeScaled: string
88
- /**
89
- * After this timestamp, pending user stake can be moved to user stake
90
- * Initialized to now() + delayed user stake period
91
- */
92
49
  pendingDepositStakeTs: string
93
- /**
94
- * User deposits unstaked, pending for withdrawal, not usable and not generating rewards.
95
- * (scaled from `Decimal` representation).
96
- */
97
50
  pendingWithdrawalUnstakeScaled: string
98
- /** After this timestamp, user can withdraw their deposit. */
99
51
  pendingWithdrawalUnstakeTs: string
100
- /** User bump used for account address validation */
101
52
  bump: string
102
- /** Delegatee used for initialisation - useful to check against */
103
53
  delegatee: string
104
54
  lastStakeTs: string
105
55
  padding1: Array<string>
@@ -109,42 +59,17 @@ export class UserState {
109
59
  readonly userId: BN
110
60
  readonly farmState: Address
111
61
  readonly owner: Address
112
- /** Indicate if this user state is part of a delegated farm */
113
62
  readonly isFarmDelegated: number
114
63
  readonly padding0: Array<number>
115
- /**
116
- * Rewards tally used for computation of gained rewards
117
- * (scaled from `Decimal` representation).
118
- */
119
64
  readonly rewardsTallyScaled: Array<BN>
120
- /** Number of reward tokens ready for claim */
121
65
  readonly rewardsIssuedUnclaimed: Array<BN>
122
66
  readonly lastClaimTs: Array<BN>
123
- /**
124
- * User stake deposited and usable, generating rewards and fees.
125
- * (scaled from `Decimal` representation).
126
- */
127
67
  readonly activeStakeScaled: BN
128
- /**
129
- * User stake deposited but not usable and not generating rewards yet.
130
- * (scaled from `Decimal` representation).
131
- */
132
68
  readonly pendingDepositStakeScaled: BN
133
- /**
134
- * After this timestamp, pending user stake can be moved to user stake
135
- * Initialized to now() + delayed user stake period
136
- */
137
69
  readonly pendingDepositStakeTs: BN
138
- /**
139
- * User deposits unstaked, pending for withdrawal, not usable and not generating rewards.
140
- * (scaled from `Decimal` representation).
141
- */
142
70
  readonly pendingWithdrawalUnstakeScaled: BN
143
- /** After this timestamp, user can withdraw their deposit. */
144
71
  readonly pendingWithdrawalUnstakeTs: BN
145
- /** User bump used for account address validation */
146
72
  readonly bump: BN
147
- /** Delegatee used for initialisation - useful to check against */
148
73
  readonly delegatee: Address
149
74
  readonly lastStakeTs: BN
150
75
  readonly padding1: Array<BN>