@kamino-finance/klend-sdk 3.2.26 → 4.0.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 (725) hide show
  1. package/dist/classes/action.d.ts +1 -0
  2. package/dist/classes/action.d.ts.map +1 -0
  3. package/dist/classes/action.js +1130 -1186
  4. package/dist/classes/action.js.map +1 -1
  5. package/dist/classes/curve.d.ts +1 -0
  6. package/dist/classes/curve.d.ts.map +1 -0
  7. package/dist/classes/curve.js +1 -1
  8. package/dist/classes/curve.js.map +1 -1
  9. package/dist/classes/fraction.d.ts +1 -0
  10. package/dist/classes/fraction.d.ts.map +1 -0
  11. package/dist/classes/fraction.js +7 -6
  12. package/dist/classes/fraction.js.map +1 -1
  13. package/dist/classes/index.d.ts +1 -0
  14. package/dist/classes/index.d.ts.map +1 -0
  15. package/dist/classes/index.js.map +1 -1
  16. package/dist/classes/jupiterPerps.d.ts +1 -0
  17. package/dist/classes/jupiterPerps.d.ts.map +1 -0
  18. package/dist/classes/jupiterPerps.js +7 -18
  19. package/dist/classes/jupiterPerps.js.map +1 -1
  20. package/dist/classes/manager.d.ts +1 -0
  21. package/dist/classes/manager.d.ts.map +1 -0
  22. package/dist/classes/manager.js +131 -158
  23. package/dist/classes/manager.js.map +1 -1
  24. package/dist/classes/market.d.ts +1 -0
  25. package/dist/classes/market.d.ts.map +1 -0
  26. package/dist/classes/market.js +620 -714
  27. package/dist/classes/market.js.map +1 -1
  28. package/dist/classes/obligation.d.ts +1 -0
  29. package/dist/classes/obligation.d.ts.map +1 -0
  30. package/dist/classes/obligation.js +60 -62
  31. package/dist/classes/obligation.js.map +1 -1
  32. package/dist/classes/reserve.d.ts +1 -0
  33. package/dist/classes/reserve.d.ts.map +1 -0
  34. package/dist/classes/reserve.js +120 -129
  35. package/dist/classes/reserve.js.map +1 -1
  36. package/dist/classes/shared.d.ts +1 -0
  37. package/dist/classes/shared.d.ts.map +1 -0
  38. package/dist/classes/shared.js.map +1 -1
  39. package/dist/classes/utils.d.ts +1 -0
  40. package/dist/classes/utils.d.ts.map +1 -0
  41. package/dist/classes/utils.js +3 -3
  42. package/dist/classes/utils.js.map +1 -1
  43. package/dist/classes/vault.d.ts +1 -0
  44. package/dist/classes/vault.d.ts.map +1 -0
  45. package/dist/classes/vault.js +334 -354
  46. package/dist/classes/vault.js.map +1 -1
  47. package/dist/client_kamino_manager.d.ts +1 -0
  48. package/dist/client_kamino_manager.d.ts.map +1 -0
  49. package/dist/client_kamino_manager.js +323 -326
  50. package/dist/client_kamino_manager.js.map +1 -1
  51. package/dist/idl_codegen/accounts/LendingMarket.d.ts +1 -0
  52. package/dist/idl_codegen/accounts/LendingMarket.d.ts.map +1 -0
  53. package/dist/idl_codegen/accounts/LendingMarket.js +89 -55
  54. package/dist/idl_codegen/accounts/LendingMarket.js.map +1 -1
  55. package/dist/idl_codegen/accounts/Obligation.d.ts +1 -0
  56. package/dist/idl_codegen/accounts/Obligation.d.ts.map +1 -0
  57. package/dist/idl_codegen/accounts/Obligation.js +87 -56
  58. package/dist/idl_codegen/accounts/Obligation.js.map +1 -1
  59. package/dist/idl_codegen/accounts/ReferrerState.d.ts +1 -0
  60. package/dist/idl_codegen/accounts/ReferrerState.d.ts.map +1 -0
  61. package/dist/idl_codegen/accounts/ReferrerState.js +22 -33
  62. package/dist/idl_codegen/accounts/ReferrerState.js.map +1 -1
  63. package/dist/idl_codegen/accounts/ReferrerTokenState.d.ts +1 -0
  64. package/dist/idl_codegen/accounts/ReferrerTokenState.d.ts.map +1 -0
  65. package/dist/idl_codegen/accounts/ReferrerTokenState.js +35 -37
  66. package/dist/idl_codegen/accounts/ReferrerTokenState.js.map +1 -1
  67. package/dist/idl_codegen/accounts/Reserve.d.ts +1 -0
  68. package/dist/idl_codegen/accounts/Reserve.d.ts.map +1 -0
  69. package/dist/idl_codegen/accounts/Reserve.js +60 -49
  70. package/dist/idl_codegen/accounts/Reserve.js.map +1 -1
  71. package/dist/idl_codegen/accounts/ShortUrl.d.ts +1 -0
  72. package/dist/idl_codegen/accounts/ShortUrl.d.ts.map +1 -0
  73. package/dist/idl_codegen/accounts/ShortUrl.js +22 -33
  74. package/dist/idl_codegen/accounts/ShortUrl.js.map +1 -1
  75. package/dist/idl_codegen/accounts/UserMetadata.d.ts +1 -0
  76. package/dist/idl_codegen/accounts/UserMetadata.d.ts.map +1 -0
  77. package/dist/idl_codegen/accounts/UserMetadata.js +34 -37
  78. package/dist/idl_codegen/accounts/UserMetadata.js.map +1 -1
  79. package/dist/idl_codegen/accounts/UserState.d.ts +1 -0
  80. package/dist/idl_codegen/accounts/UserState.d.ts.map +1 -0
  81. package/dist/idl_codegen/accounts/UserState.js +77 -48
  82. package/dist/idl_codegen/accounts/UserState.js.map +1 -1
  83. package/dist/idl_codegen/accounts/index.d.ts +1 -0
  84. package/dist/idl_codegen/accounts/index.d.ts.map +1 -0
  85. package/dist/idl_codegen/accounts/index.js.map +1 -1
  86. package/dist/idl_codegen/errors/anchor.d.ts +1 -0
  87. package/dist/idl_codegen/errors/anchor.d.ts.map +1 -0
  88. package/dist/idl_codegen/errors/anchor.js +270 -216
  89. package/dist/idl_codegen/errors/anchor.js.map +1 -1
  90. package/dist/idl_codegen/errors/custom.d.ts +1 -0
  91. package/dist/idl_codegen/errors/custom.d.ts.map +1 -0
  92. package/dist/idl_codegen/errors/custom.js +560 -448
  93. package/dist/idl_codegen/errors/custom.js.map +1 -1
  94. package/dist/idl_codegen/errors/index.d.ts +1 -0
  95. package/dist/idl_codegen/errors/index.d.ts.map +1 -0
  96. package/dist/idl_codegen/errors/index.js.map +1 -1
  97. package/dist/idl_codegen/instructions/borrowObligationLiquidity.d.ts +1 -0
  98. package/dist/idl_codegen/instructions/borrowObligationLiquidity.d.ts.map +1 -0
  99. package/dist/idl_codegen/instructions/borrowObligationLiquidity.js.map +1 -1
  100. package/dist/idl_codegen/instructions/deleteReferrerStateAndShortUrl.d.ts +1 -0
  101. package/dist/idl_codegen/instructions/deleteReferrerStateAndShortUrl.d.ts.map +1 -0
  102. package/dist/idl_codegen/instructions/deleteReferrerStateAndShortUrl.js.map +1 -1
  103. package/dist/idl_codegen/instructions/depositObligationCollateral.d.ts +1 -0
  104. package/dist/idl_codegen/instructions/depositObligationCollateral.d.ts.map +1 -0
  105. package/dist/idl_codegen/instructions/depositObligationCollateral.js.map +1 -1
  106. package/dist/idl_codegen/instructions/depositReserveLiquidity.d.ts +1 -0
  107. package/dist/idl_codegen/instructions/depositReserveLiquidity.d.ts.map +1 -0
  108. package/dist/idl_codegen/instructions/depositReserveLiquidity.js.map +1 -1
  109. package/dist/idl_codegen/instructions/depositReserveLiquidityAndObligationCollateral.d.ts +1 -0
  110. package/dist/idl_codegen/instructions/depositReserveLiquidityAndObligationCollateral.d.ts.map +1 -0
  111. package/dist/idl_codegen/instructions/depositReserveLiquidityAndObligationCollateral.js.map +1 -1
  112. package/dist/idl_codegen/instructions/flashBorrowReserveLiquidity.d.ts +1 -0
  113. package/dist/idl_codegen/instructions/flashBorrowReserveLiquidity.d.ts.map +1 -0
  114. package/dist/idl_codegen/instructions/flashBorrowReserveLiquidity.js.map +1 -1
  115. package/dist/idl_codegen/instructions/flashRepayReserveLiquidity.d.ts +1 -0
  116. package/dist/idl_codegen/instructions/flashRepayReserveLiquidity.d.ts.map +1 -0
  117. package/dist/idl_codegen/instructions/flashRepayReserveLiquidity.js.map +1 -1
  118. package/dist/idl_codegen/instructions/idlMissingTypes.d.ts +1 -0
  119. package/dist/idl_codegen/instructions/idlMissingTypes.d.ts.map +1 -0
  120. package/dist/idl_codegen/instructions/idlMissingTypes.js.map +1 -1
  121. package/dist/idl_codegen/instructions/index.d.ts +1 -0
  122. package/dist/idl_codegen/instructions/index.d.ts.map +1 -0
  123. package/dist/idl_codegen/instructions/index.js.map +1 -1
  124. package/dist/idl_codegen/instructions/initFarmsForReserve.d.ts +1 -0
  125. package/dist/idl_codegen/instructions/initFarmsForReserve.d.ts.map +1 -0
  126. package/dist/idl_codegen/instructions/initFarmsForReserve.js.map +1 -1
  127. package/dist/idl_codegen/instructions/initLendingMarket.d.ts +1 -0
  128. package/dist/idl_codegen/instructions/initLendingMarket.d.ts.map +1 -0
  129. package/dist/idl_codegen/instructions/initLendingMarket.js.map +1 -1
  130. package/dist/idl_codegen/instructions/initObligation.d.ts +1 -0
  131. package/dist/idl_codegen/instructions/initObligation.d.ts.map +1 -0
  132. package/dist/idl_codegen/instructions/initObligation.js.map +1 -1
  133. package/dist/idl_codegen/instructions/initObligationFarmsForReserve.d.ts +1 -0
  134. package/dist/idl_codegen/instructions/initObligationFarmsForReserve.d.ts.map +1 -0
  135. package/dist/idl_codegen/instructions/initObligationFarmsForReserve.js.map +1 -1
  136. package/dist/idl_codegen/instructions/initReferrerStateAndShortUrl.d.ts +1 -0
  137. package/dist/idl_codegen/instructions/initReferrerStateAndShortUrl.d.ts.map +1 -0
  138. package/dist/idl_codegen/instructions/initReferrerStateAndShortUrl.js.map +1 -1
  139. package/dist/idl_codegen/instructions/initReferrerTokenState.d.ts +1 -0
  140. package/dist/idl_codegen/instructions/initReferrerTokenState.d.ts.map +1 -0
  141. package/dist/idl_codegen/instructions/initReferrerTokenState.js.map +1 -1
  142. package/dist/idl_codegen/instructions/initReserve.d.ts +1 -0
  143. package/dist/idl_codegen/instructions/initReserve.d.ts.map +1 -0
  144. package/dist/idl_codegen/instructions/initReserve.js.map +1 -1
  145. package/dist/idl_codegen/instructions/initUserMetadata.d.ts +1 -0
  146. package/dist/idl_codegen/instructions/initUserMetadata.d.ts.map +1 -0
  147. package/dist/idl_codegen/instructions/initUserMetadata.js.map +1 -1
  148. package/dist/idl_codegen/instructions/liquidateObligationAndRedeemReserveCollateral.d.ts +1 -0
  149. package/dist/idl_codegen/instructions/liquidateObligationAndRedeemReserveCollateral.d.ts.map +1 -0
  150. package/dist/idl_codegen/instructions/liquidateObligationAndRedeemReserveCollateral.js.map +1 -1
  151. package/dist/idl_codegen/instructions/redeemFees.d.ts +1 -0
  152. package/dist/idl_codegen/instructions/redeemFees.d.ts.map +1 -0
  153. package/dist/idl_codegen/instructions/redeemFees.js.map +1 -1
  154. package/dist/idl_codegen/instructions/redeemReserveCollateral.d.ts +1 -0
  155. package/dist/idl_codegen/instructions/redeemReserveCollateral.d.ts.map +1 -0
  156. package/dist/idl_codegen/instructions/redeemReserveCollateral.js.map +1 -1
  157. package/dist/idl_codegen/instructions/refreshObligation.d.ts +1 -0
  158. package/dist/idl_codegen/instructions/refreshObligation.d.ts.map +1 -0
  159. package/dist/idl_codegen/instructions/refreshObligation.js.map +1 -1
  160. package/dist/idl_codegen/instructions/refreshObligationFarmsForReserve.d.ts +1 -0
  161. package/dist/idl_codegen/instructions/refreshObligationFarmsForReserve.d.ts.map +1 -0
  162. package/dist/idl_codegen/instructions/refreshObligationFarmsForReserve.js.map +1 -1
  163. package/dist/idl_codegen/instructions/refreshReserve.d.ts +1 -0
  164. package/dist/idl_codegen/instructions/refreshReserve.d.ts.map +1 -0
  165. package/dist/idl_codegen/instructions/refreshReserve.js.map +1 -1
  166. package/dist/idl_codegen/instructions/refreshReservesBatch.d.ts +1 -0
  167. package/dist/idl_codegen/instructions/refreshReservesBatch.d.ts.map +1 -0
  168. package/dist/idl_codegen/instructions/refreshReservesBatch.js.map +1 -1
  169. package/dist/idl_codegen/instructions/repayObligationLiquidity.d.ts +1 -0
  170. package/dist/idl_codegen/instructions/repayObligationLiquidity.d.ts.map +1 -0
  171. package/dist/idl_codegen/instructions/repayObligationLiquidity.js.map +1 -1
  172. package/dist/idl_codegen/instructions/requestElevationGroup.d.ts +1 -0
  173. package/dist/idl_codegen/instructions/requestElevationGroup.d.ts.map +1 -0
  174. package/dist/idl_codegen/instructions/requestElevationGroup.js.map +1 -1
  175. package/dist/idl_codegen/instructions/socializeLoss.d.ts +1 -0
  176. package/dist/idl_codegen/instructions/socializeLoss.d.ts.map +1 -0
  177. package/dist/idl_codegen/instructions/socializeLoss.js.map +1 -1
  178. package/dist/idl_codegen/instructions/updateEntireReserveConfig.d.ts +1 -0
  179. package/dist/idl_codegen/instructions/updateEntireReserveConfig.d.ts.map +1 -0
  180. package/dist/idl_codegen/instructions/updateEntireReserveConfig.js.map +1 -1
  181. package/dist/idl_codegen/instructions/updateLendingMarket.d.ts +1 -0
  182. package/dist/idl_codegen/instructions/updateLendingMarket.d.ts.map +1 -0
  183. package/dist/idl_codegen/instructions/updateLendingMarket.js.map +1 -1
  184. package/dist/idl_codegen/instructions/updateLendingMarketOwner.d.ts +1 -0
  185. package/dist/idl_codegen/instructions/updateLendingMarketOwner.d.ts.map +1 -0
  186. package/dist/idl_codegen/instructions/updateLendingMarketOwner.js.map +1 -1
  187. package/dist/idl_codegen/instructions/updateReserveConfig.d.ts +1 -0
  188. package/dist/idl_codegen/instructions/updateReserveConfig.d.ts.map +1 -0
  189. package/dist/idl_codegen/instructions/updateReserveConfig.js.map +1 -1
  190. package/dist/idl_codegen/instructions/updateSingleReserveConfig.d.ts +1 -0
  191. package/dist/idl_codegen/instructions/updateSingleReserveConfig.d.ts.map +1 -0
  192. package/dist/idl_codegen/instructions/updateSingleReserveConfig.js.map +1 -1
  193. package/dist/idl_codegen/instructions/withdrawObligationCollateral.d.ts +1 -0
  194. package/dist/idl_codegen/instructions/withdrawObligationCollateral.d.ts.map +1 -0
  195. package/dist/idl_codegen/instructions/withdrawObligationCollateral.js.map +1 -1
  196. package/dist/idl_codegen/instructions/withdrawObligationCollateralAndRedeemReserveCollateral.d.ts +1 -0
  197. package/dist/idl_codegen/instructions/withdrawObligationCollateralAndRedeemReserveCollateral.d.ts.map +1 -0
  198. package/dist/idl_codegen/instructions/withdrawObligationCollateralAndRedeemReserveCollateral.js.map +1 -1
  199. package/dist/idl_codegen/instructions/withdrawProtocolFee.d.ts +1 -0
  200. package/dist/idl_codegen/instructions/withdrawProtocolFee.d.ts.map +1 -0
  201. package/dist/idl_codegen/instructions/withdrawProtocolFee.js.map +1 -1
  202. package/dist/idl_codegen/instructions/withdrawReferrerFees.d.ts +1 -0
  203. package/dist/idl_codegen/instructions/withdrawReferrerFees.d.ts.map +1 -0
  204. package/dist/idl_codegen/instructions/withdrawReferrerFees.js.map +1 -1
  205. package/dist/idl_codegen/programId.d.ts +1 -0
  206. package/dist/idl_codegen/programId.d.ts.map +1 -0
  207. package/dist/idl_codegen/programId.js.map +1 -1
  208. package/dist/idl_codegen/types/AssetTier.d.ts +1 -0
  209. package/dist/idl_codegen/types/AssetTier.d.ts.map +1 -0
  210. package/dist/idl_codegen/types/AssetTier.js +12 -18
  211. package/dist/idl_codegen/types/AssetTier.js.map +1 -1
  212. package/dist/idl_codegen/types/BigFractionBytes.d.ts +1 -0
  213. package/dist/idl_codegen/types/BigFractionBytes.d.ts.map +1 -0
  214. package/dist/idl_codegen/types/BigFractionBytes.js +2 -0
  215. package/dist/idl_codegen/types/BigFractionBytes.js.map +1 -1
  216. package/dist/idl_codegen/types/BorrowRateCurve.d.ts +1 -0
  217. package/dist/idl_codegen/types/BorrowRateCurve.d.ts.map +1 -0
  218. package/dist/idl_codegen/types/BorrowRateCurve.js +2 -1
  219. package/dist/idl_codegen/types/BorrowRateCurve.js.map +1 -1
  220. package/dist/idl_codegen/types/CurvePoint.d.ts +1 -0
  221. package/dist/idl_codegen/types/CurvePoint.d.ts.map +1 -0
  222. package/dist/idl_codegen/types/CurvePoint.js +2 -0
  223. package/dist/idl_codegen/types/CurvePoint.js.map +1 -1
  224. package/dist/idl_codegen/types/ElevationGroup.d.ts +1 -0
  225. package/dist/idl_codegen/types/ElevationGroup.d.ts.map +1 -0
  226. package/dist/idl_codegen/types/ElevationGroup.js +10 -0
  227. package/dist/idl_codegen/types/ElevationGroup.js.map +1 -1
  228. package/dist/idl_codegen/types/FeeCalculation.d.ts +1 -0
  229. package/dist/idl_codegen/types/FeeCalculation.d.ts.map +1 -0
  230. package/dist/idl_codegen/types/FeeCalculation.js +8 -12
  231. package/dist/idl_codegen/types/FeeCalculation.js.map +1 -1
  232. package/dist/idl_codegen/types/InitObligationArgs.d.ts +1 -0
  233. package/dist/idl_codegen/types/InitObligationArgs.d.ts.map +1 -0
  234. package/dist/idl_codegen/types/InitObligationArgs.js +2 -0
  235. package/dist/idl_codegen/types/InitObligationArgs.js.map +1 -1
  236. package/dist/idl_codegen/types/LastUpdate.d.ts +1 -0
  237. package/dist/idl_codegen/types/LastUpdate.d.ts.map +1 -0
  238. package/dist/idl_codegen/types/LastUpdate.js +7 -0
  239. package/dist/idl_codegen/types/LastUpdate.js.map +1 -1
  240. package/dist/idl_codegen/types/ObligationCollateral.d.ts +1 -0
  241. package/dist/idl_codegen/types/ObligationCollateral.d.ts.map +1 -0
  242. package/dist/idl_codegen/types/ObligationCollateral.js +14 -0
  243. package/dist/idl_codegen/types/ObligationCollateral.js.map +1 -1
  244. package/dist/idl_codegen/types/ObligationLiquidity.d.ts +1 -0
  245. package/dist/idl_codegen/types/ObligationLiquidity.d.ts.map +1 -0
  246. package/dist/idl_codegen/types/ObligationLiquidity.js +17 -1
  247. package/dist/idl_codegen/types/ObligationLiquidity.js.map +1 -1
  248. package/dist/idl_codegen/types/PriceHeuristic.d.ts +1 -0
  249. package/dist/idl_codegen/types/PriceHeuristic.d.ts.map +1 -0
  250. package/dist/idl_codegen/types/PriceHeuristic.js +6 -0
  251. package/dist/idl_codegen/types/PriceHeuristic.js.map +1 -1
  252. package/dist/idl_codegen/types/PythConfiguration.d.ts +1 -0
  253. package/dist/idl_codegen/types/PythConfiguration.d.ts.map +1 -0
  254. package/dist/idl_codegen/types/PythConfiguration.js +2 -0
  255. package/dist/idl_codegen/types/PythConfiguration.js.map +1 -1
  256. package/dist/idl_codegen/types/ReserveCollateral.d.ts +1 -0
  257. package/dist/idl_codegen/types/ReserveCollateral.d.ts.map +1 -0
  258. package/dist/idl_codegen/types/ReserveCollateral.js +8 -0
  259. package/dist/idl_codegen/types/ReserveCollateral.js.map +1 -1
  260. package/dist/idl_codegen/types/ReserveConfig.d.ts +1 -0
  261. package/dist/idl_codegen/types/ReserveConfig.d.ts.map +1 -0
  262. package/dist/idl_codegen/types/ReserveConfig.js +78 -5
  263. package/dist/idl_codegen/types/ReserveConfig.js.map +1 -1
  264. package/dist/idl_codegen/types/ReserveFarmKind.d.ts +1 -0
  265. package/dist/idl_codegen/types/ReserveFarmKind.d.ts.map +1 -0
  266. package/dist/idl_codegen/types/ReserveFarmKind.js +8 -12
  267. package/dist/idl_codegen/types/ReserveFarmKind.js.map +1 -1
  268. package/dist/idl_codegen/types/ReserveFees.d.ts +1 -0
  269. package/dist/idl_codegen/types/ReserveFees.d.ts.map +1 -0
  270. package/dist/idl_codegen/types/ReserveFees.js +16 -0
  271. package/dist/idl_codegen/types/ReserveFees.js.map +1 -1
  272. package/dist/idl_codegen/types/ReserveLiquidity.d.ts +1 -0
  273. package/dist/idl_codegen/types/ReserveLiquidity.d.ts.map +1 -0
  274. package/dist/idl_codegen/types/ReserveLiquidity.js +43 -1
  275. package/dist/idl_codegen/types/ReserveLiquidity.js.map +1 -1
  276. package/dist/idl_codegen/types/ReserveStatus.d.ts +1 -0
  277. package/dist/idl_codegen/types/ReserveStatus.d.ts.map +1 -0
  278. package/dist/idl_codegen/types/ReserveStatus.js +12 -18
  279. package/dist/idl_codegen/types/ReserveStatus.js.map +1 -1
  280. package/dist/idl_codegen/types/ScopeConfiguration.d.ts +1 -0
  281. package/dist/idl_codegen/types/ScopeConfiguration.d.ts.map +1 -0
  282. package/dist/idl_codegen/types/ScopeConfiguration.js +6 -0
  283. package/dist/idl_codegen/types/ScopeConfiguration.js.map +1 -1
  284. package/dist/idl_codegen/types/SwitchboardConfiguration.d.ts +1 -0
  285. package/dist/idl_codegen/types/SwitchboardConfiguration.d.ts.map +1 -0
  286. package/dist/idl_codegen/types/SwitchboardConfiguration.js +3 -0
  287. package/dist/idl_codegen/types/SwitchboardConfiguration.js.map +1 -1
  288. package/dist/idl_codegen/types/TokenInfo.d.ts +1 -0
  289. package/dist/idl_codegen/types/TokenInfo.d.ts.map +1 -0
  290. package/dist/idl_codegen/types/TokenInfo.js +27 -4
  291. package/dist/idl_codegen/types/TokenInfo.js.map +1 -1
  292. package/dist/idl_codegen/types/UpdateConfigMode.d.ts +1 -0
  293. package/dist/idl_codegen/types/UpdateConfigMode.d.ts.map +1 -0
  294. package/dist/idl_codegen/types/UpdateConfigMode.js +188 -282
  295. package/dist/idl_codegen/types/UpdateConfigMode.js.map +1 -1
  296. package/dist/idl_codegen/types/UpdateLendingMarketConfigValue.d.ts +1 -0
  297. package/dist/idl_codegen/types/UpdateLendingMarketConfigValue.d.ts.map +1 -0
  298. package/dist/idl_codegen/types/UpdateLendingMarketConfigValue.js +41 -33
  299. package/dist/idl_codegen/types/UpdateLendingMarketConfigValue.js.map +1 -1
  300. package/dist/idl_codegen/types/UpdateLendingMarketMode.d.ts +1 -0
  301. package/dist/idl_codegen/types/UpdateLendingMarketMode.d.ts.map +1 -0
  302. package/dist/idl_codegen/types/UpdateLendingMarketMode.js +72 -108
  303. package/dist/idl_codegen/types/UpdateLendingMarketMode.js.map +1 -1
  304. package/dist/idl_codegen/types/WithdrawalCaps.d.ts +1 -0
  305. package/dist/idl_codegen/types/WithdrawalCaps.d.ts.map +1 -0
  306. package/dist/idl_codegen/types/WithdrawalCaps.js +4 -0
  307. package/dist/idl_codegen/types/WithdrawalCaps.js.map +1 -1
  308. package/dist/idl_codegen/types/index.d.ts +1 -0
  309. package/dist/idl_codegen/types/index.d.ts.map +1 -0
  310. package/dist/idl_codegen/types/index.js.map +1 -1
  311. package/dist/idl_codegen/zero_padding/ObligationZP.d.ts +1 -0
  312. package/dist/idl_codegen/zero_padding/ObligationZP.d.ts.map +1 -0
  313. package/dist/idl_codegen/zero_padding/ObligationZP.js +83 -54
  314. package/dist/idl_codegen/zero_padding/ObligationZP.js.map +1 -1
  315. package/dist/idl_codegen/zero_padding/index.d.ts +1 -0
  316. package/dist/idl_codegen/zero_padding/index.d.ts.map +1 -0
  317. package/dist/idl_codegen/zero_padding/index.js.map +1 -1
  318. package/dist/idl_codegen_jupiter_perps/accounts/Pool.d.ts +1 -0
  319. package/dist/idl_codegen_jupiter_perps/accounts/Pool.d.ts.map +1 -0
  320. package/dist/idl_codegen_jupiter_perps/accounts/Pool.js +39 -42
  321. package/dist/idl_codegen_jupiter_perps/accounts/Pool.js.map +1 -1
  322. package/dist/idl_codegen_jupiter_perps/accounts/index.d.ts +1 -0
  323. package/dist/idl_codegen_jupiter_perps/accounts/index.d.ts.map +1 -0
  324. package/dist/idl_codegen_jupiter_perps/accounts/index.js.map +1 -1
  325. package/dist/idl_codegen_jupiter_perps/programId.d.ts +1 -0
  326. package/dist/idl_codegen_jupiter_perps/programId.d.ts.map +1 -0
  327. package/dist/idl_codegen_jupiter_perps/programId.js.map +1 -1
  328. package/dist/idl_codegen_jupiter_perps/types/Fees.d.ts +1 -0
  329. package/dist/idl_codegen_jupiter_perps/types/Fees.d.ts.map +1 -0
  330. package/dist/idl_codegen_jupiter_perps/types/Fees.js +9 -0
  331. package/dist/idl_codegen_jupiter_perps/types/Fees.js.map +1 -1
  332. package/dist/idl_codegen_jupiter_perps/types/Limit.d.ts +1 -0
  333. package/dist/idl_codegen_jupiter_perps/types/Limit.d.ts.map +1 -0
  334. package/dist/idl_codegen_jupiter_perps/types/Limit.js +3 -0
  335. package/dist/idl_codegen_jupiter_perps/types/Limit.js.map +1 -1
  336. package/dist/idl_codegen_jupiter_perps/types/PoolApr.d.ts +1 -0
  337. package/dist/idl_codegen_jupiter_perps/types/PoolApr.d.ts.map +1 -0
  338. package/dist/idl_codegen_jupiter_perps/types/PoolApr.js +3 -0
  339. package/dist/idl_codegen_jupiter_perps/types/PoolApr.js.map +1 -1
  340. package/dist/idl_codegen_jupiter_perps/types/index.d.ts +1 -0
  341. package/dist/idl_codegen_jupiter_perps/types/index.d.ts.map +1 -0
  342. package/dist/idl_codegen_jupiter_perps/types/index.js.map +1 -1
  343. package/dist/idl_codegen_kamino_vault/accounts/Reserve.d.ts +1 -0
  344. package/dist/idl_codegen_kamino_vault/accounts/Reserve.d.ts.map +1 -0
  345. package/dist/idl_codegen_kamino_vault/accounts/Reserve.js +58 -47
  346. package/dist/idl_codegen_kamino_vault/accounts/Reserve.js.map +1 -1
  347. package/dist/idl_codegen_kamino_vault/accounts/VaultState.d.ts +1 -0
  348. package/dist/idl_codegen_kamino_vault/accounts/VaultState.d.ts.map +1 -0
  349. package/dist/idl_codegen_kamino_vault/accounts/VaultState.js +51 -47
  350. package/dist/idl_codegen_kamino_vault/accounts/VaultState.js.map +1 -1
  351. package/dist/idl_codegen_kamino_vault/accounts/index.d.ts +1 -0
  352. package/dist/idl_codegen_kamino_vault/accounts/index.d.ts.map +1 -0
  353. package/dist/idl_codegen_kamino_vault/accounts/index.js.map +1 -1
  354. package/dist/idl_codegen_kamino_vault/errors/anchor.d.ts +1 -0
  355. package/dist/idl_codegen_kamino_vault/errors/anchor.d.ts.map +1 -0
  356. package/dist/idl_codegen_kamino_vault/errors/anchor.js +270 -216
  357. package/dist/idl_codegen_kamino_vault/errors/anchor.js.map +1 -1
  358. package/dist/idl_codegen_kamino_vault/errors/custom.d.ts +1 -0
  359. package/dist/idl_codegen_kamino_vault/errors/custom.d.ts.map +1 -0
  360. package/dist/idl_codegen_kamino_vault/errors/custom.js +120 -96
  361. package/dist/idl_codegen_kamino_vault/errors/custom.js.map +1 -1
  362. package/dist/idl_codegen_kamino_vault/errors/index.d.ts +1 -0
  363. package/dist/idl_codegen_kamino_vault/errors/index.d.ts.map +1 -0
  364. package/dist/idl_codegen_kamino_vault/errors/index.js.map +1 -1
  365. package/dist/idl_codegen_kamino_vault/instructions/deposit.d.ts +1 -0
  366. package/dist/idl_codegen_kamino_vault/instructions/deposit.d.ts.map +1 -0
  367. package/dist/idl_codegen_kamino_vault/instructions/deposit.js.map +1 -1
  368. package/dist/idl_codegen_kamino_vault/instructions/index.d.ts +1 -0
  369. package/dist/idl_codegen_kamino_vault/instructions/index.d.ts.map +1 -0
  370. package/dist/idl_codegen_kamino_vault/instructions/index.js.map +1 -1
  371. package/dist/idl_codegen_kamino_vault/instructions/initVault.d.ts +1 -0
  372. package/dist/idl_codegen_kamino_vault/instructions/initVault.d.ts.map +1 -0
  373. package/dist/idl_codegen_kamino_vault/instructions/initVault.js.map +1 -1
  374. package/dist/idl_codegen_kamino_vault/instructions/invest.d.ts +1 -0
  375. package/dist/idl_codegen_kamino_vault/instructions/invest.d.ts.map +1 -0
  376. package/dist/idl_codegen_kamino_vault/instructions/invest.js.map +1 -1
  377. package/dist/idl_codegen_kamino_vault/instructions/updateReserveAllocation.d.ts +1 -0
  378. package/dist/idl_codegen_kamino_vault/instructions/updateReserveAllocation.d.ts.map +1 -0
  379. package/dist/idl_codegen_kamino_vault/instructions/updateReserveAllocation.js.map +1 -1
  380. package/dist/idl_codegen_kamino_vault/instructions/withdraw.d.ts +1 -0
  381. package/dist/idl_codegen_kamino_vault/instructions/withdraw.d.ts.map +1 -0
  382. package/dist/idl_codegen_kamino_vault/instructions/withdraw.js.map +1 -1
  383. package/dist/idl_codegen_kamino_vault/programId.d.ts +1 -0
  384. package/dist/idl_codegen_kamino_vault/programId.d.ts.map +1 -0
  385. package/dist/idl_codegen_kamino_vault/programId.js.map +1 -1
  386. package/dist/idl_codegen_kamino_vault/types/BigFractionBytes.d.ts +1 -0
  387. package/dist/idl_codegen_kamino_vault/types/BigFractionBytes.d.ts.map +1 -0
  388. package/dist/idl_codegen_kamino_vault/types/BigFractionBytes.js +2 -0
  389. package/dist/idl_codegen_kamino_vault/types/BigFractionBytes.js.map +1 -1
  390. package/dist/idl_codegen_kamino_vault/types/BorrowRateCurve.d.ts +1 -0
  391. package/dist/idl_codegen_kamino_vault/types/BorrowRateCurve.d.ts.map +1 -0
  392. package/dist/idl_codegen_kamino_vault/types/BorrowRateCurve.js +2 -1
  393. package/dist/idl_codegen_kamino_vault/types/BorrowRateCurve.js.map +1 -1
  394. package/dist/idl_codegen_kamino_vault/types/CurvePoint.d.ts +1 -0
  395. package/dist/idl_codegen_kamino_vault/types/CurvePoint.d.ts.map +1 -0
  396. package/dist/idl_codegen_kamino_vault/types/CurvePoint.js +2 -0
  397. package/dist/idl_codegen_kamino_vault/types/CurvePoint.js.map +1 -1
  398. package/dist/idl_codegen_kamino_vault/types/LastUpdate.d.ts +1 -0
  399. package/dist/idl_codegen_kamino_vault/types/LastUpdate.d.ts.map +1 -0
  400. package/dist/idl_codegen_kamino_vault/types/LastUpdate.js +7 -0
  401. package/dist/idl_codegen_kamino_vault/types/LastUpdate.js.map +1 -1
  402. package/dist/idl_codegen_kamino_vault/types/PriceHeuristic.d.ts +1 -0
  403. package/dist/idl_codegen_kamino_vault/types/PriceHeuristic.d.ts.map +1 -0
  404. package/dist/idl_codegen_kamino_vault/types/PriceHeuristic.js +6 -0
  405. package/dist/idl_codegen_kamino_vault/types/PriceHeuristic.js.map +1 -1
  406. package/dist/idl_codegen_kamino_vault/types/PythConfiguration.d.ts +1 -0
  407. package/dist/idl_codegen_kamino_vault/types/PythConfiguration.d.ts.map +1 -0
  408. package/dist/idl_codegen_kamino_vault/types/PythConfiguration.js +2 -0
  409. package/dist/idl_codegen_kamino_vault/types/PythConfiguration.js.map +1 -1
  410. package/dist/idl_codegen_kamino_vault/types/ReserveCollateral.d.ts +1 -0
  411. package/dist/idl_codegen_kamino_vault/types/ReserveCollateral.d.ts.map +1 -0
  412. package/dist/idl_codegen_kamino_vault/types/ReserveCollateral.js +8 -0
  413. package/dist/idl_codegen_kamino_vault/types/ReserveCollateral.js.map +1 -1
  414. package/dist/idl_codegen_kamino_vault/types/ReserveConfig.d.ts +1 -0
  415. package/dist/idl_codegen_kamino_vault/types/ReserveConfig.d.ts.map +1 -0
  416. package/dist/idl_codegen_kamino_vault/types/ReserveConfig.js +77 -5
  417. package/dist/idl_codegen_kamino_vault/types/ReserveConfig.js.map +1 -1
  418. package/dist/idl_codegen_kamino_vault/types/ReserveFees.d.ts +1 -0
  419. package/dist/idl_codegen_kamino_vault/types/ReserveFees.d.ts.map +1 -0
  420. package/dist/idl_codegen_kamino_vault/types/ReserveFees.js +16 -0
  421. package/dist/idl_codegen_kamino_vault/types/ReserveFees.js.map +1 -1
  422. package/dist/idl_codegen_kamino_vault/types/ReserveLiquidity.d.ts +1 -0
  423. package/dist/idl_codegen_kamino_vault/types/ReserveLiquidity.d.ts.map +1 -0
  424. package/dist/idl_codegen_kamino_vault/types/ReserveLiquidity.js +41 -1
  425. package/dist/idl_codegen_kamino_vault/types/ReserveLiquidity.js.map +1 -1
  426. package/dist/idl_codegen_kamino_vault/types/ScopeConfiguration.d.ts +1 -0
  427. package/dist/idl_codegen_kamino_vault/types/ScopeConfiguration.d.ts.map +1 -0
  428. package/dist/idl_codegen_kamino_vault/types/ScopeConfiguration.js +6 -0
  429. package/dist/idl_codegen_kamino_vault/types/ScopeConfiguration.js.map +1 -1
  430. package/dist/idl_codegen_kamino_vault/types/SwitchboardConfiguration.d.ts +1 -0
  431. package/dist/idl_codegen_kamino_vault/types/SwitchboardConfiguration.d.ts.map +1 -0
  432. package/dist/idl_codegen_kamino_vault/types/SwitchboardConfiguration.js +3 -0
  433. package/dist/idl_codegen_kamino_vault/types/SwitchboardConfiguration.js.map +1 -1
  434. package/dist/idl_codegen_kamino_vault/types/TokenInfo.d.ts +1 -0
  435. package/dist/idl_codegen_kamino_vault/types/TokenInfo.d.ts.map +1 -0
  436. package/dist/idl_codegen_kamino_vault/types/TokenInfo.js +27 -4
  437. package/dist/idl_codegen_kamino_vault/types/TokenInfo.js.map +1 -1
  438. package/dist/idl_codegen_kamino_vault/types/VaultAllocation.d.ts +1 -0
  439. package/dist/idl_codegen_kamino_vault/types/VaultAllocation.d.ts.map +1 -0
  440. package/dist/idl_codegen_kamino_vault/types/VaultAllocation.js +8 -0
  441. package/dist/idl_codegen_kamino_vault/types/VaultAllocation.js.map +1 -1
  442. package/dist/idl_codegen_kamino_vault/types/WithdrawalCaps.d.ts +1 -0
  443. package/dist/idl_codegen_kamino_vault/types/WithdrawalCaps.d.ts.map +1 -0
  444. package/dist/idl_codegen_kamino_vault/types/WithdrawalCaps.js +4 -0
  445. package/dist/idl_codegen_kamino_vault/types/WithdrawalCaps.js.map +1 -1
  446. package/dist/idl_codegen_kamino_vault/types/index.d.ts +1 -0
  447. package/dist/idl_codegen_kamino_vault/types/index.d.ts.map +1 -0
  448. package/dist/idl_codegen_kamino_vault/types/index.js.map +1 -1
  449. package/dist/index.d.ts +1 -0
  450. package/dist/index.d.ts.map +1 -0
  451. package/dist/index.js.map +1 -1
  452. package/dist/lending_operations/index.d.ts +1 -0
  453. package/dist/lending_operations/index.d.ts.map +1 -0
  454. package/dist/lending_operations/index.js.map +1 -1
  455. package/dist/lending_operations/repay_with_collateral_calcs.d.ts +1 -0
  456. package/dist/lending_operations/repay_with_collateral_calcs.d.ts.map +1 -0
  457. package/dist/lending_operations/repay_with_collateral_calcs.js +1 -1
  458. package/dist/lending_operations/repay_with_collateral_calcs.js.map +1 -1
  459. package/dist/lending_operations/repay_with_collateral_operations.d.ts +1 -0
  460. package/dist/lending_operations/repay_with_collateral_operations.d.ts.map +1 -0
  461. package/dist/lending_operations/repay_with_collateral_operations.js +15 -24
  462. package/dist/lending_operations/repay_with_collateral_operations.js.map +1 -1
  463. package/dist/leverage/calcs.d.ts +1 -0
  464. package/dist/leverage/calcs.d.ts.map +1 -0
  465. package/dist/leverage/calcs.js +119 -132
  466. package/dist/leverage/calcs.js.map +1 -1
  467. package/dist/leverage/index.d.ts +1 -0
  468. package/dist/leverage/index.d.ts.map +1 -0
  469. package/dist/leverage/index.js.map +1 -1
  470. package/dist/leverage/instructions.d.ts +1 -0
  471. package/dist/leverage/instructions.d.ts.map +1 -0
  472. package/dist/leverage/instructions.js.map +1 -1
  473. package/dist/leverage/operations.d.ts +1 -0
  474. package/dist/leverage/operations.d.ts.map +1 -0
  475. package/dist/leverage/operations.js +75 -84
  476. package/dist/leverage/operations.js.map +1 -1
  477. package/dist/leverage/utils.d.ts +1 -0
  478. package/dist/leverage/utils.d.ts.map +1 -0
  479. package/dist/leverage/utils.js +73 -88
  480. package/dist/leverage/utils.js.map +1 -1
  481. package/dist/lib.d.ts +1 -0
  482. package/dist/lib.d.ts.map +1 -0
  483. package/dist/lib.js.map +1 -1
  484. package/dist/referrals/index.d.ts +1 -0
  485. package/dist/referrals/index.d.ts.map +1 -0
  486. package/dist/referrals/index.js.map +1 -1
  487. package/dist/referrals/instructions.d.ts +1 -0
  488. package/dist/referrals/instructions.d.ts.map +1 -0
  489. package/dist/referrals/instructions.js +8 -17
  490. package/dist/referrals/instructions.js.map +1 -1
  491. package/dist/referrals/operations.d.ts +2 -1
  492. package/dist/referrals/operations.d.ts.map +1 -0
  493. package/dist/referrals/operations.js +119 -143
  494. package/dist/referrals/operations.js.map +1 -1
  495. package/dist/utils/ObligationType.d.ts +1 -0
  496. package/dist/utils/ObligationType.d.ts.map +1 -0
  497. package/dist/utils/ObligationType.js +16 -7
  498. package/dist/utils/ObligationType.js.map +1 -1
  499. package/dist/utils/api.d.ts +1 -0
  500. package/dist/utils/api.d.ts.map +1 -0
  501. package/dist/utils/api.js +10 -21
  502. package/dist/utils/api.js.map +1 -1
  503. package/dist/utils/ata.d.ts +1 -0
  504. package/dist/utils/ata.d.ts.map +1 -0
  505. package/dist/utils/ata.js +25 -38
  506. package/dist/utils/ata.js.map +1 -1
  507. package/dist/utils/constants.d.ts +1 -0
  508. package/dist/utils/constants.d.ts.map +1 -0
  509. package/dist/utils/constants.js +1 -1
  510. package/dist/utils/constants.js.map +1 -1
  511. package/dist/utils/idl.d.ts +1 -0
  512. package/dist/utils/idl.d.ts.map +1 -0
  513. package/dist/utils/idl.js.map +1 -1
  514. package/dist/utils/index.d.ts +1 -0
  515. package/dist/utils/index.d.ts.map +1 -0
  516. package/dist/utils/index.js.map +1 -1
  517. package/dist/utils/instruction.d.ts +1 -0
  518. package/dist/utils/instruction.d.ts.map +1 -0
  519. package/dist/utils/instruction.js +116 -143
  520. package/dist/utils/instruction.js.map +1 -1
  521. package/dist/utils/kamino.d.ts +1 -0
  522. package/dist/utils/kamino.d.ts.map +1 -0
  523. package/dist/utils/kamino.js +4 -15
  524. package/dist/utils/kamino.js.map +1 -1
  525. package/dist/utils/layout.d.ts +1 -0
  526. package/dist/utils/layout.d.ts.map +1 -0
  527. package/dist/utils/layout.js.map +1 -1
  528. package/dist/utils/lookupTable.d.ts +1 -0
  529. package/dist/utils/lookupTable.d.ts.map +1 -0
  530. package/dist/utils/lookupTable.js +14 -27
  531. package/dist/utils/lookupTable.js.map +1 -1
  532. package/dist/utils/managerTypes.d.ts +1 -0
  533. package/dist/utils/managerTypes.d.ts.map +1 -0
  534. package/dist/utils/managerTypes.js +31 -2
  535. package/dist/utils/managerTypes.js.map +1 -1
  536. package/dist/utils/oracle.d.ts +1 -0
  537. package/dist/utils/oracle.d.ts.map +1 -0
  538. package/dist/utils/oracle.js +70 -83
  539. package/dist/utils/oracle.js.map +1 -1
  540. package/dist/utils/pubkey.d.ts +1 -0
  541. package/dist/utils/pubkey.d.ts.map +1 -0
  542. package/dist/utils/pubkey.js +7 -9
  543. package/dist/utils/pubkey.js.map +1 -1
  544. package/dist/utils/rpc.d.ts +1 -0
  545. package/dist/utils/rpc.d.ts.map +1 -0
  546. package/dist/utils/rpc.js +48 -70
  547. package/dist/utils/rpc.js.map +1 -1
  548. package/dist/utils/seeds.d.ts +1 -0
  549. package/dist/utils/seeds.d.ts.map +1 -0
  550. package/dist/utils/seeds.js.map +1 -1
  551. package/dist/utils/sendTransactionsUtils.d.ts +1 -0
  552. package/dist/utils/sendTransactionsUtils.d.ts.map +1 -0
  553. package/dist/utils/sendTransactionsUtils.js +82 -82
  554. package/dist/utils/sendTransactionsUtils.js.map +1 -1
  555. package/dist/utils/slots.d.ts +1 -0
  556. package/dist/utils/slots.d.ts.map +1 -0
  557. package/dist/utils/slots.js.map +1 -1
  558. package/dist/utils/syncNative.d.ts +1 -0
  559. package/dist/utils/syncNative.d.ts.map +1 -0
  560. package/dist/utils/syncNative.js.map +1 -1
  561. package/dist/utils/userMetadata.d.ts +1 -0
  562. package/dist/utils/userMetadata.d.ts.map +1 -0
  563. package/dist/utils/userMetadata.js +40 -52
  564. package/dist/utils/userMetadata.js.map +1 -1
  565. package/package.json +9 -3
  566. package/src/classes/action.ts +2884 -0
  567. package/src/classes/curve.ts +29 -0
  568. package/src/classes/fraction.ts +65 -0
  569. package/src/classes/index.ts +10 -0
  570. package/src/classes/jupiterPerps.ts +14 -0
  571. package/src/classes/manager.ts +746 -0
  572. package/src/classes/market.ts +1459 -0
  573. package/src/classes/obligation.ts +1315 -0
  574. package/src/classes/reserve.ts +1980 -0
  575. package/src/classes/shared.ts +57 -0
  576. package/src/classes/utils.ts +192 -0
  577. package/src/classes/vault.ts +808 -0
  578. package/src/client.ts +446 -0
  579. package/src/client_kamino_manager.ts +791 -0
  580. package/src/global.d.ts +1 -0
  581. package/src/idl_codegen/accounts/LendingMarket.ts +364 -0
  582. package/src/idl_codegen/accounts/Obligation.ts +349 -0
  583. package/src/idl_codegen/accounts/ReferrerState.ts +97 -0
  584. package/src/idl_codegen/accounts/ReferrerTokenState.ts +145 -0
  585. package/src/idl_codegen/accounts/Reserve.ts +248 -0
  586. package/src/idl_codegen/accounts/ShortUrl.ts +97 -0
  587. package/src/idl_codegen/accounts/UserMetadata.ts +142 -0
  588. package/src/idl_codegen/accounts/UserState.ts +301 -0
  589. package/src/idl_codegen/accounts/index.ts +19 -0
  590. package/src/idl_codegen/errors/anchor.ts +773 -0
  591. package/src/idl_codegen/errors/custom.ts +1633 -0
  592. package/src/idl_codegen/errors/index.ts +62 -0
  593. package/src/idl_codegen/instructions/borrowObligationLiquidity.ts +82 -0
  594. package/src/idl_codegen/instructions/deleteReferrerStateAndShortUrl.ts +30 -0
  595. package/src/idl_codegen/instructions/depositObligationCollateral.ts +62 -0
  596. package/src/idl_codegen/instructions/depositReserveLiquidity.ts +90 -0
  597. package/src/idl_codegen/instructions/depositReserveLiquidityAndObligationCollateral.ts +98 -0
  598. package/src/idl_codegen/instructions/flashBorrowReserveLiquidity.ts +82 -0
  599. package/src/idl_codegen/instructions/flashRepayReserveLiquidity.ts +83 -0
  600. package/src/idl_codegen/instructions/idlMissingTypes.ts +62 -0
  601. package/src/idl_codegen/instructions/index.ts +138 -0
  602. package/src/idl_codegen/instructions/initFarmsForReserve.ts +62 -0
  603. package/src/idl_codegen/instructions/initLendingMarket.ts +50 -0
  604. package/src/idl_codegen/instructions/initObligation.ts +52 -0
  605. package/src/idl_codegen/instructions/initObligationFarmsForReserve.ts +60 -0
  606. package/src/idl_codegen/instructions/initReferrerStateAndShortUrl.ts +50 -0
  607. package/src/idl_codegen/instructions/initReferrerTokenState.ts +46 -0
  608. package/src/idl_codegen/instructions/initReserve.ts +74 -0
  609. package/src/idl_codegen/instructions/initUserMetadata.ts +50 -0
  610. package/src/idl_codegen/instructions/liquidateObligationAndRedeemReserveCollateral.ts +139 -0
  611. package/src/idl_codegen/instructions/redeemFees.ts +50 -0
  612. package/src/idl_codegen/instructions/redeemReserveCollateral.ts +94 -0
  613. package/src/idl_codegen/instructions/refreshObligation.ts +24 -0
  614. package/src/idl_codegen/instructions/refreshObligationFarmsForReserve.ts +62 -0
  615. package/src/idl_codegen/instructions/refreshReserve.ts +40 -0
  616. package/src/idl_codegen/instructions/refreshReservesBatch.ts +29 -0
  617. package/src/idl_codegen/instructions/repayObligationLiquidity.ts +64 -0
  618. package/src/idl_codegen/instructions/requestElevationGroup.ts +40 -0
  619. package/src/idl_codegen/instructions/socializeLoss.ts +48 -0
  620. package/src/idl_codegen/instructions/updateEntireReserveConfig.ts +45 -0
  621. package/src/idl_codegen/instructions/updateLendingMarket.ts +43 -0
  622. package/src/idl_codegen/instructions/updateLendingMarketOwner.ts +28 -0
  623. package/src/idl_codegen/instructions/updateReserveConfig.ts +52 -0
  624. package/src/idl_codegen/instructions/updateSingleReserveConfig.ts +48 -0
  625. package/src/idl_codegen/instructions/withdrawObligationCollateral.ts +68 -0
  626. package/src/idl_codegen/instructions/withdrawObligationCollateralAndRedeemReserveCollateral.ts +102 -0
  627. package/src/idl_codegen/instructions/withdrawProtocolFee.ts +62 -0
  628. package/src/idl_codegen/instructions/withdrawReferrerFees.ts +54 -0
  629. package/src/idl_codegen/programId.ts +13 -0
  630. package/src/idl_codegen/types/AssetTier.ts +118 -0
  631. package/src/idl_codegen/types/BigFractionBytes.ts +67 -0
  632. package/src/idl_codegen/types/BorrowRateCurve.ts +60 -0
  633. package/src/idl_codegen/types/CurvePoint.ts +64 -0
  634. package/src/idl_codegen/types/ElevationGroup.ts +133 -0
  635. package/src/idl_codegen/types/FeeCalculation.ts +90 -0
  636. package/src/idl_codegen/types/InitObligationArgs.ts +61 -0
  637. package/src/idl_codegen/types/LastUpdate.ts +95 -0
  638. package/src/idl_codegen/types/ObligationCollateral.ts +128 -0
  639. package/src/idl_codegen/types/ObligationLiquidity.ts +159 -0
  640. package/src/idl_codegen/types/PriceHeuristic.ts +81 -0
  641. package/src/idl_codegen/types/PythConfiguration.ts +56 -0
  642. package/src/idl_codegen/types/ReserveCollateral.ts +104 -0
  643. package/src/idl_codegen/types/ReserveConfig.ts +467 -0
  644. package/src/idl_codegen/types/ReserveFarmKind.ts +90 -0
  645. package/src/idl_codegen/types/ReserveFees.ts +122 -0
  646. package/src/idl_codegen/types/ReserveLiquidity.ts +286 -0
  647. package/src/idl_codegen/types/ReserveStatus.ts +120 -0
  648. package/src/idl_codegen/types/ScopeConfiguration.ts +85 -0
  649. package/src/idl_codegen/types/SwitchboardConfiguration.ts +67 -0
  650. package/src/idl_codegen/types/TokenInfo.ts +190 -0
  651. package/src/idl_codegen/types/UpdateConfigMode.ts +1440 -0
  652. package/src/idl_codegen/types/UpdateLendingMarketConfigValue.ts +376 -0
  653. package/src/idl_codegen/types/UpdateLendingMarketMode.ts +570 -0
  654. package/src/idl_codegen/types/WithdrawalCaps.ts +86 -0
  655. package/src/idl_codegen/types/index.ts +276 -0
  656. package/src/idl_codegen/zero_padding/ObligationZP.ts +186 -0
  657. package/src/idl_codegen/zero_padding/index.ts +1 -0
  658. package/src/idl_codegen_jupiter_perps/accounts/Pool.ts +155 -0
  659. package/src/idl_codegen_jupiter_perps/accounts/index.ts +2 -0
  660. package/src/idl_codegen_jupiter_perps/programId.ts +7 -0
  661. package/src/idl_codegen_jupiter_perps/types/Fees.ts +130 -0
  662. package/src/idl_codegen_jupiter_perps/types/Limit.ts +72 -0
  663. package/src/idl_codegen_jupiter_perps/types/PoolApr.ts +69 -0
  664. package/src/idl_codegen_jupiter_perps/types/index.ts +6 -0
  665. package/src/idl_codegen_kamino_vault/accounts/Reserve.ts +221 -0
  666. package/src/idl_codegen_kamino_vault/accounts/VaultState.ts +214 -0
  667. package/src/idl_codegen_kamino_vault/accounts/index.ts +4 -0
  668. package/src/idl_codegen_kamino_vault/errors/anchor.ts +764 -0
  669. package/src/idl_codegen_kamino_vault/errors/custom.ts +344 -0
  670. package/src/idl_codegen_kamino_vault/errors/index.ts +49 -0
  671. package/src/idl_codegen_kamino_vault/instructions/deposit.ts +54 -0
  672. package/src/idl_codegen_kamino_vault/instructions/index.ts +10 -0
  673. package/src/idl_codegen_kamino_vault/instructions/initVault.ts +35 -0
  674. package/src/idl_codegen_kamino_vault/instructions/invest.ts +60 -0
  675. package/src/idl_codegen_kamino_vault/instructions/updateReserveAllocation.ts +58 -0
  676. package/src/idl_codegen_kamino_vault/instructions/withdraw.ts +81 -0
  677. package/src/idl_codegen_kamino_vault/programId.ts +7 -0
  678. package/src/idl_codegen_kamino_vault/types/BigFractionBytes.ts +61 -0
  679. package/src/idl_codegen_kamino_vault/types/BorrowRateCurve.ts +55 -0
  680. package/src/idl_codegen_kamino_vault/types/CurvePoint.ts +61 -0
  681. package/src/idl_codegen_kamino_vault/types/LastUpdate.ts +90 -0
  682. package/src/idl_codegen_kamino_vault/types/PriceHeuristic.ts +78 -0
  683. package/src/idl_codegen_kamino_vault/types/PythConfiguration.ts +56 -0
  684. package/src/idl_codegen_kamino_vault/types/ReserveCollateral.ts +104 -0
  685. package/src/idl_codegen_kamino_vault/types/ReserveConfig.ts +426 -0
  686. package/src/idl_codegen_kamino_vault/types/ReserveFees.ts +118 -0
  687. package/src/idl_codegen_kamino_vault/types/ReserveLiquidity.ts +268 -0
  688. package/src/idl_codegen_kamino_vault/types/ScopeConfiguration.ts +85 -0
  689. package/src/idl_codegen_kamino_vault/types/SwitchboardConfiguration.ts +64 -0
  690. package/src/idl_codegen_kamino_vault/types/TokenInfo.ts +172 -0
  691. package/src/idl_codegen_kamino_vault/types/VaultAllocation.ts +115 -0
  692. package/src/idl_codegen_kamino_vault/types/WithdrawalCaps.ts +86 -0
  693. package/src/idl_codegen_kamino_vault/types/index.ts +30 -0
  694. package/src/index.ts +1 -0
  695. package/src/lending_operations/index.ts +2 -0
  696. package/src/lending_operations/repay_with_collateral_calcs.ts +71 -0
  697. package/src/lending_operations/repay_with_collateral_operations.ts +318 -0
  698. package/src/leverage/calcs.ts +465 -0
  699. package/src/leverage/index.ts +4 -0
  700. package/src/leverage/instructions.ts +144 -0
  701. package/src/leverage/operations.ts +1814 -0
  702. package/src/leverage/utils.ts +273 -0
  703. package/src/lib.ts +9 -0
  704. package/src/referrals/index.ts +2 -0
  705. package/src/referrals/instructions.ts +114 -0
  706. package/src/referrals/operations.ts +325 -0
  707. package/src/utils/ObligationType.ts +171 -0
  708. package/src/utils/api.ts +59 -0
  709. package/src/utils/ata.ts +195 -0
  710. package/src/utils/constants.ts +81 -0
  711. package/src/utils/idl.ts +4 -0
  712. package/src/utils/index.ts +16 -0
  713. package/src/utils/instruction.ts +258 -0
  714. package/src/utils/kamino.ts +12 -0
  715. package/src/utils/layout.ts +118 -0
  716. package/src/utils/lookupTable.ts +55 -0
  717. package/src/utils/managerTypes.ts +456 -0
  718. package/src/utils/oracle.ts +338 -0
  719. package/src/utils/pubkey.ts +261 -0
  720. package/src/utils/rpc.ts +108 -0
  721. package/src/utils/seeds.ts +183 -0
  722. package/src/utils/sendTransactionsUtils.ts +207 -0
  723. package/src/utils/slots.ts +28 -0
  724. package/src/utils/syncNative.ts +22 -0
  725. package/src/utils/userMetadata.ts +401 -0
