@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":"instructions.js","sourceRoot":"","sources":["../../src/referrals/instructions.ts"],"names":[],"mappings":"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","sourcesContent":["import { PublicKey, SYSVAR_RENT_PUBKEY, SystemProgram, TransactionInstruction, Connection } from '@solana/web3.js';\nimport { KaminoMarket } from '../classes';\nimport { checkIfAccountExists, referrerStatePda, referrerTokenStatePda, shortUrlPda, userMetadataPda } from '../utils';\nimport {\n PROGRAM_ID,\n ReferrerState,\n deleteReferrerStateAndShortUrl,\n initReferrerStateAndShortUrl,\n initReferrerTokenState,\n} from '../lib';\n\nexport const getInitAllReferrerTokenStateIxns = async ({\n referrer,\n kaminoMarket,\n}: {\n referrer: PublicKey;\n kaminoMarket: KaminoMarket;\n}) => {\n if (referrer.equals(PublicKey.default)) {\n throw new Error('Referrer not set');\n }\n\n await kaminoMarket.loadReserves();\n\n const initReferrerTokenStateIxns: TransactionInstruction[] = [];\n\n const tokenStatesToCreate: [PublicKey, PublicKey][] = [];\n for (const reserve of kaminoMarket.reserves.values()) {\n const referrerTokenStateAddress = referrerTokenStatePda(referrer, reserve.address, kaminoMarket.programId)[0];\n\n if (!(await checkIfAccountExists(kaminoMarket.getConnection(), referrerTokenStateAddress))) {\n tokenStatesToCreate.push([referrerTokenStateAddress, reserve?.address]);\n }\n }\n\n tokenStatesToCreate.forEach(([referrerTokenStateAddress, reserveAddress]) => {\n const initReferrerTokenStateIx = initReferrerTokenState(\n {\n referrer: referrer,\n },\n {\n lendingMarket: kaminoMarket.getAddress(),\n payer: referrer,\n reserve: reserveAddress,\n referrerTokenState: referrerTokenStateAddress,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId,\n }\n );\n\n initReferrerTokenStateIxns.push(initReferrerTokenStateIx);\n });\n\n return initReferrerTokenStateIxns;\n};\n\nexport const getInitReferrerStateAndShortUrlIxns = ({\n referrer,\n shortUrl,\n programId = PROGRAM_ID,\n}: {\n referrer: PublicKey;\n shortUrl: string;\n programId: PublicKey;\n}) => {\n const [referrerStateAddress] = referrerStatePda(referrer, programId);\n const [shortUrlAddress] = shortUrlPda(shortUrl, programId);\n\n const referrerUserMetadataAddress = userMetadataPda(referrer, programId)[0];\n\n const initReferrerStateAndShortUrlIx = initReferrerStateAndShortUrl(\n {\n shortUrl: shortUrl,\n },\n {\n referrer: referrer,\n referrerState: referrerStateAddress,\n referrerShortUrl: shortUrlAddress,\n referrerUserMetadata: referrerUserMetadataAddress,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId,\n },\n programId\n );\n\n return initReferrerStateAndShortUrlIx;\n};\n\n// TODO: 1 thing left before adding program id\nexport const getDeleteReferrerStateAndShortUrlIxns = async ({\n referrer,\n connection,\n programId = PROGRAM_ID,\n}: {\n referrer: PublicKey;\n connection: Connection;\n programId: PublicKey;\n}) => {\n const [referrerStateAddress] = referrerStatePda(referrer, programId);\n const referrerState = await ReferrerState.fetch(connection, referrerStateAddress, programId);\n\n const initReferrerStateAndShortUrlIx = deleteReferrerStateAndShortUrl(\n {\n referrer: referrer,\n referrerState: referrerStateAddress,\n shortUrl: referrerState!.shortUrl,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId,\n },\n programId\n );\n\n return initReferrerStateAndShortUrlIx;\n};\n"]}
@@ -0,0 +1,97 @@
1
+ import { Connection, Keypair, PublicKey } from '@solana/web3.js';
2
+ import { KaminoMarket } from '../classes';
3
+ import { UserMetadata } from '../lib';
4
+ import Decimal from 'decimal.js';
5
+ /**
6
+ * Initialize all referrer token states for a given referrer
7
+ * @param referrer
8
+ * @param kaminoMarket
9
+ */
10
+ export declare const initAllReferrerTokenStates: ({ referrer, kaminoMarket, }: {
11
+ referrer: Keypair;
12
+ kaminoMarket: KaminoMarket;
13
+ }) => Promise<string>;
14
+ /**
15
+ * Initialize referrer state and short url
16
+ * @param connection
17
+ * @param referrer
18
+ * @param shortUrl
19
+ */
20
+ export declare const createReferrerStateAndShortUrl: ({ connection, referrer, shortUrl, programId, }: {
21
+ connection: Connection;
22
+ referrer: Keypair;
23
+ shortUrl: string;
24
+ programId?: PublicKey | undefined;
25
+ }) => Promise<string>;
26
+ /**
27
+ * Initialize referrer state and short url
28
+ * @param connection
29
+ * @param referrer
30
+ * @param newShortUrl
31
+ */
32
+ export declare const updateReferrerStateAndShortUrl: ({ connection, referrer, newShortUrl, programId, }: {
33
+ connection: Connection;
34
+ referrer: Keypair;
35
+ newShortUrl: string;
36
+ programId?: PublicKey | undefined;
37
+ }) => Promise<string>;
38
+ /**
39
+ * Check if short URL available - also checks if short URL is valid (ascii-alphanumeric plus '_' '-', max 32 chars)
40
+ * @param connection
41
+ * @param shortUrl
42
+ * @param programId
43
+ */
44
+ export declare function isShortUrlAvailable(connection: Connection, shortUrl: string, programId?: PublicKey): Promise<boolean>;
45
+ /**
46
+ * Get referrer short URL address and shortUrl
47
+ * @param connection
48
+ * @param referrer
49
+ * @param programId
50
+ */
51
+ export declare function getReferrerShortUrl(connection: Connection, referrer: PublicKey, programId?: PublicKey): Promise<[PublicKey | null, string | null]>;
52
+ /**
53
+ * Get referrer for a given Short URL
54
+ * @param connection
55
+ * @param shortUrl
56
+ * @param programId
57
+ */
58
+ export declare function getReferrerForShortUrl(connection: Connection, shortUrl: string, programId?: PublicKey): Promise<PublicKey>;
59
+ /**
60
+ * Get referrer all UserMetadata user accounts linked to a given referrer
61
+ * @param connection
62
+ * @param referrer
63
+ * @param programId
64
+ */
65
+ export declare function getUserMetadatasByReferrer(connection: Connection, referrer: PublicKey, programId?: PublicKey): Promise<UserMetadata[]>;
66
+ /**
67
+ * Get referrer all UserMetadata user accounts
68
+ * @param connection
69
+ * @param referrer
70
+ * @param programId
71
+ */
72
+ export declare function getAllUserMetadatas(connection: Connection, programId?: PublicKey): Promise<UserMetadata[]>;
73
+ /**
74
+ * Get referrer all UserMetadata user accounts linked to a given referrer
75
+ * @param connection
76
+ * @param referrer
77
+ * @param programId
78
+ */
79
+ export declare function getTotalUsersReferred(connection: Connection, referrer: PublicKey, programId?: PublicKey): Promise<number>;
80
+ export type ReferralRank = {
81
+ referrer: PublicKey;
82
+ totalUsersReferred: number;
83
+ totalEarningsUsd: Decimal;
84
+ };
85
+ /**
86
+ * Get ReferralRank array of all referrers ordered by how much they've earned in USD
87
+ * @param connection
88
+ * @param kaminoMarket
89
+ */
90
+ export declare function getReferralsRanking(connection: Connection, kaminoMarket: KaminoMarket): Promise<ReferralRank[]>;
91
+ /**
92
+ * Get ReferralRank array of all referrers ordered by how much they've earned in USD
93
+ * @param connection
94
+ * @param user
95
+ * @param programId
96
+ */
97
+ export declare function getUserReferralRanking(connection: Connection, user: PublicKey, kaminoMarket: KaminoMarket): Promise<number | undefined>;
@@ -0,0 +1,258 @@
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.getUserReferralRanking = exports.getReferralsRanking = exports.getTotalUsersReferred = exports.getAllUserMetadatas = exports.getUserMetadatasByReferrer = exports.getReferrerForShortUrl = exports.getReferrerShortUrl = exports.isShortUrlAvailable = exports.updateReferrerStateAndShortUrl = exports.createReferrerStateAndShortUrl = exports.initAllReferrerTokenStates = void 0;
16
+ const web3_js_1 = require("@solana/web3.js");
17
+ const utils_1 = require("../utils");
18
+ const instructions_1 = require("./instructions");
19
+ const lib_1 = require("../lib");
20
+ const decimal_js_1 = __importDefault(require("decimal.js"));
21
+ /**
22
+ * Initialize all referrer token states for a given referrer
23
+ * @param referrer
24
+ * @param kaminoMarket
25
+ */
26
+ const initAllReferrerTokenStates = ({ referrer, kaminoMarket, }) => __awaiter(void 0, void 0, void 0, function* () {
27
+ const ixns = yield (0, instructions_1.getInitAllReferrerTokenStateIxns)({ referrer: referrer.publicKey, kaminoMarket });
28
+ const tx = yield (0, utils_1.buildVersionedTransaction)(kaminoMarket.getConnection(), referrer.publicKey, ixns);
29
+ console.log('Init Referral Token States');
30
+ return yield (0, utils_1.buildAndSendTxnWithLogs)(kaminoMarket.getConnection(), tx, referrer, [referrer]);
31
+ });
32
+ exports.initAllReferrerTokenStates = initAllReferrerTokenStates;
33
+ /**
34
+ * Initialize referrer state and short url
35
+ * @param connection
36
+ * @param referrer
37
+ * @param shortUrl
38
+ */
39
+ const createReferrerStateAndShortUrl = ({ connection, referrer, shortUrl, programId = lib_1.PROGRAM_ID, }) => __awaiter(void 0, void 0, void 0, function* () {
40
+ const ixn = (0, instructions_1.getInitReferrerStateAndShortUrlIxns)({ referrer: referrer.publicKey, shortUrl, programId });
41
+ const tx = yield (0, utils_1.buildVersionedTransaction)(connection, referrer.publicKey, [ixn]);
42
+ console.log('Init ReferrerState for referrer ' + referrer.publicKey.toBase58() + ' and shortUrl ' + shortUrl);
43
+ return yield (0, utils_1.buildAndSendTxnWithLogs)(connection, tx, referrer, [referrer]);
44
+ });
45
+ exports.createReferrerStateAndShortUrl = createReferrerStateAndShortUrl;
46
+ /**
47
+ * Initialize referrer state and short url
48
+ * @param connection
49
+ * @param referrer
50
+ * @param newShortUrl
51
+ */
52
+ const updateReferrerStateAndShortUrl = ({ connection, referrer, newShortUrl, programId = lib_1.PROGRAM_ID, }) => __awaiter(void 0, void 0, void 0, function* () {
53
+ const deleteIxn = yield (0, instructions_1.getDeleteReferrerStateAndShortUrlIxns)({
54
+ referrer: referrer.publicKey,
55
+ connection,
56
+ programId,
57
+ });
58
+ const initIxn = (0, instructions_1.getInitReferrerStateAndShortUrlIxns)({
59
+ referrer: referrer.publicKey,
60
+ shortUrl: newShortUrl,
61
+ programId,
62
+ });
63
+ const tx = yield (0, utils_1.buildVersionedTransaction)(connection, referrer.publicKey, [deleteIxn, initIxn]);
64
+ console.log('Update ReferrerState for referrer ' + referrer.publicKey.toBase58() + ' and shortUrl ' + newShortUrl);
65
+ return yield (0, utils_1.buildAndSendTxnWithLogs)(connection, tx, referrer, [referrer]);
66
+ });
67
+ exports.updateReferrerStateAndShortUrl = updateReferrerStateAndShortUrl;
68
+ /**
69
+ * Check if short URL available - also checks if short URL is valid (ascii-alphanumeric plus '_' '-', max 32 chars)
70
+ * @param connection
71
+ * @param shortUrl
72
+ * @param programId
73
+ */
74
+ function isShortUrlAvailable(connection, shortUrl, programId = lib_1.PROGRAM_ID) {
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ if (shortUrl.length > 32) {
77
+ return false;
78
+ }
79
+ if (!/^[a-zA-Z0-9-_]+$/.test(shortUrl)) {
80
+ return false;
81
+ }
82
+ const [shortUrlAddress] = (0, utils_1.shortUrlPda)(shortUrl, programId);
83
+ const info = yield connection.getAccountInfo(shortUrlAddress);
84
+ return info === null;
85
+ });
86
+ }
87
+ exports.isShortUrlAvailable = isShortUrlAvailable;
88
+ /**
89
+ * Get referrer short URL address and shortUrl
90
+ * @param connection
91
+ * @param referrer
92
+ * @param programId
93
+ */
94
+ function getReferrerShortUrl(connection, referrer, programId = lib_1.PROGRAM_ID) {
95
+ return __awaiter(this, void 0, void 0, function* () {
96
+ const [referrerStateAddress] = (0, utils_1.referrerStatePda)(referrer, programId);
97
+ const referrerState = yield lib_1.ReferrerState.fetch(connection, referrerStateAddress, programId);
98
+ const shortUrlState = yield lib_1.ShortUrl.fetch(connection, referrerState.shortUrl, programId);
99
+ const shortUrlAddress = referrerState ? referrerState.shortUrl : null;
100
+ const shortUrl = shortUrlState ? shortUrlState.shortUrl : null;
101
+ return [shortUrlAddress, shortUrl];
102
+ });
103
+ }
104
+ exports.getReferrerShortUrl = getReferrerShortUrl;
105
+ /**
106
+ * Get referrer for a given Short URL
107
+ * @param connection
108
+ * @param shortUrl
109
+ * @param programId
110
+ */
111
+ function getReferrerForShortUrl(connection, shortUrl, programId = lib_1.PROGRAM_ID) {
112
+ return __awaiter(this, void 0, void 0, function* () {
113
+ const [shortUrlAddress] = (0, utils_1.shortUrlPda)(shortUrl, programId);
114
+ const shortUrlState = yield lib_1.ShortUrl.fetch(connection, shortUrlAddress, programId);
115
+ return shortUrlState.referrer;
116
+ });
117
+ }
118
+ exports.getReferrerForShortUrl = getReferrerForShortUrl;
119
+ /**
120
+ * Get referrer all UserMetadata user accounts linked to a given referrer
121
+ * @param connection
122
+ * @param referrer
123
+ * @param programId
124
+ */
125
+ function getUserMetadatasByReferrer(connection, referrer, programId = lib_1.PROGRAM_ID) {
126
+ return __awaiter(this, void 0, void 0, function* () {
127
+ const userMetadatas = yield connection.getProgramAccounts(programId, {
128
+ filters: [
129
+ {
130
+ dataSize: lib_1.UserMetadata.layout.span + 8,
131
+ },
132
+ {
133
+ memcmp: {
134
+ offset: 8,
135
+ bytes: referrer.toBase58(),
136
+ },
137
+ },
138
+ ],
139
+ });
140
+ return userMetadatas.map((userMetadata) => {
141
+ if (userMetadata.account === null) {
142
+ throw new Error('Invalid account');
143
+ }
144
+ if (!userMetadata.account.owner.equals(programId)) {
145
+ throw new Error("account doesn't belong to this program");
146
+ }
147
+ const userMetadataAccount = lib_1.UserMetadata.decode(userMetadata.account.data);
148
+ if (!userMetadataAccount) {
149
+ throw Error('Could not parse obligation.');
150
+ }
151
+ return userMetadataAccount;
152
+ });
153
+ });
154
+ }
155
+ exports.getUserMetadatasByReferrer = getUserMetadatasByReferrer;
156
+ /**
157
+ * Get referrer all UserMetadata user accounts
158
+ * @param connection
159
+ * @param referrer
160
+ * @param programId
161
+ */
162
+ function getAllUserMetadatas(connection, programId = lib_1.PROGRAM_ID) {
163
+ return __awaiter(this, void 0, void 0, function* () {
164
+ const userMetadatas = yield connection.getProgramAccounts(programId, {
165
+ filters: [
166
+ {
167
+ dataSize: lib_1.UserMetadata.layout.span + 8,
168
+ },
169
+ ],
170
+ });
171
+ return userMetadatas.map((userMetadata) => {
172
+ if (userMetadata.account === null) {
173
+ throw new Error('Invalid account');
174
+ }
175
+ if (!userMetadata.account.owner.equals(programId)) {
176
+ throw new Error("account doesn't belong to this program");
177
+ }
178
+ const userMetadataAccount = lib_1.UserMetadata.decode(userMetadata.account.data);
179
+ if (!userMetadataAccount) {
180
+ throw Error('Could not parse obligation.');
181
+ }
182
+ return userMetadataAccount;
183
+ });
184
+ });
185
+ }
186
+ exports.getAllUserMetadatas = getAllUserMetadatas;
187
+ /**
188
+ * Get referrer all UserMetadata user accounts linked to a given referrer
189
+ * @param connection
190
+ * @param referrer
191
+ * @param programId
192
+ */
193
+ function getTotalUsersReferred(connection, referrer, programId = lib_1.PROGRAM_ID) {
194
+ return __awaiter(this, void 0, void 0, function* () {
195
+ const userMetadatas = yield getUserMetadatasByReferrer(connection, referrer, programId);
196
+ return userMetadatas.length;
197
+ });
198
+ }
199
+ exports.getTotalUsersReferred = getTotalUsersReferred;
200
+ /**
201
+ * Get ReferralRank array of all referrers ordered by how much they've earned in USD
202
+ * @param connection
203
+ * @param kaminoMarket
204
+ */
205
+ function getReferralsRanking(connection, kaminoMarket) {
206
+ return __awaiter(this, void 0, void 0, function* () {
207
+ const referrersUsersReferred = new utils_1.PublicKeyMap();
208
+ // counting users referred for each referrer
209
+ const userMetadatas = yield getAllUserMetadatas(connection, kaminoMarket.programId);
210
+ for (const userMetadata of userMetadatas) {
211
+ const referrer = userMetadata.referrer;
212
+ const usersReferred = referrersUsersReferred.get(referrer);
213
+ if (usersReferred) {
214
+ referrersUsersReferred.set(referrer, usersReferred + 1);
215
+ }
216
+ else {
217
+ referrersUsersReferred.set(referrer, 1);
218
+ }
219
+ }
220
+ const referralsRankArray = [];
221
+ for (const referrer of referrersUsersReferred.keys()) {
222
+ const referrerTokenStates = yield kaminoMarket.getAllReferrerFeesCumulative(referrer);
223
+ let totalEarningsUsd = new decimal_js_1.default(0);
224
+ // calculating earnings for each referrer
225
+ for (const reserve of kaminoMarket.reserves.values()) {
226
+ totalEarningsUsd = totalEarningsUsd.add(referrerTokenStates.get(reserve.getLiquidityMint()).mul(reserve.getReserveMarketPrice()));
227
+ }
228
+ referralsRankArray.push({
229
+ referrer: new web3_js_1.PublicKey(referrer),
230
+ totalUsersReferred: referrersUsersReferred.get(referrer),
231
+ totalEarningsUsd: totalEarningsUsd,
232
+ });
233
+ }
234
+ referralsRankArray.sort((a, b) => {
235
+ return b.totalEarningsUsd.comparedTo(a.totalEarningsUsd);
236
+ });
237
+ return referralsRankArray;
238
+ });
239
+ }
240
+ exports.getReferralsRanking = getReferralsRanking;
241
+ /**
242
+ * Get ReferralRank array of all referrers ordered by how much they've earned in USD
243
+ * @param connection
244
+ * @param user
245
+ * @param programId
246
+ */
247
+ function getUserReferralRanking(connection, user, kaminoMarket) {
248
+ return __awaiter(this, void 0, void 0, function* () {
249
+ const referralsRanking = yield getReferralsRanking(connection, kaminoMarket);
250
+ for (let index = 0; index < referralsRanking.length; index++) {
251
+ if (user.equals(referralsRanking[index].referrer)) {
252
+ return index + 1;
253
+ }
254
+ }
255
+ });
256
+ }
257
+ exports.getUserReferralRanking = getUserReferralRanking;
258
+ //# sourceMappingURL=operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/referrals/operations.ts"],"names":[],"mappings":"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","sourcesContent":["import { Connection, Keypair, PublicKey } from '@solana/web3.js';\nimport { KaminoMarket } from '../classes';\nimport {\n PublicKeyMap,\n buildAndSendTxnWithLogs,\n buildVersionedTransaction,\n referrerStatePda,\n shortUrlPda,\n} from '../utils';\nimport {\n getDeleteReferrerStateAndShortUrlIxns,\n getInitAllReferrerTokenStateIxns,\n getInitReferrerStateAndShortUrlIxns,\n} from './instructions';\nimport { PROGRAM_ID, UserMetadata, ReferrerState, ShortUrl } from '../lib';\nimport Decimal from 'decimal.js';\n\n/**\n * Initialize all referrer token states for a given referrer\n * @param referrer\n * @param kaminoMarket\n */\nexport const initAllReferrerTokenStates = async ({\n referrer,\n kaminoMarket,\n}: {\n referrer: Keypair;\n kaminoMarket: KaminoMarket;\n}) => {\n const ixns = await getInitAllReferrerTokenStateIxns({ referrer: referrer.publicKey, kaminoMarket });\n\n const tx = await buildVersionedTransaction(kaminoMarket.getConnection(), referrer.publicKey, ixns);\n\n console.log('Init Referral Token States');\n\n return await buildAndSendTxnWithLogs(kaminoMarket.getConnection(), tx, referrer, [referrer]);\n};\n\n/**\n * Initialize referrer state and short url\n * @param connection\n * @param referrer\n * @param shortUrl\n */\nexport const createReferrerStateAndShortUrl = async ({\n connection,\n referrer,\n shortUrl,\n programId = PROGRAM_ID,\n}: {\n connection: Connection;\n referrer: Keypair;\n shortUrl: string;\n programId?: PublicKey;\n}) => {\n const ixn = getInitReferrerStateAndShortUrlIxns({ referrer: referrer.publicKey, shortUrl, programId });\n\n const tx = await buildVersionedTransaction(connection, referrer.publicKey, [ixn]);\n\n console.log('Init ReferrerState for referrer ' + referrer.publicKey.toBase58() + ' and shortUrl ' + shortUrl);\n\n return await buildAndSendTxnWithLogs(connection, tx, referrer, [referrer]);\n};\n\n/**\n * Initialize referrer state and short url\n * @param connection\n * @param referrer\n * @param newShortUrl\n */\nexport const updateReferrerStateAndShortUrl = async ({\n connection,\n referrer,\n newShortUrl,\n programId = PROGRAM_ID,\n}: {\n connection: Connection;\n referrer: Keypair;\n newShortUrl: string;\n programId?: PublicKey;\n}) => {\n const deleteIxn = await getDeleteReferrerStateAndShortUrlIxns({\n referrer: referrer.publicKey,\n connection,\n programId,\n });\n\n const initIxn = getInitReferrerStateAndShortUrlIxns({\n referrer: referrer.publicKey,\n shortUrl: newShortUrl,\n programId,\n });\n\n const tx = await buildVersionedTransaction(connection, referrer.publicKey, [deleteIxn, initIxn]);\n\n console.log('Update ReferrerState for referrer ' + referrer.publicKey.toBase58() + ' and shortUrl ' + newShortUrl);\n\n return await buildAndSendTxnWithLogs(connection, tx, referrer, [referrer]);\n};\n\n/**\n * Check if short URL available - also checks if short URL is valid (ascii-alphanumeric plus '_' '-', max 32 chars)\n * @param connection\n * @param shortUrl\n * @param programId\n */\nexport async function isShortUrlAvailable(\n connection: Connection,\n shortUrl: string,\n programId: PublicKey = PROGRAM_ID\n): Promise<boolean> {\n if (shortUrl.length > 32) {\n return false;\n }\n\n if (!/^[a-zA-Z0-9-_]+$/.test(shortUrl)) {\n return false;\n }\n\n const [shortUrlAddress] = shortUrlPda(shortUrl, programId);\n const info = await connection.getAccountInfo(shortUrlAddress);\n return info === null;\n}\n\n/**\n * Get referrer short URL address and shortUrl\n * @param connection\n * @param referrer\n * @param programId\n */\nexport async function getReferrerShortUrl(\n connection: Connection,\n referrer: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): Promise<[PublicKey | null, string | null]> {\n const [referrerStateAddress] = referrerStatePda(referrer, programId);\n const referrerState = await ReferrerState.fetch(connection, referrerStateAddress, programId);\n const shortUrlState = await ShortUrl.fetch(connection, referrerState!.shortUrl, programId);\n const shortUrlAddress = referrerState ? referrerState.shortUrl : null;\n const shortUrl = shortUrlState ? shortUrlState.shortUrl : null;\n return [shortUrlAddress, shortUrl];\n}\n\n/**\n * Get referrer for a given Short URL\n * @param connection\n * @param shortUrl\n * @param programId\n */\nexport async function getReferrerForShortUrl(\n connection: Connection,\n shortUrl: string,\n programId: PublicKey = PROGRAM_ID\n): Promise<PublicKey> {\n const [shortUrlAddress] = shortUrlPda(shortUrl, programId);\n const shortUrlState = await ShortUrl.fetch(connection, shortUrlAddress, programId);\n return shortUrlState!.referrer;\n}\n\n/**\n * Get referrer all UserMetadata user accounts linked to a given referrer\n * @param connection\n * @param referrer\n * @param programId\n */\nexport async function getUserMetadatasByReferrer(\n connection: Connection,\n referrer: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): Promise<UserMetadata[]> {\n const userMetadatas = await connection.getProgramAccounts(programId, {\n filters: [\n {\n dataSize: UserMetadata.layout.span + 8,\n },\n {\n memcmp: {\n offset: 8,\n bytes: referrer.toBase58(),\n },\n },\n ],\n });\n\n return userMetadatas.map((userMetadata) => {\n if (userMetadata.account === null) {\n throw new Error('Invalid account');\n }\n if (!userMetadata.account.owner.equals(programId)) {\n throw new Error(\"account doesn't belong to this program\");\n }\n\n const userMetadataAccount = UserMetadata.decode(userMetadata.account.data);\n\n if (!userMetadataAccount) {\n throw Error('Could not parse obligation.');\n }\n\n return userMetadataAccount;\n });\n}\n\n/**\n * Get referrer all UserMetadata user accounts\n * @param connection\n * @param referrer\n * @param programId\n */\nexport async function getAllUserMetadatas(\n connection: Connection,\n programId: PublicKey = PROGRAM_ID\n): Promise<UserMetadata[]> {\n const userMetadatas = await connection.getProgramAccounts(programId, {\n filters: [\n {\n dataSize: UserMetadata.layout.span + 8,\n },\n ],\n });\n\n return userMetadatas.map((userMetadata) => {\n if (userMetadata.account === null) {\n throw new Error('Invalid account');\n }\n if (!userMetadata.account.owner.equals(programId)) {\n throw new Error(\"account doesn't belong to this program\");\n }\n\n const userMetadataAccount = UserMetadata.decode(userMetadata.account.data);\n\n if (!userMetadataAccount) {\n throw Error('Could not parse obligation.');\n }\n\n return userMetadataAccount;\n });\n}\n\n/**\n * Get referrer all UserMetadata user accounts linked to a given referrer\n * @param connection\n * @param referrer\n * @param programId\n */\nexport async function getTotalUsersReferred(\n connection: Connection,\n referrer: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): Promise<number> {\n const userMetadatas = await getUserMetadatasByReferrer(connection, referrer, programId);\n return userMetadatas.length;\n}\n\nexport type ReferralRank = {\n referrer: PublicKey;\n totalUsersReferred: number;\n totalEarningsUsd: Decimal;\n};\n\n/**\n * Get ReferralRank array of all referrers ordered by how much they've earned in USD\n * @param connection\n * @param kaminoMarket\n */\nexport async function getReferralsRanking(connection: Connection, kaminoMarket: KaminoMarket): Promise<ReferralRank[]> {\n const referrersUsersReferred = new PublicKeyMap<PublicKey, number>();\n\n // counting users referred for each referrer\n const userMetadatas = await getAllUserMetadatas(connection, kaminoMarket.programId);\n for (const userMetadata of userMetadatas) {\n const referrer = userMetadata.referrer;\n const usersReferred = referrersUsersReferred.get(referrer);\n if (usersReferred) {\n referrersUsersReferred.set(referrer, usersReferred + 1);\n } else {\n referrersUsersReferred.set(referrer, 1);\n }\n }\n\n const referralsRankArray: ReferralRank[] = [];\n\n for (const referrer of referrersUsersReferred.keys()) {\n const referrerTokenStates = await kaminoMarket.getAllReferrerFeesCumulative(referrer);\n let totalEarningsUsd = new Decimal(0);\n // calculating earnings for each referrer\n for (const reserve of kaminoMarket.reserves.values()) {\n totalEarningsUsd = totalEarningsUsd.add(\n referrerTokenStates.get(reserve.getLiquidityMint())!.mul(reserve.getReserveMarketPrice())\n );\n }\n\n referralsRankArray.push({\n referrer: new PublicKey(referrer),\n totalUsersReferred: referrersUsersReferred.get(referrer)!,\n totalEarningsUsd: totalEarningsUsd,\n });\n }\n\n referralsRankArray.sort((a, b) => {\n return b.totalEarningsUsd.comparedTo(a.totalEarningsUsd);\n });\n\n return referralsRankArray;\n}\n\n/**\n * Get ReferralRank array of all referrers ordered by how much they've earned in USD\n * @param connection\n * @param user\n * @param programId\n */\nexport async function getUserReferralRanking(connection: Connection, user: PublicKey, kaminoMarket: KaminoMarket) {\n const referralsRanking = await getReferralsRanking(connection, kaminoMarket);\n\n for (let index = 0; index < referralsRanking.length; index++) {\n if (user.equals(referralsRanking[index].referrer)) {\n return index + 1;\n }\n }\n}\n"]}
@@ -0,0 +1,49 @@
1
+ import { PublicKey } from '@solana/web3.js';
2
+ import { KaminoMarket, KaminoObligation } from '../classes';
3
+ export type ObligationType = VanillaObligation | MultiplyObligation | LendingObligation;
4
+ export declare enum ObligationTypeTag {
5
+ Vanilla = 0,
6
+ Multiply = 1,
7
+ Lending = 2,
8
+ Leverage = 3
9
+ }
10
+ export type InitObligationArgsModel = {
11
+ tag: number;
12
+ id: number;
13
+ seed1: PublicKey;
14
+ seed2: PublicKey;
15
+ };
16
+ export declare class VanillaObligation {
17
+ readonly programId: PublicKey;
18
+ static tag: number;
19
+ constructor(programId: PublicKey);
20
+ toArgs(): InitObligationArgsModel;
21
+ toPda(market: PublicKey, user: PublicKey): PublicKey;
22
+ }
23
+ export declare class MultiplyObligation {
24
+ readonly collToken: PublicKey;
25
+ readonly debtToken: PublicKey;
26
+ readonly programId: PublicKey;
27
+ static tag: number;
28
+ constructor(collToken: PublicKey, debtToken: PublicKey, programId: PublicKey);
29
+ toArgs(): InitObligationArgsModel;
30
+ toPda(market: PublicKey, user: PublicKey): PublicKey;
31
+ }
32
+ export declare class LeverageObligation {
33
+ readonly collToken: PublicKey;
34
+ readonly debtToken: PublicKey;
35
+ readonly programId: PublicKey;
36
+ static tag: number;
37
+ constructor(collToken: PublicKey, debtToken: PublicKey, programId: PublicKey);
38
+ toArgs(): InitObligationArgsModel;
39
+ toPda(market: PublicKey, user: PublicKey): PublicKey;
40
+ }
41
+ export declare class LendingObligation {
42
+ readonly token: PublicKey;
43
+ readonly programId: PublicKey;
44
+ static tag: number;
45
+ constructor(token: PublicKey, programId: PublicKey);
46
+ toArgs(): InitObligationArgsModel;
47
+ toPda(market: PublicKey, user: PublicKey): PublicKey;
48
+ }
49
+ export declare function getObligationTypeFromObligation(kaminoMarket: KaminoMarket, obligation: KaminoObligation): ObligationType;
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getObligationTypeFromObligation = exports.LendingObligation = exports.LeverageObligation = exports.MultiplyObligation = exports.VanillaObligation = exports.ObligationTypeTag = void 0;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ var ObligationTypeTag;
6
+ (function (ObligationTypeTag) {
7
+ ObligationTypeTag[ObligationTypeTag["Vanilla"] = 0] = "Vanilla";
8
+ ObligationTypeTag[ObligationTypeTag["Multiply"] = 1] = "Multiply";
9
+ ObligationTypeTag[ObligationTypeTag["Lending"] = 2] = "Lending";
10
+ ObligationTypeTag[ObligationTypeTag["Leverage"] = 3] = "Leverage";
11
+ })(ObligationTypeTag = exports.ObligationTypeTag || (exports.ObligationTypeTag = {}));
12
+ class VanillaObligation {
13
+ constructor(programId) {
14
+ this.programId = programId;
15
+ }
16
+ toArgs() {
17
+ const initObligationArgs = {
18
+ tag: VanillaObligation.tag,
19
+ id: 0,
20
+ seed1: web3_js_1.PublicKey.default,
21
+ seed2: web3_js_1.PublicKey.default,
22
+ };
23
+ return initObligationArgs;
24
+ }
25
+ toPda(market, user) {
26
+ return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);
27
+ }
28
+ }
29
+ exports.VanillaObligation = VanillaObligation;
30
+ VanillaObligation.tag = 0;
31
+ class MultiplyObligation {
32
+ constructor(collToken, debtToken, programId) {
33
+ this.collToken = collToken;
34
+ this.debtToken = debtToken;
35
+ this.programId = programId;
36
+ }
37
+ toArgs() {
38
+ const initObligationArgs = {
39
+ tag: MultiplyObligation.tag,
40
+ id: 0,
41
+ seed1: this.collToken,
42
+ seed2: this.debtToken,
43
+ };
44
+ return initObligationArgs;
45
+ }
46
+ toPda(market, user) {
47
+ return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);
48
+ }
49
+ }
50
+ exports.MultiplyObligation = MultiplyObligation;
51
+ MultiplyObligation.tag = 1;
52
+ class LeverageObligation {
53
+ constructor(collToken, debtToken, programId) {
54
+ this.collToken = collToken;
55
+ this.debtToken = debtToken;
56
+ this.programId = programId;
57
+ }
58
+ toArgs() {
59
+ const initObligationArgs = {
60
+ tag: LeverageObligation.tag,
61
+ id: 0,
62
+ seed1: this.collToken,
63
+ seed2: this.debtToken,
64
+ };
65
+ return initObligationArgs;
66
+ }
67
+ toPda(market, user) {
68
+ return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);
69
+ }
70
+ }
71
+ exports.LeverageObligation = LeverageObligation;
72
+ LeverageObligation.tag = 3;
73
+ class LendingObligation {
74
+ constructor(token, programId) {
75
+ this.token = token;
76
+ this.programId = programId;
77
+ }
78
+ toArgs() {
79
+ const initObligationArgs = {
80
+ tag: LendingObligation.tag,
81
+ id: 0,
82
+ seed1: this.token,
83
+ seed2: this.token,
84
+ };
85
+ return initObligationArgs;
86
+ }
87
+ toPda(market, user) {
88
+ return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);
89
+ }
90
+ }
91
+ exports.LendingObligation = LendingObligation;
92
+ LendingObligation.tag = 2;
93
+ function getObligationPdaWithArgs(market, user, args, programId) {
94
+ const seed = [
95
+ Buffer.from([args.tag]),
96
+ Buffer.from([args.id]),
97
+ user.toBuffer(),
98
+ market.toBuffer(),
99
+ args.seed1.toBuffer(),
100
+ args.seed2.toBuffer(),
101
+ ];
102
+ const [obligationAddress, _obligationAddressBump] = web3_js_1.PublicKey.findProgramAddressSync(seed, programId);
103
+ return obligationAddress;
104
+ }
105
+ function getObligationTypeFromObligation(kaminoMarket, obligation) {
106
+ switch (obligation.obligationTag) {
107
+ case VanillaObligation.tag: {
108
+ return new VanillaObligation(kaminoMarket.programId);
109
+ break;
110
+ }
111
+ case MultiplyObligation.tag: {
112
+ return new MultiplyObligation(obligation.deposits[0].mintAddress, obligation.borrows[0].mintAddress, kaminoMarket.programId);
113
+ break;
114
+ }
115
+ case LeverageObligation.tag: {
116
+ return new LeverageObligation(obligation.deposits[0].mintAddress, obligation.borrows[0].mintAddress, kaminoMarket.programId);
117
+ break;
118
+ }
119
+ case LendingObligation.tag: {
120
+ return new LendingObligation(obligation.deposits[0].mintAddress, kaminoMarket.programId);
121
+ break;
122
+ }
123
+ default: {
124
+ throw new Error('Invalid obligation type');
125
+ }
126
+ }
127
+ }
128
+ exports.getObligationTypeFromObligation = getObligationTypeFromObligation;
129
+ //# sourceMappingURL=ObligationType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObligationType.js","sourceRoot":"","sources":["../../src/utils/ObligationType.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAK5C,IAAY,iBAKX;AALD,WAAY,iBAAiB;IAC3B,+DAAW,CAAA;IACX,iEAAY,CAAA;IACZ,+DAAW,CAAA;IACX,iEAAY,CAAA;AACd,CAAC,EALW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAK5B;AASD,MAAa,iBAAiB;IAI5B,YAAY,SAAoB;QAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IACD,MAAM;QACJ,MAAM,kBAAkB,GAA4B;YAClD,GAAG,EAAE,iBAAiB,CAAC,GAAG;YAC1B,EAAE,EAAE,CAAC;YACL,KAAK,EAAE,mBAAS,CAAC,OAAO;YACxB,KAAK,EAAE,mBAAS,CAAC,OAAO;SACzB,CAAC;QAEF,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,KAAK,CAAC,MAAiB,EAAE,IAAe;QACtC,OAAO,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/E,CAAC;;AAnBH,8CAoBC;AAlBQ,qBAAG,GAAG,CAAC,CAAC;AAoBjB,MAAa,kBAAkB;IAM7B,YAAY,SAAoB,EAAE,SAAoB,EAAE,SAAoB;QAC1E,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,MAAM;QACJ,MAAM,kBAAkB,GAA4B;YAClD,GAAG,EAAE,kBAAkB,CAAC,GAAG;YAC3B,EAAE,EAAE,CAAC;YACL,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,KAAK,EAAE,IAAI,CAAC,SAAS;SACtB,CAAC;QAEF,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,KAAK,CAAC,MAAiB,EAAE,IAAe;QACtC,OAAO,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/E,CAAC;;AAxBH,gDAyBC;AArBQ,sBAAG,GAAG,CAAC,CAAC;AAuBjB,MAAa,kBAAkB;IAM7B,YAAY,SAAoB,EAAE,SAAoB,EAAE,SAAoB;QAC1E,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,MAAM;QACJ,MAAM,kBAAkB,GAA4B;YAClD,GAAG,EAAE,kBAAkB,CAAC,GAAG;YAC3B,EAAE,EAAE,CAAC;YACL,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,KAAK,EAAE,IAAI,CAAC,SAAS;SACtB,CAAC;QAEF,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,KAAK,CAAC,MAAiB,EAAE,IAAe;QACtC,OAAO,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/E,CAAC;;AAxBH,gDAyBC;AArBQ,sBAAG,GAAG,CAAC,CAAC;AAuBjB,MAAa,iBAAiB;IAK5B,YAAY,KAAgB,EAAE,SAAoB;QAChD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IACD,MAAM;QACJ,MAAM,kBAAkB,GAA4B;YAClD,GAAG,EAAE,iBAAiB,CAAC,GAAG;YAC1B,EAAE,EAAE,CAAC;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;QAEF,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,KAAK,CAAC,MAAiB,EAAE,IAAe;QACtC,OAAO,wBAAwB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/E,CAAC;;AArBH,8CAsBC;AAnBQ,qBAAG,GAAG,CAAC,CAAC;AAqBjB,SAAS,wBAAwB,CAC/B,MAAiB,EACjB,IAAe,EACf,IAA6B,EAC7B,SAAoB;IAEpB,MAAM,IAAI,GAAG;QACX,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,IAAI,CAAC,QAAQ,EAAE;QACf,MAAM,CAAC,QAAQ,EAAE;QACjB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;QACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;KACtB,CAAC;IACF,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,GAAG,mBAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACtG,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,SAAgB,+BAA+B,CAC7C,YAA0B,EAC1B,UAA4B;IAE5B,QAAQ,UAAU,CAAC,aAAa,EAAE;QAChC,KAAK,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAC1B,OAAO,IAAI,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACrD,MAAM;SACP;QACD,KAAK,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC3B,OAAO,IAAI,kBAAkB,CAC3B,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAClC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EACjC,YAAY,CAAC,SAAS,CACvB,CAAC;YACF,MAAM;SACP;QACD,KAAK,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC3B,OAAO,IAAI,kBAAkB,CAC3B,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAClC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EACjC,YAAY,CAAC,SAAS,CACvB,CAAC;YACF,MAAM;SACP;QACD,KAAK,iBAAiB,CAAC,GAAG,CAAC,CAAC;YAC1B,OAAO,IAAI,iBAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;YACzF,MAAM;SACP;QACD,OAAO,CAAC,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAC5C;KACF;AACH,CAAC;AAjCD,0EAiCC","sourcesContent":["import { PublicKey } from '@solana/web3.js';\nimport { KaminoMarket, KaminoObligation } from '../classes';\n\nexport type ObligationType = VanillaObligation | MultiplyObligation | LendingObligation;\n\nexport enum ObligationTypeTag {\n Vanilla = 0,\n Multiply = 1,\n Lending = 2,\n Leverage = 3,\n}\n\nexport type InitObligationArgsModel = {\n tag: number;\n id: number;\n seed1: PublicKey;\n seed2: PublicKey;\n};\n\nexport class VanillaObligation {\n readonly programId: PublicKey;\n static tag = 0;\n\n constructor(programId: PublicKey) {\n this.programId = programId;\n }\n toArgs() {\n const initObligationArgs: InitObligationArgsModel = {\n tag: VanillaObligation.tag,\n id: 0,\n seed1: PublicKey.default,\n seed2: PublicKey.default,\n };\n\n return initObligationArgs;\n }\n toPda(market: PublicKey, user: PublicKey) {\n return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);\n }\n}\n\nexport class MultiplyObligation {\n readonly collToken: PublicKey;\n readonly debtToken: PublicKey;\n readonly programId: PublicKey;\n static tag = 1;\n\n constructor(collToken: PublicKey, debtToken: PublicKey, programId: PublicKey) {\n this.collToken = collToken;\n this.debtToken = debtToken;\n this.programId = programId;\n }\n\n toArgs() {\n const initObligationArgs: InitObligationArgsModel = {\n tag: MultiplyObligation.tag,\n id: 0,\n seed1: this.collToken,\n seed2: this.debtToken,\n };\n\n return initObligationArgs;\n }\n toPda(market: PublicKey, user: PublicKey) {\n return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);\n }\n}\n\nexport class LeverageObligation {\n readonly collToken: PublicKey;\n readonly debtToken: PublicKey;\n readonly programId: PublicKey;\n static tag = 3;\n\n constructor(collToken: PublicKey, debtToken: PublicKey, programId: PublicKey) {\n this.collToken = collToken;\n this.debtToken = debtToken;\n this.programId = programId;\n }\n\n toArgs() {\n const initObligationArgs: InitObligationArgsModel = {\n tag: LeverageObligation.tag,\n id: 0,\n seed1: this.collToken,\n seed2: this.debtToken,\n };\n\n return initObligationArgs;\n }\n toPda(market: PublicKey, user: PublicKey) {\n return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);\n }\n}\n\nexport class LendingObligation {\n readonly token: PublicKey;\n readonly programId: PublicKey;\n static tag = 2;\n\n constructor(token: PublicKey, programId: PublicKey) {\n this.token = token;\n this.programId = programId;\n }\n toArgs() {\n const initObligationArgs: InitObligationArgsModel = {\n tag: LendingObligation.tag,\n id: 0,\n seed1: this.token,\n seed2: this.token,\n };\n\n return initObligationArgs;\n }\n toPda(market: PublicKey, user: PublicKey) {\n return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);\n }\n}\n\nfunction getObligationPdaWithArgs(\n market: PublicKey,\n user: PublicKey,\n args: InitObligationArgsModel,\n programId: PublicKey\n) {\n const seed = [\n Buffer.from([args.tag]),\n Buffer.from([args.id]),\n user.toBuffer(),\n market.toBuffer(),\n args.seed1.toBuffer(),\n args.seed2.toBuffer(),\n ];\n const [obligationAddress, _obligationAddressBump] = PublicKey.findProgramAddressSync(seed, programId);\n return obligationAddress;\n}\n\nexport function getObligationTypeFromObligation(\n kaminoMarket: KaminoMarket,\n obligation: KaminoObligation\n): ObligationType {\n switch (obligation.obligationTag) {\n case VanillaObligation.tag: {\n return new VanillaObligation(kaminoMarket.programId);\n break;\n }\n case MultiplyObligation.tag: {\n return new MultiplyObligation(\n obligation.deposits[0].mintAddress,\n obligation.borrows[0].mintAddress,\n kaminoMarket.programId\n );\n break;\n }\n case LeverageObligation.tag: {\n return new LeverageObligation(\n obligation.deposits[0].mintAddress,\n obligation.borrows[0].mintAddress,\n kaminoMarket.programId\n );\n break;\n }\n case LendingObligation.tag: {\n return new LendingObligation(obligation.deposits[0].mintAddress, kaminoMarket.programId);\n break;\n }\n default: {\n throw new Error('Invalid obligation type');\n }\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { PublicKey } from '@solana/web3.js';
2
+ import { ConfigType } from '../classes';
3
+ import { IBackOffOptions } from 'exponential-backoff';
4
+ export declare function getMarketsFromApi(programId?: PublicKey, source?: 'API' | 'CDN'): Promise<ConfigType>;
5
+ export declare const KAMINO_CDN_RETRY: Partial<IBackOffOptions>;
6
+ export declare const KAMINO_API_RETRY: Partial<IBackOffOptions>;