@kamino-finance/klend-sdk 2.10.6

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 (369) hide show
  1. package/README.md +85 -0
  2. package/dist/classes/action.d.ts +154 -0
  3. package/dist/classes/action.js +1505 -0
  4. package/dist/classes/action.js.map +1 -0
  5. package/dist/classes/curve.d.ts +15 -0
  6. package/dist/classes/curve.js +32 -0
  7. package/dist/classes/curve.js.map +1 -0
  8. package/dist/classes/fraction.d.ts +23 -0
  9. package/dist/classes/fraction.js +60 -0
  10. package/dist/classes/fraction.js.map +1 -0
  11. package/dist/classes/index.d.ts +8 -0
  12. package/dist/classes/index.js +25 -0
  13. package/dist/classes/index.js.map +1 -0
  14. package/dist/classes/jupiterPerps.d.ts +2 -0
  15. package/dist/classes/jupiterPerps.js +25 -0
  16. package/dist/classes/jupiterPerps.js.map +1 -0
  17. package/dist/classes/market.d.ts +140 -0
  18. package/dist/classes/market.js +901 -0
  19. package/dist/classes/market.js.map +1 -0
  20. package/dist/classes/obligation.d.ts +170 -0
  21. package/dist/classes/obligation.js +610 -0
  22. package/dist/classes/obligation.js.map +1 -0
  23. package/dist/classes/reserve.d.ts +161 -0
  24. package/dist/classes/reserve.js +474 -0
  25. package/dist/classes/reserve.js.map +1 -0
  26. package/dist/classes/shared.d.ts +41 -0
  27. package/dist/classes/shared.js +10 -0
  28. package/dist/classes/shared.js.map +1 -0
  29. package/dist/classes/utils.d.ts +40 -0
  30. package/dist/classes/utils.js +129 -0
  31. package/dist/classes/utils.js.map +1 -0
  32. package/dist/idl.json +4102 -0
  33. package/dist/idl_codegen/accounts/LendingMarket.d.ts +153 -0
  34. package/dist/idl_codegen/accounts/LendingMarket.js +204 -0
  35. package/dist/idl_codegen/accounts/LendingMarket.js.map +1 -0
  36. package/dist/idl_codegen/accounts/Obligation.d.ts +139 -0
  37. package/dist/idl_codegen/accounts/Obligation.js +193 -0
  38. package/dist/idl_codegen/accounts/Obligation.js.map +1 -0
  39. package/dist/idl_codegen/accounts/ReferrerState.d.ts +22 -0
  40. package/dist/idl_codegen/accounts/ReferrerState.js +101 -0
  41. package/dist/idl_codegen/accounts/ReferrerState.js.map +1 -0
  42. package/dist/idl_codegen/accounts/ReferrerTokenState.d.ts +51 -0
  43. package/dist/idl_codegen/accounts/ReferrerTokenState.js +126 -0
  44. package/dist/idl_codegen/accounts/ReferrerTokenState.js.map +1 -0
  45. package/dist/idl_codegen/accounts/Reserve.d.ts +72 -0
  46. package/dist/idl_codegen/accounts/Reserve.js +156 -0
  47. package/dist/idl_codegen/accounts/Reserve.js.map +1 -0
  48. package/dist/idl_codegen/accounts/ShortUrl.d.ts +22 -0
  49. package/dist/idl_codegen/accounts/ShortUrl.js +101 -0
  50. package/dist/idl_codegen/accounts/ShortUrl.js.map +1 -0
  51. package/dist/idl_codegen/accounts/UserMetadata.d.ts +48 -0
  52. package/dist/idl_codegen/accounts/UserMetadata.js +126 -0
  53. package/dist/idl_codegen/accounts/UserMetadata.js.map +1 -0
  54. package/dist/idl_codegen/accounts/UserState.d.ts +143 -0
  55. package/dist/idl_codegen/accounts/UserState.js +180 -0
  56. package/dist/idl_codegen/accounts/UserState.js.map +1 -0
  57. package/dist/idl_codegen/accounts/index.d.ts +16 -0
  58. package/dist/idl_codegen/accounts/index.js +20 -0
  59. package/dist/idl_codegen/accounts/index.js.map +1 -0
  60. package/dist/idl_codegen/errors/anchor.d.ts +434 -0
  61. package/dist/idl_codegen/errors/anchor.js +713 -0
  62. package/dist/idl_codegen/errors/anchor.js.map +1 -0
  63. package/dist/idl_codegen/errors/custom.d.ts +730 -0
  64. package/dist/idl_codegen/errors/custom.js +1194 -0
  65. package/dist/idl_codegen/errors/custom.js.map +1 -0
  66. package/dist/idl_codegen/errors/index.d.ts +5 -0
  67. package/dist/idl_codegen/errors/index.js +71 -0
  68. package/dist/idl_codegen/errors/index.js.map +1 -0
  69. package/dist/idl_codegen/instructions/borrowObligationLiquidity.d.ts +20 -0
  70. package/dist/idl_codegen/instructions/borrowObligationLiquidity.js +75 -0
  71. package/dist/idl_codegen/instructions/borrowObligationLiquidity.js.map +1 -0
  72. package/dist/idl_codegen/instructions/deleteReferrerStateAndShortUrl.d.ts +9 -0
  73. package/dist/idl_codegen/instructions/deleteReferrerStateAndShortUrl.js +20 -0
  74. package/dist/idl_codegen/instructions/deleteReferrerStateAndShortUrl.js.map +1 -0
  75. package/dist/idl_codegen/instructions/depositObligationCollateral.d.ts +17 -0
  76. package/dist/idl_codegen/instructions/depositObligationCollateral.js +64 -0
  77. package/dist/idl_codegen/instructions/depositObligationCollateral.js.map +1 -0
  78. package/dist/idl_codegen/instructions/depositReserveLiquidity.d.ts +19 -0
  79. package/dist/idl_codegen/instructions/depositReserveLiquidity.js +74 -0
  80. package/dist/idl_codegen/instructions/depositReserveLiquidity.js.map +1 -0
  81. package/dist/idl_codegen/instructions/depositReserveLiquidityAndObligationCollateral.d.ts +21 -0
  82. package/dist/idl_codegen/instructions/depositReserveLiquidityAndObligationCollateral.js +80 -0
  83. package/dist/idl_codegen/instructions/depositReserveLiquidityAndObligationCollateral.js.map +1 -0
  84. package/dist/idl_codegen/instructions/flashBorrowReserveLiquidity.d.ts +20 -0
  85. package/dist/idl_codegen/instructions/flashBorrowReserveLiquidity.js +75 -0
  86. package/dist/idl_codegen/instructions/flashBorrowReserveLiquidity.js.map +1 -0
  87. package/dist/idl_codegen/instructions/flashRepayReserveLiquidity.d.ts +21 -0
  88. package/dist/idl_codegen/instructions/flashRepayReserveLiquidity.js +75 -0
  89. package/dist/idl_codegen/instructions/flashRepayReserveLiquidity.js.map +1 -0
  90. package/dist/idl_codegen/instructions/idlMissingTypes.d.ts +18 -0
  91. package/dist/idl_codegen/instructions/idlMissingTypes.js +62 -0
  92. package/dist/idl_codegen/instructions/idlMissingTypes.js.map +1 -0
  93. package/dist/idl_codegen/instructions/index.d.ts +66 -0
  94. package/dist/idl_codegen/instructions/index.js +70 -0
  95. package/dist/idl_codegen/instructions/index.js.map +1 -0
  96. package/dist/idl_codegen/instructions/initFarmsForReserve.d.ts +19 -0
  97. package/dist/idl_codegen/instructions/initFarmsForReserve.js +63 -0
  98. package/dist/idl_codegen/instructions/initFarmsForReserve.js.map +1 -0
  99. package/dist/idl_codegen/instructions/initLendingMarket.d.ts +13 -0
  100. package/dist/idl_codegen/instructions/initLendingMarket.js +55 -0
  101. package/dist/idl_codegen/instructions/initLendingMarket.js.map +1 -0
  102. package/dist/idl_codegen/instructions/initObligation.d.ts +19 -0
  103. package/dist/idl_codegen/instructions/initObligation.js +55 -0
  104. package/dist/idl_codegen/instructions/initObligation.js.map +1 -0
  105. package/dist/idl_codegen/instructions/initObligationFarmsForReserve.d.ts +20 -0
  106. package/dist/idl_codegen/instructions/initObligationFarmsForReserve.js +60 -0
  107. package/dist/idl_codegen/instructions/initObligationFarmsForReserve.js.map +1 -0
  108. package/dist/idl_codegen/instructions/initReferrerStateAndShortUrl.d.ts +14 -0
  109. package/dist/idl_codegen/instructions/initReferrerStateAndShortUrl.js +54 -0
  110. package/dist/idl_codegen/instructions/initReferrerStateAndShortUrl.js.map +1 -0
  111. package/dist/idl_codegen/instructions/initReferrerTokenState.d.ts +14 -0
  112. package/dist/idl_codegen/instructions/initReferrerTokenState.js +50 -0
  113. package/dist/idl_codegen/instructions/initReferrerTokenState.js.map +1 -0
  114. package/dist/idl_codegen/instructions/initReserve.d.ts +16 -0
  115. package/dist/idl_codegen/instructions/initReserve.js +47 -0
  116. package/dist/idl_codegen/instructions/initReserve.js.map +1 -0
  117. package/dist/idl_codegen/instructions/initUserMetadata.d.ts +14 -0
  118. package/dist/idl_codegen/instructions/initUserMetadata.js +54 -0
  119. package/dist/idl_codegen/instructions/initUserMetadata.js.map +1 -0
  120. package/dist/idl_codegen/instructions/liquidateObligationAndRedeemReserveCollateral.d.ts +27 -0
  121. package/dist/idl_codegen/instructions/liquidateObligationAndRedeemReserveCollateral.js +102 -0
  122. package/dist/idl_codegen/instructions/liquidateObligationAndRedeemReserveCollateral.js.map +1 -0
  123. package/dist/idl_codegen/instructions/redeemFees.d.ts +10 -0
  124. package/dist/idl_codegen/instructions/redeemFees.js +33 -0
  125. package/dist/idl_codegen/instructions/redeemFees.js.map +1 -0
  126. package/dist/idl_codegen/instructions/redeemReserveCollateral.d.ts +19 -0
  127. package/dist/idl_codegen/instructions/redeemReserveCollateral.js +78 -0
  128. package/dist/idl_codegen/instructions/redeemReserveCollateral.js.map +1 -0
  129. package/dist/idl_codegen/instructions/refreshObligation.d.ts +6 -0
  130. package/dist/idl_codegen/instructions/refreshObligation.js +17 -0
  131. package/dist/idl_codegen/instructions/refreshObligation.js.map +1 -0
  132. package/dist/idl_codegen/instructions/refreshObligationFarmsForReserve.d.ts +19 -0
  133. package/dist/idl_codegen/instructions/refreshObligationFarmsForReserve.js +63 -0
  134. package/dist/idl_codegen/instructions/refreshObligationFarmsForReserve.js.map +1 -0
  135. package/dist/idl_codegen/instructions/refreshReserve.d.ts +10 -0
  136. package/dist/idl_codegen/instructions/refreshReserve.js +29 -0
  137. package/dist/idl_codegen/instructions/refreshReserve.js.map +1 -0
  138. package/dist/idl_codegen/instructions/repayObligationLiquidity.d.ts +17 -0
  139. package/dist/idl_codegen/instructions/repayObligationLiquidity.js +60 -0
  140. package/dist/idl_codegen/instructions/repayObligationLiquidity.js.map +1 -0
  141. package/dist/idl_codegen/instructions/requestElevationGroup.d.ts +11 -0
  142. package/dist/idl_codegen/instructions/requestElevationGroup.js +47 -0
  143. package/dist/idl_codegen/instructions/requestElevationGroup.js.map +1 -0
  144. package/dist/idl_codegen/instructions/socializeLoss.d.ts +14 -0
  145. package/dist/idl_codegen/instructions/socializeLoss.js +53 -0
  146. package/dist/idl_codegen/instructions/socializeLoss.js.map +1 -0
  147. package/dist/idl_codegen/instructions/updateEntireReserveConfig.d.ts +13 -0
  148. package/dist/idl_codegen/instructions/updateEntireReserveConfig.js +51 -0
  149. package/dist/idl_codegen/instructions/updateEntireReserveConfig.js.map +1 -0
  150. package/dist/idl_codegen/instructions/updateLendingMarket.d.ts +12 -0
  151. package/dist/idl_codegen/instructions/updateLendingMarket.js +50 -0
  152. package/dist/idl_codegen/instructions/updateLendingMarket.js.map +1 -0
  153. package/dist/idl_codegen/instructions/updateLendingMarketOwner.d.ts +6 -0
  154. package/dist/idl_codegen/instructions/updateLendingMarketOwner.js +21 -0
  155. package/dist/idl_codegen/instructions/updateLendingMarketOwner.js.map +1 -0
  156. package/dist/idl_codegen/instructions/updateReserveConfig.d.ts +13 -0
  157. package/dist/idl_codegen/instructions/updateReserveConfig.js +51 -0
  158. package/dist/idl_codegen/instructions/updateReserveConfig.js.map +1 -0
  159. package/dist/idl_codegen/instructions/updateSingleReserveConfig.d.ts +13 -0
  160. package/dist/idl_codegen/instructions/updateSingleReserveConfig.js +51 -0
  161. package/dist/idl_codegen/instructions/updateSingleReserveConfig.js.map +1 -0
  162. package/dist/idl_codegen/instructions/withdrawObligationCollateral.d.ts +18 -0
  163. package/dist/idl_codegen/instructions/withdrawObligationCollateral.js +69 -0
  164. package/dist/idl_codegen/instructions/withdrawObligationCollateral.js.map +1 -0
  165. package/dist/idl_codegen/instructions/withdrawObligationCollateralAndRedeemReserveCollateral.d.ts +21 -0
  166. package/dist/idl_codegen/instructions/withdrawObligationCollateralAndRedeemReserveCollateral.js +84 -0
  167. package/dist/idl_codegen/instructions/withdrawObligationCollateralAndRedeemReserveCollateral.js.map +1 -0
  168. package/dist/idl_codegen/instructions/withdrawProtocolFee.d.ts +16 -0
  169. package/dist/idl_codegen/instructions/withdrawProtocolFee.js +59 -0
  170. package/dist/idl_codegen/instructions/withdrawProtocolFee.js.map +1 -0
  171. package/dist/idl_codegen/instructions/withdrawReferrerFees.d.ts +12 -0
  172. package/dist/idl_codegen/instructions/withdrawReferrerFees.js +35 -0
  173. package/dist/idl_codegen/instructions/withdrawReferrerFees.js.map +1 -0
  174. package/dist/idl_codegen/programId.d.ts +4 -0
  175. package/dist/idl_codegen/programId.js +13 -0
  176. package/dist/idl_codegen/programId.js.map +1 -0
  177. package/dist/idl_codegen/types/AssetTier.d.ts +44 -0
  178. package/dist/idl_codegen/types/AssetTier.js +128 -0
  179. package/dist/idl_codegen/types/AssetTier.js.map +1 -0
  180. package/dist/idl_codegen/types/BigFractionBytes.d.ts +27 -0
  181. package/dist/idl_codegen/types/BigFractionBytes.js +73 -0
  182. package/dist/idl_codegen/types/BigFractionBytes.js.map +1 -0
  183. package/dist/idl_codegen/types/BorrowRateCurve.d.ts +27 -0
  184. package/dist/idl_codegen/types/BorrowRateCurve.js +62 -0
  185. package/dist/idl_codegen/types/BorrowRateCurve.js.map +1 -0
  186. package/dist/idl_codegen/types/CurvePoint.d.ts +26 -0
  187. package/dist/idl_codegen/types/CurvePoint.js +66 -0
  188. package/dist/idl_codegen/types/CurvePoint.js.map +1 -0
  189. package/dist/idl_codegen/types/ElevationGroup.d.ts +52 -0
  190. package/dist/idl_codegen/types/ElevationGroup.js +103 -0
  191. package/dist/idl_codegen/types/ElevationGroup.js.map +1 -0
  192. package/dist/idl_codegen/types/FeeCalculation.d.ts +31 -0
  193. package/dist/idl_codegen/types/FeeCalculation.js +102 -0
  194. package/dist/idl_codegen/types/FeeCalculation.js.map +1 -0
  195. package/dist/idl_codegen/types/InitObligationArgs.d.ts +26 -0
  196. package/dist/idl_codegen/types/InitObligationArgs.js +66 -0
  197. package/dist/idl_codegen/types/InitObligationArgs.js.map +1 -0
  198. package/dist/idl_codegen/types/LastUpdate.d.ts +47 -0
  199. package/dist/idl_codegen/types/LastUpdate.js +86 -0
  200. package/dist/idl_codegen/types/LastUpdate.js.map +1 -0
  201. package/dist/idl_codegen/types/ObligationCollateral.d.ts +48 -0
  202. package/dist/idl_codegen/types/ObligationCollateral.js +87 -0
  203. package/dist/idl_codegen/types/ObligationCollateral.js.map +1 -0
  204. package/dist/idl_codegen/types/ObligationLiquidity.d.ts +75 -0
  205. package/dist/idl_codegen/types/ObligationLiquidity.js +107 -0
  206. package/dist/idl_codegen/types/ObligationLiquidity.js.map +1 -0
  207. package/dist/idl_codegen/types/PriceHeuristic.d.ts +41 -0
  208. package/dist/idl_codegen/types/PriceHeuristic.js +75 -0
  209. package/dist/idl_codegen/types/PriceHeuristic.js.map +1 -0
  210. package/dist/idl_codegen/types/PythConfiguration.d.ts +25 -0
  211. package/dist/idl_codegen/types/PythConfiguration.js +62 -0
  212. package/dist/idl_codegen/types/PythConfiguration.js.map +1 -0
  213. package/dist/idl_codegen/types/ReserveCollateral.d.ts +53 -0
  214. package/dist/idl_codegen/types/ReserveCollateral.js +93 -0
  215. package/dist/idl_codegen/types/ReserveCollateral.js.map +1 -0
  216. package/dist/idl_codegen/types/ReserveConfig.d.ts +304 -0
  217. package/dist/idl_codegen/types/ReserveConfig.js +209 -0
  218. package/dist/idl_codegen/types/ReserveConfig.js.map +1 -0
  219. package/dist/idl_codegen/types/ReserveFarmKind.d.ts +31 -0
  220. package/dist/idl_codegen/types/ReserveFarmKind.js +102 -0
  221. package/dist/idl_codegen/types/ReserveFarmKind.js.map +1 -0
  222. package/dist/idl_codegen/types/ReserveFees.d.ts +78 -0
  223. package/dist/idl_codegen/types/ReserveFees.js +86 -0
  224. package/dist/idl_codegen/types/ReserveFees.js.map +1 -0
  225. package/dist/idl_codegen/types/ReserveLiquidity.d.ts +173 -0
  226. package/dist/idl_codegen/types/ReserveLiquidity.js +166 -0
  227. package/dist/idl_codegen/types/ReserveLiquidity.js.map +1 -0
  228. package/dist/idl_codegen/types/ReserveStatus.d.ts +44 -0
  229. package/dist/idl_codegen/types/ReserveStatus.js +128 -0
  230. package/dist/idl_codegen/types/ReserveStatus.js.map +1 -0
  231. package/dist/idl_codegen/types/ScopeConfiguration.d.ts +41 -0
  232. package/dist/idl_codegen/types/ScopeConfiguration.js +76 -0
  233. package/dist/idl_codegen/types/ScopeConfiguration.js.map +1 -0
  234. package/dist/idl_codegen/types/SwitchboardConfiguration.d.ts +30 -0
  235. package/dist/idl_codegen/types/SwitchboardConfiguration.js +67 -0
  236. package/dist/idl_codegen/types/SwitchboardConfiguration.js.map +1 -0
  237. package/dist/idl_codegen/types/TokenInfo.d.ts +109 -0
  238. package/dist/idl_codegen/types/TokenInfo.js +116 -0
  239. package/dist/idl_codegen/types/TokenInfo.js.map +1 -0
  240. package/dist/idl_codegen/types/UpdateConfigMode.d.ts +538 -0
  241. package/dist/idl_codegen/types/UpdateConfigMode.js +1116 -0
  242. package/dist/idl_codegen/types/UpdateConfigMode.js.map +1 -0
  243. package/dist/idl_codegen/types/UpdateLendingMarketConfigValue.d.ts +155 -0
  244. package/dist/idl_codegen/types/UpdateLendingMarketConfigValue.js +273 -0
  245. package/dist/idl_codegen/types/UpdateLendingMarketConfigValue.js.map +1 -0
  246. package/dist/idl_codegen/types/UpdateLendingMarketMode.d.ts +200 -0
  247. package/dist/idl_codegen/types/UpdateLendingMarketMode.js +440 -0
  248. package/dist/idl_codegen/types/UpdateLendingMarketMode.js.map +1 -0
  249. package/dist/idl_codegen/types/WithdrawalCaps.d.ts +38 -0
  250. package/dist/idl_codegen/types/WithdrawalCaps.js +86 -0
  251. package/dist/idl_codegen/types/WithdrawalCaps.js.map +1 -0
  252. package/dist/idl_codegen/types/index.d.ts +65 -0
  253. package/dist/idl_codegen/types/index.js +77 -0
  254. package/dist/idl_codegen/types/index.js.map +1 -0
  255. package/dist/idl_codegen/zero_padding/ObligationZP.d.ts +53 -0
  256. package/dist/idl_codegen/zero_padding/ObligationZP.js +140 -0
  257. package/dist/idl_codegen/zero_padding/ObligationZP.js.map +1 -0
  258. package/dist/idl_codegen/zero_padding/index.d.ts +1 -0
  259. package/dist/idl_codegen/zero_padding/index.js +6 -0
  260. package/dist/idl_codegen/zero_padding/index.js.map +1 -0
  261. package/dist/idl_codegen_jupiter_perps/accounts/Pool.d.ts +48 -0
  262. package/dist/idl_codegen_jupiter_perps/accounts/Pool.js +144 -0
  263. package/dist/idl_codegen_jupiter_perps/accounts/Pool.js.map +1 -0
  264. package/dist/idl_codegen_jupiter_perps/accounts/index.d.ts +2 -0
  265. package/dist/idl_codegen_jupiter_perps/accounts/index.js +6 -0
  266. package/dist/idl_codegen_jupiter_perps/accounts/index.js.map +1 -0
  267. package/dist/idl_codegen_jupiter_perps/programId.d.ts +3 -0
  268. package/dist/idl_codegen_jupiter_perps/programId.js +9 -0
  269. package/dist/idl_codegen_jupiter_perps/programId.js.map +1 -0
  270. package/dist/idl_codegen_jupiter_perps/types/Fees.d.ts +62 -0
  271. package/dist/idl_codegen_jupiter_perps/types/Fees.js +115 -0
  272. package/dist/idl_codegen_jupiter_perps/types/Fees.js.map +1 -0
  273. package/dist/idl_codegen_jupiter_perps/types/Limit.d.ts +32 -0
  274. package/dist/idl_codegen_jupiter_perps/types/Limit.js +75 -0
  275. package/dist/idl_codegen_jupiter_perps/types/Limit.js.map +1 -0
  276. package/dist/idl_codegen_jupiter_perps/types/PoolApr.d.ts +32 -0
  277. package/dist/idl_codegen_jupiter_perps/types/PoolApr.js +75 -0
  278. package/dist/idl_codegen_jupiter_perps/types/PoolApr.js.map +1 -0
  279. package/dist/idl_codegen_jupiter_perps/types/index.d.ts +6 -0
  280. package/dist/idl_codegen_jupiter_perps/types/index.js +10 -0
  281. package/dist/idl_codegen_jupiter_perps/types/index.js.map +1 -0
  282. package/dist/index.d.ts +1 -0
  283. package/dist/index.js +18 -0
  284. package/dist/index.js.map +1 -0
  285. package/dist/lending_operations/index.d.ts +2 -0
  286. package/dist/lending_operations/index.js +19 -0
  287. package/dist/lending_operations/index.js.map +1 -0
  288. package/dist/lending_operations/repay_with_collateral_calcs.d.ts +5 -0
  289. package/dist/lending_operations/repay_with_collateral_calcs.js +26 -0
  290. package/dist/lending_operations/repay_with_collateral_calcs.js.map +1 -0
  291. package/dist/lending_operations/repay_with_collateral_operations.d.ts +47 -0
  292. package/dist/lending_operations/repay_with_collateral_operations.js +163 -0
  293. package/dist/lending_operations/repay_with_collateral_operations.js.map +1 -0
  294. package/dist/leverage/calcs.d.ts +132 -0
  295. package/dist/leverage/calcs.js +291 -0
  296. package/dist/leverage/calcs.js.map +1 -0
  297. package/dist/leverage/index.d.ts +4 -0
  298. package/dist/leverage/index.js +21 -0
  299. package/dist/leverage/index.js.map +1 -0
  300. package/dist/leverage/instructions.d.ts +43 -0
  301. package/dist/leverage/instructions.js +103 -0
  302. package/dist/leverage/instructions.js.map +1 -0
  303. package/dist/leverage/operations.d.ts +231 -0
  304. package/dist/leverage/operations.js +1058 -0
  305. package/dist/leverage/operations.js.map +1 -0
  306. package/dist/leverage/utils.d.ts +22 -0
  307. package/dist/leverage/utils.js +144 -0
  308. package/dist/leverage/utils.js.map +1 -0
  309. package/dist/lib.d.ts +9 -0
  310. package/dist/lib.js +26 -0
  311. package/dist/lib.js.map +1 -0
  312. package/dist/referrals/index.d.ts +2 -0
  313. package/dist/referrals/index.js +19 -0
  314. package/dist/referrals/index.js.map +1 -0
  315. package/dist/referrals/instructions.d.ts +16 -0
  316. package/dist/referrals/instructions.js +76 -0
  317. package/dist/referrals/instructions.js.map +1 -0
  318. package/dist/referrals/operations.d.ts +97 -0
  319. package/dist/referrals/operations.js +258 -0
  320. package/dist/referrals/operations.js.map +1 -0
  321. package/dist/utils/ObligationType.d.ts +49 -0
  322. package/dist/utils/ObligationType.js +129 -0
  323. package/dist/utils/ObligationType.js.map +1 -0
  324. package/dist/utils/api.d.ts +6 -0
  325. package/dist/utils/api.js +61 -0
  326. package/dist/utils/api.js.map +1 -0
  327. package/dist/utils/ata.d.ts +25 -0
  328. package/dist/utils/ata.js +155 -0
  329. package/dist/utils/ata.js.map +1 -0
  330. package/dist/utils/constants.d.ts +48 -0
  331. package/dist/utils/constants.js +75 -0
  332. package/dist/utils/constants.js.map +1 -0
  333. package/dist/utils/idl.d.ts +2 -0
  334. package/dist/utils/idl.js +9 -0
  335. package/dist/utils/idl.js.map +1 -0
  336. package/dist/utils/index.d.ts +14 -0
  337. package/dist/utils/index.js +31 -0
  338. package/dist/utils/index.js.map +1 -0
  339. package/dist/utils/instruction.d.ts +22 -0
  340. package/dist/utils/instruction.js +202 -0
  341. package/dist/utils/instruction.js.map +1 -0
  342. package/dist/utils/kamino.d.ts +3 -0
  343. package/dist/utils/kamino.js +45 -0
  344. package/dist/utils/kamino.js.map +1 -0
  345. package/dist/utils/layout.d.ts +13 -0
  346. package/dist/utils/layout.js +123 -0
  347. package/dist/utils/layout.js.map +1 -0
  348. package/dist/utils/lookupTable.d.ts +5 -0
  349. package/dist/utils/lookupTable.js +57 -0
  350. package/dist/utils/lookupTable.js.map +1 -0
  351. package/dist/utils/oracle.d.ts +51 -0
  352. package/dist/utils/oracle.js +295 -0
  353. package/dist/utils/oracle.js.map +1 -0
  354. package/dist/utils/pubkey.d.ts +74 -0
  355. package/dist/utils/pubkey.js +229 -0
  356. package/dist/utils/pubkey.js.map +1 -0
  357. package/dist/utils/seeds.d.ts +122 -0
  358. package/dist/utils/seeds.js +153 -0
  359. package/dist/utils/seeds.js.map +1 -0
  360. package/dist/utils/slots.d.ts +18 -0
  361. package/dist/utils/slots.js +32 -0
  362. package/dist/utils/slots.js.map +1 -0
  363. package/dist/utils/syncNative.d.ts +10 -0
  364. package/dist/utils/syncNative.js +46 -0
  365. package/dist/utils/syncNative.js.map +1 -0
  366. package/dist/utils/userMetadata.d.ts +15 -0
  367. package/dist/utils/userMetadata.js +259 -0
  368. package/dist/utils/userMetadata.js.map +1 -0
  369. package/package.json +94 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/idl_codegen_jupiter_perps/types/index.ts"],"names":[],"mappings":";;;AAAA,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AAEb,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAEhB,iCAAgC;AAAvB,8FAAA,KAAK,OAAA","sourcesContent":["export { Fees } from './Fees';\nexport type { FeesFields, FeesJSON } from './Fees';\nexport { PoolApr } from './PoolApr';\nexport type { PoolAprFields, PoolAprJSON } from './PoolApr';\nexport { Limit } from './Limit';\nexport type { LimitFields, LimitJSON } from './Limit';\n"]}