@@ -1 +1 @@
1
- {"version":3,"file":"reserve.js","sourceRoot":"","sources":["../../src/classes/reserve.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable max-classes-per-file */\nimport {\n AccountInfo,\n Connection,\n PublicKey,\n SystemProgram,\n SYSVAR_RENT_PUBKEY,\n TransactionInstruction,\n} from '@solana/web3.js';\nimport Decimal from 'decimal.js';\nimport {\n INITIAL_COLLATERAL_RATE,\n lendingMarketAuthPda,\n MarketWithAddress,\n ONE_HUNDRED_PCT_IN_BPS,\n reservePdas,\n SLOTS_PER_DAY,\n SLOTS_PER_SECOND,\n SLOTS_PER_YEAR,\n TokenOracleData,\n U64_MAX,\n} from '../utils';\nimport { ReserveDataType, ReserveFarmInfo, ReserveRewardYield, ReserveStatus } from './shared';\nimport { Reserve, ReserveFields } from '../idl_codegen/accounts';\nimport { BorrowRateCurve, CurvePointFields, ReserveConfig, UpdateConfigMode } from '../idl_codegen/types';\nimport { calculateAPYFromAPR, getBorrowRate, lamportsToNumberDecimal, parseTokenSymbol, positiveOrZero } from './utils';\nimport { Fraction } from './fraction';\nimport BN from 'bn.js';\nimport { ActionType } from './action';\nimport { BorrowCapsAndCounters, ElevationGroupDescription, KaminoMarket } from './market';\nimport {\n initReserve,\n InitReserveAccounts,\n updateReserveConfig,\n UpdateReserveConfigAccounts,\n UpdateReserveConfigArgs,\n} from '../lib';\nimport * as anchor from '@coral-xyz/anchor';\nimport { TOKEN_PROGRAM_ID } from '@solana/spl-token';\nimport { UpdateBorrowRateCurve } from '../idl_codegen/types/UpdateConfigMode';\nimport { aprToApy, KaminoPrices } from '@kamino-finance/kliquidity-sdk';\nimport { FarmState, RewardInfo } from '@hubbleprotocol/farms-sdk';\n\nexport const DEFAULT_RECENT_SLOT_DURATION_MS = 450;\n\nexport class KaminoReserve {\n state: Reserve;\n address: PublicKey;\n symbol: string;\n\n tokenOraclePrice: TokenOracleData;\n stats: ReserveDataType;\n private farmData: ReserveFarmInfo = { fetched: false, farmStates: [] };\n\n private buffer: AccountInfo<Buffer> | null;\n private connection: Connection;\n private readonly recentSlotDurationMs: number;\n\n constructor(\n state: Reserve,\n address: PublicKey,\n tokenOraclePrice: TokenOracleData,\n connection: Connection,\n recentSlotDurationMs: number\n ) {\n this.state = state;\n this.address = address;\n this.buffer = null;\n this.tokenOraclePrice = tokenOraclePrice;\n this.stats = {} as ReserveDataType;\n this.connection = connection;\n this.symbol = parseTokenSymbol(state.config.tokenInfo.name);\n this.recentSlotDurationMs = recentSlotDurationMs;\n }\n\n static initialize(\n accountData: AccountInfo<Buffer>,\n address: PublicKey,\n state: Reserve,\n tokenOraclePrice: TokenOracleData,\n connection: Connection,\n recentSlotDurationMs: number\n ) {\n const reserve = new KaminoReserve(state, address, tokenOraclePrice, connection, recentSlotDurationMs);\n reserve.setBuffer(accountData);\n reserve.stats = reserve.formatReserveData(state);\n return reserve;\n }\n\n /// GETTERS\n\n /**\n * @returns the parsed token symbol of the reserve\n */\n getTokenSymbol(): string {\n return parseTokenSymbol(this.state.config.tokenInfo.name);\n }\n\n /**\n * @returns the total borrowed amount of the reserve in lamports\n */\n getBorrowedAmount(): Decimal {\n return new Fraction(this.state.liquidity.borrowedAmountSf).toDecimal();\n }\n\n /**\n * @returns the available liquidity amount of the reserve in lamports\n */\n getLiquidityAvailableAmount(): Decimal {\n return new Decimal(this.state.liquidity.availableAmount.toString());\n }\n\n /**\n *\n * @returns the last cached price stored in the reserve in USD\n */\n getReserveMarketPrice(): Decimal {\n return new Fraction(this.state.liquidity.marketPriceSf).toDecimal();\n }\n\n /**\n * @returns the current market price of the reserve in USD\n */\n getOracleMarketPrice(): Decimal {\n return this.tokenOraclePrice.price;\n }\n\n /**\n * @returns the total accumulated protocol fees of the reserve\n */\n getAccumulatedProtocolFees(): Decimal {\n return new Fraction(this.state.liquidity.accumulatedProtocolFeesSf).toDecimal();\n }\n\n /**\n * @returns the total accumulated referrer fees of the reserve\n */\n getAccumulatedReferrerFees(): Decimal {\n return new Fraction(this.state.liquidity.accumulatedReferrerFeesSf).toDecimal();\n }\n\n /**\n * @returns the total pending referrer fees of the reserve\n */\n getPendingReferrerFees(): Decimal {\n return new Fraction(this.state.liquidity.pendingReferrerFeesSf).toDecimal();\n }\n\n /**\n *\n * @returns the flash loan fee percentage of the reserve\n */\n getFlashLoanFee = (): Decimal => {\n if (this.state.config.fees.flashLoanFeeSf.toString() === U64_MAX) {\n return new Decimal('0');\n }\n return new Fraction(this.state.config.fees.flashLoanFeeSf).toDecimal();\n };\n\n /**\n *\n * @returns the origination fee percentage of the reserve\n */\n getBorrowFee = (): Decimal => {\n return new Fraction(this.state.config.fees.borrowFeeSf).toDecimal();\n };\n\n /**\n *\n * @returns the fixed interest rate allocated to the host\n */\n getFixedHostInterestRate = (): Decimal => {\n return new Decimal(this.state.config.hostFixedInterestRateBps).div(10_000);\n };\n\n /**\n * Use getEstimatedTotalSupply() for the most accurate value\n * @returns the stale total liquidity supply of the reserve from the last refresh\n */\n getTotalSupply(): Decimal {\n return this.getLiquidityAvailableAmount()\n .add(this.getBorrowedAmount())\n .sub(this.getAccumulatedProtocolFees())\n .sub(this.getAccumulatedReferrerFees())\n .sub(this.getPendingReferrerFees());\n }\n\n /**\n * Calculates the total liquidity supply of the reserve\n */\n getEstimatedTotalSupply(slot: number, referralFeeBps: number): Decimal {\n const { totalSupply } = this.getEstimatedDebtAndSupply(slot, referralFeeBps);\n return totalSupply;\n }\n\n /**\n * Use getEstimatedCumulativeBorrowRate() for the most accurate value\n * @returns the stale cumulative borrow rate of the reserve from the last refresh\n */\n getCumulativeBorrowRate(): Decimal {\n const cumulativeBorrowRateBsf = this.state.liquidity.cumulativeBorrowRateBsf.value;\n const accSf = cumulativeBorrowRateBsf.reduce((prev, curr, i) => prev.add(curr.shln(i * 64)), new BN(0));\n return new Fraction(accSf).toDecimal();\n }\n\n /**\n * @Returns estimated cumulative borrow rate of the reserve\n */\n getEstimatedCumulativeBorrowRate(currentSlot: number, referralFeeBps: number): Decimal {\n const currentBorrowRate = new Decimal(this.calculateBorrowAPR(currentSlot, referralFeeBps));\n const slotsElapsed = Math.max(currentSlot - this.state.lastUpdate.slot.toNumber(), 0);\n\n const compoundInterest = this.approximateCompoundedInterest(currentBorrowRate, slotsElapsed);\n\n const previousCumulativeBorrowRate = this.getCumulativeBorrowRate();\n\n return previousCumulativeBorrowRate.mul(compoundInterest);\n }\n\n /**\n * Use getEstimatedCollateralExchangeRate() for the most accurate value\n * @returns the stale exchange rate between the collateral tokens and the liquidity - this is a decimal number scaled by 1e18\n */\n getCollateralExchangeRate(): Decimal {\n const totalSupply = this.getTotalSupply();\n const mintTotalSupply = this.state.collateral.mintTotalSupply;\n if (mintTotalSupply.isZero() || totalSupply.isZero()) {\n return INITIAL_COLLATERAL_RATE;\n } else {\n return new Decimal(mintTotalSupply.toString()).dividedBy(totalSupply.toString());\n }\n }\n\n /**\n *\n * @returns the estimated exchange rate between the collateral tokens and the liquidity - this is a decimal number scaled by 1e18\n */\n getEstimatedCollateralExchangeRate(slot: number, referralFeeBps: number): Decimal {\n const totalSupply = this.getEstimatedTotalSupply(slot, referralFeeBps);\n const mintTotalSupply = this.state.collateral.mintTotalSupply;\n if (mintTotalSupply.isZero() || totalSupply.isZero()) {\n return INITIAL_COLLATERAL_RATE;\n } else {\n return new Decimal(mintTotalSupply.toString()).dividedBy(totalSupply.toString());\n }\n }\n\n /**\n *\n * @returns the total USD value of the existing collateral in the reserve\n */\n getDepositTvl = (): Decimal => {\n return new Decimal(this.getTotalSupply().toString()).mul(this.getOracleMarketPrice()).div(this.getMintFactor());\n };\n\n /**\n *\n * Get the total USD value of the borrowed assets from the reserve\n */\n getBorrowTvl = (): Decimal => {\n return this.getBorrowedAmount().mul(this.getOracleMarketPrice()).div(this.getMintFactor());\n };\n\n /**\n * @returns 10^mint_decimals\n */\n getMintFactor(): Decimal {\n return new Decimal(10).pow(this.state.liquidity.mintDecimals.toNumber());\n }\n\n /**\n * @Returns true if the total liquidity supply of the reserve is greater than the deposit limit\n */\n depositLimitCrossed(): boolean {\n return this.getTotalSupply().gt(new Decimal(this.state.config.depositLimit.toString()));\n }\n\n /**\n * @Returns true if the total borrowed amount of the reserve is greater than the borrow limit\n */\n borrowLimitCrossed(): boolean {\n return this.getBorrowedAmount().gt(new Decimal(this.state.config.borrowLimit.toString()));\n }\n\n /**\n *\n * @returns the max capacity of the daily deposit withdrawal cap\n */\n getDepositWithdrawalCapCapacity(): Decimal {\n return new Decimal(this.state.config.depositWithdrawalCap.configCapacity.toString());\n }\n\n /**\n *\n * @returns the current capacity of the daily deposit withdrawal cap\n */\n getDepositWithdrawalCapCurrent(slot: number): Decimal {\n const slotsElapsed = Math.max(slot - this.state.lastUpdate.slot.toNumber(), 0);\n if (slotsElapsed > SLOTS_PER_DAY) {\n return new Decimal(0);\n } else {\n return new Decimal(this.state.config.depositWithdrawalCap.currentTotal.toString());\n }\n }\n\n /**\n *\n * @returns the max capacity of the daily debt withdrawal cap\n */\n getDebtWithdrawalCapCapacity(): Decimal {\n return new Decimal(this.state.config.debtWithdrawalCap.configCapacity.toString());\n }\n\n /**\n *\n * @returns the borrow limit of the reserve outside the elevation group\n */\n getBorrowLimitOutsideElevationGroup(): Decimal {\n return new Decimal(this.state.config.borrowLimitOutsideElevationGroup.toString());\n }\n\n /**\n *\n * @returns the borrowed amount of the reserve outside the elevation group\n */\n getBorrowedAmountOutsideElevationGroup(): Decimal {\n return new Decimal(this.state.borrowedAmountOutsideElevationGroup.toString());\n }\n\n /**\n *\n * @returns the borrow limit against the collateral reserve in the elevation group\n */\n getBorrowLimitAgainstCollateralInElevationGroup(elevationGroupIndex: number): Decimal {\n return new Decimal(\n this.state.config.borrowLimitAgainstThisCollateralInElevationGroup[elevationGroupIndex].toString()\n );\n }\n\n /**\n *\n * @returns the borrowed amount against the collateral reserve in the elevation group\n */\n getBorrowedAmountAgainstCollateralInElevationGroup(elevationGroupIndex: number): Decimal {\n return new Decimal(this.state.borrowedAmountsAgainstThisReserveInElevationGroups[elevationGroupIndex].toString());\n }\n\n /**\n *\n * @returns the current capacity of the daily debt withdrawal cap\n */\n getDebtWithdrawalCapCurrent(slot: number): Decimal {\n const slotsElapsed = Math.max(slot - this.state.lastUpdate.slot.toNumber(), 0);\n if (slotsElapsed > SLOTS_PER_DAY) {\n return new Decimal(0);\n } else {\n return new Decimal(this.state.config.debtWithdrawalCap.currentTotal.toString());\n }\n }\n\n getBorrowFactor(): Decimal {\n return new Decimal(this.state.config.borrowFactorPct.toString()).div(100);\n }\n\n calculateSupplyAPR(slot: number, referralFeeBps: number) {\n const currentUtilization = this.calculateUtilizationRatio();\n\n const borrowRate = this.calculateEstimatedBorrowRate(slot, referralFeeBps);\n const protocolTakeRatePct = 1 - this.state.config.protocolTakeRatePct / 100;\n return currentUtilization * borrowRate * protocolTakeRatePct;\n }\n\n getEstimatedDebtAndSupply(slot: number, referralFeeBps: number): { totalBorrow: Decimal; totalSupply: Decimal } {\n const slotsElapsed = Math.max(slot - this.state.lastUpdate.slot.toNumber(), 0);\n let totalBorrow: Decimal;\n let totalSupply: Decimal;\n if (slotsElapsed === 0) {\n totalBorrow = this.getBorrowedAmount();\n totalSupply = this.getTotalSupply();\n } else {\n const { newDebt, newAccProtocolFees, pendingReferralFees } = this.compoundInterest(slotsElapsed, referralFeeBps);\n const newTotalSupply = this.getLiquidityAvailableAmount()\n .add(newDebt)\n .sub(newAccProtocolFees)\n .sub(this.getAccumulatedReferrerFees())\n .sub(pendingReferralFees);\n totalBorrow = newDebt;\n totalSupply = newTotalSupply;\n }\n return { totalBorrow, totalSupply };\n }\n\n getEstimatedAccumulatedProtocolFees(\n slot: number,\n referralFeeBps: number\n ): { accumulatedProtocolFees: Decimal; compoundedVariableProtocolFee: Decimal; compoundedFixedHostFee: Decimal } {\n const slotsElapsed = Math.max(slot - this.state.lastUpdate.slot.toNumber(), 0);\n let accumulatedProtocolFees: Decimal;\n let compoundedVariableProtocolFee: Decimal;\n let compoundedFixedHostFee: Decimal;\n if (slotsElapsed === 0) {\n accumulatedProtocolFees = this.getAccumulatedProtocolFees();\n compoundedVariableProtocolFee = new Decimal(0);\n compoundedFixedHostFee = new Decimal(0);\n } else {\n const { newAccProtocolFees, variableProtocolFee, fixedHostFee } = this.compoundInterest(\n slotsElapsed,\n referralFeeBps\n );\n accumulatedProtocolFees = newAccProtocolFees;\n compoundedVariableProtocolFee = variableProtocolFee;\n compoundedFixedHostFee = fixedHostFee;\n }\n return { accumulatedProtocolFees, compoundedVariableProtocolFee, compoundedFixedHostFee };\n }\n\n calculateUtilizationRatio() {\n const totalBorrows = this.getBorrowedAmount();\n const totalSupply = this.getTotalSupply();\n if (totalSupply.eq(0)) {\n return 0;\n }\n return totalBorrows.dividedBy(totalSupply).toNumber();\n }\n\n getEstimatedUtilizationRatio(slot: number, referralFeeBps: number) {\n const { totalBorrow: estimatedTotalBorrowed, totalSupply: estimatedTotalSupply } = this.getEstimatedDebtAndSupply(\n slot,\n referralFeeBps\n );\n if (estimatedTotalSupply.eq(0)) {\n return 0;\n }\n\n return estimatedTotalBorrowed.dividedBy(estimatedTotalSupply).toNumber();\n }\n\n calcSimulatedUtilizationRatio(\n amount: Decimal,\n action: ActionType,\n slot: number,\n referralFeeBps: number,\n outflowAmount?: Decimal\n ): number {\n const { totalBorrow: previousTotalBorrowed, totalSupply: previousTotalSupply } = this.getEstimatedDebtAndSupply(\n slot,\n referralFeeBps\n );\n\n switch (action) {\n case 'deposit': {\n const newTotalSupply = previousTotalSupply.add(amount);\n return previousTotalBorrowed.dividedBy(newTotalSupply).toNumber();\n }\n case 'withdraw': {\n const newTotalSupply = previousTotalSupply.sub(amount);\n if (newTotalSupply.eq(0)) {\n return 0;\n } else {\n return previousTotalBorrowed.dividedBy(newTotalSupply).toNumber();\n }\n }\n case 'borrow': {\n const newTotalBorrowed = previousTotalBorrowed.add(amount);\n return newTotalBorrowed.dividedBy(previousTotalSupply).toNumber();\n }\n case 'repay': {\n const newTotalBorrowed = previousTotalBorrowed.sub(amount);\n return newTotalBorrowed.dividedBy(previousTotalSupply).toNumber();\n }\n case 'depositAndBorrow': {\n const newTotalSupply = previousTotalSupply.add(amount);\n const newTotalBorrowed = previousTotalBorrowed.add(outflowAmount!);\n return newTotalBorrowed.dividedBy(newTotalSupply).toNumber();\n }\n case 'repayAndWithdraw': {\n const newTotalBorrowed = previousTotalBorrowed.sub(amount);\n const newTotalSupply = previousTotalSupply.sub(outflowAmount!);\n if (newTotalSupply.eq(0)) {\n return 0;\n }\n return newTotalBorrowed.dividedBy(newTotalSupply).toNumber();\n }\n case 'mint': {\n const newTotalSupply = previousTotalSupply.add(amount);\n return previousTotalBorrowed.dividedBy(newTotalSupply).toNumber();\n }\n case 'redeem': {\n const newTotalSupply = previousTotalSupply.sub(amount);\n return previousTotalBorrowed.dividedBy(newTotalSupply).toNumber();\n }\n default:\n throw Error(`Invalid action type ${action} for simulatedUtilizationRatio`);\n }\n }\n\n getMaxBorrowAmountWithCollReserve(market: KaminoMarket, collReserve: KaminoReserve, slot: number): Decimal {\n const groupsColl = collReserve.state.config.elevationGroups;\n const groupsDebt = this.state.config.elevationGroups;\n const groups = market.state.elevationGroups;\n const commonElevationGroups = [...groupsColl].filter(\n (item) => groupsDebt.includes(item) && item !== 0 && groups[item - 1].debtReserve.equals(this.address)\n );\n\n let eModeGroup = 0;\n\n if (commonElevationGroups.length !== 0) {\n const eModeGroupWithMaxLtvAndDebtReserve = commonElevationGroups.reduce((prev, curr) => {\n const prevGroup = groups.find((group) => group.id === prev);\n const currGroup = groups.find((group) => group.id === curr);\n return prevGroup!.ltvPct > currGroup!.ltvPct ? prev : curr;\n });\n\n eModeGroup = groups.find((group) => group.id === eModeGroupWithMaxLtvAndDebtReserve)!.id;\n }\n\n const elevationGroupActivated = this.state.config.elevationGroups.includes(eModeGroup) && eModeGroup !== 0;\n\n const reserveAvailableAmount = this.getLiquidityAvailableAmount();\n const reserveBorrowCapRemained = this.stats.reserveBorrowLimit.sub(this.getBorrowedAmount());\n\n let maxBorrowAmount = Decimal.min(reserveAvailableAmount, reserveBorrowCapRemained);\n\n const debtWithdrawalCap = this.getDebtWithdrawalCapCapacity().sub(this.getDebtWithdrawalCapCurrent(slot));\n maxBorrowAmount = this.getDebtWithdrawalCapCapacity().gt(0)\n ? Decimal.min(maxBorrowAmount, debtWithdrawalCap)\n : maxBorrowAmount;\n\n let originationFeeRate = this.getBorrowFee();\n\n // Inclusive fee rate\n originationFeeRate = originationFeeRate.div(originationFeeRate.add(new Decimal(1)));\n const borrowFee = maxBorrowAmount.mul(originationFeeRate);\n\n maxBorrowAmount = maxBorrowAmount.sub(borrowFee);\n\n const utilizationRatioLimit = this.state.config.utilizationLimitBlockBorrowingAbove / 100;\n const currentUtilizationRatio = this.calculateUtilizationRatio();\n\n if (utilizationRatioLimit > 0 && currentUtilizationRatio > utilizationRatioLimit) {\n return new Decimal(0);\n } else if (utilizationRatioLimit > 0 && currentUtilizationRatio < utilizationRatioLimit) {\n const maxBorrowBasedOnUtilization = new Decimal(utilizationRatioLimit - currentUtilizationRatio).mul(\n this.getTotalSupply()\n );\n maxBorrowAmount = Decimal.min(maxBorrowAmount, maxBorrowBasedOnUtilization);\n }\n\n let borrowLimitDependentOnElevationGroup = new Decimal(U64_MAX);\n\n if (!elevationGroupActivated) {\n borrowLimitDependentOnElevationGroup = this.getBorrowLimitOutsideElevationGroup().sub(\n this.getBorrowedAmountOutsideElevationGroup()\n );\n } else {\n let maxDebtTakenAgainstCollaterals = new Decimal(U64_MAX);\n const maxDebtAllowedAgainstCollateral = collReserve\n .getBorrowLimitAgainstCollateralInElevationGroup(eModeGroup - 1)\n .sub(collReserve.getBorrowedAmountAgainstCollateralInElevationGroup(eModeGroup - 1));\n\n maxDebtTakenAgainstCollaterals = Decimal.max(\n new Decimal(0),\n Decimal.min(maxDebtAllowedAgainstCollateral, maxDebtTakenAgainstCollaterals)\n );\n borrowLimitDependentOnElevationGroup = maxDebtTakenAgainstCollaterals;\n }\n\n maxBorrowAmount = Decimal.min(maxBorrowAmount, borrowLimitDependentOnElevationGroup);\n\n return Decimal.max(new Decimal(0), maxBorrowAmount);\n }\n\n calcSimulatedBorrowAPR(\n amount: Decimal,\n action: ActionType,\n slot: number,\n referralFeeBps: number,\n outflowAmount?: Decimal\n ) {\n const slotAdjustmentFactor = this.slotAdjustmentFactor();\n const newUtilization = this.calcSimulatedUtilizationRatio(amount, action, slot, referralFeeBps, outflowAmount);\n const curve = truncateBorrowCurve(this.state.config.borrowRateCurve.points);\n return getBorrowRate(newUtilization, curve) * slotAdjustmentFactor + this.getFixedHostInterestRate().toNumber();\n }\n\n calcSimulatedSupplyAPR(\n amount: Decimal,\n action: ActionType,\n slot: number,\n referralFeeBps: number,\n outflowAmount?: Decimal\n ) {\n const newUtilization = this.calcSimulatedUtilizationRatio(amount, action, slot, referralFeeBps, outflowAmount);\n const simulatedBorrowAPR = this.calcSimulatedBorrowAPR(amount, action, slot, referralFeeBps, outflowAmount);\n const protocolTakeRatePct = 1 - this.state.config.protocolTakeRatePct / 100;\n\n return newUtilization * simulatedBorrowAPR * protocolTakeRatePct;\n }\n\n slotAdjustmentFactor(): number {\n return 1000 / SLOTS_PER_SECOND / this.recentSlotDurationMs;\n }\n\n calculateBorrowRate() {\n const slotAdjustmentFactor = this.slotAdjustmentFactor();\n const currentUtilization = this.calculateUtilizationRatio();\n const curve = truncateBorrowCurve(this.state.config.borrowRateCurve.points);\n\n return getBorrowRate(currentUtilization, curve) * slotAdjustmentFactor;\n }\n\n calculateEstimatedBorrowRate(slot: number, referralFeeBps: number) {\n const slotAdjustmentFactor = this.slotAdjustmentFactor();\n const estimatedCurrentUtilization = this.getEstimatedUtilizationRatio(slot, referralFeeBps);\n const curve = truncateBorrowCurve(this.state.config.borrowRateCurve.points);\n return getBorrowRate(estimatedCurrentUtilization, curve) * slotAdjustmentFactor;\n }\n\n calculateBorrowAPR(slot: number, referralFeeBps: number) {\n const borrowRate = this.calculateEstimatedBorrowRate(slot, referralFeeBps);\n return borrowRate + this.getFixedHostInterestRate().toNumber();\n }\n\n /**\n * @returns the mint of the reserve liquidity token\n */\n getLiquidityMint(): PublicKey {\n return this.state.liquidity.mintPubkey;\n }\n\n /**\n * @returns the token program of the reserve liquidity mint\n */\n getLiquidityTokenProgram(): PublicKey {\n return this.state.liquidity.tokenProgram;\n }\n\n /**\n * @returns the mint of the reserve collateral token , i.e. the cToken minted for depositing the liquidity token\n */\n getCTokenMint(): PublicKey {\n return this.state.collateral.mintPubkey;\n }\n\n setBuffer(buffer: AccountInfo<Buffer> | null) {\n this.buffer = buffer;\n }\n\n async load(tokenOraclePrice: TokenOracleData) {\n if (!this.buffer) {\n this.setBuffer(await this.connection.getAccountInfo(this.address, 'processed'));\n }\n\n if (!this.buffer) {\n throw Error(`Error requesting account info for ${this.symbol}`);\n }\n\n const parsedData = await Reserve.fetch(this.connection, this.address);\n if (!parsedData) {\n throw Error(`Unable to parse data of reserve ${this.symbol}`);\n }\n this.state = parsedData;\n this.tokenOraclePrice = tokenOraclePrice;\n this.stats = this.formatReserveData(parsedData);\n }\n\n totalSupplyAPY(currentSlot: number) {\n const { stats } = this;\n if (!stats) {\n throw Error('KaminoMarket must call loadRewards.');\n }\n\n return calculateAPYFromAPR(this.calculateSupplyAPR(currentSlot, 0));\n }\n\n totalBorrowAPY(currentSlot: number) {\n const { stats } = this;\n if (!stats) {\n throw Error('KaminoMarket must call loadRewards.');\n }\n\n return calculateAPYFromAPR(this.calculateBorrowAPR(currentSlot, 0));\n }\n\n async loadFarmStates() {\n if (!this.farmData.fetched) {\n const farmStates: FarmState[] = [];\n if (!this.state.farmDebt.equals(PublicKey.default)) {\n const farmState = await FarmState.fetch(this.connection, this.state.farmDebt);\n if (farmState !== null) {\n farmStates.push(farmState);\n }\n }\n if (!this.state.farmCollateral.equals(PublicKey.default)) {\n const farmState = await FarmState.fetch(this.connection, this.state.farmCollateral);\n if (farmState !== null) {\n farmStates.push(farmState);\n }\n }\n this.farmData.farmStates = farmStates;\n this.farmData.fetched = true;\n }\n }\n\n async getRewardYields(prices: KaminoPrices): Promise<ReserveRewardYield[]> {\n const { stats } = this;\n if (!stats) {\n throw Error('KaminoMarket must call loadReserves.');\n }\n\n const isDebtReward = this.state.farmDebt.equals(this.address);\n await this.loadFarmStates();\n const yields: ReserveRewardYield[] = [];\n for (const farmState of this.farmData.farmStates) {\n for (const rewardInfo of farmState.rewardInfos.filter(\n (x) => !x.token.mint.equals(PublicKey.default) && !x.rewardsAvailable.isZero()\n )) {\n const { apy, apr } = this.calculateRewardYield(prices, rewardInfo, isDebtReward);\n if (apy.isZero() && apr.isZero()) {\n continue;\n }\n yields.push({ apy, apr, rewardInfo });\n }\n }\n return yields;\n }\n\n private calculateRewardYield(prices: KaminoPrices, rewardInfo: RewardInfo, isDebtReward: boolean) {\n const mintAddress = this.getLiquidityMint();\n const rewardPerTimeUnitSecond = this.getRewardPerTimeUnitSecond(rewardInfo);\n const reserveToken = prices.spot[mintAddress.toString()];\n const rewardToken = prices.spot[rewardInfo.token.mint.toString()];\n\n if (rewardPerTimeUnitSecond.isZero() || reserveToken === undefined || rewardToken === undefined) {\n return { apy: new Decimal(0), apr: new Decimal(0) };\n }\n const { decimals } = this.stats;\n const totalBorrows = this.getBorrowedAmount();\n const totalSupply = this.getTotalSupply();\n\n const totalAmount = isDebtReward\n ? lamportsToNumberDecimal(totalBorrows, decimals)\n : lamportsToNumberDecimal(totalSupply, decimals);\n const totalValue = totalAmount.mul(reserveToken.price);\n const rewardsInYear = rewardPerTimeUnitSecond.mul(60 * 60 * 24 * 365);\n const rewardsInYearValue = rewardsInYear.mul(rewardToken.price);\n const apr = rewardsInYearValue.div(totalValue);\n return { apy: aprToApy(apr, 365), apr };\n }\n\n private getRewardPerTimeUnitSecond(reward: RewardInfo) {\n const now = new Decimal(new Date().getTime()).div(1000);\n let rewardPerTimeUnitSecond = new Decimal(0);\n for (let i = 0; i < reward.rewardScheduleCurve.points.length - 1; i++) {\n const { tsStart: tsStartThisPoint, rewardPerTimeUnit } = reward.rewardScheduleCurve.points[i];\n const { tsStart: tsStartNextPoint } = reward.rewardScheduleCurve.points[i + 1];\n\n const thisPeriodStart = new Decimal(tsStartThisPoint.toString());\n const thisPeriodEnd = new Decimal(tsStartNextPoint.toString());\n const rps = new Decimal(rewardPerTimeUnit.toString());\n if (thisPeriodStart <= now && thisPeriodEnd >= now) {\n rewardPerTimeUnitSecond = rps;\n break;\n } else if (thisPeriodStart > now && thisPeriodEnd > now) {\n rewardPerTimeUnitSecond = rps;\n break;\n }\n }\n\n const rewardTokenDecimals = reward.token.decimals.toNumber();\n const rewardAmountPerUnitDecimals = new Decimal(10).pow(reward.rewardsPerSecondDecimals.toString());\n const rewardAmountPerUnitLamports = new Decimal(10).pow(rewardTokenDecimals.toString());\n\n const rpsAdjusted = new Decimal(rewardPerTimeUnitSecond.toString())\n .div(rewardAmountPerUnitDecimals)\n .div(rewardAmountPerUnitLamports);\n\n return rewardPerTimeUnitSecond ? rpsAdjusted : new Decimal(0);\n }\n\n private formatReserveData(parsedData: ReserveFields): ReserveDataType {\n const mintTotalSupply = new Decimal(parsedData.collateral.mintTotalSupply.toString()).div(this.getMintFactor());\n let reserveStatus = ReserveStatus.Active;\n switch (parsedData.config.status) {\n case 0:\n reserveStatus = ReserveStatus.Active;\n break;\n case 1:\n reserveStatus = ReserveStatus.Obsolete;\n break;\n case 2:\n reserveStatus = ReserveStatus.Hidden;\n break;\n }\n return {\n // Reserve config\n\n status: reserveStatus,\n mintAddress: parsedData.liquidity.mintPubkey,\n borrowCurve: truncateBorrowCurve(parsedData.config.borrowRateCurve.points),\n loanToValue: parsedData.config.loanToValuePct / 100,\n maxLiquidationBonus: parsedData.config.maxLiquidationBonusBps / 10000,\n minLiquidationBonus: parsedData.config.minLiquidationBonusBps / 10000,\n liquidationThreshold: parsedData.config.liquidationThresholdPct / 100,\n protocolTakeRate: parsedData.config.protocolTakeRatePct / 100,\n reserveDepositLimit: new Decimal(parsedData.config.depositLimit.toString()),\n reserveBorrowLimit: new Decimal(parsedData.config.borrowLimit.toString()),\n\n // Reserve info\n symbol: parseTokenSymbol(parsedData.config.tokenInfo.name),\n decimals: this.state.liquidity.mintDecimals.toNumber(),\n accumulatedProtocolFees: this.getAccumulatedProtocolFees().div(this.getMintFactor()),\n mintTotalSupply,\n depositLimitCrossedSlot: parsedData.liquidity.depositLimitCrossedSlot.toNumber(),\n borrowLimitCrossedSlot: parsedData.liquidity.borrowLimitCrossedSlot.toNumber(),\n borrowFactor: parsedData.config.borrowFactorPct.toNumber(),\n };\n }\n\n /**\n * Compound current borrow rate over elapsed slots\n *\n * This also calculates protocol fees, which are taken for all obligations that have borrowed from current reserve.\n *\n * This also calculates referral fees, which are taken into pendingReferralFees.\n *\n * https://github.com/Kamino-Finance/klend/blob/release/1.3.0/programs/klend/src/state/reserve.rs#L517\n *\n * @param slotsElapsed\n * @param referralFeeBps\n */\n private compoundInterest(\n slotsElapsed: number,\n referralFeeBps: number\n ): {\n newDebt: Decimal;\n netNewDebt: Decimal;\n variableProtocolFee: Decimal;\n fixedHostFee: Decimal;\n absoluteReferralFee: Decimal;\n maxReferralFees: Decimal;\n newAccProtocolFees: Decimal;\n pendingReferralFees: Decimal;\n } {\n const currentBorrowRate = this.calculateBorrowRate();\n const protocolTakeRate = new Decimal(this.state.config.protocolTakeRatePct).div(100);\n const referralRate = new Decimal(referralFeeBps).div(10_000);\n const fixedHostInterestRate = this.getFixedHostInterestRate();\n\n const compoundedInterestRate = this.approximateCompoundedInterest(\n new Decimal(currentBorrowRate).plus(fixedHostInterestRate),\n slotsElapsed\n );\n const compoundedFixedRate = this.approximateCompoundedInterest(fixedHostInterestRate, slotsElapsed);\n\n const previousDebt = this.getBorrowedAmount();\n const newDebt = previousDebt.mul(compoundedInterestRate);\n const fixedHostFee = previousDebt.mul(compoundedFixedRate).sub(previousDebt);\n\n const netNewDebt = newDebt.sub(previousDebt).sub(fixedHostFee);\n\n const variableProtocolFee = netNewDebt.mul(protocolTakeRate);\n const absoluteReferralFee = protocolTakeRate.mul(referralRate);\n const maxReferralFees = netNewDebt.mul(absoluteReferralFee);\n\n const newAccProtocolFees = variableProtocolFee\n .add(fixedHostFee)\n .sub(maxReferralFees)\n .add(this.getAccumulatedProtocolFees());\n\n const pendingReferralFees = this.getPendingReferrerFees().add(maxReferralFees);\n\n return {\n newDebt,\n netNewDebt,\n variableProtocolFee,\n fixedHostFee,\n absoluteReferralFee,\n maxReferralFees,\n newAccProtocolFees,\n pendingReferralFees,\n };\n }\n\n /**\n * Approximation to match the smart contract calculation\n * https://github.com/Kamino-Finance/klend/blob/release/1.3.0/programs/klend/src/state/reserve.rs#L1026\n * @param rate\n * @param elapsedSlots\n * @private\n */\n private approximateCompoundedInterest(rate: Decimal, elapsedSlots: number): Decimal {\n const base = rate.div(SLOTS_PER_YEAR);\n switch (elapsedSlots) {\n case 0:\n return new Decimal(1);\n case 1:\n return base.add(1);\n case 2:\n return base.add(1).mul(base.add(1));\n case 3:\n return base.add(1).mul(base.add(1)).mul(base.add(1));\n case 4:\n // eslint-disable-next-line no-case-declarations\n const pow2 = base.add(1).mul(base.add(1));\n return pow2.mul(pow2);\n }\n const exp = elapsedSlots;\n const expMinus1 = exp - 1;\n const expMinus2 = exp - 2;\n\n const basePow2 = base.mul(base);\n const basePow3 = basePow2.mul(base);\n\n const firstTerm = base.mul(exp);\n const secondTerm = basePow2.mul(exp).mul(expMinus1).div(2);\n const thirdTerm = basePow3.mul(exp).mul(expMinus1).mul(expMinus2).div(6);\n\n return new Decimal(1).add(firstTerm).add(secondTerm).add(thirdTerm);\n }\n\n getBorrowCapForReserve(market: KaminoMarket): BorrowCapsAndCounters {\n // Utilization cap\n const utilizationCap = this.state.config.utilizationLimitBlockBorrowingAbove;\n const utilizationCurrentValue = this.calculateUtilizationRatio();\n\n // Daily borrow cap\n const withdrawalCap = this.state.config.debtWithdrawalCap;\n\n // Debt against collaterals in elevation groups\n const debtAgainstCollateralReserveCaps: {\n collateralReserve: PublicKey;\n elevationGroup: number;\n maxDebt: Decimal;\n currentValue: Decimal;\n }[] = market\n .getMarketElevationGroupDescriptions()\n .filter((x) => x.debtReserve === this.address.toString())\n .map((elevationGroupDescription: ElevationGroupDescription) =>\n elevationGroupDescription.collateralReserves.map((collateralReserveAddress) => {\n const collRes = market.reserves.get(new PublicKey(collateralReserveAddress))!;\n\n const debtLimitAgainstThisCollInGroup =\n collRes.state.config.borrowLimitAgainstThisCollateralInElevationGroup[\n elevationGroupDescription.elevationGroup - 1\n ].toString();\n\n const debtCounterAgainstThisCollInGroup =\n collRes.state.borrowedAmountsAgainstThisReserveInElevationGroups[\n elevationGroupDescription.elevationGroup - 1\n ].toString();\n\n return {\n collateralReserve: collRes.address,\n elevationGroup: elevationGroupDescription.elevationGroup,\n maxDebt: new Decimal(debtLimitAgainstThisCollInGroup),\n currentValue: new Decimal(debtCounterAgainstThisCollInGroup),\n };\n })\n )\n .flat();\n\n const caps: BorrowCapsAndCounters = {\n // Utilization cap\n utilizationCap: new Decimal(utilizationCap > 0 ? utilizationCap / 100 : 1),\n utilizationCurrentValue: new Decimal(utilizationCurrentValue),\n\n // Daily borrow cap\n netWithdrawalCap: new Decimal(withdrawalCap.configCapacity.toString()),\n netWithdrawalCurrentValue: new Decimal(withdrawalCap.currentTotal.toString()),\n netWithdrawalLastUpdateTs: new Decimal(withdrawalCap.lastIntervalStartTimestamp.toString()),\n netWithdrawalIntervalDurationSeconds: new Decimal(withdrawalCap.configIntervalLengthSeconds.toString()),\n\n // Global cap\n globalDebtCap: new Decimal(this.state.config.borrowLimit.toString()),\n globalTotalBorrowed: this.getBorrowedAmount(),\n\n // Debt outside emode cap\n debtOutsideEmodeCap: new Decimal(this.state.config.borrowLimitOutsideElevationGroup.toString()),\n borrowedOutsideEmode: this.getBorrowedAmountOutsideElevationGroup(),\n\n debtAgainstCollateralReserveCaps: debtAgainstCollateralReserveCaps,\n };\n\n return caps;\n }\n\n /* This takes into account all the caps */\n getLiquidityAvailableForDebtReserveGivenCaps(market: KaminoMarket, elevationGroups: number[]): Decimal[] {\n const caps = this.getBorrowCapForReserve(market);\n\n const liquidityAvailable = this.getLiquidityAvailableAmount();\n\n // Cap this to utilization cap first\n const utilizationRatioLimit = caps.utilizationCap;\n const currentUtilizationRatio = this.calculateUtilizationRatio();\n\n const liquidityGivenUtilizationCap = this.getTotalSupply().mul(\n utilizationRatioLimit.minus(currentUtilizationRatio)\n );\n\n const remainingDailyCap = caps.netWithdrawalIntervalDurationSeconds.eq(new Decimal(0))\n ? new Decimal(U64_MAX)\n : caps.netWithdrawalCap.minus(caps.netWithdrawalCurrentValue);\n\n const remainingGlobalCap = caps.globalDebtCap.minus(caps.globalTotalBorrowed);\n const remainingOutsideEmodeCap = caps.debtOutsideEmodeCap.minus(caps.borrowedOutsideEmode);\n\n const available = elevationGroups.map((elevationGroup) => {\n if (elevationGroup === 0) {\n const availableInCrossMode = Decimal.min(\n positiveOrZero(liquidityAvailable),\n positiveOrZero(remainingOutsideEmodeCap),\n positiveOrZero(remainingDailyCap),\n positiveOrZero(remainingGlobalCap),\n positiveOrZero(liquidityGivenUtilizationCap)\n );\n\n return availableInCrossMode;\n } else {\n const remainingInsideEmodeCaps = Decimal.min(\n ...caps.debtAgainstCollateralReserveCaps\n .filter((x) => x.elevationGroup === elevationGroup)\n .map((x) => x.maxDebt.minus(x.currentValue))\n );\n return Decimal.min(\n positiveOrZero(liquidityAvailable),\n positiveOrZero(remainingInsideEmodeCaps),\n positiveOrZero(remainingDailyCap),\n positiveOrZero(remainingGlobalCap),\n positiveOrZero(liquidityGivenUtilizationCap)\n );\n }\n });\n\n return available;\n }\n}\n\nconst truncateBorrowCurve = (points: CurvePointFields[]): [number, number][] => {\n const curve: [number, number][] = [];\n for (const { utilizationRateBps, borrowRateBps } of points) {\n curve.push([utilizationRateBps / ONE_HUNDRED_PCT_IN_BPS, borrowRateBps / ONE_HUNDRED_PCT_IN_BPS]);\n\n if (utilizationRateBps === ONE_HUNDRED_PCT_IN_BPS) {\n break;\n }\n }\n return curve;\n};\n\nexport async function createReserveIxs(\n connection: Connection,\n owner: PublicKey,\n lendingMarket: PublicKey,\n liquidityMint: PublicKey,\n reserveAddress: PublicKey,\n programId: PublicKey\n): Promise<TransactionInstruction[]> {\n const size = Reserve.layout.span + 8;\n\n const createReserveIx = SystemProgram.createAccount({\n fromPubkey: owner,\n newAccountPubkey: reserveAddress,\n lamports: await connection.getMinimumBalanceForRentExemption(size),\n space: size,\n programId: programId,\n });\n\n const { liquiditySupplyVault, collateralMint, collateralSupplyVault, feeVault } = reservePdas(\n programId,\n lendingMarket,\n liquidityMint\n );\n const [lendingMarketAuthority, _] = lendingMarketAuthPda(lendingMarket, programId);\n\n const accounts: InitReserveAccounts = {\n lendingMarketOwner: owner,\n lendingMarket: lendingMarket,\n lendingMarketAuthority: lendingMarketAuthority,\n reserve: reserveAddress,\n reserveLiquidityMint: liquidityMint,\n reserveLiquiditySupply: liquiditySupplyVault,\n feeReceiver: feeVault,\n reserveCollateralMint: collateralMint,\n reserveCollateralSupply: collateralSupplyVault,\n liquidityTokenProgram: TOKEN_PROGRAM_ID,\n collateralTokenProgram: TOKEN_PROGRAM_ID,\n systemProgram: SystemProgram.programId,\n rent: SYSVAR_RENT_PUBKEY,\n };\n\n const initReserveIx = initReserve(accounts, programId);\n\n return [createReserveIx, initReserveIx];\n}\n\nexport function updateReserveConfigIx(\n marketWithAddress: MarketWithAddress,\n reserveAddress: PublicKey,\n modeDiscriminator: number,\n value: Uint8Array,\n programId: PublicKey\n): TransactionInstruction {\n value;\n const args: UpdateReserveConfigArgs = {\n mode: new anchor.BN(modeDiscriminator),\n value: value,\n skipValidation: false,\n };\n\n const accounts: UpdateReserveConfigAccounts = {\n lendingMarketOwner: marketWithAddress.state.lendingMarketOwner,\n lendingMarket: marketWithAddress.address,\n reserve: reserveAddress,\n };\n\n const ix = updateReserveConfig(args, accounts, programId);\n\n return ix;\n}\n\nexport function updateEntireReserveConfigIx(\n marketWithAddress: MarketWithAddress,\n reserveAddress: PublicKey,\n reserveConfig: ReserveConfig,\n programId: PublicKey\n): TransactionInstruction {\n const layout = ReserveConfig.layout();\n const data = Buffer.alloc(1000);\n const len = layout.encode(reserveConfig.toEncodable(), data);\n const value = Uint8Array.from([...data.subarray(0, len)]);\n\n const args: UpdateReserveConfigArgs = {\n mode: new anchor.BN(25),\n value: value,\n skipValidation: true,\n };\n\n const accounts: UpdateReserveConfigAccounts = {\n lendingMarketOwner: marketWithAddress.state.lendingMarketOwner,\n lendingMarket: marketWithAddress.address,\n reserve: reserveAddress,\n };\n\n const ix = updateReserveConfig(args, accounts, programId);\n\n return ix;\n}\n\nexport function parseForChangesReserveConfigAndGetIxs(\n marketWithAddress: MarketWithAddress,\n reserve: Reserve | undefined,\n reserveAddress: PublicKey,\n reserveConfig: ReserveConfig,\n programId: PublicKey\n) {\n const updateReserveIxnsArgs: { mode: number; value: Uint8Array }[] = [];\n for (const key in reserveConfig.toEncodable()) {\n if (key === 'borrowRateCurve') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateBorrowRateCurve.discriminator,\n value: updateReserveConfigEncodedValue(UpdateBorrowRateCurve.discriminator, reserveConfig.borrowRateCurve),\n });\n } else {\n for (let i = 0; i < reserveConfig.borrowRateCurve.points.length; i++) {\n if (\n reserve.config.borrowRateCurve.points[i].utilizationRateBps !==\n reserveConfig.borrowRateCurve.points[i].utilizationRateBps ||\n reserve.config.borrowRateCurve.points[i].borrowRateBps !==\n reserveConfig.borrowRateCurve.points[i].borrowRateBps\n ) {\n updateReserveIxnsArgs.push({\n mode: UpdateBorrowRateCurve.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateBorrowRateCurve.discriminator,\n reserveConfig.borrowRateCurve\n ),\n });\n break;\n }\n }\n }\n } else if (key === 'fees') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateFeesBorrowFee.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateFeesBorrowFee.discriminator,\n reserveConfig.fees.borrowFeeSf.toNumber()\n ),\n });\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator,\n reserveConfig.fees.flashLoanFeeSf.toNumber()\n ),\n });\n } else if (!reserve.config.fees.borrowFeeSf.eq(reserveConfig.fees.borrowFeeSf)) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateFeesBorrowFee.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateFeesBorrowFee.discriminator,\n reserveConfig.fees.borrowFeeSf.toNumber()\n ),\n });\n } else if (!reserve.config.fees.flashLoanFeeSf.eq(reserveConfig.fees.flashLoanFeeSf)) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator,\n reserveConfig.fees.flashLoanFeeSf.toNumber()\n ),\n });\n }\n } else if (key === 'depositLimit') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateDepositLimit.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateDepositLimit.discriminator,\n reserveConfig.depositLimit.toNumber()\n ),\n });\n } else if (!reserve.config.depositLimit.eq(reserveConfig.depositLimit)) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateDepositLimit.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateDepositLimit.discriminator,\n reserveConfig.depositLimit.toNumber()\n ),\n });\n }\n } else if (key === 'borrowLimit') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateBorrowLimit.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateBorrowLimit.discriminator,\n reserveConfig.borrowLimit.toNumber()\n ),\n });\n } else if (!reserve.config.borrowLimit.eq(reserveConfig.borrowLimit)) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateBorrowLimit.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateBorrowLimit.discriminator,\n reserveConfig.borrowLimit.toNumber()\n ),\n });\n }\n } else if (key === 'maxLiquidationBonusBps') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator,\n reserveConfig.maxLiquidationBonusBps\n ),\n });\n } else if (reserve.config.maxLiquidationBonusBps !== reserveConfig.maxLiquidationBonusBps) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator,\n reserveConfig.maxLiquidationBonusBps\n ),\n });\n }\n } else if (key === 'minLiquidationBonusBps') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator,\n reserveConfig.minLiquidationBonusBps\n ),\n });\n } else if (reserve.config.minLiquidationBonusBps !== reserveConfig.minLiquidationBonusBps) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator,\n reserveConfig.minLiquidationBonusBps\n ),\n });\n }\n } else if (key === 'badDebtLiquidationBonusBps') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator,\n reserveConfig.badDebtLiquidationBonusBps\n ),\n });\n } else if (reserve.config.badDebtLiquidationBonusBps !== reserveConfig.badDebtLiquidationBonusBps) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator,\n reserveConfig.badDebtLiquidationBonusBps\n ),\n });\n }\n } else if (key === 'liquidationThresholdPct') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateLiquidationThresholdPct.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateLiquidationThresholdPct.discriminator,\n reserveConfig.liquidationThresholdPct\n ),\n });\n } else if (reserve.config.liquidationThresholdPct !== reserveConfig.liquidationThresholdPct) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateLiquidationThresholdPct.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateLiquidationThresholdPct.discriminator,\n reserveConfig.liquidationThresholdPct\n ),\n });\n }\n } else if (key === 'protocolTakeRatePct') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateProtocolTakeRate.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateProtocolTakeRate.discriminator,\n reserveConfig.protocolTakeRatePct\n ),\n });\n } else if (reserve.config.protocolTakeRatePct !== reserveConfig.protocolTakeRatePct) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateProtocolTakeRate.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateProtocolTakeRate.discriminator,\n reserveConfig.protocolTakeRatePct\n ),\n });\n }\n } else if (key === 'status') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateReserveStatus.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateReserveStatus.discriminator,\n reserveConfig.status\n ),\n });\n } else if (reserve.config.status !== reserveConfig.status) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateReserveStatus.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateReserveStatus.discriminator,\n reserveConfig.status\n ),\n });\n }\n } else if (key === 'disableUsageAsCollOutsideEmode') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator,\n reserveConfig.disableUsageAsCollOutsideEmode\n ),\n });\n } else if (reserve.config.disableUsageAsCollOutsideEmode !== reserveConfig.disableUsageAsCollOutsideEmode) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator,\n reserveConfig.disableUsageAsCollOutsideEmode\n ),\n });\n }\n } else if (key === 'utilizationLimitBlockBorrowingAbove') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateBlockBorrowingAboveUtilization.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateBlockBorrowingAboveUtilization.discriminator,\n reserveConfig.utilizationLimitBlockBorrowingAbove\n ),\n });\n } else if (\n reserve.config.utilizationLimitBlockBorrowingAbove !== reserveConfig.utilizationLimitBlockBorrowingAbove\n ) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateBlockBorrowingAboveUtilization.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateBlockBorrowingAboveUtilization.discriminator,\n reserveConfig.utilizationLimitBlockBorrowingAbove\n ),\n });\n }\n } else if (key === 'deleveragingThresholdSlotsPerBps') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.DeleveragingThresholdSlotsPerBps.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.DeleveragingThresholdSlotsPerBps.discriminator,\n reserveConfig.deleveragingThresholdSlotsPerBps.toNumber()\n ),\n });\n } else if (!reserve.config.deleveragingThresholdSlotsPerBps.eq(reserveConfig.deleveragingThresholdSlotsPerBps)) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.DeleveragingThresholdSlotsPerBps.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.DeleveragingThresholdSlotsPerBps.discriminator,\n reserveConfig.deleveragingThresholdSlotsPerBps.toNumber()\n ),\n });\n }\n } else if (key === 'depositWithdrawalCap') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator,\n value: updateReserveConfigEncodedValue(UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, [\n reserveConfig.depositWithdrawalCap.configCapacity.toNumber(),\n reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds.toNumber(),\n ]),\n });\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateDepositWithdrawalCapCurrentTotal.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator,\n reserveConfig.depositWithdrawalCap.currentTotal.toNumber()\n ),\n });\n } else if (\n !reserve.config.depositWithdrawalCap.configCapacity.eq(reserveConfig.depositWithdrawalCap.configCapacity) ||\n !reserve.config.depositWithdrawalCap.configIntervalLengthSeconds.eq(\n reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds\n )\n ) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator,\n value: updateReserveConfigEncodedValue(UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator, [\n reserveConfig.depositWithdrawalCap.configCapacity.toNumber(),\n reserveConfig.depositWithdrawalCap.configIntervalLengthSeconds.toNumber(),\n ]),\n });\n } else if (\n !reserve.config.depositWithdrawalCap.currentTotal.eq(reserveConfig.depositWithdrawalCap.currentTotal)\n ) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateDepositWithdrawalCapCurrentTotal.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator,\n reserveConfig.depositWithdrawalCap.currentTotal.toNumber()\n ),\n });\n }\n } else if (key === 'debtWithdrawalCap') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator,\n value: updateReserveConfigEncodedValue(UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, [\n reserveConfig.debtWithdrawalCap.configCapacity.toNumber(),\n reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds.toNumber(),\n ]),\n });\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateDebtWithdrawalCapCurrentTotal.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator,\n reserveConfig.debtWithdrawalCap.currentTotal.toNumber()\n ),\n });\n } else if (\n !reserve.config.debtWithdrawalCap.configCapacity.eq(reserveConfig.debtWithdrawalCap.configCapacity) ||\n !reserve.config.debtWithdrawalCap.configIntervalLengthSeconds.eq(\n reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds\n )\n ) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator,\n value: updateReserveConfigEncodedValue(UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator, [\n reserveConfig.debtWithdrawalCap.configCapacity.toNumber(),\n reserveConfig.debtWithdrawalCap.configIntervalLengthSeconds.toNumber(),\n ]),\n });\n } else if (!reserve.config.debtWithdrawalCap.currentTotal.eq(reserveConfig.debtWithdrawalCap.currentTotal)) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateDebtWithdrawalCapCurrentTotal.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator,\n reserveConfig.debtWithdrawalCap.currentTotal.toNumber()\n ),\n });\n }\n } else if (key === 'elevationGroups') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateElevationGroup.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateElevationGroup.discriminator,\n reserveConfig.elevationGroups\n ),\n });\n } else {\n for (let i = 0; i < reserveConfig.elevationGroups.length; i++) {\n if (reserve.config.elevationGroups[i] !== reserveConfig.elevationGroups[i]) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateElevationGroup.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateElevationGroup.discriminator,\n reserveConfig.elevationGroups\n ),\n });\n break;\n }\n }\n }\n } else if (key === 'borrowFactorPct') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateBorrowFactor.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateBorrowFactor.discriminator,\n reserveConfig.borrowFactorPct.toNumber()\n ),\n });\n } else if (!reserve.config.borrowFactorPct.eq(reserveConfig.borrowFactorPct)) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateBorrowFactor.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateBorrowFactor.discriminator,\n reserveConfig.borrowFactorPct.toNumber()\n ),\n });\n }\n } else if (key === 'loanToValuePct') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateLoanToValuePct.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateLoanToValuePct.discriminator,\n reserveConfig.loanToValuePct\n ),\n });\n } else if (reserve.config.loanToValuePct !== reserveConfig.loanToValuePct) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateLoanToValuePct.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateLoanToValuePct.discriminator,\n reserveConfig.loanToValuePct\n ),\n });\n }\n } else if (key === 'protocolLiquidationFeePct') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator,\n reserveConfig.protocolLiquidationFeePct\n ),\n });\n } else if (reserve.config.protocolLiquidationFeePct !== reserveConfig.protocolLiquidationFeePct) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator,\n reserveConfig.protocolLiquidationFeePct\n ),\n });\n }\n } else if (key === 'deleveragingMarginCallPeriodSecs') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.DeleveragingMarginCallPeriod.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.DeleveragingMarginCallPeriod.discriminator,\n reserveConfig.deleveragingMarginCallPeriodSecs.toNumber()\n ),\n });\n } else if (!reserve.config.deleveragingMarginCallPeriodSecs.eq(reserveConfig.deleveragingMarginCallPeriodSecs)) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.DeleveragingMarginCallPeriod.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.DeleveragingMarginCallPeriod.discriminator,\n reserveConfig.deleveragingMarginCallPeriodSecs.toNumber()\n ),\n });\n }\n } else if (key === 'assetTier') {\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateAssetTier.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateAssetTier.discriminator,\n reserveConfig.assetTier\n ),\n });\n } else if (reserve.config.assetTier !== reserveConfig.assetTier) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateAssetTier.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateAssetTier.discriminator,\n reserveConfig.assetTier\n ),\n });\n }\n } else if (key === 'tokenInfo') {\n const tokenInfo = reserveConfig.tokenInfo;\n if (reserve === undefined) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoName.discriminator,\n value: updateReserveConfigEncodedValue(UpdateConfigMode.UpdateTokenInfoName.discriminator, tokenInfo.name),\n });\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator,\n tokenInfo.heuristic.lower.toNumber()\n ),\n });\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator,\n tokenInfo.heuristic.upper.toNumber()\n ),\n });\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator,\n tokenInfo.heuristic.exp.toNumber()\n ),\n });\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator,\n tokenInfo.maxTwapDivergenceBps.toNumber()\n ),\n });\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator,\n tokenInfo.maxAgePriceSeconds.toNumber()\n ),\n });\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator,\n tokenInfo.maxAgeTwapSeconds.toNumber()\n ),\n });\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator,\n tokenInfo.scopeConfiguration.priceChain\n ),\n });\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator,\n tokenInfo.scopeConfiguration.twapChain\n ),\n });\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateSwitchboardFeed.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateSwitchboardFeed.discriminator,\n tokenInfo.switchboardConfiguration.priceAggregator\n ),\n });\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator,\n tokenInfo.switchboardConfiguration.twapAggregator\n ),\n });\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdatePythPrice.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdatePythPrice.discriminator,\n tokenInfo.pythConfiguration.price\n ),\n });\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateBlockPriceUsage.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateBlockPriceUsage.discriminator,\n tokenInfo.blockPriceUsage\n ),\n });\n } else {\n for (let i = 0; i < tokenInfo.name.length; i++) {\n if (reserve.config.tokenInfo.name[i] !== tokenInfo.name[i]) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoName.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateTokenInfoName.discriminator,\n tokenInfo.name\n ),\n });\n break;\n }\n }\n if (!reserve.config.tokenInfo.heuristic.lower.eq(tokenInfo.heuristic.lower)) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator,\n tokenInfo.heuristic.lower.toNumber()\n ),\n });\n }\n if (!reserve.config.tokenInfo.heuristic.upper.eq(tokenInfo.heuristic.upper)) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator,\n tokenInfo.heuristic.upper.toNumber()\n ),\n });\n }\n if (!reserve.config.tokenInfo.heuristic.exp.eq(tokenInfo.heuristic.exp)) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator,\n tokenInfo.heuristic.exp.toNumber()\n ),\n });\n }\n if (!reserve.config.tokenInfo.maxTwapDivergenceBps.eq(tokenInfo.maxTwapDivergenceBps)) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator,\n tokenInfo.maxTwapDivergenceBps.toNumber()\n ),\n });\n }\n if (!reserve.config.tokenInfo.maxAgePriceSeconds.eq(tokenInfo.maxAgePriceSeconds)) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator,\n tokenInfo.maxAgePriceSeconds.toNumber()\n ),\n });\n }\n if (!reserve.config.tokenInfo.maxAgeTwapSeconds.eq(tokenInfo.maxAgeTwapSeconds)) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator,\n tokenInfo.maxAgeTwapSeconds.toNumber()\n ),\n });\n }\n for (let i = 0; i < tokenInfo.scopeConfiguration.priceChain.length; i++) {\n if (\n reserve.config.tokenInfo.scopeConfiguration.priceChain[i] !== tokenInfo.scopeConfiguration.priceChain[i]\n ) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator,\n tokenInfo.scopeConfiguration.priceChain\n ),\n });\n break;\n }\n }\n for (let i = 0; i < tokenInfo.scopeConfiguration.twapChain.length; i++) {\n if (reserve.config.tokenInfo.scopeConfiguration.twapChain[i] !== tokenInfo.scopeConfiguration.twapChain[i]) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator,\n tokenInfo.scopeConfiguration.twapChain\n ),\n });\n break;\n }\n }\n if (\n !reserve.config.tokenInfo.switchboardConfiguration.priceAggregator.equals(\n tokenInfo.switchboardConfiguration.priceAggregator\n )\n ) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateSwitchboardFeed.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateSwitchboardFeed.discriminator,\n tokenInfo.switchboardConfiguration.priceAggregator\n ),\n });\n }\n if (\n !reserve.config.tokenInfo.switchboardConfiguration.twapAggregator.equals(\n tokenInfo.switchboardConfiguration.twapAggregator\n )\n ) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator,\n tokenInfo.switchboardConfiguration.twapAggregator\n ),\n });\n }\n if (!reserve.config.tokenInfo.pythConfiguration.price.equals(tokenInfo.pythConfiguration.price)) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdatePythPrice.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdatePythPrice.discriminator,\n tokenInfo.pythConfiguration.price\n ),\n });\n }\n if (reserve.config.tokenInfo.blockPriceUsage !== tokenInfo.blockPriceUsage) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateBlockPriceUsage.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateBlockPriceUsage.discriminator,\n tokenInfo.blockPriceUsage\n ),\n });\n }\n if (!reserve.config.tokenInfo.scopeConfiguration.priceFeed.equals(tokenInfo.scopeConfiguration.priceFeed)) {\n updateReserveIxnsArgs.push({\n mode: UpdateConfigMode.UpdateScopePriceFeed.discriminator,\n value: updateReserveConfigEncodedValue(\n UpdateConfigMode.UpdateScopePriceFeed.discriminator,\n tokenInfo.scopeConfiguration.priceFeed\n ),\n });\n }\n }\n }\n } // for loop\n\n const ixns: TransactionInstruction[] = [];\n\n updateReserveIxnsArgs.forEach((updateReserveConfigArgs) => {\n ixns.push(\n updateReserveConfigIx(\n marketWithAddress,\n reserveAddress,\n updateReserveConfigArgs.mode + 1,\n updateReserveConfigArgs.value,\n programId\n )\n );\n });\n\n return ixns;\n}\n\nexport function updateReserveConfigEncodedValue(\n discriminator: number,\n value: number | number[] | BorrowRateCurve | PublicKey\n): Uint8Array {\n let buffer: Buffer;\n let valueArray: number[] = [];\n\n switch (discriminator) {\n case UpdateConfigMode.UpdateLoanToValuePct.discriminator:\n case UpdateConfigMode.UpdateLiquidationThresholdPct.discriminator:\n case UpdateConfigMode.UpdateProtocolLiquidationFee.discriminator:\n case UpdateConfigMode.UpdateProtocolTakeRate.discriminator:\n case UpdateConfigMode.UpdateAssetTier.discriminator:\n case UpdateConfigMode.UpdateReserveStatus.discriminator:\n case UpdateConfigMode.UpdateDisableUsageAsCollateralOutsideEmode.discriminator:\n case UpdateConfigMode.UpdateBlockBorrowingAboveUtilization.discriminator:\n case UpdateConfigMode.UpdateBlockPriceUsage.discriminator:\n buffer = Buffer.alloc(1);\n buffer.writeUIntLE(value as number, 0, 1);\n break;\n case UpdateConfigMode.UpdateMaxLiquidationBonusBps.discriminator:\n case UpdateConfigMode.UpdateBadDebtLiquidationBonusBps.discriminator:\n case UpdateConfigMode.UpdateMinLiquidationBonusBps.discriminator:\n buffer = Buffer.alloc(2);\n buffer.writeUInt16LE(value as number, 0);\n break;\n case UpdateConfigMode.UpdateFeesBorrowFee.discriminator:\n case UpdateConfigMode.UpdateFeesFlashLoanFee.discriminator:\n case UpdateConfigMode.UpdateDepositLimit.discriminator:\n case UpdateConfigMode.UpdateBorrowLimit.discriminator:\n case UpdateConfigMode.UpdateTokenInfoLowerHeuristic.discriminator:\n case UpdateConfigMode.UpdateTokenInfoUpperHeuristic.discriminator:\n case UpdateConfigMode.UpdateTokenInfoExpHeuristic.discriminator:\n case UpdateConfigMode.UpdateTokenInfoTwapDivergence.discriminator:\n case UpdateConfigMode.UpdateTokenInfoPriceMaxAge.discriminator:\n case UpdateConfigMode.UpdateTokenInfoTwapMaxAge.discriminator:\n case UpdateConfigMode.UpdateDebtWithdrawalCapCurrentTotal.discriminator:\n case UpdateConfigMode.UpdateDepositWithdrawalCapCurrentTotal.discriminator:\n case UpdateConfigMode.DeleveragingMarginCallPeriod.discriminator:\n case UpdateConfigMode.UpdateBorrowFactor.discriminator:\n case UpdateConfigMode.DeleveragingThresholdSlotsPerBps.discriminator:\n case UpdateConfigMode.UpdateBorrowLimitOutsideElevationGroup.discriminator:\n value = value as number;\n buffer = Buffer.alloc(8);\n buffer.writeBigUint64LE(BigInt(value), 0);\n break;\n case UpdateConfigMode.UpdateTokenInfoScopeChain.discriminator:\n case UpdateConfigMode.UpdateTokenInfoScopeTwap.discriminator:\n valueArray = value as number[];\n buffer = Buffer.alloc(8);\n for (let i = 0; i < valueArray.length; i++) {\n buffer.writeUInt16LE(valueArray[i], 2 * i);\n }\n break;\n case UpdateConfigMode.UpdateTokenInfoName.discriminator:\n valueArray = value as number[];\n buffer = Buffer.alloc(32);\n for (let i = 0; i < valueArray.length; i++) {\n buffer.writeUIntLE(valueArray[i], i, 1);\n }\n break;\n case UpdateConfigMode.UpdateScopePriceFeed.discriminator:\n case UpdateConfigMode.UpdatePythPrice.discriminator:\n case UpdateConfigMode.UpdateSwitchboardFeed.discriminator:\n case UpdateConfigMode.UpdateSwitchboardTwapFeed.discriminator:\n case UpdateConfigMode.UpdateFarmCollateral.discriminator:\n case UpdateConfigMode.UpdateFarmDebt.discriminator:\n buffer = (value as PublicKey).toBuffer();\n break;\n case UpdateConfigMode.UpdateBorrowRateCurve.discriminator:\n buffer = serializeBorrowRateCurve(value as BorrowRateCurve);\n break;\n case UpdateConfigMode.UpdateDebtWithdrawalCap.discriminator:\n case UpdateConfigMode.UpdateDepositWithdrawalCap.discriminator:\n valueArray = value as number[];\n buffer = Buffer.alloc(16);\n buffer.writeBigUint64LE(BigInt(valueArray[0]), 0);\n buffer.writeBigUInt64LE(BigInt(valueArray[1]), 8);\n break;\n case UpdateConfigMode.UpdateElevationGroup.discriminator:\n valueArray = value as number[];\n buffer = Buffer.alloc(20);\n for (let i = 0; i < valueArray.length; i++) {\n buffer.writeUIntLE(valueArray[i], i, 1);\n }\n break;\n case UpdateConfigMode.UpdateBorrowLimitsInElevationGroupAgainstThisReserve.discriminator:\n valueArray = value as number[];\n buffer = Buffer.alloc(32 * 8);\n for (let i = 0; i < valueArray.length; i++) {\n buffer.writeBigUint64LE(BigInt(valueArray[i]), i * 8);\n }\n break;\n default:\n buffer = Buffer.alloc(0);\n }\n\n return Uint8Array.from([...buffer]);\n}\n\nexport function serializeBorrowRateCurve(curve: BorrowRateCurve): Buffer {\n const buffer = Buffer.alloc(4 + 8 * curve.points.length);\n buffer.writeUInt32LE(curve.points.length, 0);\n for (let i = 0; i < curve.points.length; i++) {\n buffer.writeUInt32LE(curve.points[i].utilizationRateBps, 4 + 8 * i);\n buffer.writeUInt32LE(curve.points[i].borrowRateBps, 8 + 8 * i);\n }\n return buffer;\n}\n\nexport type ReserveWithAddress = {\n address: PublicKey;\n state: Reserve;\n};\n"]}
1
+ {"version":3,"file":"reserve.js","sourceRoot":"","sources":["../../src/classes/reserve.ts"],"names":[],"mappings":"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"}
@@ -48,3 +48,4 @@ export type ReserveFarmInfo = {
48
48
  fetched: boolean;
49
49
  farmStates: FarmState[];
50
50
  };
