@haven-fi/solauto-sdk 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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,333 @@
1
+ import fs from "fs";
2
+ import bs58 from "bs58";
3
+ import path from "path";
4
+ import {
5
+ AddressLookupTableInput,
6
+ Signer,
7
+ TransactionBuilder,
8
+ WrappedInstruction,
9
+ publicKey,
10
+ transactionBuilder,
11
+ } from "@metaplex-foundation/umi";
12
+ import {
13
+ fromWeb3JsInstruction,
14
+ toWeb3JsPublicKey,
15
+ toWeb3JsTransaction,
16
+ } from "@metaplex-foundation/umi-web3js-adapters";
17
+ import {
18
+ AddressLookupTableAccount,
19
+ ComputeBudgetProgram,
20
+ PublicKey,
21
+ RpcResponseAndContext,
22
+ SimulatedTransactionResponse,
23
+ SystemProgram,
24
+ TransactionInstruction,
25
+ VersionedTransaction,
26
+ TransactionError,
27
+ } from "@solana/web3.js";
28
+ import {
29
+ createAssociatedTokenAccountIdempotentInstruction,
30
+ createCloseAccountInstruction,
31
+ createTransferInstruction,
32
+ } from "@solana/spl-token";
33
+ import { getTokenAccount } from "./accountUtils";
34
+ import { SolautoClient } from "../clients/solautoClient";
35
+ import { CONNECTION, UMI } from "../constants/solautoConstants";
36
+ import { arraysAreEqual, retryWithExponentialBackoff } from "./generalUtils";
37
+ import {
38
+ getLendingAccountEndFlashloanInstructionDataSerializer,
39
+ getLendingAccountStartFlashloanInstructionDataSerializer,
40
+ } from "../marginfi-sdk";
41
+
42
+ export function loadSecretKey(keypairPath: string) {
43
+ const secretKey = JSON.parse(fs.readFileSync(keypairPath, "utf8"));
44
+ return new Uint8Array(secretKey);
45
+ }
46
+
47
+ export function getSecretKey(keypairFilename: string = "id"): Uint8Array {
48
+ return loadSecretKey(
49
+ path.join(process.env.HOME!, ".config", "solana", keypairFilename + ".json")
50
+ );
51
+ }
52
+
53
+ export async function currentUnixSecondsSolana(): Promise<number> {
54
+ return await retryWithExponentialBackoff(async () => {
55
+ const blockTime = await CONNECTION.getBlockTime(await CONNECTION.getSlot());
56
+ if (blockTime === null) {
57
+ throw new Error("Unable to retrieve block time");
58
+ }
59
+ return blockTime;
60
+ });
61
+ }
62
+
63
+ export function getWrappedInstruction(
64
+ signer: Signer,
65
+ ix: TransactionInstruction
66
+ ): WrappedInstruction {
67
+ return {
68
+ instruction: fromWeb3JsInstruction(ix),
69
+ signers: [signer],
70
+ bytesCreatedOnChain: 0,
71
+ };
72
+ }
73
+
74
+ export function setComputeUnitLimitUmiIx(
75
+ signer: Signer,
76
+ maxComputeUnits: number
77
+ ): WrappedInstruction {
78
+ return getWrappedInstruction(
79
+ signer,
80
+ ComputeBudgetProgram.setComputeUnitLimit({
81
+ units: maxComputeUnits,
82
+ })
83
+ );
84
+ }
85
+
86
+ export function setComputeUnitPriceUmiIx(
87
+ signer: Signer,
88
+ lamports: number
89
+ ): WrappedInstruction {
90
+ return getWrappedInstruction(
91
+ signer,
92
+ ComputeBudgetProgram.setComputeUnitPrice({
93
+ microLamports: lamports,
94
+ })
95
+ );
96
+ }
97
+
98
+ export function createAssociatedTokenAccountUmiIx(
99
+ signer: Signer,
100
+ wallet: PublicKey,
101
+ mint: PublicKey
102
+ ): WrappedInstruction {
103
+ return getWrappedInstruction(
104
+ signer,
105
+ createAssociatedTokenAccountIdempotentInstruction(
106
+ toWeb3JsPublicKey(signer.publicKey),
107
+ getTokenAccount(wallet, mint),
108
+ wallet,
109
+ mint
110
+ )
111
+ );
112
+ }
113
+
114
+ export function systemTransferUmiIx(
115
+ signer: Signer,
116
+ destination: PublicKey,
117
+ lamports: bigint
118
+ ): WrappedInstruction {
119
+ return getWrappedInstruction(
120
+ signer,
121
+ SystemProgram.transfer({
122
+ fromPubkey: toWeb3JsPublicKey(signer.publicKey),
123
+ toPubkey: destination,
124
+ lamports,
125
+ })
126
+ );
127
+ }
128
+
129
+ export function closeTokenAccountUmiIx(
130
+ signer: Signer,
131
+ tokenAccount: PublicKey,
132
+ authority: PublicKey
133
+ ): WrappedInstruction {
134
+ return getWrappedInstruction(
135
+ signer,
136
+ createCloseAccountInstruction(tokenAccount, authority, authority)
137
+ );
138
+ }
139
+
140
+ export function splTokenTransferUmiIx(
141
+ signer: Signer,
142
+ fromTa: PublicKey,
143
+ toTa: PublicKey,
144
+ authority: PublicKey,
145
+ amount: bigint
146
+ ): WrappedInstruction {
147
+ return getWrappedInstruction(
148
+ signer,
149
+ createTransferInstruction(fromTa, toTa, authority, amount)
150
+ );
151
+ }
152
+
153
+ export async function getAdressLookupInputs(
154
+ lookupTableAddresses: string[]
155
+ ): Promise<AddressLookupTableInput[]> {
156
+ const addressLookupTableAccountInfos = await UMI.rpc.getAccounts(
157
+ lookupTableAddresses.map((key) => publicKey(key))
158
+ );
159
+
160
+ return addressLookupTableAccountInfos.reduce((acc, accountInfo, index) => {
161
+ const addressLookupTableAddress = lookupTableAddresses[index];
162
+ if (accountInfo.exists) {
163
+ acc.push({
164
+ publicKey: publicKey(addressLookupTableAddress),
165
+ addresses: AddressLookupTableAccount.deserialize(
166
+ accountInfo.data
167
+ ).addresses.map((x) => publicKey(x)),
168
+ } as AddressLookupTableInput);
169
+ }
170
+
171
+ return acc;
172
+ }, new Array<AddressLookupTableInput>());
173
+ }
174
+
175
+ export function assembleFinalTransaction(
176
+ signer: Signer,
177
+ tx: TransactionBuilder,
178
+ computeUnitPrice: number,
179
+ computeUnitLimit?: number
180
+ ) {
181
+ tx = tx
182
+ .prepend(setComputeUnitPriceUmiIx(signer, computeUnitPrice))
183
+ .prepend(
184
+ computeUnitLimit
185
+ ? setComputeUnitLimitUmiIx(signer, computeUnitLimit)
186
+ : transactionBuilder()
187
+ );
188
+
189
+ const marginfiStartFlSerializer =
190
+ getLendingAccountStartFlashloanInstructionDataSerializer();
191
+ const marginfiStartFlDiscriminator = marginfiStartFlSerializer
192
+ .serialize({
193
+ endIndex: 0,
194
+ })
195
+ .slice(0, 8);
196
+
197
+ const marginfiEndFlSerializer =
198
+ getLendingAccountEndFlashloanInstructionDataSerializer();
199
+ const marginfiEndFlDiscriminator = marginfiEndFlSerializer
200
+ .serialize({
201
+ endIndex: 0,
202
+ })
203
+ .slice(0, 8);
204
+
205
+ let endFlIndex = 0;
206
+ const instructions = tx.getInstructions();
207
+
208
+ for (let i = instructions.length - 1; i >= 0; i--) {
209
+ const ix = instructions[i];
210
+
211
+ try {
212
+ const [data, _] = marginfiStartFlSerializer.deserialize(ix.data);
213
+ if (
214
+ arraysAreEqual(
215
+ data.discriminator,
216
+ Array.from(marginfiStartFlDiscriminator)
217
+ )
218
+ ) {
219
+ ix.data = marginfiStartFlSerializer.serialize({
220
+ endIndex: endFlIndex,
221
+ });
222
+ }
223
+ } catch {}
224
+
225
+ try {
226
+ const [data, _] = marginfiEndFlSerializer.deserialize(ix.data);
227
+ if (
228
+ arraysAreEqual(
229
+ data.discriminator,
230
+ Array.from(marginfiEndFlDiscriminator)
231
+ )
232
+ ) {
233
+ endFlIndex = i;
234
+ }
235
+ } catch {}
236
+ }
237
+
238
+ return tx;
239
+ }
240
+
241
+ async function simulateTransaction(
242
+ transaction: VersionedTransaction
243
+ ): Promise<RpcResponseAndContext<SimulatedTransactionResponse>> {
244
+ const simulationResult = await CONNECTION.simulateTransaction(transaction, {
245
+ sigVerify: true,
246
+ });
247
+ if (simulationResult.value.err) {
248
+ simulationResult.value.logs?.forEach((x) => {
249
+ console.log(x);
250
+ });
251
+ throw simulationResult.value.err;
252
+ }
253
+ return simulationResult;
254
+ }
255
+
256
+ export async function getComputeUnitPriceEstimate(
257
+ tx: TransactionBuilder,
258
+ attemptNum?: number
259
+ ): Promise<number> {
260
+ const web3Transaction = toWeb3JsTransaction(
261
+ (await tx.setLatestBlockhash(UMI, { commitment: "finalized" })).build(UMI)
262
+ );
263
+ const serializedTransaction = bs58.encode(web3Transaction.serialize());
264
+ const resp = await UMI.rpc.call("getPriorityFeeEstimate", [
265
+ {
266
+ transaction: serializedTransaction,
267
+ options: { priorityLevel: attemptNum && attemptNum > 0 ? "VeryHigh" : "High" },
268
+ },
269
+ ]);
270
+ const feeEstimate = Math.round((resp as any).priorityFeeEstimate as number);
271
+ console.log("Compute unit price: ", feeEstimate);
272
+
273
+ return feeEstimate;
274
+ }
275
+
276
+ export async function sendSingleOptimizedTransaction(
277
+ client: SolautoClient,
278
+ tx: TransactionBuilder,
279
+ simulateOnly?: boolean,
280
+ attemptNum?: number
281
+ ): Promise<Uint8Array | undefined> {
282
+ client.log("Sending single optimized transaction...");
283
+ client.log("Instructions: ", tx.getInstructions().length);
284
+ client.log("Serialized transaction size: ", tx.getTransactionSize(UMI));
285
+
286
+ const feeEstimate = await getComputeUnitPriceEstimate(tx, attemptNum);
287
+
288
+ const simulationResult = await retryWithExponentialBackoff(
289
+ async () =>
290
+ await simulateTransaction(
291
+ toWeb3JsTransaction(
292
+ await (
293
+ await assembleFinalTransaction(
294
+ client.signer,
295
+ tx,
296
+ feeEstimate,
297
+ 1_400_000
298
+ ).setLatestBlockhash(UMI)
299
+ ).buildAndSign(UMI)
300
+ )
301
+ )
302
+ );
303
+
304
+ const computeUnitLimit = Math.round(
305
+ simulationResult.value.unitsConsumed! * 1.15
306
+ );
307
+ console.log("Compute unit limit: ", computeUnitLimit);
308
+
309
+ if (!simulateOnly) {
310
+ const result = await retryWithExponentialBackoff(
311
+ async () =>
312
+ await assembleFinalTransaction(
313
+ client.signer,
314
+ tx,
315
+ feeEstimate,
316
+ computeUnitLimit
317
+ ).sendAndConfirm(UMI, {
318
+ send: {
319
+ skipPreflight: true,
320
+ commitment: "finalized",
321
+ },
322
+ confirm: { commitment: "finalized" },
323
+ })
324
+ );
325
+ client.log(`https://solscan.io/tx/${bs58.encode(result.signature)}`);
326
+ if (result.result.value.err !== null) {
327
+ throw new Error(result.result.value.err.toString());
328
+ }
329
+ return result.signature;
330
+ }
331
+
332
+ return undefined;
333
+ }
@@ -0,0 +1,371 @@
1
+ import { assert } from "chai";
2
+ import { isOption, isSome, PublicKey } from "@metaplex-foundation/umi";
3
+ import {
4
+ AutomationSettings,
5
+ DCASettings,
6
+ DCASettingsInpArgs,
7
+ FeeType,
8
+ LendingPlatform,
9
+ PositionState,
10
+ SOLAUTO_PROGRAM_ID,
11
+ SolautoSettingsParameters,
12
+ SolautoSettingsParametersInpArgs,
13
+ getReferralStateSize,
14
+ getSolautoPositionAccountDataSerializer,
15
+ getSolautoPositionSize,
16
+ } from "../../generated";
17
+ import { currentUnixSeconds } from "../generalUtils";
18
+ import { fromBps, toBps } from "../numberUtils";
19
+ import {
20
+ MAX_REPAY_GAP_BPS,
21
+ MIN_POSITION_STATE_FRESHNESS_SECS,
22
+ UMI,
23
+ } from "../../constants/solautoConstants";
24
+ import { getReferralState } from "../accountUtils";
25
+ import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
26
+
27
+ function newPeriodsPassed(
28
+ automation: AutomationSettings,
29
+ currentUnixTimestamp: number
30
+ ): number {
31
+ return Math.min(
32
+ automation.targetPeriods,
33
+ automation.periodsPassed +
34
+ Math.floor(
35
+ (currentUnixTimestamp - Number(automation.unixStartDate)) /
36
+ Number(automation.intervalSeconds)
37
+ )
38
+ );
39
+ }
40
+
41
+ export function nextAutomationPeriodTimestamp(
42
+ automation: AutomationSettings
43
+ ): number {
44
+ return automation.periodsPassed === 0
45
+ ? Number(automation.unixStartDate)
46
+ : Number(automation.unixStartDate) +
47
+ automation.periodsPassed * Number(automation.intervalSeconds);
48
+ }
49
+
50
+ export function eligibleForNextAutomationPeriod(
51
+ automation: AutomationSettings
52
+ ): boolean {
53
+ return currentUnixSeconds() >= nextAutomationPeriodTimestamp(automation);
54
+ }
55
+
56
+ export function getUpdatedValueFromAutomation(
57
+ currValue: number,
58
+ targetValue: number,
59
+ automation: AutomationSettings,
60
+ currentUnixTimestamp: number
61
+ ) {
62
+ const currRateDiff = currValue - targetValue;
63
+ const progressPct =
64
+ 1 /
65
+ Math.max(
66
+ 1,
67
+ automation.targetPeriods -
68
+ newPeriodsPassed(automation, currentUnixTimestamp)
69
+ );
70
+ const newValue = currValue - currRateDiff * progressPct;
71
+ return newValue;
72
+ }
73
+
74
+ export function getAdjustedSettingsFromAutomation(
75
+ settings: SolautoSettingsParameters,
76
+ currentUnixSeconds: number
77
+ ): SolautoSettingsParameters {
78
+ const boostToBps =
79
+ settings.automation.targetPeriods > 0 &&
80
+ eligibleForNextAutomationPeriod(settings.automation)
81
+ ? getUpdatedValueFromAutomation(
82
+ settings.boostToBps,
83
+ settings.targetBoostToBps,
84
+ settings.automation,
85
+ currentUnixSeconds
86
+ )
87
+ : settings.boostToBps;
88
+
89
+ return {
90
+ ...settings,
91
+ boostToBps,
92
+ };
93
+ }
94
+
95
+ export function getSolautoFeesBps(isReferred: boolean, feeType: FeeType): {
96
+ solauto: number;
97
+ referrer: number;
98
+ total: number;
99
+ } {
100
+ const fees = feeType === FeeType.Small ? 100 : 500;
101
+ let referrer = 0;
102
+ if (isReferred) {
103
+ referrer = fees / 4;
104
+ }
105
+
106
+ return {
107
+ solauto: fees - referrer,
108
+ referrer,
109
+ total: fees,
110
+ };
111
+ }
112
+
113
+ export function getMaxLiqUtilizationRate(
114
+ maxLtvBps: number,
115
+ liqThresholdBps: number
116
+ ): number {
117
+ return toBps((fromBps(maxLtvBps) - 0.015) / fromBps(liqThresholdBps)) - 1;
118
+ }
119
+
120
+ export function maxRepayFrom(maxLtvBps: number, liqThresholdBps: number) {
121
+ return Math.min(9000, getMaxLiqUtilizationRate(maxLtvBps, liqThresholdBps - 1000));
122
+ }
123
+
124
+ export function maxRepayTo(maxLtvBps: number, liqThresholdBps: number) {
125
+ return Math.min(maxRepayFrom(maxLtvBps, liqThresholdBps) - MAX_REPAY_GAP_BPS, getMaxLiqUtilizationRate(maxLtvBps, liqThresholdBps));
126
+ }
127
+
128
+ export function eligibileForRebalance(
129
+ positionState: PositionState,
130
+ positionSettings: SolautoSettingsParameters,
131
+ positionDca: DCASettings
132
+ ): boolean {
133
+ if (
134
+ positionDca.automation.targetPeriods > 0 &&
135
+ eligibleForNextAutomationPeriod(positionDca.automation)
136
+ ) {
137
+ return true;
138
+ }
139
+
140
+ const boostToBps =
141
+ eligibleForRefresh(positionState, positionSettings) &&
142
+ positionSettings.automation.targetPeriods > 0
143
+ ? getUpdatedValueFromAutomation(
144
+ positionSettings.boostToBps,
145
+ positionSettings.targetBoostToBps,
146
+ positionSettings.automation,
147
+ currentUnixSeconds()
148
+ )
149
+ : positionSettings.boostToBps;
150
+ const repayFrom = positionSettings.repayToBps + positionSettings.repayGap;
151
+ const boostFrom = boostToBps - positionSettings.boostGap;
152
+
153
+ if (positionState.liqUtilizationRateBps <= boostFrom) {
154
+ return true;
155
+ } else if (
156
+ positionState.liqUtilizationRateBps >= repayFrom ||
157
+ repayFrom - positionState.liqUtilizationRateBps < repayFrom * 0.01
158
+ ) {
159
+ return true;
160
+ }
161
+
162
+ return false;
163
+ }
164
+
165
+ export function eligibleForRefresh(
166
+ positionState: PositionState,
167
+ positionSettings: SolautoSettingsParameters
168
+ ): boolean {
169
+ if (positionSettings.automation.targetPeriods > 0) {
170
+ return eligibleForNextAutomationPeriod(positionSettings.automation);
171
+ } else {
172
+ return currentUnixSeconds() - Number(positionState.lastUpdated) > 60 * 60 * 24 * 7;
173
+ }
174
+ }
175
+
176
+ export async function getSolautoManagedPositions(
177
+ authority?: PublicKey
178
+ ): Promise<
179
+ {
180
+ authority: PublicKey;
181
+ positionId: number;
182
+ lendingPlatform: LendingPlatform;
183
+ }[]
184
+ > {
185
+ // bump: [u8; 1]
186
+ // position_id: [u8; 1]
187
+ // self_managed: u8 - (1 for true, 0 for false)
188
+ // padding: [u8; 5]
189
+ // authority: Pubkey
190
+ // lending_platform: u8
191
+
192
+ const accounts = await UMI.rpc.getProgramAccounts(SOLAUTO_PROGRAM_ID, {
193
+ commitment: "finalized",
194
+ dataSlice: {
195
+ offset: 0,
196
+ length: 1 + 1 + 1 + 5 + 32 + 1, // bump + position_id + self_managed + padding + authority (pubkey) + lending_platform
197
+ },
198
+ filters: [
199
+ {
200
+ dataSize: getSolautoPositionSize(),
201
+ },
202
+ {
203
+ memcmp: {
204
+ bytes: new Uint8Array([0]),
205
+ offset: 2,
206
+ },
207
+ },
208
+ ...(authority
209
+ ? [
210
+ {
211
+ memcmp: {
212
+ bytes: new Uint8Array(toWeb3JsPublicKey(authority).toBuffer()),
213
+ offset: 8,
214
+ },
215
+ },
216
+ ]
217
+ : []),
218
+ ],
219
+ });
220
+
221
+ return accounts.map((x) => {
222
+ const [position, _] = getSolautoPositionAccountDataSerializer().deserialize(
223
+ new Uint8Array([
224
+ ...x.data,
225
+ ...Array(getSolautoPositionSize() - x.data.length).fill(0),
226
+ ])
227
+ );
228
+ return {
229
+ authority: position.authority,
230
+ positionId: position.positionId[0],
231
+ lendingPlatform: position.position.lendingPlatform,
232
+ };
233
+ });
234
+ }
235
+
236
+ export async function getAllReferralStates(): Promise<PublicKey[]> {
237
+ const accounts = await UMI.rpc.getProgramAccounts(SOLAUTO_PROGRAM_ID, {
238
+ commitment: "finalized",
239
+ dataSlice: {
240
+ offset: 0,
241
+ length: 0,
242
+ },
243
+ filters: [
244
+ {
245
+ dataSize: getReferralStateSize(),
246
+ },
247
+ ],
248
+ });
249
+
250
+ return accounts.map((x) => x.publicKey);
251
+ }
252
+
253
+ export async function getReferralsByUser(
254
+ user: PublicKey
255
+ ): Promise<PublicKey[]> {
256
+ // bump: [u8; 1],
257
+ // padding: [u8; 7],
258
+ // authority: Pubkey,
259
+ // referred_by_state: Pubkey,
260
+
261
+ const userReferralState = await getReferralState(toWeb3JsPublicKey(user));
262
+ const accounts = await UMI.rpc.getProgramAccounts(SOLAUTO_PROGRAM_ID, {
263
+ commitment: "finalized",
264
+ dataSlice: {
265
+ offset: 0,
266
+ length: 0,
267
+ },
268
+ filters: [
269
+ {
270
+ dataSize: getReferralStateSize(),
271
+ },
272
+ {
273
+ memcmp: {
274
+ bytes: userReferralState.toBytes(),
275
+ offset: 1 + 7 + 32, // bump + padding + authority - target the referred_by_state field
276
+ },
277
+ },
278
+ ],
279
+ });
280
+
281
+ return accounts.map((x) => x.publicKey);
282
+ }
283
+
284
+ type PositionAdjustment =
285
+ | { type: "supply"; value: bigint }
286
+ | { type: "debt"; value: bigint }
287
+ | { type: "debtDcaIn"; value: bigint }
288
+ | { type: "settings"; value: SolautoSettingsParametersInpArgs }
289
+ | { type: "dca"; value: DCASettingsInpArgs };
290
+
291
+ export class LivePositionUpdates {
292
+ public supplyAdjustment: bigint = BigInt(0);
293
+ public debtAdjustment: bigint = BigInt(0);
294
+ public debtTaBalanceAdjustment: bigint = BigInt(0);
295
+ public settings: SolautoSettingsParameters | undefined = undefined;
296
+ public activeDca: DCASettings | undefined = undefined;
297
+
298
+ new(update: PositionAdjustment) {
299
+ if (update.type === "supply") {
300
+ this.supplyAdjustment += update.value;
301
+ } else if (update.type === "debt") {
302
+ this.debtAdjustment += update.value;
303
+ } else if (update.type === "debtDcaIn") {
304
+ this.debtTaBalanceAdjustment += update.value;
305
+ } else if (update.type === "settings") {
306
+ const settings = update.value;
307
+ this.settings = {
308
+ automation:
309
+ isOption(settings.automation) && isSome(settings.automation)
310
+ ? {
311
+ ...settings.automation.value,
312
+ intervalSeconds: BigInt(
313
+ settings.automation.value.intervalSeconds
314
+ ),
315
+ unixStartDate: BigInt(settings.automation.value.unixStartDate),
316
+ padding: new Uint8Array([]),
317
+ padding1: [],
318
+ }
319
+ : {
320
+ targetPeriods: 0,
321
+ periodsPassed: 0,
322
+ intervalSeconds: BigInt(0),
323
+ unixStartDate: BigInt(0),
324
+ padding: new Uint8Array([]),
325
+ padding1: [],
326
+ },
327
+ targetBoostToBps:
328
+ isOption(settings.targetBoostToBps) &&
329
+ isSome(settings.targetBoostToBps)
330
+ ? settings.targetBoostToBps.value
331
+ : 0,
332
+ boostGap: settings.boostGap,
333
+ boostToBps: settings.boostToBps,
334
+ repayGap: settings.repayGap,
335
+ repayToBps: settings.repayToBps,
336
+ padding: new Uint8Array([]),
337
+ padding1: [],
338
+ };
339
+ } else if (update.type === "dca") {
340
+ const dca = update.value;
341
+ this.activeDca = {
342
+ automation: {
343
+ ...dca.automation,
344
+ intervalSeconds: BigInt(dca.automation.intervalSeconds),
345
+ unixStartDate: BigInt(dca.automation.unixStartDate),
346
+ padding: new Uint8Array([]),
347
+ padding1: [],
348
+ },
349
+ debtToAddBaseUnit: BigInt(dca.debtToAddBaseUnit),
350
+ padding: new Uint8Array([]),
351
+ };
352
+ }
353
+ }
354
+
355
+ reset() {
356
+ this.supplyAdjustment = BigInt(0);
357
+ this.debtAdjustment = BigInt(0);
358
+ this.debtTaBalanceAdjustment = BigInt(0);
359
+ this.settings = undefined;
360
+ this.activeDca = undefined;
361
+ }
362
+
363
+ hasUpdates(): boolean {
364
+ return (
365
+ this.supplyAdjustment !== BigInt(0) ||
366
+ this.debtAdjustment !== BigInt(0) ||
367
+ this.debtTaBalanceAdjustment !== BigInt(0) ||
368
+ this.settings !== undefined
369
+ );
370
+ }
371
+ }
@@ -0,0 +1,2 @@
1
+ export * from './generalUtils';
2
+ export * from './rebalanceUtils';