@@ -0,0 +1 @@
1
+ export * from './lib';
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./lib"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB","sourcesContent":["export * from './lib';\n"]}
@@ -0,0 +1,2 @@
1
+ export * from './repay_with_collateral_operations';
2
+ export * from './repay_with_collateral_calcs';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./repay_with_collateral_operations"), exports);
18
+ __exportStar(require("./repay_with_collateral_calcs"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lending_operations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAmD;AACnD,gEAA8C","sourcesContent":["export * from './repay_with_collateral_operations';\nexport * from './repay_with_collateral_calcs';\n"]}
@@ -0,0 +1,5 @@
1
+ import Decimal from 'decimal.js';
2
+ export declare function estimateDebtRepaymentWithColl(collAmount: Decimal, // in decimals
3
+ priceDebtToColl: Decimal, slippagePct: Decimal, flashBorrowReserveFlashLoanFeePercentage: Decimal): Decimal;
4
+ export declare function estimateCollNeededForDebtRepayment(debtAmount: Decimal, // in decimals
5
+ priceDebtToColl: Decimal, slippagePct: Decimal, flashBorrowReserveFlashLoanFeePercentage: Decimal): Decimal;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.estimateCollNeededForDebtRepayment = exports.estimateDebtRepaymentWithColl = void 0;
7
+ const decimal_js_1 = __importDefault(require("decimal.js"));
8
+ function estimateDebtRepaymentWithColl(collAmount, // in decimals
9
+ priceDebtToColl, slippagePct, flashBorrowReserveFlashLoanFeePercentage) {
10
+ const slippage = slippagePct.div('100');
11
+ const flashLoanFee = flashBorrowReserveFlashLoanFeePercentage.div('100');
12
+ const debtAfterSwap = collAmount.div(new decimal_js_1.default(1.0).add(slippage)).div(priceDebtToColl);
13
+ const debtAfterFlashLoanRepay = debtAfterSwap.div(new decimal_js_1.default(1.0).add(flashLoanFee));
14
+ return debtAfterFlashLoanRepay;
15
+ }
16
+ exports.estimateDebtRepaymentWithColl = estimateDebtRepaymentWithColl;
17
+ function estimateCollNeededForDebtRepayment(debtAmount, // in decimals
18
+ priceDebtToColl, slippagePct, flashBorrowReserveFlashLoanFeePercentage) {
19
+ const slippage = slippagePct.div('100');
20
+ const flashLoanFee = flashBorrowReserveFlashLoanFeePercentage.div('100');
21
+ const debtFlashLoanRepay = debtAmount.mul(new decimal_js_1.default(1.0).add(flashLoanFee));
22
+ const collToSwap = debtFlashLoanRepay.mul(new decimal_js_1.default(1.0).add(slippage)).mul(priceDebtToColl);
23
+ return collToSwap;
24
+ }
25
+ exports.estimateCollNeededForDebtRepayment = estimateCollNeededForDebtRepayment;
26
+ //# sourceMappingURL=repay_with_collateral_calcs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repay_with_collateral_calcs.js","sourceRoot":"","sources":["../../src/lending_operations/repay_with_collateral_calcs.ts"],"names":[],"mappings":";;;;;;AAAA,4DAAiC;AAEjC,SAAgB,6BAA6B,CAC3C,UAAmB,EAAE,cAAc;AACnC,eAAwB,EACxB,WAAoB,EACpB,wCAAiD;IAEjD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,wCAAwC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEzE,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,oBAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC1F,MAAM,uBAAuB,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,oBAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IAEtF,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAbD,sEAaC;AAED,SAAgB,kCAAkC,CAChD,UAAmB,EAAE,cAAc;AACnC,eAAwB,EACxB,WAAoB,EACpB,wCAAiD;IAEjD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,wCAAwC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEzE,MAAM,kBAAkB,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,oBAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,oBAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAE/F,OAAO,UAAU,CAAC;AACpB,CAAC;AAbD,gFAaC","sourcesContent":["import Decimal from 'decimal.js';\n\nexport function estimateDebtRepaymentWithColl(\n collAmount: Decimal, // in decimals\n priceDebtToColl: Decimal,\n slippagePct: Decimal,\n flashBorrowReserveFlashLoanFeePercentage: Decimal\n): Decimal {\n const slippage = slippagePct.div('100');\n const flashLoanFee = flashBorrowReserveFlashLoanFeePercentage.div('100');\n\n const debtAfterSwap = collAmount.div(new Decimal(1.0).add(slippage)).div(priceDebtToColl);\n const debtAfterFlashLoanRepay = debtAfterSwap.div(new Decimal(1.0).add(flashLoanFee));\n\n return debtAfterFlashLoanRepay;\n}\n\nexport function estimateCollNeededForDebtRepayment(\n debtAmount: Decimal, // in decimals\n priceDebtToColl: Decimal,\n slippagePct: Decimal,\n flashBorrowReserveFlashLoanFeePercentage: Decimal\n): Decimal {\n const slippage = slippagePct.div('100');\n const flashLoanFee = flashBorrowReserveFlashLoanFeePercentage.div('100');\n\n const debtFlashLoanRepay = debtAmount.mul(new Decimal(1.0).add(flashLoanFee));\n const collToSwap = debtFlashLoanRepay.mul(new Decimal(1.0).add(slippage)).mul(priceDebtToColl);\n\n return collToSwap;\n}\n"]}
@@ -0,0 +1,47 @@
1
+ import { KaminoMarket, KaminoObligation } from '../classes';
2
+ import { SwapInputs, SwapIxnsProvider } from '../leverage';
3
+ import { PublicKey, TransactionInstruction } from '@solana/web3.js';
4
+ import Decimal from 'decimal.js';
5
+ export declare const repayWithCollCalcs: (props: {
6
+ repayAmount: Decimal;
7
+ priceDebtToColl: Decimal;
8
+ slippagePct: Decimal;
9
+ flashLoanFee: Decimal;
10
+ }) => {
11
+ repayAmount: Decimal;
12
+ collToSwapIn: Decimal;
13
+ swapDebtExpectedOut: Decimal;
14
+ };
15
+ export declare const getRepayWithCollSwapInputs: (props: {
16
+ repayAmount: Decimal;
17
+ priceDebtToColl: Decimal;
18
+ slippagePct: Decimal;
19
+ kaminoMarket: KaminoMarket;
20
+ debtTokenMint: PublicKey;
21
+ collTokenMint: PublicKey;
22
+ obligation: KaminoObligation;
23
+ currentSlot: number;
24
+ }) => {
25
+ swapInputs: SwapInputs;
26
+ };
27
+ export declare const getRepayWithCollIxns: (props: {
28
+ kaminoMarket: KaminoMarket;
29
+ budgetAndPriorityFeeIxns: TransactionInstruction[];
30
+ amount: Decimal;
31
+ debtTokenMint: PublicKey;
32
+ collTokenMint: PublicKey;
33
+ owner: PublicKey;
34
+ priceDebtToColl: Decimal;
35
+ slippagePct: Decimal;
36
+ isClosingPosition: boolean;
37
+ obligation: KaminoObligation;
38
+ referrer: PublicKey;
39
+ swapper: SwapIxnsProvider;
40
+ currentSlot: number;
41
+ getTotalKlendAccountsOnly: boolean;
42
+ }) => Promise<{
43
+ ixns: TransactionInstruction[];
44
+ lookupTablesAddresses: PublicKey[];
45
+ swapInputs: SwapInputs;
46
+ totalKlendAccounts: number;
47
+ }>;
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.getRepayWithCollIxns = exports.getRepayWithCollSwapInputs = exports.repayWithCollCalcs = void 0;
16
+ const classes_1 = require("../classes");
17
+ const leverage_1 = require("../leverage");
18
+ const utils_1 = require("../utils");
19
+ const web3_js_1 = require("@solana/web3.js");
20
+ const decimal_js_1 = __importDefault(require("decimal.js"));
21
+ const repayWithCollCalcs = (props) => {
22
+ // Initialize local variables from the props object
23
+ const { repayAmount, priceDebtToColl, slippagePct, flashLoanFee } = props;
24
+ const slippage = slippagePct.div('100');
25
+ const swapDebtExpectedOut = repayAmount.mul(new decimal_js_1.default(1.0).add(flashLoanFee));
26
+ const collToSwapIn = swapDebtExpectedOut.mul(new decimal_js_1.default(1.0).add(slippage)).mul(priceDebtToColl);
27
+ return {
28
+ repayAmount,
29
+ collToSwapIn,
30
+ swapDebtExpectedOut,
31
+ };
32
+ };
33
+ exports.repayWithCollCalcs = repayWithCollCalcs;
34
+ const getRepayWithCollSwapInputs = (props) => {
35
+ const { repayAmount, priceDebtToColl, slippagePct, kaminoMarket, debtTokenMint, collTokenMint, obligation, currentSlot, } = props;
36
+ const collReserve = kaminoMarket.getReserveByMint(collTokenMint);
37
+ const debtReserve = kaminoMarket.getReserveByMint(debtTokenMint);
38
+ const flashLoanFee = (debtReserve === null || debtReserve === void 0 ? void 0 : debtReserve.getFlashLoanFee()) || new decimal_js_1.default(0);
39
+ const irSlippageBpsForDebt = obligation
40
+ .estimateObligationInterestRate(debtReserve, obligation === null || obligation === void 0 ? void 0 : obligation.state.borrows.find((borrow) => { var _a; return (_a = borrow.borrowReserve) === null || _a === void 0 ? void 0 : _a.equals(debtReserve.address); }), currentSlot)
41
+ .toDecimalPlaces(debtReserve === null || debtReserve === void 0 ? void 0 : debtReserve.state.liquidity.mintDecimals.toNumber(), decimal_js_1.default.ROUND_CEIL);
42
+ // add 0.1 to irSlippageBpsForDebt because we don't want to estimate slightly less than SC and end up not reapying enough
43
+ const repayAmountIrAdjusted = repayAmount
44
+ .mul(irSlippageBpsForDebt.add('0.1').div('10_000').add('1'))
45
+ .toDecimalPlaces(debtReserve === null || debtReserve === void 0 ? void 0 : debtReserve.state.liquidity.mintDecimals.toNumber(), decimal_js_1.default.ROUND_CEIL);
46
+ const repayCalcs = (0, exports.repayWithCollCalcs)({
47
+ repayAmount: repayAmountIrAdjusted,
48
+ priceDebtToColl,
49
+ slippagePct,
50
+ flashLoanFee,
51
+ });
52
+ return {
53
+ swapInputs: {
54
+ inputAmountLamports: (0, classes_1.numberToLamportsDecimal)(repayCalcs.collToSwapIn, collReserve.stats.decimals)
55
+ .ceil()
56
+ .toNumber(),
57
+ inputMint: collTokenMint,
58
+ outputMint: debtTokenMint,
59
+ },
60
+ };
61
+ };
62
+ exports.getRepayWithCollSwapInputs = getRepayWithCollSwapInputs;
63
+ const getRepayWithCollIxns = (props) => __awaiter(void 0, void 0, void 0, function* () {
64
+ const { kaminoMarket, budgetAndPriorityFeeIxns, amount, debtTokenMint, collTokenMint, owner, priceDebtToColl, slippagePct, isClosingPosition, obligation, referrer, swapper, currentSlot, getTotalKlendAccountsOnly, } = props;
65
+ const connection = kaminoMarket.getConnection();
66
+ const collReserve = kaminoMarket.getReserveByMint(collTokenMint);
67
+ const debtReserve = kaminoMarket.getReserveByMint(debtTokenMint);
68
+ // const solTokenReserve = kaminoMarket.getReserveByMint(WRAPPED_SOL_MINT);
69
+ const flashLoanFee = (debtReserve === null || debtReserve === void 0 ? void 0 : debtReserve.getFlashLoanFee()) || new decimal_js_1.default(0);
70
+ const irSlippageBpsForDebt = obligation
71
+ .estimateObligationInterestRate(debtReserve, obligation === null || obligation === void 0 ? void 0 : obligation.state.borrows.find((borrow) => { var _a; return (_a = borrow.borrowReserve) === null || _a === void 0 ? void 0 : _a.equals(debtReserve.address); }), currentSlot)
72
+ .toDecimalPlaces(debtReserve === null || debtReserve === void 0 ? void 0 : debtReserve.state.liquidity.mintDecimals.toNumber(), decimal_js_1.default.ROUND_CEIL);
73
+ // add 0.1 to irSlippageBpsForDebt because we don't want to estimate slightly less than SC and end up not reapying enough
74
+ const repayAmount = amount
75
+ .mul(irSlippageBpsForDebt.add('0.1').div('10_000').add('1'))
76
+ .toDecimalPlaces(debtReserve === null || debtReserve === void 0 ? void 0 : debtReserve.state.liquidity.mintDecimals.toNumber(), decimal_js_1.default.ROUND_CEIL);
77
+ const calcs = (0, exports.repayWithCollCalcs)({
78
+ repayAmount,
79
+ priceDebtToColl,
80
+ slippagePct,
81
+ flashLoanFee,
82
+ });
83
+ console.log('repayWithCollSwapInputs', repayAmount, priceDebtToColl, slippagePct, flashLoanFee);
84
+ console.log('Ops Calcs', (0, leverage_1.toJson)(calcs));
85
+ // // 1. Create atas & budget txns
86
+ const mintsToCreateAtas = [collTokenMint, debtTokenMint, collReserve.getCTokenMint()];
87
+ const budgetIxns = budgetAndPriorityFeeIxns || (0, utils_1.getComputeBudgetAndPriorityFeeIxns)(3000000);
88
+ const { atas: [, debtTokenAta], createAtasIxns, closeAtasIxns, } = yield (0, utils_1.getAtasWithCreateIxnsIfMissing)(connection, owner, mintsToCreateAtas);
89
+ // 1. Flash borrow & repay the debt to repay amount needed
90
+ const { flashBorrowIxn, flashRepayIxn } = (0, leverage_1.getFlashLoanInstructions)({
91
+ borrowIxnIndex: budgetIxns.length + createAtasIxns.length,
92
+ walletPublicKey: owner,
93
+ lendingMarketAuthority: kaminoMarket.getLendingMarketAuthority(),
94
+ lendingMarketAddress: kaminoMarket.getAddress(),
95
+ reserve: debtReserve,
96
+ amountLamports: (0, classes_1.numberToLamportsDecimal)(repayAmount, debtReserve.stats.decimals).floor(),
97
+ destinationAta: debtTokenAta,
98
+ referrerAccount: kaminoMarket.programId,
99
+ referrerTokenState: kaminoMarket.programId,
100
+ programId: kaminoMarket.programId,
101
+ });
102
+ // 2. Repay using the flash borrowed funds & withdraw collateral to swap and pay the flash loan
103
+ const repayAndWithdrawAction = yield classes_1.KaminoAction.buildRepayAndWithdrawTxns(kaminoMarket, isClosingPosition ? utils_1.U64_MAX : (0, classes_1.numberToLamportsDecimal)(repayAmount, debtReserve.stats.decimals).floor().toString(), new web3_js_1.PublicKey(debtTokenMint), isClosingPosition
104
+ ? utils_1.U64_MAX
105
+ : (0, classes_1.numberToLamportsDecimal)(calcs.collToSwapIn, collReserve.stats.decimals).ceil().toString(), new web3_js_1.PublicKey(collTokenMint), owner, currentSlot, obligation, 0, false, undefined, undefined, isClosingPosition, referrer);
106
+ const ixns = [
107
+ ...budgetIxns,
108
+ ...createAtasIxns,
109
+ ...[flashBorrowIxn],
110
+ ...repayAndWithdrawAction.setupIxs,
111
+ ...[repayAndWithdrawAction.lendingIxs[0]],
112
+ ...repayAndWithdrawAction.inBetweenIxs,
113
+ ...[repayAndWithdrawAction.lendingIxs[1]],
114
+ ...repayAndWithdrawAction.cleanupIxs,
115
+ ...[flashRepayIxn],
116
+ ...closeAtasIxns,
117
+ ];
118
+ const uniqueAccounts = new utils_1.PublicKeySet([]);
119
+ ixns.forEach((ixn) => {
120
+ ixn.keys.forEach((key) => {
121
+ uniqueAccounts.add(key.pubkey);
122
+ });
123
+ });
124
+ const totalKlendAccounts = uniqueAccounts.toArray().length;
125
+ // return early to avoid extra swapper calls
126
+ if (getTotalKlendAccountsOnly) {
127
+ return {
128
+ ixns: [],
129
+ lookupTablesAddresses: [],
130
+ swapInputs: { inputAmountLamports: 0, inputMint: web3_js_1.PublicKey.default, outputMint: web3_js_1.PublicKey.default },
131
+ totalKlendAccounts: totalKlendAccounts,
132
+ };
133
+ }
134
+ console.log('Expected to swap in', calcs.collToSwapIn.toString(), 'coll for', calcs.swapDebtExpectedOut.toString(), 'debt');
135
+ const swapInputs = {
136
+ inputAmountLamports: (0, classes_1.numberToLamportsDecimal)(calcs.collToSwapIn, collReserve.stats.decimals).ceil().toNumber(),
137
+ inputMint: collTokenMint,
138
+ outputMint: debtTokenMint,
139
+ };
140
+ // 3. Swap collateral to debt to repay flash loan
141
+ const [swapIxns, lookupTablesAddresses] = yield swapper(swapInputs.inputAmountLamports, swapInputs.inputMint, swapInputs.outputMint, slippagePct.toNumber());
142
+ const swapInstructions = (0, utils_1.removeBudgetAndAtaIxns)(swapIxns, []);
143
+ return {
144
+ ixns: [
145
+ ...budgetIxns,
146
+ ...createAtasIxns,
147
+ ...[flashBorrowIxn],
148
+ ...repayAndWithdrawAction.setupIxs,
149
+ ...[repayAndWithdrawAction.lendingIxs[0]],
150
+ ...repayAndWithdrawAction.inBetweenIxs,
151
+ ...[repayAndWithdrawAction.lendingIxs[1]],
152
+ ...repayAndWithdrawAction.cleanupIxs,
153
+ ...swapInstructions,
154
+ ...[flashRepayIxn],
155
+ ...closeAtasIxns,
156
+ ],
157
+ lookupTablesAddresses,
158
+ swapInputs,
159
+ totalKlendAccounts,
160
+ };
161
+ });
162
+ exports.getRepayWithCollIxns = getRepayWithCollIxns;
163
+ //# sourceMappingURL=repay_with_collateral_operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repay_with_collateral_operations.js","sourceRoot":"","sources":["../../src/lending_operations/repay_with_collateral_operations.ts"],"names":[],"mappings":"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","sourcesContent":["import { KaminoAction, KaminoMarket, KaminoObligation, numberToLamportsDecimal } from '../classes';\nimport { SwapInputs, SwapIxnsProvider, getFlashLoanInstructions, toJson } from '../leverage';\nimport {\n PublicKeySet,\n U64_MAX,\n getAtasWithCreateIxnsIfMissing,\n getComputeBudgetAndPriorityFeeIxns,\n removeBudgetAndAtaIxns,\n} from '../utils';\nimport { PublicKey, TransactionInstruction } from '@solana/web3.js';\nimport Decimal from 'decimal.js';\n\nexport const repayWithCollCalcs = (props: {\n repayAmount: Decimal;\n priceDebtToColl: Decimal;\n slippagePct: Decimal;\n flashLoanFee: Decimal;\n}): {\n repayAmount: Decimal;\n collToSwapIn: Decimal;\n swapDebtExpectedOut: Decimal;\n} => {\n // Initialize local variables from the props object\n const { repayAmount, priceDebtToColl, slippagePct, flashLoanFee } = props;\n\n const slippage = slippagePct.div('100');\n\n const swapDebtExpectedOut = repayAmount.mul(new Decimal(1.0).add(flashLoanFee));\n const collToSwapIn = swapDebtExpectedOut.mul(new Decimal(1.0).add(slippage)).mul(priceDebtToColl);\n\n return {\n repayAmount,\n collToSwapIn,\n swapDebtExpectedOut,\n };\n};\n\nexport const getRepayWithCollSwapInputs = (props: {\n repayAmount: Decimal;\n priceDebtToColl: Decimal;\n slippagePct: Decimal;\n kaminoMarket: KaminoMarket;\n debtTokenMint: PublicKey;\n collTokenMint: PublicKey;\n obligation: KaminoObligation;\n currentSlot: number;\n}): {\n swapInputs: SwapInputs;\n} => {\n const {\n repayAmount,\n priceDebtToColl,\n slippagePct,\n kaminoMarket,\n debtTokenMint,\n collTokenMint,\n obligation,\n currentSlot,\n } = props;\n const collReserve = kaminoMarket.getReserveByMint(collTokenMint);\n const debtReserve = kaminoMarket.getReserveByMint(debtTokenMint);\n const flashLoanFee = debtReserve?.getFlashLoanFee() || new Decimal(0);\n\n const irSlippageBpsForDebt = obligation!\n .estimateObligationInterestRate(\n debtReserve!,\n obligation?.state.borrows.find((borrow) => borrow.borrowReserve?.equals(debtReserve!.address))!,\n currentSlot\n )\n .toDecimalPlaces(debtReserve?.state.liquidity.mintDecimals.toNumber()!, Decimal.ROUND_CEIL);\n // add 0.1 to irSlippageBpsForDebt because we don't want to estimate slightly less than SC and end up not reapying enough\n const repayAmountIrAdjusted = repayAmount\n .mul(irSlippageBpsForDebt.add('0.1').div('10_000').add('1'))\n .toDecimalPlaces(debtReserve?.state.liquidity.mintDecimals.toNumber()!, Decimal.ROUND_CEIL);\n\n const repayCalcs = repayWithCollCalcs({\n repayAmount: repayAmountIrAdjusted,\n priceDebtToColl,\n slippagePct,\n flashLoanFee,\n });\n\n return {\n swapInputs: {\n inputAmountLamports: numberToLamportsDecimal(repayCalcs.collToSwapIn, collReserve!.stats.decimals)\n .ceil()\n .toNumber(),\n inputMint: collTokenMint,\n outputMint: debtTokenMint,\n },\n };\n};\n\nexport const getRepayWithCollIxns = async (props: {\n kaminoMarket: KaminoMarket;\n budgetAndPriorityFeeIxns: TransactionInstruction[];\n amount: Decimal;\n debtTokenMint: PublicKey;\n collTokenMint: PublicKey;\n owner: PublicKey;\n priceDebtToColl: Decimal;\n slippagePct: Decimal;\n isClosingPosition: boolean;\n obligation: KaminoObligation;\n referrer: PublicKey;\n swapper: SwapIxnsProvider;\n currentSlot: number;\n getTotalKlendAccountsOnly: boolean;\n}): Promise<{\n ixns: TransactionInstruction[];\n lookupTablesAddresses: PublicKey[];\n swapInputs: SwapInputs;\n totalKlendAccounts: number;\n}> => {\n const {\n kaminoMarket,\n budgetAndPriorityFeeIxns,\n amount,\n debtTokenMint,\n collTokenMint,\n owner,\n priceDebtToColl,\n slippagePct,\n isClosingPosition,\n obligation,\n referrer,\n swapper,\n currentSlot,\n getTotalKlendAccountsOnly,\n } = props;\n\n const connection = kaminoMarket.getConnection();\n const collReserve = kaminoMarket.getReserveByMint(collTokenMint);\n const debtReserve = kaminoMarket.getReserveByMint(debtTokenMint);\n // const solTokenReserve = kaminoMarket.getReserveByMint(WRAPPED_SOL_MINT);\n const flashLoanFee = debtReserve?.getFlashLoanFee() || new Decimal(0);\n\n const irSlippageBpsForDebt = obligation!\n .estimateObligationInterestRate(\n debtReserve!,\n obligation?.state.borrows.find((borrow) => borrow.borrowReserve?.equals(debtReserve!.address))!,\n currentSlot\n )\n .toDecimalPlaces(debtReserve?.state.liquidity.mintDecimals.toNumber()!, Decimal.ROUND_CEIL);\n // add 0.1 to irSlippageBpsForDebt because we don't want to estimate slightly less than SC and end up not reapying enough\n const repayAmount = amount\n .mul(irSlippageBpsForDebt.add('0.1').div('10_000').add('1'))\n .toDecimalPlaces(debtReserve?.state.liquidity.mintDecimals.toNumber()!, Decimal.ROUND_CEIL);\n\n const calcs = repayWithCollCalcs({\n repayAmount,\n priceDebtToColl,\n slippagePct,\n flashLoanFee,\n });\n\n console.log('repayWithCollSwapInputs', repayAmount, priceDebtToColl, slippagePct, flashLoanFee);\n\n console.log('Ops Calcs', toJson(calcs));\n\n // // 1. Create atas & budget txns\n const mintsToCreateAtas = [collTokenMint, debtTokenMint, collReserve!.getCTokenMint()];\n\n const budgetIxns = budgetAndPriorityFeeIxns || getComputeBudgetAndPriorityFeeIxns(3000000);\n const {\n atas: [, debtTokenAta],\n createAtasIxns,\n closeAtasIxns,\n } = await getAtasWithCreateIxnsIfMissing(connection, owner, mintsToCreateAtas);\n\n // 1. Flash borrow & repay the debt to repay amount needed\n const { flashBorrowIxn, flashRepayIxn } = getFlashLoanInstructions({\n borrowIxnIndex: budgetIxns.length + createAtasIxns.length,\n walletPublicKey: owner,\n lendingMarketAuthority: kaminoMarket.getLendingMarketAuthority(),\n lendingMarketAddress: kaminoMarket.getAddress(),\n reserve: debtReserve!,\n amountLamports: numberToLamportsDecimal(repayAmount, debtReserve!.stats.decimals).floor(),\n destinationAta: debtTokenAta,\n referrerAccount: kaminoMarket.programId,\n referrerTokenState: kaminoMarket.programId,\n programId: kaminoMarket.programId,\n });\n\n // 2. Repay using the flash borrowed funds & withdraw collateral to swap and pay the flash loan\n const repayAndWithdrawAction = await KaminoAction.buildRepayAndWithdrawTxns(\n kaminoMarket,\n isClosingPosition ? U64_MAX : numberToLamportsDecimal(repayAmount, debtReserve!.stats.decimals).floor().toString(),\n new PublicKey(debtTokenMint),\n isClosingPosition\n ? U64_MAX\n : numberToLamportsDecimal(calcs.collToSwapIn, collReserve!.stats.decimals).ceil().toString(),\n new PublicKey(collTokenMint),\n owner,\n currentSlot,\n obligation,\n 0,\n false,\n undefined,\n undefined,\n isClosingPosition,\n referrer\n );\n\n const ixns = [\n ...budgetIxns,\n ...createAtasIxns,\n ...[flashBorrowIxn],\n ...repayAndWithdrawAction.setupIxs,\n ...[repayAndWithdrawAction.lendingIxs[0]],\n ...repayAndWithdrawAction.inBetweenIxs,\n ...[repayAndWithdrawAction.lendingIxs[1]],\n ...repayAndWithdrawAction.cleanupIxs,\n ...[flashRepayIxn],\n ...closeAtasIxns,\n ];\n\n const uniqueAccounts = new PublicKeySet<PublicKey>([]);\n ixns.forEach((ixn) => {\n ixn.keys.forEach((key) => {\n uniqueAccounts.add(key.pubkey);\n });\n });\n const totalKlendAccounts = uniqueAccounts.toArray().length;\n\n // return early to avoid extra swapper calls\n if (getTotalKlendAccountsOnly) {\n return {\n ixns: [],\n lookupTablesAddresses: [],\n swapInputs: { inputAmountLamports: 0, inputMint: PublicKey.default, outputMint: PublicKey.default },\n totalKlendAccounts: totalKlendAccounts,\n };\n }\n\n console.log(\n 'Expected to swap in',\n calcs.collToSwapIn.toString(),\n 'coll for',\n calcs.swapDebtExpectedOut.toString(),\n 'debt'\n );\n\n const swapInputs: SwapInputs = {\n inputAmountLamports: numberToLamportsDecimal(calcs.collToSwapIn, collReserve!.stats.decimals).ceil().toNumber(),\n inputMint: collTokenMint,\n outputMint: debtTokenMint,\n };\n\n // 3. Swap collateral to debt to repay flash loan\n const [swapIxns, lookupTablesAddresses] = await swapper(\n swapInputs.inputAmountLamports,\n swapInputs.inputMint,\n swapInputs.outputMint,\n slippagePct.toNumber()\n );\n\n const swapInstructions = removeBudgetAndAtaIxns(swapIxns, []);\n\n return {\n ixns: [\n ...budgetIxns,\n ...createAtasIxns,\n ...[flashBorrowIxn],\n ...repayAndWithdrawAction.setupIxs,\n ...[repayAndWithdrawAction.lendingIxs[0]],\n ...repayAndWithdrawAction.inBetweenIxs,\n ...[repayAndWithdrawAction.lendingIxs[1]],\n ...repayAndWithdrawAction.cleanupIxs,\n ...swapInstructions,\n ...[flashRepayIxn],\n ...closeAtasIxns,\n ],\n lookupTablesAddresses,\n swapInputs,\n totalKlendAccounts,\n };\n};\n"]}
@@ -0,0 +1,132 @@
1
+ import { PublicKey } from '@solana/web3.js';
2
+ import Decimal from 'decimal.js';
3
+ import { Kamino, StrategyWithAddress, TokenAmounts } from '@hubbleprotocol/kamino-sdk';
4
+ export declare const toJson: (object: any) => string;
5
+ export declare enum FormTabs {
6
+ deposit = "Deposit",
7
+ withdraw = "Withdraw",
8
+ adjust = "Adjust",
9
+ close = "Close"
10
+ }
11
+ export interface LeverageFormsCalcsArgs {
12
+ depositAmount: Decimal;
13
+ withdrawAmount: Decimal;
14
+ deposited: Decimal;
15
+ borrowed: Decimal;
16
+ debtTokenMint: PublicKey;
17
+ selectedTokenMint: PublicKey;
18
+ collTokenMint: PublicKey;
19
+ targetLeverage: Decimal;
20
+ activeTab: FormTabs;
21
+ flashBorrowReserveFlashLoanFeePercentage: Decimal;
22
+ debtBorrowFactorPct: Decimal;
23
+ priceCollToDebt: Decimal;
24
+ priceDebtToColl: Decimal;
25
+ }
26
+ export interface FormsCalcsResult {
27
+ earned: Decimal;
28
+ totalDeposited: Decimal;
29
+ totalBorrowed: Decimal;
30
+ netValue: Decimal;
31
+ netValueUsd: Decimal;
32
+ ltv: Decimal;
33
+ }
34
+ export declare function calculateMultiplyEffects(getPriceByTokenMintDecimal: (mint: PublicKey | string) => Decimal, { depositAmount, withdrawAmount, deposited, borrowed, debtTokenMint, selectedTokenMint, collTokenMint, targetLeverage, activeTab, flashBorrowReserveFlashLoanFeePercentage, debtBorrowFactorPct, priceCollToDebt, priceDebtToColl, }: LeverageFormsCalcsArgs): Promise<FormsCalcsResult>;
35
+ /**
36
+ * returns how much borrowToken will be borrowed to reach leverage given initial collateral amount
37
+ * @param depositTokenAmount
38
+ * @param leverage
39
+ * @param priceAToB
40
+ * @param flashBorrowFee
41
+ */
42
+ export declare const calcBorrowAmount: ({ depositTokenAmount, targetLeverage, priceCollToDebt, flashBorrowFee, }: {
43
+ depositTokenAmount: Decimal;
44
+ targetLeverage: Decimal;
45
+ priceCollToDebt: Decimal;
46
+ flashBorrowFee: Decimal;
47
+ }) => Decimal;
48
+ interface UseEstimateWithdrawAmountsProps {
49
+ priceCollToDebt: Decimal;
50
+ amount: Decimal.Value;
51
+ deposited: Decimal;
52
+ borrowed: Decimal;
53
+ collTokenMint: PublicKey;
54
+ selectedTokenMint: PublicKey;
55
+ }
56
+ export declare const estimateWithdrawMode: (props: UseEstimateWithdrawAmountsProps) => WithdrawResult;
57
+ export interface WithdrawParams {
58
+ currentBorrowPosition: Decimal;
59
+ currentDepositPosition: Decimal;
60
+ priceCollToDebt: Decimal;
61
+ withdrawAmount: Decimal;
62
+ selectedTokenMint: PublicKey;
63
+ collTokenMint: PublicKey;
64
+ }
65
+ interface WithdrawResult {
66
+ adjustDepositPosition: Decimal;
67
+ adjustBorrowPosition: Decimal;
68
+ }
69
+ export declare function calcWithdrawAmounts(params: WithdrawParams): WithdrawResult;
70
+ export declare const fuzzyEq: (a: Decimal.Value, b: Decimal.Value, epsilon?: number) => boolean;
71
+ interface UseEstimateAdjustAmountsProps {
72
+ targetLeverage: Decimal;
73
+ debtTokenMint: PublicKey;
74
+ collTokenMint: PublicKey;
75
+ totalDeposited: Decimal;
76
+ totalBorrowed: Decimal;
77
+ flashLoanFee: Decimal;
78
+ }
79
+ /**
80
+ * Calculate how much token will be deposited or withdrawn in case of position adjustment
81
+ * @param leverage
82
+ * @param totalDeposited
83
+ * @param totalBorrowed
84
+ */
85
+ export declare const estimateAdjustMode: (priceCollToDebt: Decimal, { targetLeverage, totalDeposited, totalBorrowed, flashLoanFee }: UseEstimateAdjustAmountsProps) => AdjustLeverageResult;
86
+ export interface AdjustLeverageParams {
87
+ targetLeverage: Decimal;
88
+ currentBorrowPosition: Decimal;
89
+ currentDepositPosition: Decimal;
90
+ priceCollToDebt: Decimal;
91
+ flashLoanFee: Decimal;
92
+ }
93
+ interface AdjustLeverageResult {
94
+ adjustDepositPosition: Decimal;
95
+ adjustBorrowPosition: Decimal;
96
+ }
97
+ /**
98
+ * Calculates the amounts of tokenA to deposit/withdraw and tokenB to borrow/repay proportionally to adjust the leverage of a position.
99
+ *
100
+ * @param {AdjustLeverageParams} params - Parameters for the calculation
101
+ * @param {number} params.targetLeverage - The target leverage for the position
102
+ * @param {Decimal} params.currentPositionTokenA - The current amount of tokenA in the position
103
+ * @param {Decimal} params.currentPositionTokenB - The current amount of borrowed tokenB in the position
104
+ * @param {number} params.priceAtoB - The conversion rate from tokenA to tokenB (tokenA price = tokenB price * priceAtoB)
105
+ * @returns {AdjustLeverageResult} An object containing the amounts of tokenA to deposit/withdraw and tokenB to borrow/repay
106
+ */
107
+ export declare function calcAdjustAmounts({ targetLeverage, currentBorrowPosition, currentDepositPosition, priceCollToDebt, flashLoanFee, }: AdjustLeverageParams): AdjustLeverageResult;
108
+ interface UseTransactionInfoStats {
109
+ priceCollToDebt: Decimal;
110
+ priceDebtToColl: Decimal;
111
+ amount: Decimal;
112
+ targetLeverage: Decimal;
113
+ selectedTokenMint: PublicKey;
114
+ collTokenMint: PublicKey;
115
+ flashLoanFee: Decimal;
116
+ slippagePct?: Decimal;
117
+ }
118
+ export declare const estimateDepositMode: ({ priceCollToDebt, priceDebtToColl, amount, targetLeverage, selectedTokenMint, collTokenMint, flashLoanFee, slippagePct, }: UseTransactionInfoStats) => {
119
+ adjustDepositPosition: number;
120
+ adjustBorrowPosition: number;
121
+ };
122
+ /**
123
+ * Given an amount of ktokens, returns the estimated amount of token A and token B that need to be deposited
124
+ * The amount of A and B may result in less ktokens being minted, the actual amount of ktokens minted is returned as well
125
+ * @param kamino
126
+ * @param strategy
127
+ * @param mintAmount - desired amount of ktokens to mint
128
+ * @param strategyHoldings - optional strategy holdings, if not provided will be fetched from the blockchain
129
+ * @returns [tokenA, tokenB, actualMintAmount]
130
+ */
131
+ export declare function simulateMintKToken(kamino: Kamino, strategy: StrategyWithAddress, mintAmount: Decimal, strategyHoldings?: TokenAmounts): Promise<[Decimal, Decimal, Decimal]>;
132
+ export {};