51
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/classes/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAElE,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAEjD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,cAAc,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH,CAAC;AAEF,oBAAY,aAAa;IACvB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,SAAS,CAAC;IACvB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,uBAAuB,EAAE,OAAO,CAAC;IACjC,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,OAAO,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/classes/shared.ts"],"names":[],"mappings":";;;AAqBA,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,sCAAqB,CAAA;IACrB,kCAAiB,CAAA;AACnB,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB","sourcesContent":["import { PublicKey } from '@solana/web3.js';\nimport Decimal from 'decimal.js';\nimport { FarmState, RewardInfo } from '@hubbleprotocol/farms-sdk';\n\nexport type ConfigType = Array<MarketConfigType>;\n\nexport type MarketConfigType = {\n name: string;\n isPrimary: boolean;\n description: string;\n lendingMarket: string;\n lookupTable: string;\n};\n\nexport type ReserveConfigResponse = {\n liquidityToken: {\n symbol: string;\n mint: string;\n };\n};\n\nexport enum ReserveStatus {\n Active = 'Active',\n Obsolete = 'Obsolete',\n Hidden = 'Hidden',\n}\n\nexport type ReserveDataType = {\n status: ReserveStatus;\n mintAddress: PublicKey;\n borrowCurve: [number, number][];\n loanToValue: number;\n maxLiquidationBonus: number;\n minLiquidationBonus: number;\n liquidationThreshold: number;\n reserveDepositLimit: Decimal;\n reserveBorrowLimit: Decimal;\n depositLimitCrossedSlot: number;\n borrowLimitCrossedSlot: number;\n symbol: string;\n decimals: number;\n protocolTakeRate: number;\n accumulatedProtocolFees: Decimal;\n mintTotalSupply: Decimal;\n borrowFactor: number;\n};\n\nexport type ReserveRewardYield = {\n apy: Decimal;\n apr: Decimal;\n rewardInfo: RewardInfo;\n};\n\nexport type ReserveFarmInfo = {\n fetched: boolean;\n farmStates: FarmState[];\n};\n"]}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/classes/shared.ts"],"names":[],"mappings":";;;AAqBA,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,sCAAqB,CAAA;IACrB,kCAAiB,CAAA;AACnB,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB"}
@@ -39,3 +39,4 @@ export declare const positiveOrZero: (value: Decimal) => Decimal;
39
39
  export declare function calculateAPYFromAPR(apr: number): number;
