@haven-fi/solauto-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (519) hide show
  1. package/dist/clients/index.d.ts +2 -0
  2. package/dist/clients/index.d.ts.map +1 -0
  3. package/dist/clients/index.js +17 -0
  4. package/dist/clients/solautoClient.d.ts +73 -0
  5. package/dist/clients/solautoClient.d.ts.map +1 -0
  6. package/dist/clients/solautoClient.js +416 -0
  7. package/dist/clients/solautoMarginfiClient.d.ts +40 -0
  8. package/dist/clients/solautoMarginfiClient.d.ts.map +1 -0
  9. package/dist/clients/solautoMarginfiClient.js +313 -0
  10. package/dist/constants/generalAccounts.d.ts +5 -0
  11. package/dist/constants/generalAccounts.d.ts.map +1 -0
  12. package/dist/constants/generalAccounts.js +8 -0
  13. package/dist/constants/index.d.ts +6 -0
  14. package/dist/constants/index.d.ts.map +1 -0
  15. package/dist/constants/index.js +21 -0
  16. package/dist/constants/marginfiAccounts.d.ts +7 -0
  17. package/dist/constants/marginfiAccounts.d.ts.map +1 -0
  18. package/dist/constants/marginfiAccounts.js +23 -0
  19. package/dist/constants/pythConstants.d.ts +5 -0
  20. package/dist/constants/pythConstants.d.ts.map +1 -0
  21. package/dist/constants/pythConstants.js +10 -0
  22. package/dist/constants/solautoConstants.d.ts +19 -0
  23. package/dist/constants/solautoConstants.d.ts.map +1 -0
  24. package/dist/constants/solautoConstants.js +35 -0
  25. package/dist/constants/tokenConstants.d.ts +3 -0
  26. package/dist/constants/tokenConstants.d.ts.map +1 -0
  27. package/dist/constants/tokenConstants.js +10 -0
  28. package/dist/generated/accounts/index.d.ts +10 -0
  29. package/dist/generated/accounts/index.d.ts.map +1 -0
  30. package/dist/generated/accounts/index.js +25 -0
  31. package/dist/generated/accounts/referralState.d.ts +37 -0
  32. package/dist/generated/accounts/referralState.d.ts.map +1 -0
  33. package/dist/generated/accounts/referralState.js +73 -0
  34. package/dist/generated/accounts/solautoPosition.d.ts +58 -0
  35. package/dist/generated/accounts/solautoPosition.d.ts.map +1 -0
  36. package/dist/generated/accounts/solautoPosition.js +82 -0
  37. package/dist/generated/errors/index.d.ts +9 -0
  38. package/dist/generated/errors/index.d.ts.map +1 -0
  39. package/dist/generated/errors/index.js +24 -0
  40. package/dist/generated/errors/solauto.d.ts +91 -0
  41. package/dist/generated/errors/solauto.d.ts.map +1 -0
  42. package/dist/generated/errors/solauto.js +163 -0
  43. package/dist/generated/index.d.ts +14 -0
  44. package/dist/generated/index.d.ts.map +1 -0
  45. package/dist/generated/index.js +29 -0
  46. package/dist/generated/instructions/cancelDCA.d.ts +26 -0
  47. package/dist/generated/instructions/cancelDCA.d.ts.map +1 -0
  48. package/dist/generated/instructions/cancelDCA.js +92 -0
  49. package/dist/generated/instructions/claimReferralFees.d.ts +26 -0
  50. package/dist/generated/instructions/claimReferralFees.d.ts.map +1 -0
  51. package/dist/generated/instructions/claimReferralFees.js +87 -0
  52. package/dist/generated/instructions/closePosition.d.ts +28 -0
  53. package/dist/generated/instructions/closePosition.d.ts.map +1 -0
  54. package/dist/generated/instructions/closePosition.js +102 -0
  55. package/dist/generated/instructions/convertReferralFees.d.ts +27 -0
  56. package/dist/generated/instructions/convertReferralFees.d.ts.map +1 -0
  57. package/dist/generated/instructions/convertReferralFees.js +96 -0
  58. package/dist/generated/instructions/index.d.ts +18 -0
  59. package/dist/generated/instructions/index.d.ts.map +1 -0
  60. package/dist/generated/instructions/index.js +33 -0
  61. package/dist/generated/instructions/marginfiOpenPosition.d.ts +46 -0
  62. package/dist/generated/instructions/marginfiOpenPosition.d.ts.map +1 -0
  63. package/dist/generated/instructions/marginfiOpenPosition.js +161 -0
  64. package/dist/generated/instructions/marginfiProtocolInteraction.d.ts +42 -0
  65. package/dist/generated/instructions/marginfiProtocolInteraction.d.ts.map +1 -0
  66. package/dist/generated/instructions/marginfiProtocolInteraction.js +150 -0
  67. package/dist/generated/instructions/marginfiRebalance.d.ts +49 -0
  68. package/dist/generated/instructions/marginfiRebalance.d.ts.map +1 -0
  69. package/dist/generated/instructions/marginfiRebalance.js +164 -0
  70. package/dist/generated/instructions/marginfiRefreshData.d.ts +27 -0
  71. package/dist/generated/instructions/marginfiRefreshData.d.ts.map +1 -0
  72. package/dist/generated/instructions/marginfiRefreshData.js +84 -0
  73. package/dist/generated/instructions/updatePosition.d.ts +30 -0
  74. package/dist/generated/instructions/updatePosition.d.ts.map +1 -0
  75. package/dist/generated/instructions/updatePosition.js +87 -0
  76. package/dist/generated/instructions/updateReferralStates.d.ts +30 -0
  77. package/dist/generated/instructions/updateReferralStates.d.ts.map +1 -0
  78. package/dist/generated/instructions/updateReferralStates.js +77 -0
  79. package/dist/generated/programs/index.d.ts +9 -0
  80. package/dist/generated/programs/index.d.ts.map +1 -0
  81. package/dist/generated/programs/index.js +24 -0
  82. package/dist/generated/programs/solauto.d.ts +13 -0
  83. package/dist/generated/programs/solauto.d.ts.map +1 -0
  84. package/dist/generated/programs/solauto.js +36 -0
  85. package/dist/generated/shared/index.d.ts +54 -0
  86. package/dist/generated/shared/index.d.ts.map +1 -0
  87. package/dist/generated/shared/index.js +70 -0
  88. package/dist/generated/types/automationSettings.d.ts +26 -0
  89. package/dist/generated/types/automationSettings.d.ts.map +1 -0
  90. package/dist/generated/types/automationSettings.js +22 -0
  91. package/dist/generated/types/automationSettingsInp.d.ts +22 -0
  92. package/dist/generated/types/automationSettingsInp.d.ts.map +1 -0
  93. package/dist/generated/types/automationSettingsInp.js +20 -0
  94. package/dist/generated/types/dCASettings.d.ts +21 -0
  95. package/dist/generated/types/dCASettings.d.ts.map +1 -0
  96. package/dist/generated/types/dCASettings.js +20 -0
  97. package/dist/generated/types/dCASettingsInp.d.ts +19 -0
  98. package/dist/generated/types/dCASettingsInp.d.ts.map +1 -0
  99. package/dist/generated/types/dCASettingsInp.js +19 -0
  100. package/dist/generated/types/feeType.d.ts +15 -0
  101. package/dist/generated/types/feeType.d.ts.map +1 -0
  102. package/dist/generated/types/feeType.js +20 -0
  103. package/dist/generated/types/index.d.ts +26 -0
  104. package/dist/generated/types/index.d.ts.map +1 -0
  105. package/dist/generated/types/index.js +41 -0
  106. package/dist/generated/types/lendingPlatform.d.ts +16 -0
  107. package/dist/generated/types/lendingPlatform.d.ts.map +1 -0
  108. package/dist/generated/types/lendingPlatform.js +23 -0
  109. package/dist/generated/types/podBool.d.ts +14 -0
  110. package/dist/generated/types/podBool.d.ts.map +1 -0
  111. package/dist/generated/types/podBool.js +17 -0
  112. package/dist/generated/types/positionData.d.ts +32 -0
  113. package/dist/generated/types/positionData.d.ts.map +1 -0
  114. package/dist/generated/types/positionData.js +25 -0
  115. package/dist/generated/types/positionState.d.ts +35 -0
  116. package/dist/generated/types/positionState.d.ts.map +1 -0
  117. package/dist/generated/types/positionState.js +27 -0
  118. package/dist/generated/types/positionTokenUsage.d.ts +36 -0
  119. package/dist/generated/types/positionTokenUsage.d.ts.map +1 -0
  120. package/dist/generated/types/positionTokenUsage.js +27 -0
  121. package/dist/generated/types/rebalanceData.d.ts +29 -0
  122. package/dist/generated/types/rebalanceData.d.ts.map +1 -0
  123. package/dist/generated/types/rebalanceData.js +24 -0
  124. package/dist/generated/types/solautoAction.d.ts +44 -0
  125. package/dist/generated/types/solautoAction.d.ts.map +1 -0
  126. package/dist/generated/types/solautoAction.js +51 -0
  127. package/dist/generated/types/solautoRebalanceType.d.ts +17 -0
  128. package/dist/generated/types/solautoRebalanceType.d.ts.map +1 -0
  129. package/dist/generated/types/solautoRebalanceType.js +24 -0
  130. package/dist/generated/types/solautoSettingsParameters.d.ts +31 -0
  131. package/dist/generated/types/solautoSettingsParameters.d.ts.map +1 -0
  132. package/dist/generated/types/solautoSettingsParameters.js +25 -0
  133. package/dist/generated/types/solautoSettingsParametersInp.d.ts +28 -0
  134. package/dist/generated/types/solautoSettingsParametersInp.d.ts.map +1 -0
  135. package/dist/generated/types/solautoSettingsParametersInp.js +23 -0
  136. package/dist/generated/types/tokenAmount.d.ts +18 -0
  137. package/dist/generated/types/tokenAmount.d.ts.map +1 -0
  138. package/dist/generated/types/tokenAmount.js +18 -0
  139. package/dist/generated/types/tokenBalanceAmount.d.ts +27 -0
  140. package/dist/generated/types/tokenBalanceAmount.d.ts.map +1 -0
  141. package/dist/generated/types/tokenBalanceAmount.js +33 -0
  142. package/dist/generated/types/updatePositionData.d.ts +22 -0
  143. package/dist/generated/types/updatePositionData.d.ts.map +1 -0
  144. package/dist/generated/types/updatePositionData.js +20 -0
  145. package/dist/index.d.ts +7 -0
  146. package/dist/index.d.ts.map +1 -0
  147. package/dist/index.js +22 -0
  148. package/dist/marginfi-sdk/accounts/bank.d.ts +136 -0
  149. package/dist/marginfi-sdk/accounts/bank.d.ts.map +1 -0
  150. package/dist/marginfi-sdk/accounts/bank.js +124 -0
  151. package/dist/marginfi-sdk/accounts/index.d.ts +11 -0
  152. package/dist/marginfi-sdk/accounts/index.d.ts.map +1 -0
  153. package/dist/marginfi-sdk/accounts/index.js +26 -0
  154. package/dist/marginfi-sdk/accounts/marginfiAccount.d.ts +58 -0
  155. package/dist/marginfi-sdk/accounts/marginfiAccount.d.ts.map +1 -0
  156. package/dist/marginfi-sdk/accounts/marginfiAccount.js +76 -0
  157. package/dist/marginfi-sdk/accounts/marginfiGroup.d.ts +35 -0
  158. package/dist/marginfi-sdk/accounts/marginfiGroup.d.ts.map +1 -0
  159. package/dist/marginfi-sdk/accounts/marginfiGroup.js +71 -0
  160. package/dist/marginfi-sdk/errors/index.d.ts +9 -0
  161. package/dist/marginfi-sdk/errors/index.d.ts.map +1 -0
  162. package/dist/marginfi-sdk/errors/index.js +24 -0
  163. package/dist/marginfi-sdk/errors/marginfi.d.ts +283 -0
  164. package/dist/marginfi-sdk/errors/marginfi.d.ts.map +1 -0
  165. package/dist/marginfi-sdk/errors/marginfi.js +515 -0
  166. package/dist/marginfi-sdk/index.d.ts +14 -0
  167. package/dist/marginfi-sdk/index.d.ts.map +1 -0
  168. package/dist/marginfi-sdk/index.js +29 -0
  169. package/dist/marginfi-sdk/instructions/index.d.ts +32 -0
  170. package/dist/marginfi-sdk/instructions/index.d.ts.map +1 -0
  171. package/dist/marginfi-sdk/instructions/index.js +47 -0
  172. package/dist/marginfi-sdk/instructions/lendingAccountBorrow.d.ts +30 -0
  173. package/dist/marginfi-sdk/instructions/lendingAccountBorrow.d.ts.map +1 -0
  174. package/dist/marginfi-sdk/instructions/lendingAccountBorrow.js +83 -0
  175. package/dist/marginfi-sdk/instructions/lendingAccountCloseBalance.d.ts +22 -0
  176. package/dist/marginfi-sdk/instructions/lendingAccountCloseBalance.d.ts.map +1 -0
  177. package/dist/marginfi-sdk/instructions/lendingAccountCloseBalance.js +53 -0
  178. package/dist/marginfi-sdk/instructions/lendingAccountDeposit.d.ts +29 -0
  179. package/dist/marginfi-sdk/instructions/lendingAccountDeposit.d.ts.map +1 -0
  180. package/dist/marginfi-sdk/instructions/lendingAccountDeposit.js +81 -0
  181. package/dist/marginfi-sdk/instructions/lendingAccountEndFlashloan.d.ts +20 -0
  182. package/dist/marginfi-sdk/instructions/lendingAccountEndFlashloan.d.ts.map +1 -0
  183. package/dist/marginfi-sdk/instructions/lendingAccountEndFlashloan.js +50 -0
  184. package/dist/marginfi-sdk/instructions/lendingAccountLiquidate.d.ts +32 -0
  185. package/dist/marginfi-sdk/instructions/lendingAccountLiquidate.d.ts.map +1 -0
  186. package/dist/marginfi-sdk/instructions/lendingAccountLiquidate.js +100 -0
  187. package/dist/marginfi-sdk/instructions/lendingAccountRepay.d.ts +31 -0
  188. package/dist/marginfi-sdk/instructions/lendingAccountRepay.d.ts.map +1 -0
  189. package/dist/marginfi-sdk/instructions/lendingAccountRepay.js +82 -0
  190. package/dist/marginfi-sdk/instructions/lendingAccountSettleEmissions.d.ts +20 -0
  191. package/dist/marginfi-sdk/instructions/lendingAccountSettleEmissions.d.ts.map +1 -0
  192. package/dist/marginfi-sdk/instructions/lendingAccountSettleEmissions.js +46 -0
  193. package/dist/marginfi-sdk/instructions/lendingAccountStartFlashloan.d.ts +25 -0
  194. package/dist/marginfi-sdk/instructions/lendingAccountStartFlashloan.d.ts.map +1 -0
  195. package/dist/marginfi-sdk/instructions/lendingAccountStartFlashloan.js +62 -0
  196. package/dist/marginfi-sdk/instructions/lendingAccountWithdraw.d.ts +32 -0
  197. package/dist/marginfi-sdk/instructions/lendingAccountWithdraw.d.ts.map +1 -0
  198. package/dist/marginfi-sdk/instructions/lendingAccountWithdraw.js +87 -0
  199. package/dist/marginfi-sdk/instructions/lendingAccountWithdrawEmissions.d.ts +27 -0
  200. package/dist/marginfi-sdk/instructions/lendingAccountWithdrawEmissions.d.ts.map +1 -0
  201. package/dist/marginfi-sdk/instructions/lendingAccountWithdrawEmissions.js +86 -0
  202. package/dist/marginfi-sdk/instructions/lendingPoolAccrueBankInterest.d.ts +20 -0
  203. package/dist/marginfi-sdk/instructions/lendingPoolAccrueBankInterest.d.ts.map +1 -0
  204. package/dist/marginfi-sdk/instructions/lendingPoolAccrueBankInterest.js +46 -0
  205. package/dist/marginfi-sdk/instructions/lendingPoolAddBank.d.ts +37 -0
  206. package/dist/marginfi-sdk/instructions/lendingPoolAddBank.d.ts.map +1 -0
  207. package/dist/marginfi-sdk/instructions/lendingPoolAddBank.js +127 -0
  208. package/dist/marginfi-sdk/instructions/lendingPoolAddBankWithSeed.d.ts +39 -0
  209. package/dist/marginfi-sdk/instructions/lendingPoolAddBankWithSeed.d.ts.map +1 -0
  210. package/dist/marginfi-sdk/instructions/lendingPoolAddBankWithSeed.js +128 -0
  211. package/dist/marginfi-sdk/instructions/lendingPoolCollectBankFees.d.ts +25 -0
  212. package/dist/marginfi-sdk/instructions/lendingPoolCollectBankFees.d.ts.map +1 -0
  213. package/dist/marginfi-sdk/instructions/lendingPoolCollectBankFees.js +76 -0
  214. package/dist/marginfi-sdk/instructions/lendingPoolConfigureBank.d.ts +46 -0
  215. package/dist/marginfi-sdk/instructions/lendingPoolConfigureBank.d.ts.map +1 -0
  216. package/dist/marginfi-sdk/instructions/lendingPoolConfigureBank.js +67 -0
  217. package/dist/marginfi-sdk/instructions/lendingPoolHandleBankruptcy.d.ts +26 -0
  218. package/dist/marginfi-sdk/instructions/lendingPoolHandleBankruptcy.d.ts.map +1 -0
  219. package/dist/marginfi-sdk/instructions/lendingPoolHandleBankruptcy.js +81 -0
  220. package/dist/marginfi-sdk/instructions/lendingPoolSetupEmissions.d.ts +35 -0
  221. package/dist/marginfi-sdk/instructions/lendingPoolSetupEmissions.d.ts.map +1 -0
  222. package/dist/marginfi-sdk/instructions/lendingPoolSetupEmissions.js +97 -0
  223. package/dist/marginfi-sdk/instructions/lendingPoolUpdateEmissionsParameters.d.ts +33 -0
  224. package/dist/marginfi-sdk/instructions/lendingPoolUpdateEmissionsParameters.d.ts.map +1 -0
  225. package/dist/marginfi-sdk/instructions/lendingPoolUpdateEmissionsParameters.js +85 -0
  226. package/dist/marginfi-sdk/instructions/marginfiAccountInitialize.d.ts +23 -0
  227. package/dist/marginfi-sdk/instructions/marginfiAccountInitialize.d.ts.map +1 -0
  228. package/dist/marginfi-sdk/instructions/marginfiAccountInitialize.js +76 -0
  229. package/dist/marginfi-sdk/instructions/marginfiGroupConfigure.d.ts +24 -0
  230. package/dist/marginfi-sdk/instructions/marginfiGroupConfigure.d.ts.map +1 -0
  231. package/dist/marginfi-sdk/instructions/marginfiGroupConfigure.js +52 -0
  232. package/dist/marginfi-sdk/instructions/marginfiGroupInitialize.d.ts +21 -0
  233. package/dist/marginfi-sdk/instructions/marginfiGroupInitialize.d.ts.map +1 -0
  234. package/dist/marginfi-sdk/instructions/marginfiGroupInitialize.js +57 -0
  235. package/dist/marginfi-sdk/instructions/setAccountFlag.d.ts +26 -0
  236. package/dist/marginfi-sdk/instructions/setAccountFlag.d.ts.map +1 -0
  237. package/dist/marginfi-sdk/instructions/setAccountFlag.js +60 -0
  238. package/dist/marginfi-sdk/instructions/setNewAccountAuthority.d.ts +23 -0
  239. package/dist/marginfi-sdk/instructions/setNewAccountAuthority.d.ts.map +1 -0
  240. package/dist/marginfi-sdk/instructions/setNewAccountAuthority.js +69 -0
  241. package/dist/marginfi-sdk/instructions/unsetAccountFlag.d.ts +26 -0
  242. package/dist/marginfi-sdk/instructions/unsetAccountFlag.d.ts.map +1 -0
  243. package/dist/marginfi-sdk/instructions/unsetAccountFlag.js +57 -0
  244. package/dist/marginfi-sdk/programs/index.d.ts +9 -0
  245. package/dist/marginfi-sdk/programs/index.d.ts.map +1 -0
  246. package/dist/marginfi-sdk/programs/index.js +24 -0
  247. package/dist/marginfi-sdk/programs/marginfi.d.ts +13 -0
  248. package/dist/marginfi-sdk/programs/marginfi.d.ts.map +1 -0
  249. package/dist/marginfi-sdk/programs/marginfi.js +36 -0
  250. package/dist/marginfi-sdk/shared/index.d.ts +54 -0
  251. package/dist/marginfi-sdk/shared/index.d.ts.map +1 -0
  252. package/dist/marginfi-sdk/shared/index.js +70 -0
  253. package/dist/marginfi-sdk/types/accountEventHeader.d.ts +23 -0
  254. package/dist/marginfi-sdk/types/accountEventHeader.d.ts.map +1 -0
  255. package/dist/marginfi-sdk/types/accountEventHeader.js +20 -0
  256. package/dist/marginfi-sdk/types/balance.d.ts +32 -0
  257. package/dist/marginfi-sdk/types/balance.d.ts.map +1 -0
  258. package/dist/marginfi-sdk/types/balance.js +25 -0
  259. package/dist/marginfi-sdk/types/balanceDecreaseType.d.ts +17 -0
  260. package/dist/marginfi-sdk/types/balanceDecreaseType.d.ts.map +1 -0
  261. package/dist/marginfi-sdk/types/balanceDecreaseType.js +24 -0
  262. package/dist/marginfi-sdk/types/balanceIncreaseType.d.ts +17 -0
  263. package/dist/marginfi-sdk/types/balanceIncreaseType.d.ts.map +1 -0
  264. package/dist/marginfi-sdk/types/balanceIncreaseType.js +24 -0
  265. package/dist/marginfi-sdk/types/balanceSide.d.ts +15 -0
  266. package/dist/marginfi-sdk/types/balanceSide.d.ts.map +1 -0
  267. package/dist/marginfi-sdk/types/balanceSide.js +22 -0
  268. package/dist/marginfi-sdk/types/bankConfig.d.ts +67 -0
  269. package/dist/marginfi-sdk/types/bankConfig.d.ts.map +1 -0
  270. package/dist/marginfi-sdk/types/bankConfig.js +32 -0
  271. package/dist/marginfi-sdk/types/bankConfigCompact.d.ts +65 -0
  272. package/dist/marginfi-sdk/types/bankConfigCompact.d.ts.map +1 -0
  273. package/dist/marginfi-sdk/types/bankConfigCompact.js +31 -0
  274. package/dist/marginfi-sdk/types/bankOperationalState.d.ts +16 -0
  275. package/dist/marginfi-sdk/types/bankOperationalState.d.ts.map +1 -0
  276. package/dist/marginfi-sdk/types/bankOperationalState.js +23 -0
  277. package/dist/marginfi-sdk/types/bankVaultType.d.ts +16 -0
  278. package/dist/marginfi-sdk/types/bankVaultType.d.ts.map +1 -0
  279. package/dist/marginfi-sdk/types/bankVaultType.js +23 -0
  280. package/dist/marginfi-sdk/types/groupEventHeader.d.ts +19 -0
  281. package/dist/marginfi-sdk/types/groupEventHeader.d.ts.map +1 -0
  282. package/dist/marginfi-sdk/types/groupEventHeader.js +18 -0
  283. package/dist/marginfi-sdk/types/index.d.ts +31 -0
  284. package/dist/marginfi-sdk/types/index.d.ts.map +1 -0
  285. package/dist/marginfi-sdk/types/index.js +46 -0
  286. package/dist/marginfi-sdk/types/interestRateConfig.d.ts +31 -0
  287. package/dist/marginfi-sdk/types/interestRateConfig.d.ts.map +1 -0
  288. package/dist/marginfi-sdk/types/interestRateConfig.js +25 -0
  289. package/dist/marginfi-sdk/types/interestRateConfigCompact.d.ts +29 -0
  290. package/dist/marginfi-sdk/types/interestRateConfigCompact.d.ts.map +1 -0
  291. package/dist/marginfi-sdk/types/interestRateConfigCompact.js +24 -0
  292. package/dist/marginfi-sdk/types/interestRateConfigOpt.d.ts +30 -0
  293. package/dist/marginfi-sdk/types/interestRateConfigOpt.d.ts.map +1 -0
  294. package/dist/marginfi-sdk/types/interestRateConfigOpt.js +24 -0
  295. package/dist/marginfi-sdk/types/lendingAccount.d.ts +19 -0
  296. package/dist/marginfi-sdk/types/lendingAccount.d.ts.map +1 -0
  297. package/dist/marginfi-sdk/types/lendingAccount.js +19 -0
  298. package/dist/marginfi-sdk/types/liquidationBalances.d.ts +17 -0
  299. package/dist/marginfi-sdk/types/liquidationBalances.d.ts.map +1 -0
  300. package/dist/marginfi-sdk/types/liquidationBalances.js +20 -0
  301. package/dist/marginfi-sdk/types/oracleConfig.d.ts +20 -0
  302. package/dist/marginfi-sdk/types/oracleConfig.d.ts.map +1 -0
  303. package/dist/marginfi-sdk/types/oracleConfig.js +19 -0
  304. package/dist/marginfi-sdk/types/oraclePriceType.d.ts +15 -0
  305. package/dist/marginfi-sdk/types/oraclePriceType.d.ts.map +1 -0
  306. package/dist/marginfi-sdk/types/oraclePriceType.js +22 -0
  307. package/dist/marginfi-sdk/types/oracleSetup.d.ts +17 -0
  308. package/dist/marginfi-sdk/types/oracleSetup.d.ts.map +1 -0
  309. package/dist/marginfi-sdk/types/oracleSetup.js +24 -0
  310. package/dist/marginfi-sdk/types/priceBias.d.ts +15 -0
  311. package/dist/marginfi-sdk/types/priceBias.d.ts.map +1 -0
  312. package/dist/marginfi-sdk/types/priceBias.js +22 -0
  313. package/dist/marginfi-sdk/types/requirementType.d.ts +16 -0
  314. package/dist/marginfi-sdk/types/requirementType.d.ts.map +1 -0
  315. package/dist/marginfi-sdk/types/requirementType.js +23 -0
  316. package/dist/marginfi-sdk/types/riskRequirementType.d.ts +16 -0
  317. package/dist/marginfi-sdk/types/riskRequirementType.d.ts.map +1 -0
  318. package/dist/marginfi-sdk/types/riskRequirementType.js +23 -0
  319. package/dist/marginfi-sdk/types/riskTier.d.ts +15 -0
  320. package/dist/marginfi-sdk/types/riskTier.d.ts.map +1 -0
  321. package/dist/marginfi-sdk/types/riskTier.js +22 -0
  322. package/dist/marginfi-sdk/types/wrappedI80F48.d.ts +16 -0
  323. package/dist/marginfi-sdk/types/wrappedI80F48.d.ts.map +1 -0
  324. package/dist/marginfi-sdk/types/wrappedI80F48.js +17 -0
  325. package/dist/transactions/index.d.ts +3 -0
  326. package/dist/transactions/index.d.ts.map +1 -0
  327. package/dist/transactions/index.js +18 -0
  328. package/dist/transactions/transactionUtils.d.ts +12 -0
  329. package/dist/transactions/transactionUtils.d.ts.map +1 -0
  330. package/dist/transactions/transactionUtils.js +262 -0
  331. package/dist/transactions/transactionsManager.d.ts +42 -0
  332. package/dist/transactions/transactionsManager.d.ts.map +1 -0
  333. package/dist/transactions/transactionsManager.js +246 -0
  334. package/dist/types/accounts.d.ts +8 -0
  335. package/dist/types/accounts.d.ts.map +1 -0
  336. package/dist/types/accounts.js +2 -0
  337. package/dist/types/index.d.ts +2 -0
  338. package/dist/types/index.d.ts.map +1 -0
  339. package/dist/types/index.js +17 -0
  340. package/dist/utils/accountUtils.d.ts +11 -0
  341. package/dist/utils/accountUtils.d.ts.map +1 -0
  342. package/dist/utils/accountUtils.js +60 -0
  343. package/dist/utils/deleteme.d.ts +2 -0
  344. package/dist/utils/deleteme.d.ts.map +1 -0
  345. package/dist/utils/deleteme.js +21 -0
  346. package/dist/utils/generalUtils.d.ts +11 -0
  347. package/dist/utils/generalUtils.d.ts.map +1 -0
  348. package/dist/utils/generalUtils.js +107 -0
  349. package/dist/utils/index.d.ts +9 -0
  350. package/dist/utils/index.d.ts.map +1 -0
  351. package/dist/utils/index.js +24 -0
  352. package/dist/utils/jitoUtils.d.ts +15 -0
  353. package/dist/utils/jitoUtils.d.ts.map +1 -0
  354. package/dist/utils/jitoUtils.js +108 -0
  355. package/dist/utils/jupiterUtils.d.ts +21 -0
  356. package/dist/utils/jupiterUtils.d.ts.map +1 -0
  357. package/dist/utils/jupiterUtils.js +61 -0
  358. package/dist/utils/local/shared.d.ts +3 -0
  359. package/dist/utils/local/shared.d.ts.map +1 -0
  360. package/dist/utils/local/shared.js +63 -0
  361. package/dist/utils/local/updateMarginfiLUT.d.ts +2 -0
  362. package/dist/utils/local/updateMarginfiLUT.d.ts.map +1 -0
  363. package/dist/utils/local/updateMarginfiLUT.js +22 -0
  364. package/dist/utils/local/updateSolautoLUT.d.ts +2 -0
  365. package/dist/utils/local/updateSolautoLUT.d.ts.map +1 -0
  366. package/dist/utils/local/updateSolautoLUT.js +13 -0
  367. package/dist/utils/marginfiUtils.d.ts +14 -0
  368. package/dist/utils/marginfiUtils.d.ts.map +1 -0
  369. package/dist/utils/marginfiUtils.js +201 -0
  370. package/dist/utils/numberUtils.d.ts +9 -0
  371. package/dist/utils/numberUtils.d.ts.map +1 -0
  372. package/dist/utils/numberUtils.js +62 -0
  373. package/dist/utils/solanaUtils.d.ts +18 -0
  374. package/dist/utils/solanaUtils.d.ts.map +1 -0
  375. package/dist/utils/solanaUtils.js +183 -0
  376. package/dist/utils/solauto/generalUtils.d.ts +51 -0
  377. package/dist/utils/solauto/generalUtils.d.ts.map +1 -0
  378. package/dist/utils/solauto/generalUtils.js +271 -0
  379. package/dist/utils/solauto/index.d.ts +3 -0
  380. package/dist/utils/solauto/index.d.ts.map +1 -0
  381. package/dist/utils/solauto/index.js +18 -0
  382. package/dist/utils/solauto/rebalanceUtils.d.ts +17 -0
  383. package/dist/utils/solauto/rebalanceUtils.d.ts.map +1 -0
  384. package/dist/utils/solauto/rebalanceUtils.js +199 -0
  385. package/package.json +37 -0
  386. package/src/clients/index.ts +1 -0
  387. package/src/clients/solautoClient.ts +684 -0
  388. package/src/clients/solautoMarginfiClient.ts +496 -0
  389. package/src/constants/README.md +9 -0
  390. package/src/constants/generalAccounts.ts +8 -0
  391. package/src/constants/index.ts +5 -0
  392. package/src/constants/marginfiAccounts.ts +24 -0
  393. package/src/constants/pythConstants.ts +10 -0
  394. package/src/constants/solautoConstants.ts +54 -0
  395. package/src/constants/tokenConstants.ts +9 -0
  396. package/src/generated/accounts/index.ts +10 -0
  397. package/src/generated/accounts/referralState.ts +159 -0
  398. package/src/generated/accounts/solautoPosition.ts +205 -0
  399. package/src/generated/errors/index.ts +9 -0
  400. package/src/generated/errors/solauto.ts +228 -0
  401. package/src/generated/index.ts +14 -0
  402. package/src/generated/instructions/cancelDCA.ts +161 -0
  403. package/src/generated/instructions/claimReferralFees.ts +159 -0
  404. package/src/generated/instructions/closePosition.ts +176 -0
  405. package/src/generated/instructions/convertReferralFees.ts +172 -0
  406. package/src/generated/instructions/index.ts +18 -0
  407. package/src/generated/instructions/marginfiOpenPosition.ts +275 -0
  408. package/src/generated/instructions/marginfiProtocolInteraction.ts +257 -0
  409. package/src/generated/instructions/marginfiRebalance.ts +274 -0
  410. package/src/generated/instructions/marginfiRefreshData.ts +147 -0
  411. package/src/generated/instructions/updatePosition.ts +173 -0
  412. package/src/generated/instructions/updateReferralStates.ts +166 -0
  413. package/src/generated/programs/index.ts +9 -0
  414. package/src/generated/programs/solauto.ts +52 -0
  415. package/src/generated/shared/index.ts +117 -0
  416. package/src/generated/types/automationSettings.ts +52 -0
  417. package/src/generated/types/automationSettingsInp.ts +43 -0
  418. package/src/generated/types/dCASettings.ts +45 -0
  419. package/src/generated/types/dCASettingsInp.ts +37 -0
  420. package/src/generated/types/feeType.ts +23 -0
  421. package/src/generated/types/index.ts +26 -0
  422. package/src/generated/types/lendingPlatform.ts +26 -0
  423. package/src/generated/types/podBool.ts +19 -0
  424. package/src/generated/types/positionData.ts +69 -0
  425. package/src/generated/types/positionState.ts +72 -0
  426. package/src/generated/types/positionTokenUsage.ts +67 -0
  427. package/src/generated/types/rebalanceData.ts +60 -0
  428. package/src/generated/types/solautoAction.ts +101 -0
  429. package/src/generated/types/solautoRebalanceType.ts +27 -0
  430. package/src/generated/types/solautoSettingsParameters.ts +62 -0
  431. package/src/generated/types/solautoSettingsParametersInp.ts +58 -0
  432. package/src/generated/types/tokenAmount.ts +29 -0
  433. package/src/generated/types/tokenBalanceAmount.ts +67 -0
  434. package/src/generated/types/updatePositionData.ts +49 -0
  435. package/src/index.ts +6 -0
  436. package/src/marginfi-sdk/accounts/bank.ts +311 -0
  437. package/src/marginfi-sdk/accounts/index.ts +11 -0
  438. package/src/marginfi-sdk/accounts/marginfiAccount.ts +195 -0
  439. package/src/marginfi-sdk/accounts/marginfiGroup.ts +164 -0
  440. package/src/marginfi-sdk/errors/index.ts +9 -0
  441. package/src/marginfi-sdk/errors/marginfi.ts +650 -0
  442. package/src/marginfi-sdk/index.ts +14 -0
  443. package/src/marginfi-sdk/instructions/index.ts +32 -0
  444. package/src/marginfi-sdk/instructions/lendingAccountBorrow.ts +167 -0
  445. package/src/marginfi-sdk/instructions/lendingAccountCloseBalance.ts +118 -0
  446. package/src/marginfi-sdk/instructions/lendingAccountDeposit.ts +164 -0
  447. package/src/marginfi-sdk/instructions/lendingAccountEndFlashloan.ts +113 -0
  448. package/src/marginfi-sdk/instructions/lendingAccountLiquidate.ts +186 -0
  449. package/src/marginfi-sdk/instructions/lendingAccountRepay.ts +171 -0
  450. package/src/marginfi-sdk/instructions/lendingAccountSettleEmissions.ts +108 -0
  451. package/src/marginfi-sdk/instructions/lendingAccountStartFlashloan.ts +138 -0
  452. package/src/marginfi-sdk/instructions/lendingAccountWithdraw.ts +177 -0
  453. package/src/marginfi-sdk/instructions/lendingAccountWithdrawEmissions.ts +160 -0
  454. package/src/marginfi-sdk/instructions/lendingPoolAccrueBankInterest.ts +108 -0
  455. package/src/marginfi-sdk/instructions/lendingPoolAddBank.ts +226 -0
  456. package/src/marginfi-sdk/instructions/lendingPoolAddBankWithSeed.ts +231 -0
  457. package/src/marginfi-sdk/instructions/lendingPoolCollectBankFees.ts +147 -0
  458. package/src/marginfi-sdk/instructions/lendingPoolConfigureBank.ts +181 -0
  459. package/src/marginfi-sdk/instructions/lendingPoolHandleBankruptcy.ts +154 -0
  460. package/src/marginfi-sdk/instructions/lendingPoolSetupEmissions.ts +190 -0
  461. package/src/marginfi-sdk/instructions/lendingPoolUpdateEmissionsParameters.ts +176 -0
  462. package/src/marginfi-sdk/instructions/marginfiAccountInitialize.ts +146 -0
  463. package/src/marginfi-sdk/instructions/marginfiGroupConfigure.ts +129 -0
  464. package/src/marginfi-sdk/instructions/marginfiGroupInitialize.ts +126 -0
  465. package/src/marginfi-sdk/instructions/setAccountFlag.ts +132 -0
  466. package/src/marginfi-sdk/instructions/setNewAccountAuthority.ts +137 -0
  467. package/src/marginfi-sdk/instructions/unsetAccountFlag.ts +130 -0
  468. package/src/marginfi-sdk/programs/index.ts +9 -0
  469. package/src/marginfi-sdk/programs/marginfi.ts +52 -0
  470. package/src/marginfi-sdk/shared/index.ts +117 -0
  471. package/src/marginfi-sdk/types/accountEventHeader.ts +44 -0
  472. package/src/marginfi-sdk/types/balance.ts +61 -0
  473. package/src/marginfi-sdk/types/balanceDecreaseType.ts +27 -0
  474. package/src/marginfi-sdk/types/balanceIncreaseType.ts +27 -0
  475. package/src/marginfi-sdk/types/balanceSide.ts +25 -0
  476. package/src/marginfi-sdk/types/bankConfig.ts +117 -0
  477. package/src/marginfi-sdk/types/bankConfigCompact.ts +114 -0
  478. package/src/marginfi-sdk/types/bankOperationalState.ts +26 -0
  479. package/src/marginfi-sdk/types/bankVaultType.ts +26 -0
  480. package/src/marginfi-sdk/types/groupEventHeader.ts +38 -0
  481. package/src/marginfi-sdk/types/index.ts +31 -0
  482. package/src/marginfi-sdk/types/interestRateConfig.ts +60 -0
  483. package/src/marginfi-sdk/types/interestRateConfigCompact.ts +52 -0
  484. package/src/marginfi-sdk/types/interestRateConfigOpt.ts +57 -0
  485. package/src/marginfi-sdk/types/lendingAccount.ts +38 -0
  486. package/src/marginfi-sdk/types/liquidationBalances.ts +33 -0
  487. package/src/marginfi-sdk/types/oracleConfig.ts +36 -0
  488. package/src/marginfi-sdk/types/oraclePriceType.ts +25 -0
  489. package/src/marginfi-sdk/types/oracleSetup.ts +27 -0
  490. package/src/marginfi-sdk/types/priceBias.ts +22 -0
  491. package/src/marginfi-sdk/types/requirementType.ts +26 -0
  492. package/src/marginfi-sdk/types/riskRequirementType.ts +26 -0
  493. package/src/marginfi-sdk/types/riskTier.ts +22 -0
  494. package/src/marginfi-sdk/types/wrappedI80F48.ts +22 -0
  495. package/src/transactions/index.ts +2 -0
  496. package/src/transactions/transactionUtils.ts +518 -0
  497. package/src/transactions/transactionsManager.ts +344 -0
  498. package/src/types/accounts.ts +7 -0
  499. package/src/types/index.ts +1 -0
  500. package/src/utils/accountUtils.ts +92 -0
  501. package/src/utils/deleteme.ts +40 -0
  502. package/src/utils/generalUtils.ts +123 -0
  503. package/src/utils/index.ts +8 -0
  504. package/src/utils/jitoUtils.ts +192 -0
  505. package/src/utils/jupiterUtils.ts +114 -0
  506. package/src/utils/local/shared.ts +85 -0
  507. package/src/utils/local/updateMarginfiLUT.ts +33 -0
  508. package/src/utils/local/updateSolautoLUT.ts +15 -0
  509. package/src/utils/marginfiUtils.ts +383 -0
  510. package/src/utils/numberUtils.ts +77 -0
  511. package/src/utils/solanaUtils.ts +333 -0
  512. package/src/utils/solauto/generalUtils.ts +371 -0
  513. package/src/utils/solauto/index.ts +2 -0
  514. package/src/utils/solauto/rebalanceUtils.ts +359 -0
  515. package/tests/shared.ts +15 -0
  516. package/tests/transactions/solautoMarginfi.ts +144 -0
  517. package/tests/unit/lookupTables.ts +40 -0
  518. package/tests/unit/rebalanceCalculations.ts +432 -0
  519. package/tsconfig.json +22 -0
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendJitoBundledTransactions = exports.waitUntilJitoNextLeader = exports.getRandomTipAccount = exports.getSearcherClient = void 0;
4
+ const chai_1 = require("chai");
5
+ const web3_js_1 = require("@solana/web3.js");
6
+ const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
7
+ const solautoConstants_1 = require("../constants/solautoConstants");
8
+ const solanaUtils_1 = require("./solanaUtils");
9
+ const types_1 = require("jito-ts/dist/sdk/block-engine/types");
10
+ const searcher_1 = require("jito-ts/dist/sdk/block-engine/searcher");
11
+ function getSearcherClient() {
12
+ return (0, searcher_1.searcherClient)(solautoConstants_1.JITO_BLOCK_ENGINE, web3_js_1.Keypair.fromSecretKey((0, solanaUtils_1.getSecretKey)("jito-bundles")));
13
+ }
14
+ exports.getSearcherClient = getSearcherClient;
15
+ async function getRandomTipAccount() {
16
+ const tipAccounts = await getSearcherClient().getTipAccounts();
17
+ const randomInt = Math.floor(Math.random() * tipAccounts.length);
18
+ return new web3_js_1.PublicKey(tipAccounts[randomInt]);
19
+ }
20
+ exports.getRandomTipAccount = getRandomTipAccount;
21
+ async function waitUntilJitoNextLeader(distanceFromJitoSlot = 5) {
22
+ let searcher = getSearcherClient();
23
+ let isLeaderSlot = false;
24
+ while (!isLeaderSlot) {
25
+ const nextLeader = await searcher.getNextScheduledLeader();
26
+ const numSlots = nextLeader.nextLeaderSlot - nextLeader.currentSlot;
27
+ isLeaderSlot = numSlots <= distanceFromJitoSlot && numSlots > 1;
28
+ console.log(`Next jito leader slot in ${numSlots} slots`);
29
+ await new Promise((r) => setTimeout(r, 500));
30
+ }
31
+ }
32
+ exports.waitUntilJitoNextLeader = waitUntilJitoNextLeader;
33
+ async function getTipInstruction(client, tipLamports) {
34
+ return (0, solanaUtils_1.systemTransferUmiIx)(client.signer, await getRandomTipAccount(), BigInt(tipLamports));
35
+ }
36
+ async function simulateJitoBundle(txs) {
37
+ const simulationResult = await solautoConstants_1.JITO_CONNECTION.simulateBundle(txs, {
38
+ preExecutionAccountsConfigs: txs.map((x) => null),
39
+ postExecutionAccountsConfigs: txs.map((x) => null),
40
+ skipSigVerify: true,
41
+ });
42
+ simulationResult.value.transactionResults.forEach((tx) => {
43
+ if (tx.err) {
44
+ tx.logs?.forEach((x) => {
45
+ console.log(x);
46
+ });
47
+ }
48
+ chai_1.assert.equal(tx.err, undefined);
49
+ });
50
+ return simulationResult.value.transactionResults;
51
+ }
52
+ async function umiToVersionedTransactions(signer, txs, feeEstimates, computeUnitLimits) {
53
+ return await Promise.all(txs.map(async (tx, i) => {
54
+ const versionedTx = (0, umi_web3js_adapters_1.toWeb3JsTransaction)(await (await (0, solanaUtils_1.assembleFinalTransaction)(signer, tx, feeEstimates[i], computeUnitLimits ? computeUnitLimits[i] : undefined).setLatestBlockhash(solautoConstants_1.UMI)).buildAndSign(solautoConstants_1.UMI));
55
+ return versionedTx;
56
+ }));
57
+ }
58
+ async function sendJitoBundle(bundle) {
59
+ await waitUntilJitoNextLeader();
60
+ let searcher = getSearcherClient();
61
+ console.log("Sending bundle...");
62
+ try {
63
+ const resp = await searcher.sendBundle(bundle);
64
+ console.log("Send bundle response:", resp);
65
+ }
66
+ catch (e) {
67
+ console.error("Error sending bundle:", e);
68
+ }
69
+ return await new Promise((resolve, reject) => {
70
+ searcher.onBundleResult((res) => {
71
+ if (res.accepted || res.processed || res.finalized) {
72
+ resolve(res);
73
+ }
74
+ else {
75
+ console.log(res);
76
+ return reject("Bundle not accepted");
77
+ }
78
+ }, (err) => {
79
+ console.log("Error: ", err);
80
+ return reject(err);
81
+ });
82
+ });
83
+ }
84
+ async function sendJitoBundledTransactions(client, txs, simulateOnly) {
85
+ client.log("Sending Jito bundle...");
86
+ client.log("Transactions: ", txs.length);
87
+ client.log("Transaction sizes: ", txs.map((x) => x.getTransactionSize(solautoConstants_1.UMI)));
88
+ txs[0] = txs[0].prepend(await getTipInstruction(client, 1000000));
89
+ const feeEstimates = await Promise.all(txs.map(solanaUtils_1.getComputeUnitPriceEstimate));
90
+ let builtTxs = await umiToVersionedTransactions(client.signer, txs, feeEstimates);
91
+ // // TODO: Skip over this for now, and instead don't specify a compute unit limit in the final bundle transactions
92
+ // const simulationResults = await simulateJitoBundle(builtTxs);
93
+ if (!simulateOnly) {
94
+ // let builtTxs = await umiToVersionedTransactions(
95
+ // client.signer,
96
+ // txs,
97
+ // feeEstimates,
98
+ // simulationResults.map((x) => x.unitsConsumed! * 1.15)
99
+ // );
100
+ const bundleResult = await sendJitoBundle(new types_1.Bundle(builtTxs, 100));
101
+ return {
102
+ bundleResult,
103
+ txSigs: builtTxs.map((x) => x.signatures).flat(),
104
+ };
105
+ }
106
+ return undefined;
107
+ }
108
+ exports.sendJitoBundledTransactions = sendJitoBundledTransactions;
@@ -0,0 +1,21 @@
1
+ import { Signer, TransactionBuilder } from "@metaplex-foundation/umi";
2
+ import { PublicKey } from "@solana/web3.js";
3
+ import { QuoteResponse } from "@jup-ag/api";
4
+ export interface JupSwapDetails {
5
+ inputMint: PublicKey;
6
+ outputMint: PublicKey;
7
+ destinationWallet: PublicKey;
8
+ amount: bigint;
9
+ slippageBpsIncFactor?: number;
10
+ exactOut?: boolean;
11
+ exactIn?: boolean;
12
+ }
13
+ export interface JupSwapTransaction {
14
+ jupQuote: QuoteResponse;
15
+ lookupTableAddresses: string[];
16
+ setupInstructions: TransactionBuilder;
17
+ tokenLedgerIx: TransactionBuilder;
18
+ swapIx: TransactionBuilder;
19
+ }
20
+ export declare function getJupSwapTransaction(signer: Signer, swapDetails: JupSwapDetails): Promise<JupSwapTransaction>;
21
+ //# sourceMappingURL=jupiterUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jupiterUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jupiterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA0B,MAAM,iBAAiB,CAAC;AAIpE,OAAO,EAGL,aAAa,EACd,MAAM,aAAa,CAAC;AAKrB,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,iBAAiB,EAAE,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAgBD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,aAAa,EAAE,kBAAkB,CAAC;IAClC,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,cAAc,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CA4D7B"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getJupSwapTransaction = void 0;
4
+ const umi_1 = require("@metaplex-foundation/umi");
5
+ const web3_js_1 = require("@solana/web3.js");
6
+ const solanaUtils_1 = require("./solanaUtils");
7
+ const numberUtils_1 = require("./numberUtils");
8
+ const console_1 = require("console");
9
+ const api_1 = require("@jup-ag/api");
10
+ const accountUtils_1 = require("./accountUtils");
11
+ const jupApi = (0, api_1.createJupiterApiClient)();
12
+ function createTransactionInstruction(instruction) {
13
+ return new web3_js_1.TransactionInstruction({
14
+ programId: new web3_js_1.PublicKey(instruction.programId),
15
+ keys: instruction.accounts.map((key) => ({
16
+ pubkey: new web3_js_1.PublicKey(key.pubkey),
17
+ isSigner: key.isSigner,
18
+ isWritable: key.isWritable,
19
+ })),
20
+ data: Buffer.from(instruction.data, "base64"),
21
+ });
22
+ }
23
+ async function getJupSwapTransaction(signer, swapDetails) {
24
+ console.log("Getting jup quote...");
25
+ const quoteResponse = await jupApi.quoteGet({
26
+ amount: Number(swapDetails.amount),
27
+ inputMint: swapDetails.inputMint.toString(),
28
+ outputMint: swapDetails.outputMint.toString(),
29
+ swapMode: swapDetails.exactOut
30
+ ? "ExactOut"
31
+ : swapDetails.exactIn
32
+ ? "ExactIn"
33
+ : undefined,
34
+ });
35
+ // Up price slippage bps by an extra swapDetails.slippageBpsIncFactor of the estimated price impact (minimum 0.1% price slippage no matter what)
36
+ const finalPriceSlippageBps = Math.max(quoteResponse.slippageBps ?? 10, Math.round((0, numberUtils_1.toBps)(parseFloat(quoteResponse.priceImpactPct)) *
37
+ (1 + (swapDetails.slippageBpsIncFactor ?? 0))));
38
+ quoteResponse.slippageBps = finalPriceSlippageBps;
39
+ console.log(quoteResponse);
40
+ console.log("Getting jup instructions...");
41
+ const instructions = await jupApi.swapInstructionsPost({
42
+ swapRequest: {
43
+ userPublicKey: signer.publicKey.toString(),
44
+ quoteResponse,
45
+ wrapAndUnwrapSol: false,
46
+ useTokenLedger: !swapDetails.exactOut && !swapDetails.exactIn,
47
+ destinationTokenAccount: (0, accountUtils_1.getTokenAccount)(swapDetails.destinationWallet, swapDetails.outputMint).toString(),
48
+ },
49
+ });
50
+ (0, console_1.assert)(instructions.swapInstruction !== undefined);
51
+ return {
52
+ jupQuote: quoteResponse,
53
+ lookupTableAddresses: instructions.addressLookupTableAddresses,
54
+ setupInstructions: (0, umi_1.transactionBuilder)().add(instructions.setupInstructions.map((ix) => (0, solanaUtils_1.getWrappedInstruction)(signer, createTransactionInstruction(ix)))),
55
+ tokenLedgerIx: (0, umi_1.transactionBuilder)().add(instructions.tokenLedgerInstruction !== undefined
56
+ ? (0, solanaUtils_1.getWrappedInstruction)(signer, createTransactionInstruction(instructions.tokenLedgerInstruction))
57
+ : (0, umi_1.transactionBuilder)()),
58
+ swapIx: (0, umi_1.transactionBuilder)().add((0, solanaUtils_1.getWrappedInstruction)(signer, createTransactionInstruction(instructions.swapInstruction))),
59
+ };
60
+ }
61
+ exports.getJupSwapTransaction = getJupSwapTransaction;
@@ -0,0 +1,3 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ export declare function updateLookupTable(accounts: string[], lookupTableAddress?: PublicKey): Promise<void>;
3
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/utils/local/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,SAAS,EACV,MAAM,iBAAiB,CAAC;AAsDzB,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAAE,EAClB,kBAAkB,CAAC,EAAE,SAAS,iBAqB/B"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateLookupTable = void 0;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ const solanaUtils_1 = require("../solanaUtils");
6
+ const solautoConstants_1 = require("../../constants/solautoConstants");
7
+ const keypair = web3_js_1.Keypair.fromSecretKey((0, solanaUtils_1.getSecretKey)());
8
+ async function createAndSendV0Tx(txInstructions) {
9
+ let latestBlockhash = await solautoConstants_1.CONNECTION.getLatestBlockhash("finalized");
10
+ const messageV0 = new web3_js_1.TransactionMessage({
11
+ payerKey: keypair.publicKey,
12
+ recentBlockhash: latestBlockhash.blockhash,
13
+ instructions: txInstructions,
14
+ }).compileToV0Message();
15
+ const transaction = new web3_js_1.VersionedTransaction(messageV0);
16
+ transaction.sign([keypair]);
17
+ const txid = await solautoConstants_1.CONNECTION.sendTransaction(transaction, {
18
+ maxRetries: 5,
19
+ });
20
+ const confirmation = await solautoConstants_1.CONNECTION.confirmTransaction({
21
+ signature: txid,
22
+ blockhash: latestBlockhash.blockhash,
23
+ lastValidBlockHeight: latestBlockhash.lastValidBlockHeight,
24
+ });
25
+ if (confirmation.value.err) {
26
+ throw new Error(confirmation.value.err.toString());
27
+ }
28
+ console.log(txid);
29
+ }
30
+ async function addAddressesIfNeeded(lookupTableAddress, existingAddresses, addressesToAdd) {
31
+ const addresses = addressesToAdd
32
+ .filter((x) => !existingAddresses.includes(x))
33
+ .map((x) => new web3_js_1.PublicKey(x));
34
+ if (addresses.length > 0) {
35
+ await createAndSendV0Tx([
36
+ web3_js_1.AddressLookupTableProgram.extendLookupTable({
37
+ payer: keypair.publicKey,
38
+ authority: keypair.publicKey,
39
+ lookupTable: lookupTableAddress,
40
+ addresses,
41
+ }),
42
+ ]);
43
+ }
44
+ }
45
+ async function updateLookupTable(accounts, lookupTableAddress) {
46
+ let lookupTable = lookupTableAddress
47
+ ? await solautoConstants_1.CONNECTION.getAddressLookupTable(lookupTableAddress)
48
+ : null;
49
+ if (lookupTable === null) {
50
+ const [createLutIx, addr] = web3_js_1.AddressLookupTableProgram.createLookupTable({
51
+ authority: keypair.publicKey,
52
+ payer: keypair.publicKey,
53
+ recentSlot: await solautoConstants_1.CONNECTION.getSlot({ commitment: "finalized" }),
54
+ });
55
+ lookupTableAddress = addr;
56
+ console.log("Lookup Table Address:", lookupTableAddress.toString());
57
+ createAndSendV0Tx([createLutIx]);
58
+ }
59
+ const existingAccounts = lookupTable?.value?.state.addresses.map((x) => x.toString()) ?? [];
60
+ console.log("Existing accounts: ", existingAccounts.length);
61
+ await addAddressesIfNeeded(lookupTableAddress, existingAccounts, accounts);
62
+ }
63
+ exports.updateLookupTable = updateLookupTable;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=updateMarginfiLUT.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateMarginfiLUT.d.ts","sourceRoot":"","sources":["../../../src/utils/local/updateMarginfiLUT.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const web3_js_1 = require("@solana/web3.js");
4
+ const marginfiAccounts_1 = require("../../constants/marginfiAccounts");
5
+ const marginfiAccounts_2 = require("../../constants/marginfiAccounts");
6
+ const marginfi_sdk_1 = require("../../marginfi-sdk");
7
+ const shared_1 = require("./shared");
8
+ const LOOKUP_TABLE_ADDRESS = new web3_js_1.PublicKey(marginfiAccounts_1.MARGINFI_ACCOUNTS_LOOKUP_TABLE);
9
+ async function addBanks() {
10
+ for (const key in marginfiAccounts_2.MARGINFI_ACCOUNTS) {
11
+ const accounts = marginfiAccounts_2.MARGINFI_ACCOUNTS[key];
12
+ await (0, shared_1.updateLookupTable)([
13
+ accounts.mint,
14
+ accounts.bank,
15
+ accounts.liquidityVault,
16
+ accounts.vaultAuthority,
17
+ accounts.priceOracle,
18
+ ], LOOKUP_TABLE_ADDRESS);
19
+ }
20
+ }
21
+ (0, shared_1.updateLookupTable)([marginfiAccounts_2.DEFAULT_MARGINFI_GROUP, marginfi_sdk_1.MARGINFI_PROGRAM_ID], LOOKUP_TABLE_ADDRESS);
22
+ addBanks();
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=updateSolautoLUT.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateSolautoLUT.d.ts","sourceRoot":"","sources":["../../../src/utils/local/updateSolautoLUT.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const web3_js_1 = require("@solana/web3.js");
4
+ const accountUtils_1 = require("../accountUtils");
5
+ const generalAccounts_1 = require("../../constants/generalAccounts");
6
+ const tokenConstants_1 = require("../../constants/tokenConstants");
7
+ const shared_1 = require("./shared");
8
+ const solautoConstants_1 = require("../../constants/solautoConstants");
9
+ const solautoManagerTokenAccounts = (0, accountUtils_1.getTokenAccounts)(generalAccounts_1.SOLAUTO_MANAGER, tokenConstants_1.ALL_SUPPORTED_TOKENS.map((x) => new web3_js_1.PublicKey(x)));
10
+ (0, shared_1.updateLookupTable)([
11
+ ...solautoConstants_1.STANDARD_LUT_ACCOUNTS,
12
+ ...solautoManagerTokenAccounts.map((x) => x.toString())
13
+ ]);
@@ -0,0 +1,14 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ import { Bank, MarginfiAccount } from "../marginfi-sdk";
3
+ import { MarginfiTokenAccounts } from "../types/accounts";
4
+ import { PositionState } from "../generated";
5
+ import { LivePositionUpdates } from "./solauto/generalUtils";
6
+ export declare function findMarginfiBankAccounts({ mint, bank, }: {
7
+ mint?: string;
8
+ bank?: string;
9
+ }): MarginfiTokenAccounts;
10
+ export declare function getMaxLtvAndLiqThreshold(supplyBank: Bank, debtBank: Bank, supplyPrice?: number): Promise<[number, number]>;
11
+ export declare function getAllMarginfiAccountsByAuthority(authority: PublicKey): Promise<MarginfiAccount[]>;
12
+ export declare function getMarginfiAccountPositionState(supplyMint: PublicKey, debtMint: PublicKey, marginfiAccount: MarginfiAccount | null, livePositionUpdates?: LivePositionUpdates): Promise<PositionState | undefined>;
13
+ export declare function getUpToDateShareValues(bank: Bank): Promise<[number, number]>;
14
+ //# sourceMappingURL=marginfiUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EACL,IAAI,EAGJ,eAAe,EAGhB,MAAM,iBAAiB,CAAC;AAUzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,wBAAgB,wBAAwB,CAAC,EACvC,IAAI,EACJ,IAAI,GACL,EAAE;IACD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,qBAAqB,CAWxB;AAED,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAkC3B;AAED,wBAAsB,iCAAiC,CACrD,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,eAAe,EAAE,CAAC,CA2B5B;AAiDD,wBAAsB,+BAA+B,CACnD,UAAU,EAAE,SAAS,EACrB,QAAQ,EAAE,SAAS,EACnB,eAAe,EAAE,eAAe,GAAG,IAAI,EACvC,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CA2HpC;AA+DD,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA0B3B"}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getUpToDateShareValues = exports.getMarginfiAccountPositionState = exports.getAllMarginfiAccountsByAuthority = exports.getMaxLtvAndLiqThreshold = exports.findMarginfiBankAccounts = void 0;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ const umi_1 = require("@metaplex-foundation/umi");
6
+ const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
7
+ const marginfi_sdk_1 = require("../marginfi-sdk");
8
+ const generalUtils_1 = require("./generalUtils");
9
+ const numberUtils_1 = require("./numberUtils");
10
+ const solautoConstants_1 = require("../constants/solautoConstants");
11
+ const marginfiAccounts_1 = require("../constants/marginfiAccounts");
12
+ const generalAccounts_1 = require("../constants/generalAccounts");
13
+ const solanaUtils_1 = require("./solanaUtils");
14
+ function findMarginfiBankAccounts({ mint, bank, }) {
15
+ for (const key in marginfiAccounts_1.MARGINFI_ACCOUNTS) {
16
+ const account = marginfiAccounts_1.MARGINFI_ACCOUNTS[key];
17
+ if (mint && account.mint.toString().toLowerCase() === mint.toLowerCase()) {
18
+ return account;
19
+ }
20
+ if (bank && account.bank.toString().toLowerCase() === bank.toLowerCase()) {
21
+ return account;
22
+ }
23
+ }
24
+ throw new Error(`Marginfi accounts not found by the mint: ${mint}`);
25
+ }
26
+ exports.findMarginfiBankAccounts = findMarginfiBankAccounts;
27
+ async function getMaxLtvAndLiqThreshold(supplyBank, debtBank, supplyPrice) {
28
+ if (!solautoConstants_1.PRICES[supplyBank.mint.toString()].price) {
29
+ const [price] = await (0, generalUtils_1.getTokenPrices)([(0, umi_web3js_adapters_1.toWeb3JsPublicKey)(supplyBank.mint)]);
30
+ supplyPrice = price;
31
+ }
32
+ let maxLtv = (0, numberUtils_1.bytesToI80F48)(supplyBank.config.assetWeightInit.value) /
33
+ (0, numberUtils_1.bytesToI80F48)(debtBank.config.liabilityWeightInit.value);
34
+ const liqThreshold = (0, numberUtils_1.bytesToI80F48)(supplyBank.config.assetWeightMaint.value) /
35
+ (0, numberUtils_1.bytesToI80F48)(debtBank.config.liabilityWeightMaint.value);
36
+ const totalDepositedUsdValue = (0, numberUtils_1.fromBaseUnit)(BigInt(Math.round((0, numberUtils_1.bytesToI80F48)(supplyBank.totalAssetShares.value) *
37
+ (0, numberUtils_1.bytesToI80F48)(supplyBank.assetShareValue.value))), supplyBank.mintDecimals) * supplyPrice;
38
+ if (supplyBank.config.totalAssetValueInitLimit !== BigInt(0) &&
39
+ totalDepositedUsdValue > supplyBank.config.totalAssetValueInitLimit) {
40
+ const discount = Number(supplyBank.config.totalAssetValueInitLimit) /
41
+ totalDepositedUsdValue;
42
+ maxLtv = Math.round(maxLtv * Number(discount));
43
+ }
44
+ return [maxLtv, liqThreshold];
45
+ }
46
+ exports.getMaxLtvAndLiqThreshold = getMaxLtvAndLiqThreshold;
47
+ async function getAllMarginfiAccountsByAuthority(authority) {
48
+ const marginfiAccounts = await solautoConstants_1.UMI.rpc.getProgramAccounts(marginfi_sdk_1.MARGINFI_PROGRAM_ID, {
49
+ commitment: "finalized",
50
+ dataSlice: {
51
+ offset: 0,
52
+ length: 0,
53
+ },
54
+ filters: [
55
+ {
56
+ dataSize: (0, marginfi_sdk_1.getMarginfiAccountSize)(),
57
+ },
58
+ {
59
+ memcmp: {
60
+ bytes: new Uint8Array(authority.toBuffer()),
61
+ offset: 40, // Anchor account discriminator + group pubkey
62
+ },
63
+ },
64
+ ],
65
+ });
66
+ return (0, marginfi_sdk_1.safeFetchAllMarginfiAccount)(solautoConstants_1.UMI, marginfiAccounts.map((x) => x.publicKey));
67
+ }
68
+ exports.getAllMarginfiAccountsByAuthority = getAllMarginfiAccountsByAuthority;
69
+ async function getTokenUsage(bank, isAsset, shares, amountUsedAdjustment) {
70
+ let [marketPrice] = await (0, generalUtils_1.getTokenPrices)([(0, umi_web3js_adapters_1.toWeb3JsPublicKey)(bank.mint)]);
71
+ const [assetShareValue, liabilityShareValue] = await getUpToDateShareValues(bank);
72
+ const shareValue = isAsset ? assetShareValue : liabilityShareValue;
73
+ const amountUsed = shares * shareValue + Number(amountUsedAdjustment ?? 0);
74
+ const totalDeposited = (0, numberUtils_1.bytesToI80F48)(bank.totalAssetShares.value) * assetShareValue;
75
+ const amountCanBeUsd = isAsset
76
+ ? Number(bank.config.depositLimit) - totalDeposited
77
+ : totalDeposited -
78
+ (0, numberUtils_1.bytesToI80F48)(bank.totalLiabilityShares.value) * liabilityShareValue;
79
+ return {
80
+ mint: bank.mint,
81
+ decimals: bank.mintDecimals,
82
+ amountUsed: {
83
+ baseUnit: BigInt(Math.round(amountUsed)),
84
+ baseAmountUsdValue: (0, numberUtils_1.toBaseUnit)((0, numberUtils_1.fromBaseUnit)(BigInt(Math.round(amountUsed)), bank.mintDecimals) *
85
+ marketPrice, generalAccounts_1.USD_DECIMALS),
86
+ },
87
+ amountCanBeUsed: {
88
+ baseUnit: BigInt(Math.round(amountCanBeUsd)),
89
+ baseAmountUsdValue: (0, numberUtils_1.toBaseUnit)((0, numberUtils_1.fromBaseUnit)(BigInt(Math.round(amountCanBeUsd)), bank.mintDecimals) *
90
+ marketPrice, generalAccounts_1.USD_DECIMALS),
91
+ },
92
+ baseAmountMarketPriceUsd: (0, numberUtils_1.toBaseUnit)(marketPrice, generalAccounts_1.USD_DECIMALS),
93
+ flashLoanFeeBps: 0,
94
+ borrowFeeBps: 0,
95
+ padding1: [],
96
+ padding2: [],
97
+ padding: new Uint8Array([]),
98
+ };
99
+ }
100
+ async function getMarginfiAccountPositionState(supplyMint, debtMint, marginfiAccount, livePositionUpdates) {
101
+ let supplyBank = supplyMint && supplyMint !== web3_js_1.PublicKey.default
102
+ ? await (0, marginfi_sdk_1.safeFetchBank)(solautoConstants_1.UMI, (0, umi_1.publicKey)(findMarginfiBankAccounts({ mint: supplyMint.toString() }).bank))
103
+ : null;
104
+ let debtBank = debtMint && debtMint !== web3_js_1.PublicKey.default
105
+ ? await (0, marginfi_sdk_1.safeFetchBank)(solautoConstants_1.UMI, (0, umi_1.publicKey)(findMarginfiBankAccounts({ mint: debtMint.toString() }).bank))
106
+ : null;
107
+ let supplyUsage = undefined;
108
+ let debtUsage = undefined;
109
+ if (marginfiAccount !== null &&
110
+ marginfiAccount.lendingAccount.balances.filter((x) => x.active).length > 0) {
111
+ const supplyBalances = marginfiAccount.lendingAccount.balances.filter((balance) => balance.active && (0, numberUtils_1.bytesToI80F48)(balance.assetShares.value) > 0);
112
+ const debtBalances = marginfiAccount.lendingAccount.balances.filter((balance) => balance.active && (0, numberUtils_1.bytesToI80F48)(balance.liabilityShares.value) > 0);
113
+ for (const balance of supplyBalances) {
114
+ if (supplyBank === null) {
115
+ supplyBank = await (0, marginfi_sdk_1.safeFetchBank)(solautoConstants_1.UMI, balance.bankPk);
116
+ }
117
+ supplyUsage = await getTokenUsage(supplyBank, true, (0, numberUtils_1.bytesToI80F48)(balance.assetShares.value), livePositionUpdates?.supplyAdjustment);
118
+ break;
119
+ }
120
+ for (const balance of debtBalances) {
121
+ if (debtBank === null) {
122
+ debtBank = await (0, marginfi_sdk_1.safeFetchBank)(solautoConstants_1.UMI, balance.bankPk);
123
+ }
124
+ debtUsage = await getTokenUsage(debtBank, false, (0, numberUtils_1.bytesToI80F48)(balance.liabilityShares.value), livePositionUpdates?.debtAdjustment);
125
+ break;
126
+ }
127
+ }
128
+ if (supplyBank !== null && !supplyUsage) {
129
+ supplyUsage = await getTokenUsage(supplyBank, true, 0, livePositionUpdates?.supplyAdjustment);
130
+ }
131
+ if (debtBank !== null && !debtUsage) {
132
+ debtUsage = await getTokenUsage(debtBank, false, 0, livePositionUpdates?.debtAdjustment);
133
+ }
134
+ if (supplyBank === null || debtBank === null) {
135
+ return undefined;
136
+ }
137
+ const supplyPrice = solautoConstants_1.PRICES[supplyMint.toString()].price;
138
+ let [maxLtv, liqThreshold] = await getMaxLtvAndLiqThreshold(supplyBank, debtBank, supplyPrice);
139
+ const supplyUsd = (0, numberUtils_1.fromBaseUnit)(supplyUsage.amountUsed.baseAmountUsdValue, generalAccounts_1.USD_DECIMALS);
140
+ const debtUsd = (0, numberUtils_1.fromBaseUnit)(debtUsage?.amountUsed?.baseAmountUsdValue ?? BigInt(0), generalAccounts_1.USD_DECIMALS);
141
+ return {
142
+ liqUtilizationRateBps: (0, numberUtils_1.getLiqUtilzationRateBps)(supplyUsd, debtUsd, Math.round(liqThreshold * 10000)),
143
+ netWorth: {
144
+ baseAmountUsdValue: (0, numberUtils_1.toBaseUnit)(supplyUsd - debtUsd, generalAccounts_1.USD_DECIMALS),
145
+ baseUnit: (0, numberUtils_1.toBaseUnit)((supplyUsd - debtUsd) / supplyPrice, supplyUsage.decimals),
146
+ },
147
+ supply: supplyUsage,
148
+ debt: debtUsage,
149
+ maxLtvBps: Math.round(maxLtv * 10000),
150
+ liqThresholdBps: Math.round(liqThreshold * 10000),
151
+ lastUpdated: BigInt((0, generalUtils_1.currentUnixSeconds)()),
152
+ padding1: [],
153
+ padding2: [],
154
+ padding: [],
155
+ };
156
+ }
157
+ exports.getMarginfiAccountPositionState = getMarginfiAccountPositionState;
158
+ function marginfiInterestRateCurve(bank, utilizationRatio) {
159
+ const optimalUr = (0, numberUtils_1.bytesToI80F48)(bank.config.interestRateConfig.optimalUtilizationRate.value);
160
+ const plateauIr = (0, numberUtils_1.bytesToI80F48)(bank.config.interestRateConfig.plateauInterestRate.value);
161
+ const maxIr = (0, numberUtils_1.bytesToI80F48)(bank.config.interestRateConfig.maxInterestRate.value);
162
+ if (utilizationRatio <= optimalUr) {
163
+ return (utilizationRatio / optimalUr) * plateauIr;
164
+ }
165
+ else {
166
+ return (((utilizationRatio - optimalUr) / (1 - optimalUr)) * (maxIr - plateauIr) +
167
+ plateauIr);
168
+ }
169
+ }
170
+ function calcInterestRate(bank, utilizationRatio) {
171
+ const baseRate = marginfiInterestRateCurve(bank, utilizationRatio);
172
+ const lendingRate = baseRate * utilizationRatio;
173
+ const protocolIrFee = (0, numberUtils_1.bytesToI80F48)(bank.config.interestRateConfig.protocolIrFee.value);
174
+ const insuranceIrFee = (0, numberUtils_1.bytesToI80F48)(bank.config.interestRateConfig.insuranceIrFee.value);
175
+ const protocolFixedFeeApr = (0, numberUtils_1.bytesToI80F48)(bank.config.interestRateConfig.protocolFixedFeeApr.value);
176
+ const insuranceFixedFeeApr = (0, numberUtils_1.bytesToI80F48)(bank.config.interestRateConfig.insuranceFeeFixedApr.value);
177
+ const rateFee = protocolIrFee + insuranceIrFee;
178
+ const totalFixedFeeApr = protocolFixedFeeApr + insuranceFixedFeeApr;
179
+ const borrowingRate = baseRate * (1 + rateFee) * totalFixedFeeApr;
180
+ return [lendingRate, borrowingRate];
181
+ }
182
+ function calcAccruedInterestPaymentPerPeriod(apr, timeDelta, shareValue) {
183
+ const irPerPeriod = (apr * timeDelta) / 31536000; // Seconds per year
184
+ const newValue = shareValue * (1 + irPerPeriod);
185
+ return newValue;
186
+ }
187
+ async function getUpToDateShareValues(bank) {
188
+ const currentTime = await (0, solanaUtils_1.currentUnixSecondsSolana)();
189
+ let timeDelta = currentTime - Number(bank.lastUpdate);
190
+ const totalAssets = (0, numberUtils_1.bytesToI80F48)(bank.totalAssetShares.value) *
191
+ (0, numberUtils_1.bytesToI80F48)(bank.assetShareValue.value);
192
+ const totalLiabilities = (0, numberUtils_1.bytesToI80F48)(bank.totalLiabilityShares.value) *
193
+ (0, numberUtils_1.bytesToI80F48)(bank.liabilityShareValue.value);
194
+ const utilizationRatio = totalLiabilities / totalAssets;
195
+ const [lendingApr, borrowingApr] = calcInterestRate(bank, utilizationRatio);
196
+ return [
197
+ calcAccruedInterestPaymentPerPeriod(lendingApr, timeDelta, (0, numberUtils_1.bytesToI80F48)(bank.assetShareValue.value)),
198
+ calcAccruedInterestPaymentPerPeriod(borrowingApr, timeDelta, (0, numberUtils_1.bytesToI80F48)(bank.liabilityShareValue.value)),
199
+ ];
200
+ }
201
+ exports.getUpToDateShareValues = getUpToDateShareValues;
@@ -0,0 +1,9 @@
1
+ export declare function getLiqUtilzationRateBps(supplyUsd: number, debtUsd: number, liqThresholdBps: number): number;
2
+ export declare function toBaseUnit(value: number, decimals: number): bigint;
3
+ export declare function fromBaseUnit(value: bigint, decimals: number): number;
4
+ export declare function fromBps(value: number): number;
5
+ export declare function toBps(value: number): number;
6
+ export declare function bytesToI80F48(bytes: number[]): number;
7
+ export declare function uint8ArrayToBigInt(uint8Array: Uint8Array): bigint;
8
+ export declare function getDebtAdjustmentUsd(liqThresholdBps: number, supplyUsd: number, debtUsd: number, targetLiqUtilizationRateBps: number, adjustmentFeeBps?: number): number;
9
+ //# sourceMappingURL=numberUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numberUtils.d.ts","sourceRoot":"","sources":["../../src/utils/numberUtils.ts"],"names":[],"mappings":"AACA,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAM3G;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhE;AAEH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAqBrD;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAajE;AAED,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,2BAA2B,EAAE,MAAM,EACnC,gBAAgB,CAAC,EAAE,MAAM,UAQ1B"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDebtAdjustmentUsd = exports.uint8ArrayToBigInt = exports.bytesToI80F48 = exports.toBps = exports.fromBps = exports.fromBaseUnit = exports.toBaseUnit = exports.getLiqUtilzationRateBps = void 0;
4
+ function getLiqUtilzationRateBps(supplyUsd, debtUsd, liqThresholdBps) {
5
+ if (supplyUsd === 0) {
6
+ return 0;
7
+ }
8
+ return toBps(debtUsd / (supplyUsd * fromBps(liqThresholdBps)));
9
+ }
10
+ exports.getLiqUtilzationRateBps = getLiqUtilzationRateBps;
11
+ function toBaseUnit(value, decimals) {
12
+ return BigInt(Math.round(value * Math.pow(10, decimals)));
13
+ }
14
+ exports.toBaseUnit = toBaseUnit;
15
+ function fromBaseUnit(value, decimals) {
16
+ return Number(value) / Math.pow(10, decimals);
17
+ }
18
+ exports.fromBaseUnit = fromBaseUnit;
19
+ function fromBps(value) {
20
+ return value / 10000;
21
+ }
22
+ exports.fromBps = fromBps;
23
+ function toBps(value) {
24
+ return Math.round(value * 10000);
25
+ }
26
+ exports.toBps = toBps;
27
+ function bytesToI80F48(bytes) {
28
+ if (bytes.length !== 16) {
29
+ throw new Error('Byte array must be exactly 16 bytes.');
30
+ }
31
+ const reversedBytes = bytes.slice().reverse();
32
+ let integerPart = BigInt(0);
33
+ let fractionalPart = BigInt(0);
34
+ for (let i = 0; i < 10; i++) {
35
+ integerPart = (integerPart << 8n) | BigInt(reversedBytes[i]);
36
+ }
37
+ for (let i = 10; i < 16; i++) {
38
+ fractionalPart = (fractionalPart << 8n) | BigInt(reversedBytes[i]);
39
+ }
40
+ const fullValue = integerPart * BigInt(2 ** 48) + fractionalPart;
41
+ return Number(fullValue) / (2 ** 48);
42
+ }
43
+ exports.bytesToI80F48 = bytesToI80F48;
44
+ function uint8ArrayToBigInt(uint8Array) {
45
+ if (uint8Array.length !== 8) {
46
+ throw new Error('Uint8Array must be exactly 8 bytes long to convert to u64.');
47
+ }
48
+ const buffer = uint8Array.buffer;
49
+ const dataView = new DataView(buffer);
50
+ const low = dataView.getUint32(0, true);
51
+ const high = dataView.getUint32(4, true);
52
+ return BigInt(high) << 32n | BigInt(low);
53
+ }
54
+ exports.uint8ArrayToBigInt = uint8ArrayToBigInt;
55
+ function getDebtAdjustmentUsd(liqThresholdBps, supplyUsd, debtUsd, targetLiqUtilizationRateBps, adjustmentFeeBps) {
56
+ const adjustmentFee = adjustmentFeeBps && adjustmentFeeBps > 0 ? fromBps(adjustmentFeeBps) : 0;
57
+ const liqThreshold = fromBps(liqThresholdBps);
58
+ const targetLiqUtilizationRate = fromBps(targetLiqUtilizationRateBps);
59
+ const debtAdjustmentUsd = (targetLiqUtilizationRate * supplyUsd * liqThreshold - debtUsd) / (1 - targetLiqUtilizationRate * (1 - adjustmentFee) * liqThreshold);
60
+ return debtAdjustmentUsd;
61
+ }
62
+ exports.getDebtAdjustmentUsd = getDebtAdjustmentUsd;
@@ -0,0 +1,18 @@
1
+ import { AddressLookupTableInput, Signer, TransactionBuilder, WrappedInstruction } from "@metaplex-foundation/umi";
2
+ import { PublicKey, TransactionInstruction } from "@solana/web3.js";
3
+ import { SolautoClient } from "../clients/solautoClient";
4
+ export declare function loadSecretKey(keypairPath: string): Uint8Array;
5
+ export declare function getSecretKey(keypairFilename?: string): Uint8Array;
6
+ export declare function currentUnixSecondsSolana(): Promise<number>;
7
+ export declare function getWrappedInstruction(signer: Signer, ix: TransactionInstruction): WrappedInstruction;
8
+ export declare function setComputeUnitLimitUmiIx(signer: Signer, maxComputeUnits: number): WrappedInstruction;
9
+ export declare function setComputeUnitPriceUmiIx(signer: Signer, lamports: number): WrappedInstruction;
10
+ export declare function createAssociatedTokenAccountUmiIx(signer: Signer, wallet: PublicKey, mint: PublicKey): WrappedInstruction;
11
+ export declare function systemTransferUmiIx(signer: Signer, destination: PublicKey, lamports: bigint): WrappedInstruction;
12
+ export declare function closeTokenAccountUmiIx(signer: Signer, tokenAccount: PublicKey, authority: PublicKey): WrappedInstruction;
13
+ export declare function splTokenTransferUmiIx(signer: Signer, fromTa: PublicKey, toTa: PublicKey, authority: PublicKey, amount: bigint): WrappedInstruction;
14
+ export declare function getAdressLookupInputs(lookupTableAddresses: string[]): Promise<AddressLookupTableInput[]>;
15
+ export declare function assembleFinalTransaction(signer: Signer, tx: TransactionBuilder, computeUnitPrice: number, computeUnitLimit?: number): TransactionBuilder;
16
+ export declare function getComputeUnitPriceEstimate(tx: TransactionBuilder, attemptNum?: number): Promise<number>;
17
+ export declare function sendSingleOptimizedTransaction(client: SolautoClient, tx: TransactionBuilder, simulateOnly?: boolean, attemptNum?: number): Promise<Uint8Array | undefined>;
18
+ //# sourceMappingURL=solanaUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solanaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,uBAAuB,EACvB,MAAM,EACN,kBAAkB,EAClB,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EAGL,SAAS,EAIT,sBAAsB,EAGvB,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAQzD,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,cAGhD;AAED,wBAAgB,YAAY,CAAC,eAAe,GAAE,MAAa,GAAG,UAAU,CAIvE;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC,CAQhE;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,sBAAsB,GACzB,kBAAkB,CAMpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,kBAAkB,CAOpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,kBAAkB,CAOpB;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,kBAAkB,CAUpB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,SAAS,EACtB,QAAQ,EAAE,MAAM,GACf,kBAAkB,CASpB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,SAAS,EACvB,SAAS,EAAE,SAAS,GACnB,kBAAkB,CAKpB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,GACb,kBAAkB,CAKpB;AAED,wBAAsB,qBAAqB,CACzC,oBAAoB,EAAE,MAAM,EAAE,GAC7B,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAkBpC;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,kBAAkB,EACtB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,CAAC,EAAE,MAAM,sBA4D1B;AAiBD,wBAAsB,2BAA2B,CAC/C,EAAE,EAAE,kBAAkB,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAejB;AAED,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,YAAY,CAAC,EAAE,OAAO,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAoDjC"}