@kamino-finance/klend-sdk 7.1.3 → 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 (230) 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/unstake_lst_collateral.d.ts +12 -0
  164. package/dist/lending_operations/unstake_lst_collateral.d.ts.map +1 -0
  165. package/dist/lending_operations/unstake_lst_collateral.js +104 -0
  166. package/dist/lending_operations/unstake_lst_collateral.js.map +1 -0
  167. package/dist/manager/client_kamino_manager.js +11 -8
  168. package/dist/manager/client_kamino_manager.js.map +1 -1
  169. package/dist/utils/managerTypes.d.ts.map +1 -1
  170. package/dist/utils/managerTypes.js +9 -4
  171. package/dist/utils/managerTypes.js.map +1 -1
  172. package/dist/utils/seeds.d.ts +10 -14
  173. package/dist/utils/seeds.d.ts.map +1 -1
  174. package/dist/utils/seeds.js +25 -22
  175. package/dist/utils/seeds.js.map +1 -1
  176. package/package.json +1 -1
  177. package/src/@codegen/klend/accounts/LendingMarket.ts +210 -5
  178. package/src/@codegen/klend/accounts/Obligation.ts +53 -31
  179. package/src/@codegen/klend/accounts/PoolState.ts +192 -0
  180. package/src/@codegen/klend/accounts/Reserve.ts +13 -2
  181. package/src/@codegen/klend/accounts/UnstakeTicket.ts +160 -0
  182. package/src/@codegen/klend/accounts/UserState.ts +0 -75
  183. package/src/@codegen/klend/accounts/WithdrawTicket.ts +256 -0
  184. package/src/@codegen/klend/accounts/index.ts +6 -0
  185. package/src/@codegen/klend/errors/custom.ts +427 -2
  186. package/src/@codegen/klend/instructions/enqueueToWithdraw.ts +89 -0
  187. package/src/@codegen/klend/instructions/fillBorrowOrder.ts +96 -0
  188. package/src/@codegen/klend/instructions/idlMissingTypes.ts +7 -4
  189. package/src/@codegen/klend/instructions/index.ts +34 -0
  190. package/src/@codegen/klend/instructions/initReserve.ts +2 -6
  191. package/src/@codegen/klend/instructions/liquidateObligationAndRedeemReserveCollateral.ts +1 -1
  192. package/src/@codegen/klend/instructions/recoverInvalidTicketCollateral.ts +96 -0
  193. package/src/@codegen/klend/instructions/setBorrowOrder.ts +77 -0
  194. package/src/@codegen/klend/instructions/unstakeLstCollateralEnd.ts +251 -0
  195. package/src/@codegen/klend/instructions/unstakeLstCollateralStart.ts +353 -0
  196. package/src/@codegen/klend/instructions/updateGlobalConfig.ts +2 -1
  197. package/src/@codegen/klend/instructions/updateReserveConfig.ts +2 -1
  198. package/src/@codegen/klend/instructions/withdrawObligationCollateral.ts +1 -1
  199. package/src/@codegen/klend/instructions/withdrawObligationCollateralV2.ts +1 -1
  200. package/src/@codegen/klend/instructions/withdrawObligationUsol.ts +168 -0
  201. package/src/@codegen/klend/instructions/withdrawQueuedLiquidity.ts +92 -0
  202. package/src/@codegen/klend/types/BorrowOrder.ts +267 -0
  203. package/src/@codegen/klend/types/BorrowOrderConfigArgs.ts +87 -0
  204. package/src/@codegen/klend/types/ObligationLiquidity.ts +39 -9
  205. package/src/@codegen/klend/types/ObligationOrder.ts +4 -4
  206. package/src/@codegen/klend/types/ReserveConfig.ts +171 -39
  207. package/src/@codegen/klend/types/ReserveFees.ts +12 -12
  208. package/src/@codegen/klend/types/ReserveLiquidity.ts +30 -12
  209. package/src/@codegen/klend/types/UpdateConfigMode.ts +206 -26
  210. package/src/@codegen/klend/types/UpdateLendingMarketMode.ts +300 -0
  211. package/src/@codegen/klend/types/WithdrawQueue.ts +117 -0
  212. package/src/@codegen/klend/types/index.ts +45 -16
  213. package/src/@codegen/klend/zero_padding/ObligationZP.ts +22 -13
  214. package/src/classes/action.ts +577 -8
  215. package/src/classes/manager.ts +11 -0
  216. package/src/classes/market.ts +36 -5
  217. package/src/classes/obligation.ts +1 -1
  218. package/src/classes/reserve.ts +13 -8
  219. package/src/classes/unstakingPool.ts +83 -6
  220. package/src/idl/klend.json +2126 -233
  221. package/src/lending_operations/index.ts +1 -0
  222. package/src/lending_operations/unstake_lst_collateral.ts +174 -0
  223. package/src/manager/client_kamino_manager.ts +11 -8
  224. package/src/utils/managerTypes.ts +9 -4
  225. package/src/utils/seeds.ts +28 -26
  226. package/dist/@codegen/klend/types/AssetTier.d.ts +0 -45
  227. package/dist/@codegen/klend/types/AssetTier.d.ts.map +0 -1
  228. package/dist/@codegen/klend/types/AssetTier.js +0 -132
  229. package/dist/@codegen/klend/types/AssetTier.js.map +0 -1
  230. package/src/@codegen/klend/types/AssetTier.ts +0 -119