40
40
  export declare function calculateAPRFromAPY(apy: Decimal.Value): Decimal;
41
41
  export {};
42
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/classes/utils.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,KAAK,uBAAuB,GAAG;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC3B,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAkBF,eAAO,MAAM,iBAAiB,eAChB;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB,QACK,uBAAuB,cACjB,MAAM,WACT,MAAM,aACJ,MAAM,YAsBlB,CAAC;AAEF,eAAO,MAAM,oBAAoB,eACnB;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB,eACY,uBAAuB,kBACpB,MAAM,sBACF,MAAM,YAW3B,CAAC;AAEF,eAAO,MAAM,WAAW,MAAO,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,WAMpF,CAAC;AAEF,eAAO,MAAM,aAAa,uBAAwB,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAG,MAqCrF,CAAC;AAEF,eAAO,MAAM,gBAAgB,gBAAiB,MAAM,EAAE,KAAG,MAExD,CAAC;AAEF,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,oBAE/B;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGxF;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGxF;AAED,eAAO,MAAM,SAAS,SAAU,SAAS,KAAG,OAE3C,CAAC;AAEF,eAAO,MAAM,WAAW,UAAW,OAAO,KAAG,OAO5C,CAAC;AAEF,eAAO,MAAM,aAAa,QAAS,GAAG,YAErC,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,OAAO,KAAG,OAG/C,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,UAG9C;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,WAMrD"}
@@ -93,11 +93,11 @@ function sleep(ms) {
93
93
  return new Promise((resolve) => setTimeout(resolve, ms));
94
94
  }