@@ -1566,6 +1566,17 @@ export const MARKET_UPDATER = new ConfigUpdater(UpdateLendingMarketMode.fromDeco
1566
1566
  [UpdateLendingMarketMode.UpdateInitialDepositAmount.kind]: config.minInitialDepositAmount,
1567
1567
  [UpdateLendingMarketMode.UpdateObligationOrderCreationEnabled.kind]: config.obligationOrderCreationEnabled,
1568
1568
  [UpdateLendingMarketMode.UpdateObligationOrderExecutionEnabled.kind]: config.obligationOrderExecutionEnabled,
1569
+ [UpdateLendingMarketMode.UpdateMatureReserveDebtLiquidationEnabled.kind]: config.matureReserveDebtLiquidationEnabled,
1570
+ [UpdateLendingMarketMode.UpdateObligationBorrowDebtTermLiquidationEnabled.kind]:
1571
+ config.obligationBorrowDebtTermLiquidationEnabled,
1572
+ [UpdateLendingMarketMode.UpdateProposerAuthority.kind]: config.proposerAuthority,
1573
+ [UpdateLendingMarketMode.UpdateBorrowOrderCreationEnabled.kind]: config.borrowOrderCreationEnabled,
1574
+ [UpdateLendingMarketMode.UpdateBorrowOrderExecutionEnabled.kind]: config.borrowOrderExecutionEnabled,
1575
+ [UpdateLendingMarketMode.UpdatePriceTriggeredLiquidationDisabled.kind]: config.priceTriggeredLiquidationDisabled,
1576
+ [UpdateLendingMarketMode.UpdateUnstakingPoolState.kind]: config.unstakingPoolState,
1577
+ [UpdateLendingMarketMode.UpdateWithdrawTicketIssuanceEnabled.kind]: config.withdrawTicketIssuanceEnabled,
1578
+ [UpdateLendingMarketMode.UpdateWithdrawTicketRedemptionEnabled.kind]: config.withdrawTicketRedemptionEnabled,
1579
+ [UpdateLendingMarketMode.UpdateMinWithdrawQueuedLiquidityValue.kind]: config.minWithdrawQueuedLiquidityValue,
1569
1580
  }));
1570
1581
 