95
95
  function numberToLamportsDecimal(amount, decimals) {
96
- const factor = Math.pow(10, decimals);
96
+ const factor = 10 ** decimals;
97
97
  return new decimal_js_1.default(amount).mul(factor);
98
98
  }
99
99
  function lamportsToNumberDecimal(amount, decimals) {
100
- const factor = Math.pow(10, decimals);
100
+ const factor = 10 ** decimals;
101
101
  return new decimal_js_1.default(amount).div(factor);
102
102
  }
103
103
  const isSolMint = (mint) => {
@@ -124,7 +124,7 @@ const positiveOrZero = (value) => {
124
124
  };
125
125
  exports.positiveOrZero = positiveOrZero;
126
126
  function calculateAPYFromAPR(apr) {
127
- const apy = Math.pow(new decimal_js_1.default(1).plus(new decimal_js_1.default(apr).dividedBy(utils_1.SLOTS_PER_YEAR)).toNumber(), utils_1.SLOTS_PER_YEAR) - 1;
127
+ const apy = new decimal_js_1.default(1).plus(new decimal_js_1.default(apr).dividedBy(utils_1.SLOTS_PER_YEAR)).toNumber() ** utils_1.SLOTS_PER_YEAR - 1;
128
128
  return apy;
129
129
  }
130
130
  function calculateAPRFromAPY(apy) {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/classes/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { SLOTS_PER_SECOND, SLOTS_PER_YEAR } from '../utils';\nimport Decimal from 'decimal.js';\nimport { PublicKey } from '@solana/web3.js';\nimport { SOL_MINTS } from '../lib';\n\ntype ObligationFarmScoreType = {\n obligationId: string;\n balance: string;\n debt: string;\n score: string;\n lastSlot: number;\n tokenMint: string;\n side: 'supply' | 'borrow';\n};\n\ntype RewardRate = {\n beginningSlot: number;\n rewardRate: string;\n name?: string;\n};\n\nfunction getLatestRewardRate(\n rewardRates: Array<{\n beginningSlot: number;\n rewardRate: string;\n name?: string;\n }>,\n slot: number\n) {\n return rewardRates\n .filter((rr) => slot >= rr.beginningSlot)\n .reduce((v1, v2) => (v1.beginningSlot > v2.beginningSlot ? v1 : v2), {\n beginningSlot: 0,\n rewardRate: '0',\n });\n}\n\nexport const calculateNewScore = (\n rewardStat: {\n lastSlot: number;\n rewardRates: Array<RewardRate>;\n rewardsPerShare: string;\n totalBalance: string;\n },\n pool: ObligationFarmScoreType,\n rewardRate: string,\n endSlot: number,\n startSlot: number\n) => {\n const { balance, debt, score } = pool;\n const { rewardsPerShare, totalBalance } = rewardStat;\n\n const oldDebt = new Decimal(debt);\n const oldScore = new Decimal(score);\n const oldRewardsPerShare = new Decimal(rewardsPerShare);\n const oldBalance = new Decimal(balance);\n const totalBalanceVal = new Decimal(totalBalance);\n\n const newRewardsPerShare = !totalBalanceVal.isZero()\n ? oldRewardsPerShare.plus(\n new Decimal(endSlot)\n .minus(new Decimal(startSlot.toString()))\n .times(new Decimal(rewardRate))\n .div(totalBalanceVal)\n .div(new Decimal(SLOTS_PER_YEAR))\n )\n : new Decimal(0);\n\n return oldScore.plus(newRewardsPerShare.times(oldBalance).minus(oldDebt));\n};\n\nexport const estimateCurrentScore = (\n rewardStat: {\n lastSlot: number;\n rewardRates: Array<RewardRate>;\n rewardsPerShare: string;\n totalBalance: string;\n },\n rewardScore: ObligationFarmScoreType,\n mostRecentSlot: number,\n mostRecentSlotTime: number\n) => {\n const { lastSlot, rewardRates } = rewardStat;\n\n const estimatedCurrentSlot = mostRecentSlot + SLOTS_PER_SECOND * (Date.now() / 1000 - mostRecentSlotTime);\n\n const { rewardRate } = getLatestRewardRate(rewardRates, estimatedCurrentSlot);\n\n const currentScore = calculateNewScore(rewardStat, rewardScore, rewardRate, estimatedCurrentSlot, lastSlot);\n\n return currentScore;\n};\n\nexport const interpolate = (x: number, x0: number, x1: number, y0: number, y1: number) => {\n if (x > x1) {\n throw 'Cannot do extrapolation';\n }\n\n return y0 + ((x - x0) * (y1 - y0)) / (x1 - x0);\n};\n\nexport const getBorrowRate = (currentUtilization: number, curve: [number, number][]): number => {\n let [x0, y0, x1, y1] = [0, 0, 0, 0];\n\n if (curve.length < 2) {\n throw 'Invalid borrow rate curve, only one point';\n }\n\n if (currentUtilization > 1) {\n currentUtilization = 1;\n }\n\n for (let i = 1; i < curve.length; i++) {\n const [pointUtilization, pointRate] = curve[i];\n if (pointUtilization === currentUtilization) {\n return pointRate;\n }\n\n if (currentUtilization <= pointUtilization) {\n x0 = curve[i - 1][0];\n y0 = curve[i - 1][1];\n x1 = curve[i][0];\n y1 = curve[i][1];\n break;\n }\n }\n\n if (x0 === 0 && y0 === 0 && x1 === 0 && y1 === 0) {\n console.log('All are 0');\n throw 'Invalid borrow rate curve, could not identify the interpolation points.';\n }\n\n if (x0 >= x1 || y0 > y1) {\n console.log('(x0, y0), (x1, y1)', x0, y0, x1, y1);\n throw 'Invalid borrow rate curve, curve is not uniformly increasing';\n }\n\n return interpolate(currentUtilization, x0, x1, y0, y1);\n};\n\nexport const parseTokenSymbol = (tokenSymbol: number[]): string => {\n return String.fromCharCode(...tokenSymbol.filter((x) => x > 0));\n};\n\nexport function sleep(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function numberToLamportsDecimal(amount: Decimal.Value, decimals: number): Decimal {\n const factor = 10 ** decimals;\n return new Decimal(amount).mul(factor);\n}\n\nexport function lamportsToNumberDecimal(amount: Decimal.Value, decimals: number): Decimal {\n const factor = 10 ** decimals;\n return new Decimal(amount).div(factor);\n}\n\nexport const isSolMint = (mint: PublicKey): boolean => {\n return SOL_MINTS.filter((m) => m.equals(mint)).length > 0;\n};\n\nexport const valueOrZero = (value: Decimal): Decimal => {\n const zero = new Decimal(0);\n if (value.isNaN() || !value.isFinite()) {\n return zero;\n } else {\n return value;\n }\n};\n\nexport const isEmptyObject = (obj: any) => {\n return Object.keys(obj).length === 0 && obj.constructor === Object;\n};\n\nexport const positiveOrZero = (value: Decimal): Decimal => {\n const zero = new Decimal(0);\n return Decimal.max(value, zero);\n};\n\nexport function calculateAPYFromAPR(apr: number) {\n const apy = new Decimal(1).plus(new Decimal(apr).dividedBy(SLOTS_PER_YEAR)).toNumber() ** SLOTS_PER_YEAR - 1;\n return apy;\n}\n\nexport function calculateAPRFromAPY(apy: Decimal.Value) {\n return new Decimal(apy)\n .plus(1)\n .pow(1 / SLOTS_PER_YEAR)\n .minus(1)\n .times(SLOTS_PER_YEAR);\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/classes/utils.ts"],"names":[],"mappings":"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"}
@@ -148,3 +148,4 @@ export declare class ReserveAllocationConfig {
148
148
  getReserveAddress(): PublicKey;
149
149
  }
150
150
  export declare function getCTokenVaultPda(reserveAddress: PublicKey, kaminoVaultProgramId: PublicKey): PublicKey;
151
+ //# sourceMappingURL=vault.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../src/classes/vault.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,UAAU,EACV,OAAO,EACP,SAAS,EAIT,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAQL,aAAa,EACb,OAAO,EAER,MAAM,QAAQ,CAAC;AAchB,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAClE,OAAO,OAAO,MAAM,YAAY,CAAC;AAKjC,OAAO,EAAmC,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAIhF,eAAO,MAAM,aAAa,WAA+D,CAAC;AAO1F;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAY;IAClD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAY;IACjD,oBAAoB,EAAE,MAAM,CAAC;gBAG3B,UAAU,EAAE,UAAU,EACtB,oBAAoB,CAAC,EAAE,SAAS,EAChC,mBAAmB,CAAC,EAAE,SAAS,EAC/B,oBAAoB,CAAC,EAAE,MAAM;IAQ/B,aAAa;IAIb,YAAY;IAIZ;;;;;OAKG;IACG,cAAc,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,sBAAsB,EAAE,CAAA;KAAE,CAAC;IA6CjH;;;;;OAKG;IACG,0BAA0B,CAC9B,KAAK,EAAE,WAAW,EAClB,uBAAuB,EAAE,uBAAuB,GAC/C,OAAO,CAAC,sBAAsB,CAAC;IA8BlC;;;;;;OAMG;IACG,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IA6D9G;;;;;;;OAOG;IACG,WAAW,CACf,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,OAAO,EACpB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAgFpC;;;;OAIG;IACG,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAiBjF;;;;;OAKG;IACG,sBAAsB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAkC9G,OAAO,CAAC,WAAW;IAgDnB;;;;;OAKG;IACG,+BAA+B,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAc5F;;;;;OAKG;IACG,6BAA6B,CACjC,IAAI,EAAE,SAAS,EACf,cAAc,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,GAClC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IA+B7C;;;;;OAKG;IACG,4BAA4B,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BtF;;;;;OAKG;IACG,0BAA0B,CAC9B,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,GAClC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAwC7C;;;;;OAKG;YACW,gDAAgD;IAkC9D,OAAO,CAAC,gBAAgB;YAMV,iBAAiB;IAsC/B;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;CA6B7C;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,SAAS,CAAC;gBAET,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,SAAS,GAAE,SAAyB;IAMvF,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAarD,WAAW,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;CAO/D;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,mCAAmC;IACnC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,gCAAgC;IAChC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAC;IACvC,oEAAoE;IACpE,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,mEAAmE;IACnE,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;gBAExB,IAAI,EAAE;QAChB,KAAK,EAAE,SAAS,CAAC;QACjB,SAAS,EAAE,SAAS,CAAC;QACrB,kBAAkB,EAAE,SAAS,CAAC;QAC9B,kBAAkB,EAAE,OAAO,CAAC;QAC5B,iBAAiB,EAAE,OAAO,CAAC;KAC5B;IAQD,oBAAoB,IAAI,MAAM;IAI9B,oBAAoB,IAAI,MAAM;CAG/B;AAED,qBAAa,uBAAuB;IAClC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;gBAE3B,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO;IAMtG,wBAAwB,IAAI,OAAO;IAInC,eAAe,IAAI,OAAO;IAI1B,iBAAiB,IAAI,SAAS;CAG/B;AAED,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,SAAS,EAAE,oBAAoB,EAAE,SAAS,aAK3F"}