1571
1582
  function parseForChangesMarketConfigAndGetIxs(
@@ -54,6 +54,8 @@ import { parseTokenSymbol, parseZeroPaddedUtf8 } from './utils';
54
54
  import { ObligationZP } from '../@codegen/klend/zero_padding';
55
55
  import { checkDefined } from '../utils/validations';
56
56
  import { Buffer } from 'buffer';
57
+ import { UNSTAKING_POOL_STAGING_ID, unstakingPoolMintPda } from './unstakingPool';
58
+ import { PROGRAM_ID as UNSTAKING_POOL_ID } from '../@codegen/unstaking_pool/programId';
57
59
 
58
60
  export type KaminoMarketRpcApi = GetAccountInfoApi &
59
61
  GetMultipleAccountsApi &
@@ -64,6 +66,9 @@ export type KaminoMarketRpcApi = GetAccountInfoApi &
64
66
  GetBalanceApi;
65
67
 
66
68
  const base58Decoder = getBase58Decoder();
69
+ // This is a list of reserves (for STAGING only) that were incorrectly initialized and mess up with the mapping from mint -> reserve
70
+ // This can be removed once we migrate all ixs to act upon reserve pubkey instead of mints
71
+ export const INCORRECT_RESERVES_STAGING: Address[] = [address('5JPmNb5oxRZF4yp3kQL44HWmZnbyjguRVZbo2ew6FoxV')];
67
72
 
68
73
  export interface ReserveRewardInfo {
69
74
  rewardsPerSecond: Decimal; // not lamport
@@ -230,8 +235,15 @@ export class KaminoMarket {
230
235
  this.reservesActive = getReservesActive(this.reserves);
231
236
  }
232
237
 
233
- async reloadSingleReserve(reservePk: Address, reserveData?: Reserve): Promise<void> {
234
- const reserve = await getSingleReserve(reservePk, this.rpc, this.recentSlotDurationMs, reserveData);
238
+ async reloadSingleReserve(reservePk: Address, reserveData?: Reserve, programId: Address = PROGRAM_ID): Promise<void> {
239
+ const reserve = await getSingleReserve(
240
+ reservePk,
241
+ this.rpc,
242
+ this.recentSlotDurationMs,
243
+ reserveData,
244
+ undefined,
245
+ programId
246
+ );
235
247
  this.reserves.set(reservePk, reserve);
236
248
  this.reservesActive.set(reservePk, reserve);
237
249
  }
@@ -244,6 +256,20 @@ export class KaminoMarket {
244
256
  return this.address;
245
257
  }
246
258
 
259
+ getUsolPoolAddress(): Address {
260
+ return this.state.unstakingPoolState;
261
+ }
262
+
263
+ getUsolPoolProgramId(): Address {
264
+ return this.programId == PROGRAM_ID ? UNSTAKING_POOL_ID : UNSTAKING_POOL_STAGING_ID;
265
+ }
266
+
267
+ async getUsolPoolMint(): Promise<Address> {
268
+ const usolPoolPk = this.getUsolPoolAddress();
269
+ const usolPoolProgram = this.getUsolPoolProgramId();
270
+ return (await unstakingPoolMintPda(usolPoolPk, usolPoolProgram))[0];
271
+ }
272
+
247
273
  /**
248
274
  * Get a list of reserves for this market
249
275
  */
@@ -1584,7 +1610,7 @@ export async function getReservesForMarket(
1584
1610
  recentSlotDurationMs: number,
1585
1611
  oracleAccounts?: AllOracleAccounts
1586
1612
  ): Promise<Map<Address, KaminoReserve>> {
1587
- const reserves = await rpc
1613
+ let reserves = await rpc
1588
1614
  .getProgramAccounts(programId, {
1589
1615
  filters: [
1590
1616
  {
@@ -1601,6 +1627,10 @@ export async function getReservesForMarket(
1601
1627
  encoding: 'base64',
1602
1628
  })
1603
1629
  .send();
1630
+ // If staging env always filter the incorrect reserves
1631
+ if (programId !== PROGRAM_ID) {
1632
+ reserves = reserves.filter((reserve) => INCORRECT_RESERVES_STAGING.includes(reserve.pubkey) === false);
1633
+ }
1604
1634
  const deserializedReserves: ReserveWithAddress[] = reserves.map((reserve) => {
1605
1635
  if (reserve.account === null) {
1606
1636
  throw new Error(`Reserve account ${reserve.pubkey} does not exist`);
@@ -1637,9 +1667,10 @@ export async function getSingleReserve(
1637
1667
  rpc: Rpc<KaminoReserveRpcApi>,
1638
1668
  recentSlotDurationMs: number,
1639
1669
  reserveData?: Reserve,
1640
- oracleAccounts?: AllOracleAccounts
1670
+ oracleAccounts?: AllOracleAccounts,
1671
+ programId: Address = PROGRAM_ID
1641
1672
  ): Promise<KaminoReserve> {
1642
- const reserve = reserveData ?? (await Reserve.fetch(rpc, reservePk));
1673
+ const reserve = reserveData ?? (await Reserve.fetch(rpc, reservePk, programId));
1643
1674
 
1644
1675
  if (reserve === null) {
1645
1676
  throw new Error(`Reserve account ${reservePk} does not exist`);
@@ -270,7 +270,7 @@ export class KaminoObligation {
270
270
  * Returns obligation orders (including the null ones, i.e. non-active positions in the orders' array).
271
271
  */
272
272
  getOrders(): Array<KaminoObligationOrder | null> {
273
- return this.state.orders.map((order) => KaminoObligationOrder.fromState(order));
273
+ return this.state.obligationOrders.map((order) => KaminoObligationOrder.fromState(order));
274
274
  }
275
275
 
276
276
  /**
@@ -144,7 +144,7 @@ export class KaminoReserve {
144
144
  * @returns the available liquidity amount of the reserve in lamports
145
145
  */
146
146
  getLiquidityAvailableAmount(): Decimal {
147
- return new Decimal(this.state.liquidity.availableAmount.toString());
147
+ return new Decimal(this.state.liquidity.totalAvailableAmount.toString());
148
148
  }
149
149
 
150
150
  /**
@@ -199,7 +199,7 @@ export class KaminoReserve {
199
199
  * @returns the origination fee percentage of the reserve
200
200
  */
201
201
  getBorrowFee = (): Decimal => {
202
- return new Fraction(this.state.config.fees.borrowFeeSf).toDecimal();
202
+ return new Fraction(this.state.config.fees.originationFeeSf).toDecimal();
203
203
  };
204
204
 
205
205
  /**
@@ -1163,13 +1163,12 @@ export async function createReserveIxs(
1163
1163
 
1164
1164
  const { liquiditySupplyVault, collateralMint, collateralSupplyVault, feeVault } = await reservePdas(
1165
1165
  programId,
1166
- lendingMarket,
1167
- liquidityMint
1166
+ reserveAddress.address
1168
1167
  );
1169
1168
  const [lendingMarketAuthority] = await lendingMarketAuthPda(lendingMarket, programId);
1170
1169
 
1171
1170
  const accounts: InitReserveAccounts = {
1172
- lendingMarketOwner: owner,
1171
+ signer: owner,
1173
1172
  lendingMarket: lendingMarket,
1174
1173
  lendingMarketAuthority: lendingMarketAuthority,
1175
1174
  reserve: reserveAddress.address,
@@ -1222,7 +1221,7 @@ export const RESERVE_CONFIG_UPDATER = new ConfigUpdater(UpdateConfigMode.fromDec
1222
1221
  [UpdateConfigMode.UpdateLiquidationThresholdPct.kind]: config.liquidationThresholdPct,
1223
1222
  [UpdateConfigMode.UpdateProtocolLiquidationFee.kind]: config.protocolLiquidationFeePct,
1224
1223
  [UpdateConfigMode.UpdateProtocolTakeRate.kind]: config.protocolTakeRatePct,
1225
- [UpdateConfigMode.UpdateFeesBorrowFee.kind]: config.fees.borrowFeeSf,
1224
+ [UpdateConfigMode.UpdateFeesOriginationFee.kind]: config.fees.originationFeeSf,
1226
1225
  [UpdateConfigMode.UpdateFeesFlashLoanFee.kind]: config.fees.flashLoanFeeSf,
1227
1226
  [UpdateConfigMode.DeprecatedUpdateFeesReferralFeeBps.kind]: [], // deprecated
1228
1227
  [UpdateConfigMode.UpdateDepositLimit.kind]: config.depositLimit,
@@ -1256,7 +1255,7 @@ export const RESERVE_CONFIG_UPDATER = new ConfigUpdater(UpdateConfigMode.fromDec
1256
1255
  [UpdateConfigMode.UpdateMinLiquidationBonusBps.kind]: config.minLiquidationBonusBps,
1257
1256
  [UpdateConfigMode.UpdateDeleveragingMarginCallPeriod.kind]: config.deleveragingMarginCallPeriodSecs,
1258
1257
  [UpdateConfigMode.UpdateBorrowFactor.kind]: config.borrowFactorPct,
1259
- [UpdateConfigMode.UpdateAssetTier.kind]: config.assetTier,
1258
+ [UpdateConfigMode.DeprecatedUpdateAssetTier.kind]: [], //deprecated
1260
1259
  [UpdateConfigMode.UpdateElevationGroup.kind]: config.elevationGroups,
1261
1260
  [UpdateConfigMode.UpdateDeleveragingThresholdDecreaseBpsPerDay.kind]: config.deleveragingThresholdDecreaseBpsPerDay,
1262
1261
  [UpdateConfigMode.DeprecatedUpdateMultiplierSideBoost.kind]: [], // deprecated
@@ -1274,6 +1273,12 @@ export const RESERVE_CONFIG_UPDATER = new ConfigUpdater(UpdateConfigMode.fromDec
1274
1273
  [UpdateConfigMode.UpdateAutodeleverageEnabled.kind]: config.autodeleverageEnabled,
1275
1274
  [UpdateConfigMode.UpdateDeleveragingBonusIncreaseBpsPerDay.kind]: config.deleveragingBonusIncreaseBpsPerDay,
1276
1275
  [UpdateConfigMode.UpdateProtocolOrderExecutionFee.kind]: config.protocolOrderExecutionFeePct,
1276
+ [UpdateConfigMode.UpdateDebtMaturityTimestamp.kind]: config.debtMaturityTimestamp,
1277
+ [UpdateConfigMode.UpdateDebtTermSeconds.kind]: config.debtTermSeconds,
1278
+ [UpdateConfigMode.UpdateProposerAuthorityLock.kind]: config.proposerAuthorityLocked,
1279
+ [UpdateConfigMode.UpdateMinDeleveragingBonusBps.kind]: config.minDeleveragingBonusBps,
1280
+ [UpdateConfigMode.UpdateCanUnstakeLstCollateral.kind]: config.canUnstakeLstCollateral,
1281
+ [UpdateConfigMode.UpdateLtvLamportsMargin.kind]: config.ltvLamportsMargin,
1277
1282
  }));
1278
1283
 
1279
1284
  export async function updateEntireReserveConfigIx(
@@ -1345,7 +1350,7 @@ const NON_VALIDATED_DISCRIMINATORS = [
1345
1350
  function shouldSkipValidation(mode: UpdateConfigModeKind, reserve: Reserve | undefined): boolean {
1346
1351
  return (
1347
1352
  NON_VALIDATED_DISCRIMINATORS.includes(mode.discriminator) &&
1348
- !reserve?.liquidity.availableAmount.gten(MIN_INITIAL_DEPOSIT)
1353
+ !reserve?.liquidity.totalAvailableAmount.gten(MIN_INITIAL_DEPOSIT)
1349
1354
  );
1350
1355
  }
1351
1356
 
@@ -17,6 +17,7 @@ import { TOKEN_2022_PROGRAM_ADDRESS } from '@solana-program/token-2022';
17
17
  import { getAssociatedTokenAddress } from '../lib';
18
18
  import { PoolState, UnstakeTicket } from '../@codegen/unstaking_pool/accounts';
19
19
  import {
20
+ createAssociatedTokenAccountIdempotentInstruction,
20
21
  createLookupTableIx,
21
22
  DEFAULT_PUBLIC_KEY,
22
23
  extendLookupTableIxs,
@@ -49,6 +50,7 @@ import {
49
50
  Rpc,
50
51
  SolanaRpcApi,
51
52
  TransactionSigner,
53
+ getBase58Decoder,
52
54
  } from '@solana/kit';
53
55
  import { getCreateAccountInstruction, SYSTEM_PROGRAM_ADDRESS } from '@solana-program/system';
54
56
  import { SYSVAR_CLOCK_ADDRESS, SYSVAR_INSTRUCTIONS_ADDRESS, SYSVAR_RENT_ADDRESS } from '@solana/sysvars';
@@ -62,16 +64,29 @@ const STAKE_HISTORY_PROGRAM_ID: Address = address('SysvarStakeHistory11111111111
62
64
  const STAKE_ACCOUNT_SIZE: number = 200;
63
65
  export const STAKE_POOL_SIZE: number = 611;
64
66
  const addressEncoder = getAddressEncoder();
67
+ const base58Decoder = getBase58Decoder();
65
68
 
66
69
  /**
67
70
  * Unstaking sol mint seed
68
71
  */
69
72
  export const UNSTAKING_SOL_MINT_SEED = Buffer.from('unstaking_sol_mint');
70
73
 
74
+ /**
75
+ * Unstaking sol mint seed
76
+ */
77
+ export const UNSTAKING_SOL_WSOL_VAULT_SEED = Buffer.from('wsol_vault');
78
+
71
79
  /**
72
80
  * Unstaking sol pool base authority seed
73
81
  */
74
- export const BASE_POOL_AUTHORITY_SEED = Buffer.from('authority');
82
+ export const BASE_POOL_AUTHORITY_SEED = Buffer.from('base_authority');
83
+
84
+ /**
85
+ * Unstaking sol pool lending market authority seed
86
+ */
87
+ export const UNSTAKING_POOL_AUTHORITY_SEED = Buffer.from('upa');
88
+
89
+ /**
75
90
 
76
91
  /**
77
92
  * KaminoPoolClient is a class that provides a high-level interface to interact with the Kamino Pool program.
@@ -112,8 +127,8 @@ export class UnstakingPoolClient {
112
127
  });
113
128
 
114
129
  const unstakingSolMint = (await unstakingPoolMintPda(poolState.address))[0];
115
- const basePoolAuthority = (await unstakingPoolAuthorityPda(poolState.address))[0];
116
- const wsolVault = await getAssociatedTokenAddress(WRAPPED_SOL_MINT, basePoolAuthority);
130
+ const basePoolAuthority = (await unstakingPoolBaseAuthorityPda(poolState.address))[0];
131
+ const wsolVault = (await unstakingPoolWsolVaultPda(poolState.address))[0];
117
132
 
118
133
  const initPoolAccounts: InitializePoolAccounts = {
119
134
  admin: poolConfig.admin,
@@ -276,6 +291,7 @@ export class UnstakingPoolClient {
276
291
  * @param stakedSolMint - staked sol mint
277
292
  * @param stakedSolToDeposit - staked sol to convert to USOL (at the pool ratio)
278
293
  * @param minSharesToReceive - parameter to control slippage
294
+ * @param initUsolAta - pass if you want the usol ata initialized
279
295
  * @returns burn instruction
280
296
  */
281
297
  async mintIx(
@@ -285,7 +301,8 @@ export class UnstakingPoolClient {
285
301
  unstakeTicket: TransactionSigner,
286
302
  stakedSolMint: Address,
287
303
  stakedSolToDeposit: BN,
288
- minSharesToReceive: BN
304
+ minSharesToReceive: BN,
305
+ initUsolAta: boolean
289
306
  ): Promise<MintIxs> {
290
307
  const pool = await poolState.getState(this.getConnection());
291
308
  // Create unstake ticket ix
@@ -340,7 +357,17 @@ export class UnstakingPoolClient {
340
357
  accounts: ixAccounts.concat(remainingAccounts),
341
358
  data: ix.data,
342
359
  };
343
- return { mintIxs: [createUnstakeTicketIx, mintIx], additionalSigners: remainingSigners };
360
+ const ixs = [createUnstakeTicketIx, mintIx];
361
+ if (initUsolAta) {
362
+ const [_, createAtaIx] = await createAssociatedTokenAccountIdempotentInstruction(
363
+ user,
364
+ pool.unstakingSolMint,
365
+ user.address,
366
+ TOKEN_PROGRAM_ADDRESS
367
+ );
368
+ ixs.splice(1, 0, createAtaIx);
369
+ }
370
+ return { mintIxs: ixs, additionalSigners: remainingSigners };
344
371
  }
345
372
 
346
373
  /**
@@ -467,6 +494,46 @@ export class UnstakingPool {
467
494
  }
468
495
  }
469
496
 
497
+ export async function getAllTicketsForUser(
498
+ rpc: Rpc<GetProgramAccountsApi>,
499
+ user: Address,
500
+ programId: Address = UNSTAKING_POOL_ID
501
+ ): Promise<Array<UnstakeTicketInfo>> {
502
+ const results = await rpc
503
+ .getProgramAccounts(programId, {
504
+ filters: [
505
+ {
506
+ dataSize: BigInt(UnstakeTicket.layout.span + 8),
507
+ },
508
+ {
509
+ memcmp: {
510
+ offset: 0n,
511
+ bytes: base58Decoder.decode(UnstakeTicket.discriminator) as Base58EncodedBytes,
512
+ encoding: 'base58',
513
+ },
514
+ },
515
+ {
516
+ memcmp: {
517
+ offset: 8n,
518
+ bytes: user.toString() as Base58EncodedBytes,
519
+ encoding: 'base58',
520
+ },
521
+ },
522
+ ],
523
+ encoding: 'base64',
524
+ })
525
+ .send();
526
+
527
+ return results.map((result) => {
528
+ return { state: UnstakeTicket.decode(Buffer.from(result.account.data[0], 'base64')), pk: result.pubkey };
529
+ });
530
+ }
531
+
532
+ export type UnstakeTicketInfo = {
533
+ pk: Address;
534
+ state: UnstakeTicket;
535
+ };
536
+
470
537
  export type StakeAccountInfo = {
471
538
  pk: Address;
472
539
  stakeAccount: StakeAccount;
@@ -493,7 +560,17 @@ export function unstakingPoolMintPda(
493
560
  });
494
561
  }
495
562
 
496
- export function unstakingPoolAuthorityPda(
563
+ export function unstakingPoolWsolVaultPda(
564
+ pool: Address,
565
+ programId: Address = UNSTAKING_POOL_ID
566
+ ): Promise<ProgramDerivedAddress> {
567
+ return getProgramDerivedAddress({
568
+ seeds: [UNSTAKING_SOL_WSOL_VAULT_SEED, addressEncoder.encode(pool)],
569
+ programAddress: programId,
570
+ });
571
+ }
572
+
573
+ export function unstakingPoolBaseAuthorityPda(
497
574
  pool: Address,
498
575
  programId: Address = UNSTAKING_POOL_ID
499
576
  ): Promise<ProgramDerivedAddress> {