@haven-fi/solauto-sdk 1.0.581 → 1.0.583

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 (268) hide show
  1. package/dist/constants/solautoConstants.d.ts +1 -0
  2. package/dist/constants/solautoConstants.d.ts.map +1 -1
  3. package/dist/constants/solautoConstants.js +4 -10
  4. package/dist/constants/switchboardConstants.d.ts.map +1 -1
  5. package/dist/constants/switchboardConstants.js +5 -5
  6. package/dist/generated/accounts/solautoPosition.js +2 -2
  7. package/dist/generated/errors/solauto.d.ts +14 -2
  8. package/dist/generated/errors/solauto.d.ts.map +1 -1
  9. package/dist/generated/errors/solauto.js +27 -5
  10. package/dist/generated/instructions/claimReferralFees.d.ts +1 -1
  11. package/dist/generated/instructions/claimReferralFees.d.ts.map +1 -1
  12. package/dist/generated/instructions/closePosition.d.ts +1 -1
  13. package/dist/generated/instructions/closePosition.d.ts.map +1 -1
  14. package/dist/generated/instructions/closePosition.js +2 -2
  15. package/dist/generated/instructions/marginfiOpenPosition.d.ts +1 -3
  16. package/dist/generated/instructions/marginfiOpenPosition.d.ts.map +1 -1
  17. package/dist/generated/instructions/marginfiOpenPosition.js +0 -1
  18. package/dist/generated/instructions/marginfiRebalance.d.ts +7 -3
  19. package/dist/generated/instructions/marginfiRebalance.d.ts.map +1 -1
  20. package/dist/generated/instructions/marginfiRebalance.js +3 -1
  21. package/dist/generated/types/index.d.ts +7 -1
  22. package/dist/generated/types/index.d.ts.map +1 -1
  23. package/dist/generated/types/index.js +7 -1
  24. package/dist/generated/types/positionData.d.ts +2 -2
  25. package/dist/generated/types/positionData.d.ts.map +1 -1
  26. package/dist/generated/types/positionData.js +1 -1
  27. package/dist/generated/types/positionState.d.ts +7 -7
  28. package/dist/generated/types/positionState.d.ts.map +1 -1
  29. package/dist/generated/types/positionState.js +3 -3
  30. package/dist/generated/types/{positionTokenUsage.d.ts → positionTokenState.d.ts} +6 -8
  31. package/dist/generated/types/positionTokenState.d.ts.map +1 -0
  32. package/dist/generated/types/{positionTokenUsage.js → positionTokenState.js} +6 -7
  33. package/dist/generated/types/rebalanceData.d.ts +7 -13
  34. package/dist/generated/types/rebalanceData.d.ts.map +1 -1
  35. package/dist/generated/types/rebalanceData.js +3 -6
  36. package/dist/generated/types/rebalanceDirection.d.ts +3 -2
  37. package/dist/generated/types/rebalanceDirection.d.ts.map +1 -1
  38. package/dist/generated/types/rebalanceDirection.js +3 -2
  39. package/dist/generated/types/rebalanceInstructionData.d.ts +27 -0
  40. package/dist/generated/types/rebalanceInstructionData.d.ts.map +1 -0
  41. package/dist/generated/types/rebalanceInstructionData.js +22 -0
  42. package/dist/generated/types/rebalanceStateValues.d.ts +27 -0
  43. package/dist/generated/types/rebalanceStateValues.d.ts.map +1 -0
  44. package/dist/generated/types/rebalanceStateValues.js +22 -0
  45. package/dist/generated/types/rebalanceStep.d.ts +15 -0
  46. package/dist/generated/types/rebalanceStep.d.ts.map +1 -0
  47. package/dist/generated/types/rebalanceStep.js +22 -0
  48. package/dist/generated/types/solautoRebalanceType.d.ts +4 -5
  49. package/dist/generated/types/solautoRebalanceType.d.ts.map +1 -1
  50. package/dist/generated/types/solautoRebalanceType.js +4 -5
  51. package/dist/generated/types/solautoSettingsParameters.d.ts +2 -15
  52. package/dist/generated/types/solautoSettingsParameters.d.ts.map +1 -1
  53. package/dist/generated/types/solautoSettingsParameters.js +1 -5
  54. package/dist/generated/types/solautoSettingsParametersInp.d.ts +1 -12
  55. package/dist/generated/types/solautoSettingsParametersInp.d.ts.map +1 -1
  56. package/dist/generated/types/solautoSettingsParametersInp.js +0 -3
  57. package/dist/generated/types/swapType.d.ts +15 -0
  58. package/dist/generated/types/swapType.d.ts.map +1 -0
  59. package/dist/generated/types/swapType.js +22 -0
  60. package/dist/generated/types/tokenBalanceChange.d.ts +21 -0
  61. package/dist/generated/types/tokenBalanceChange.d.ts.map +1 -0
  62. package/dist/generated/types/tokenBalanceChange.js +19 -0
  63. package/dist/generated/types/tokenBalanceChangeType.d.ts +18 -0
  64. package/dist/generated/types/tokenBalanceChangeType.d.ts.map +1 -0
  65. package/dist/generated/types/tokenBalanceChangeType.js +25 -0
  66. package/dist/generated/types/updatePositionData.d.ts +2 -2
  67. package/dist/generated/types/updatePositionData.d.ts.map +1 -1
  68. package/dist/generated/types/updatePositionData.js +1 -1
  69. package/dist/index.d.ts +8 -6
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +5 -5
  72. package/dist/marginfi-sdk/types/interestRateConfig.d.ts +3 -1
  73. package/dist/marginfi-sdk/types/interestRateConfig.d.ts.map +1 -1
  74. package/dist/marginfi-sdk/types/interestRateConfig.js +2 -1
  75. package/dist/services/flashLoans/flProviderAggregator.d.ts +19 -0
  76. package/dist/services/flashLoans/flProviderAggregator.d.ts.map +1 -0
  77. package/dist/services/flashLoans/flProviderAggregator.js +46 -0
  78. package/dist/services/flashLoans/flProviderBase.d.ts +23 -0
  79. package/dist/services/flashLoans/flProviderBase.d.ts.map +1 -0
  80. package/dist/services/flashLoans/flProviderBase.js +37 -0
  81. package/dist/services/flashLoans/index.d.ts +4 -0
  82. package/dist/services/flashLoans/index.d.ts.map +1 -0
  83. package/dist/services/flashLoans/index.js +19 -0
  84. package/dist/services/flashLoans/marginfiFlProvider.d.ts +25 -0
  85. package/dist/services/flashLoans/marginfiFlProvider.d.ts.map +1 -0
  86. package/dist/services/flashLoans/marginfiFlProvider.js +246 -0
  87. package/dist/services/index.d.ts +6 -0
  88. package/dist/services/index.d.ts.map +1 -0
  89. package/dist/services/index.js +21 -0
  90. package/dist/services/rebalance/index.d.ts +3 -0
  91. package/dist/services/rebalance/index.d.ts.map +1 -0
  92. package/dist/services/rebalance/index.js +18 -0
  93. package/dist/services/rebalance/rebalanceSwapManager.d.ts +30 -0
  94. package/dist/services/rebalance/rebalanceSwapManager.d.ts.map +1 -0
  95. package/dist/services/rebalance/rebalanceSwapManager.js +144 -0
  96. package/dist/services/rebalance/rebalanceTxBuilder.d.ts +22 -0
  97. package/dist/services/rebalance/rebalanceTxBuilder.d.ts.map +1 -0
  98. package/dist/services/rebalance/rebalanceTxBuilder.js +200 -0
  99. package/dist/services/rebalance/rebalanceValues.d.ts +31 -0
  100. package/dist/services/rebalance/rebalanceValues.d.ts.map +1 -0
  101. package/dist/services/rebalance/rebalanceValues.js +118 -0
  102. package/dist/services/rebalance/solautoFees.d.ts +13 -0
  103. package/dist/services/rebalance/solautoFees.d.ts.map +1 -0
  104. package/dist/services/rebalance/solautoFees.js +54 -0
  105. package/dist/services/solauto/index.d.ts +5 -0
  106. package/dist/services/solauto/index.d.ts.map +1 -0
  107. package/dist/{clients → services/solauto}/referralStateManager.d.ts +4 -5
  108. package/dist/services/solauto/referralStateManager.d.ts.map +1 -0
  109. package/dist/{clients → services/solauto}/referralStateManager.js +10 -12
  110. package/dist/services/solauto/solautoClient.d.ts +59 -0
  111. package/dist/services/solauto/solautoClient.d.ts.map +1 -0
  112. package/dist/{clients → services/solauto}/solautoClient.js +78 -109
  113. package/dist/services/solauto/solautoMarginfiClient.d.ts +34 -0
  114. package/dist/services/solauto/solautoMarginfiClient.d.ts.map +1 -0
  115. package/dist/services/solauto/solautoMarginfiClient.js +322 -0
  116. package/dist/{clients → services/solauto}/txHandler.d.ts +11 -2
  117. package/dist/services/solauto/txHandler.d.ts.map +1 -0
  118. package/dist/services/solauto/txHandler.js +38 -0
  119. package/dist/services/swap/index.d.ts +2 -0
  120. package/dist/services/swap/index.d.ts.map +1 -0
  121. package/dist/{utils/solauto → services/swap}/index.js +1 -2
  122. package/dist/services/swap/jupSwapManager.d.ts +37 -0
  123. package/dist/services/swap/jupSwapManager.d.ts.map +1 -0
  124. package/dist/services/swap/jupSwapManager.js +108 -0
  125. package/dist/services/transactions/index.d.ts.map +1 -0
  126. package/dist/{transactions → services/transactions}/transactionUtils.d.ts +3 -5
  127. package/dist/services/transactions/transactionUtils.d.ts.map +1 -0
  128. package/dist/{transactions → services/transactions}/transactionUtils.js +29 -137
  129. package/dist/{transactions → services/transactions}/transactionsManager.d.ts +4 -4
  130. package/dist/services/transactions/transactionsManager.d.ts.map +1 -0
  131. package/dist/{transactions → services/transactions}/transactionsManager.js +10 -8
  132. package/dist/solautoPosition/index.d.ts +4 -0
  133. package/dist/solautoPosition/index.d.ts.map +1 -0
  134. package/dist/solautoPosition/index.js +19 -0
  135. package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts +14 -0
  136. package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts.map +1 -0
  137. package/dist/solautoPosition/marginfiSolautoPositionEx.js +73 -0
  138. package/dist/solautoPosition/solautoPositionEx.d.ts +67 -0
  139. package/dist/solautoPosition/solautoPositionEx.d.ts.map +1 -0
  140. package/dist/solautoPosition/solautoPositionEx.js +143 -0
  141. package/dist/solautoPosition/utils.d.ts +17 -0
  142. package/dist/solautoPosition/utils.d.ts.map +1 -0
  143. package/dist/solautoPosition/utils.js +115 -0
  144. package/dist/types/solauto.d.ts +19 -1
  145. package/dist/types/solauto.d.ts.map +1 -1
  146. package/dist/utils/generalUtils.d.ts +1 -0
  147. package/dist/utils/generalUtils.d.ts.map +1 -1
  148. package/dist/utils/generalUtils.js +9 -1
  149. package/dist/utils/index.d.ts +1 -1
  150. package/dist/utils/index.d.ts.map +1 -1
  151. package/dist/utils/index.js +1 -1
  152. package/dist/utils/jitoUtils.d.ts.map +1 -1
  153. package/dist/utils/jupiterUtils.d.ts +3 -28
  154. package/dist/utils/jupiterUtils.d.ts.map +1 -1
  155. package/dist/utils/jupiterUtils.js +2 -73
  156. package/dist/utils/marginfiUtils.d.ts +4 -3
  157. package/dist/utils/marginfiUtils.d.ts.map +1 -1
  158. package/dist/utils/marginfiUtils.js +47 -18
  159. package/dist/utils/numberUtils.d.ts +3 -6
  160. package/dist/utils/numberUtils.d.ts.map +1 -1
  161. package/dist/utils/numberUtils.js +13 -48
  162. package/dist/utils/priceUtils.js +1 -1
  163. package/dist/utils/solanaUtils.js +2 -2
  164. package/dist/utils/{solauto/generalUtils.d.ts → solautoUtils.d.ts} +9 -16
  165. package/dist/utils/solautoUtils.d.ts.map +1 -0
  166. package/dist/utils/{solauto/generalUtils.js → solautoUtils.js} +48 -173
  167. package/dist/utils/switchboardUtils.d.ts +1 -1
  168. package/dist/utils/switchboardUtils.d.ts.map +1 -1
  169. package/dist/utils/switchboardUtils.js +10 -9
  170. package/local/createTokenAccounts.ts +1 -5
  171. package/local/logPositions.ts +22 -68
  172. package/local/shared.ts +29 -24
  173. package/local/txSandbox.ts +27 -0
  174. package/local/updateMarginfiLUT.ts +80 -4
  175. package/package.json +4 -7
  176. package/src/constants/solautoConstants.ts +4 -9
  177. package/src/constants/switchboardConstants.ts +10 -5
  178. package/src/generated/accounts/solautoPosition.ts +2 -2
  179. package/src/generated/errors/solauto.ts +45 -4
  180. package/src/generated/instructions/claimReferralFees.ts +1 -1
  181. package/src/generated/instructions/closePosition.ts +3 -3
  182. package/src/generated/instructions/marginfiOpenPosition.ts +0 -7
  183. package/src/generated/instructions/marginfiRebalance.ts +12 -3
  184. package/src/generated/types/index.ts +7 -1
  185. package/src/generated/types/positionData.ts +3 -3
  186. package/src/generated/types/positionState.ts +12 -12
  187. package/src/generated/types/{positionTokenUsage.ts → positionTokenState.ts} +13 -16
  188. package/src/generated/types/rebalanceData.ts +16 -27
  189. package/src/generated/types/rebalanceDirection.ts +1 -0
  190. package/src/generated/types/rebalanceInstructionData.ts +62 -0
  191. package/src/generated/types/rebalanceStateValues.ts +59 -0
  192. package/src/generated/types/rebalanceStep.ts +25 -0
  193. package/src/generated/types/solautoRebalanceType.ts +0 -1
  194. package/src/generated/types/solautoSettingsParameters.ts +4 -25
  195. package/src/generated/types/solautoSettingsParametersInp.ts +2 -24
  196. package/src/generated/types/swapType.ts +22 -0
  197. package/src/generated/types/tokenBalanceChange.ts +46 -0
  198. package/src/generated/types/tokenBalanceChangeType.ts +28 -0
  199. package/src/generated/types/updatePositionData.ts +3 -3
  200. package/src/index.ts +8 -8
  201. package/src/marginfi-sdk/types/interestRateConfig.ts +6 -2
  202. package/src/services/flashLoans/flProviderAggregator.ts +74 -0
  203. package/src/services/flashLoans/flProviderBase.ts +88 -0
  204. package/src/services/flashLoans/index.ts +3 -0
  205. package/src/services/flashLoans/marginfiFlProvider.ts +392 -0
  206. package/src/services/index.ts +5 -0
  207. package/src/services/rebalance/index.ts +2 -0
  208. package/src/services/rebalance/rebalanceSwapManager.ts +218 -0
  209. package/src/services/rebalance/rebalanceTxBuilder.ts +330 -0
  210. package/src/services/rebalance/rebalanceValues.ts +232 -0
  211. package/src/services/rebalance/solautoFees.ts +61 -0
  212. package/src/services/solauto/index.ts +4 -0
  213. package/src/{clients → services/solauto}/referralStateManager.ts +17 -31
  214. package/src/{clients → services/solauto}/solautoClient.ts +142 -205
  215. package/src/services/solauto/solautoMarginfiClient.ts +472 -0
  216. package/src/services/solauto/txHandler.ts +69 -0
  217. package/src/services/swap/index.ts +1 -0
  218. package/src/services/swap/jupSwapManager.ts +189 -0
  219. package/src/{transactions → services/transactions}/transactionUtils.ts +40 -280
  220. package/src/{transactions → services/transactions}/transactionsManager.ts +15 -10
  221. package/src/solautoPosition/index.ts +3 -0
  222. package/src/solautoPosition/marginfiSolautoPositionEx.ts +111 -0
  223. package/src/solautoPosition/solautoPositionEx.ts +281 -0
  224. package/src/solautoPosition/utils.ts +188 -0
  225. package/src/types/solauto.ts +30 -2
  226. package/src/utils/generalUtils.ts +9 -1
  227. package/src/utils/index.ts +2 -2
  228. package/src/utils/jitoUtils.ts +0 -4
  229. package/src/utils/jupiterUtils.ts +3 -164
  230. package/src/utils/marginfiUtils.ts +77 -43
  231. package/src/utils/numberUtils.ts +18 -77
  232. package/src/utils/solanaUtils.ts +1 -1
  233. package/src/utils/{solauto/generalUtils.ts → solautoUtils.ts} +66 -288
  234. package/src/utils/switchboardUtils.ts +15 -17
  235. package/tests/transactions/shared.ts +135 -0
  236. package/tests/transactions/solautoMarginfi.ts +8 -198
  237. package/tests/unit/accounts.ts +3 -10
  238. package/tests/unit/lookupTables.ts +23 -2
  239. package/tests/unit/rebalanceCalculations.ts +65 -343
  240. package/dist/clients/index.d.ts +0 -5
  241. package/dist/clients/index.d.ts.map +0 -1
  242. package/dist/clients/referralStateManager.d.ts.map +0 -1
  243. package/dist/clients/solautoClient.d.ts +0 -71
  244. package/dist/clients/solautoClient.d.ts.map +0 -1
  245. package/dist/clients/solautoMarginfiClient.d.ts +0 -51
  246. package/dist/clients/solautoMarginfiClient.d.ts.map +0 -1
  247. package/dist/clients/solautoMarginfiClient.js +0 -497
  248. package/dist/clients/txHandler.d.ts.map +0 -1
  249. package/dist/clients/txHandler.js +0 -23
  250. package/dist/generated/types/positionTokenUsage.d.ts.map +0 -1
  251. package/dist/transactions/index.d.ts.map +0 -1
  252. package/dist/transactions/transactionUtils.d.ts.map +0 -1
  253. package/dist/transactions/transactionsManager.d.ts.map +0 -1
  254. package/dist/utils/solauto/generalUtils.d.ts.map +0 -1
  255. package/dist/utils/solauto/index.d.ts +0 -3
  256. package/dist/utils/solauto/index.d.ts.map +0 -1
  257. package/dist/utils/solauto/rebalanceUtils.d.ts +0 -30
  258. package/dist/utils/solauto/rebalanceUtils.d.ts.map +0 -1
  259. package/dist/utils/solauto/rebalanceUtils.js +0 -287
  260. package/src/clients/index.ts +0 -4
  261. package/src/clients/solautoMarginfiClient.ts +0 -774
  262. package/src/clients/txHandler.ts +0 -38
  263. package/src/utils/solauto/index.ts +0 -2
  264. package/src/utils/solauto/rebalanceUtils.ts +0 -562
  265. package/dist/{clients → services/solauto}/index.js +2 -2
  266. /package/dist/{transactions → services/transactions}/index.d.ts +0 -0
  267. /package/dist/{transactions → services/transactions}/index.js +0 -0
  268. /package/src/{transactions → services/transactions}/index.ts +0 -0
@@ -1,287 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getRebalanceValues = getRebalanceValues;
4
- exports.getFlashLoanRequirements = getFlashLoanRequirements;
5
- exports.getFlashLoanDetails = getFlashLoanDetails;
6
- exports.getJupSwapRebalanceDetails = getJupSwapRebalanceDetails;
7
- const web3_js_1 = require("@solana/web3.js");
8
- const generated_1 = require("../../generated");
9
- const generalUtils_1 = require("./generalUtils");
10
- const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
11
- const jupiterUtils_1 = require("../jupiterUtils");
12
- const generalUtils_2 = require("../generalUtils");
13
- const numberUtils_1 = require("../numberUtils");
14
- const priceUtils_1 = require("../priceUtils");
15
- const constants_1 = require("../../constants");
16
- function getAdditionalAmountToDcaIn(dca) {
17
- if (dca.dcaInBaseUnit === BigInt(0)) {
18
- return 0;
19
- }
20
- const debtBalance = Number(dca.dcaInBaseUnit);
21
- const updatedDebtBalance = (0, generalUtils_1.getUpdatedValueFromAutomation)(debtBalance, 0, dca.automation, (0, generalUtils_2.currentUnixSeconds)());
22
- return debtBalance - updatedDebtBalance;
23
- }
24
- function getStandardTargetLiqUtilizationRateBps(state, settings) {
25
- const adjustedSettings = (0, generalUtils_1.getAdjustedSettingsFromAutomation)(settings, (0, generalUtils_2.currentUnixSeconds)());
26
- if (state.liqUtilizationRateBps < adjustedSettings.boostToBps) {
27
- return adjustedSettings.boostToBps;
28
- }
29
- else if (state.liqUtilizationRateBps > settings.repayToBps) {
30
- return adjustedSettings.repayToBps;
31
- }
32
- else {
33
- throw new Error("Invalid rebalance condition");
34
- }
35
- }
36
- function targetLiqUtilizationRateBpsFromDCA(state, settings, dca, currentUnixTime) {
37
- const adjustedSettings = (0, generalUtils_1.getAdjustedSettingsFromAutomation)(settings, currentUnixTime);
38
- let targetRateBps = 0;
39
- if (dca.dcaInBaseUnit > BigInt(0)) {
40
- targetRateBps = Math.max(state.liqUtilizationRateBps, adjustedSettings.boostToBps);
41
- }
42
- else {
43
- targetRateBps = adjustedSettings.boostToBps;
44
- }
45
- return targetRateBps;
46
- }
47
- function isDcaRebalance(state, settings, dca, currentUnixTime) {
48
- if (dca === undefined || dca.automation.targetPeriods === 0) {
49
- return false;
50
- }
51
- const adjustedSettings = (0, generalUtils_1.getAdjustedSettingsFromAutomation)(settings, currentUnixTime);
52
- if (state.liqUtilizationRateBps >
53
- adjustedSettings.repayToBps + adjustedSettings.repayGap) {
54
- return false;
55
- }
56
- if (!(0, generalUtils_1.eligibleForNextAutomationPeriod)(dca.automation, currentUnixTime)) {
57
- return false;
58
- }
59
- return true;
60
- }
61
- function getTargetRateAndDcaAmount(state, settings, dca, currentUnixTime, targetLiqUtilizationRateBps) {
62
- if (targetLiqUtilizationRateBps !== undefined) {
63
- return {
64
- targetRateBps: targetLiqUtilizationRateBps,
65
- };
66
- }
67
- if (settings === undefined) {
68
- throw new Error("If rebalancing a self-managed position, settings and DCA should be provided");
69
- }
70
- if (isDcaRebalance(state, settings, dca, currentUnixTime)) {
71
- const targetLiqUtilizationRateBps = targetLiqUtilizationRateBpsFromDCA(state, settings, dca, currentUnixTime);
72
- const amountToDcaIn = getAdditionalAmountToDcaIn(dca);
73
- return {
74
- targetRateBps: targetLiqUtilizationRateBps,
75
- amountToDcaIn,
76
- };
77
- }
78
- else {
79
- return {
80
- targetRateBps: getStandardTargetLiqUtilizationRateBps(state, settings),
81
- };
82
- }
83
- }
84
- function getRebalanceValues(state, settings, dca, currentUnixTime, supplyPrice, debtPrice, targetLiqUtilizationRateBps) {
85
- let { targetRateBps, amountToDcaIn } = getTargetRateAndDcaAmount(state, settings, dca, currentUnixTime, targetLiqUtilizationRateBps);
86
- // TODO: REVERT ME AND GET TO THE ROOT OF THIS ISSUE
87
- const supplyMint = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(state.supply.mint);
88
- if (constants_1.BROKEN_TOKENS.includes(supplyMint.toString()) &&
89
- ((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(state.debt.mint).equals(new web3_js_1.PublicKey(constants_1.USDC)) ||
90
- (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(state.debt.mint).equals(new web3_js_1.PublicKey(constants_1.USDT))) &&
91
- settings &&
92
- settings.boostToBps ===
93
- (0, numberUtils_1.maxBoostToBps)(state.maxLtvBps, state.liqThresholdBps) &&
94
- targetRateBps === settings.boostToBps) {
95
- targetRateBps = 6500;
96
- }
97
- const amountUsdToDcaIn = (0, numberUtils_1.fromBaseUnit)(BigInt(Math.round(amountToDcaIn ?? 0)), state.debt.decimals) *
98
- (dca?.tokenType === generated_1.TokenType.Debt ? debtPrice : supplyPrice);
99
- const rebalanceDirection = amountUsdToDcaIn > 0 || state.liqUtilizationRateBps <= targetRateBps
100
- ? generated_1.RebalanceDirection.Boost
101
- : generated_1.RebalanceDirection.Repay;
102
- const adjustmentFeeBps = (0, numberUtils_1.getSolautoFeesBps)(false, targetLiqUtilizationRateBps, (0, numberUtils_1.calcNetWorthUsd)(state), rebalanceDirection).total;
103
- let debtAdjustmentUsd = (0, numberUtils_1.getDebtAdjustmentUsd)(state.liqThresholdBps, (0, numberUtils_1.calcSupplyUsd)(state) + amountUsdToDcaIn, (0, numberUtils_1.calcDebtUsd)(state), targetRateBps, adjustmentFeeBps);
104
- const maxRepayTo = (0, numberUtils_1.maxRepayToBps)(state.maxLtvBps, state.liqThresholdBps);
105
- return {
106
- debtAdjustmentUsd,
107
- repayingCloseToMaxLtv: state.liqUtilizationRateBps > maxRepayTo && targetRateBps >= maxRepayTo,
108
- amountToDcaIn: amountToDcaIn ?? 0,
109
- amountUsdToDcaIn,
110
- dcaTokenType: dca?.tokenType,
111
- rebalanceAction: (amountToDcaIn ?? 0) > 0
112
- ? "dca"
113
- : rebalanceDirection === generated_1.RebalanceDirection.Boost
114
- ? "boost"
115
- : "repay",
116
- rebalanceDirection,
117
- feesUsd: Math.abs(debtAdjustmentUsd * (0, numberUtils_1.fromBps)(adjustmentFeeBps)),
118
- targetRateBps,
119
- };
120
- }
121
- function postRebalanceLiqUtilizationRateBps(client, values, swapOutputAmount) {
122
- let supplyUsd = (0, numberUtils_1.calcSupplyUsd)(client.solautoPositionState) + values.amountUsdToDcaIn;
123
- let debtUsd = (0, numberUtils_1.calcDebtUsd)(client.solautoPositionState);
124
- const boost = values.rebalanceDirection === generated_1.RebalanceDirection.Boost;
125
- const outputToken = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(boost
126
- ? client.solautoPositionState.supply.mint
127
- : client.solautoPositionState.debt.mint);
128
- const debtAdjustmentUsdAbs = Math.abs(values.debtAdjustmentUsd);
129
- const swapOutputUsd = swapOutputAmount
130
- ? (0, numberUtils_1.fromBaseUnit)(swapOutputAmount, (0, generalUtils_2.tokenInfo)(outputToken).decimals) *
131
- ((0, priceUtils_1.safeGetPrice)(outputToken) ?? 0)
132
- : debtAdjustmentUsdAbs;
133
- supplyUsd = boost
134
- ? supplyUsd + swapOutputUsd
135
- : supplyUsd - debtAdjustmentUsdAbs;
136
- debtUsd = boost ? debtUsd + debtAdjustmentUsdAbs : debtUsd - swapOutputUsd;
137
- return (0, numberUtils_1.getLiqUtilzationRateBps)(supplyUsd, debtUsd, client.solautoPositionState?.liqThresholdBps ?? 0);
138
- }
139
- function insufficientLiquidity(amountNeededUsd, liquidity, tokenDecimals, tokenPrice) {
140
- return amountNeededUsd > (0, numberUtils_1.fromBaseUnit)(liquidity, tokenDecimals) * tokenPrice;
141
- }
142
- async function getFlashLoanRequirements(client, values, attemptNum) {
143
- let supplyUsd = (0, numberUtils_1.calcSupplyUsd)(client.solautoPositionState) +
144
- (values.dcaTokenType === generated_1.TokenType.Supply ? values.amountUsdToDcaIn : 0);
145
- let debtUsd = (0, numberUtils_1.calcDebtUsd)(client.solautoPositionState);
146
- const debtAdjustmentUsdAbs = Math.abs(values.debtAdjustmentUsd);
147
- supplyUsd =
148
- values.rebalanceDirection === generated_1.RebalanceDirection.Repay
149
- ? supplyUsd - debtAdjustmentUsdAbs
150
- : supplyUsd;
151
- debtUsd =
152
- values.rebalanceDirection === generated_1.RebalanceDirection.Boost
153
- ? debtUsd + debtAdjustmentUsdAbs
154
- : debtUsd;
155
- const tempLiqUtilizationRateBps = (0, numberUtils_1.getLiqUtilzationRateBps)(supplyUsd, debtUsd, client.solautoPositionState.liqThresholdBps);
156
- const maxLiqUtilizationRateBps = (0, numberUtils_1.getMaxLiqUtilizationRateBps)(client.solautoPositionState.maxLtvBps, client.solautoPositionState.liqThresholdBps, 0.02);
157
- const requiresFlashLoan = supplyUsd <= 0 || tempLiqUtilizationRateBps > maxLiqUtilizationRateBps;
158
- const supplyPrice = (0, priceUtils_1.safeGetPrice)(client.supplyMint) ?? 0;
159
- const debtPrice = (0, priceUtils_1.safeGetPrice)(client.debtMint) ?? 0;
160
- const debtAdjustmentUsd = Math.abs(values.debtAdjustmentUsd);
161
- const insufficientSupplyLiquidity = insufficientLiquidity(debtAdjustmentUsd, client.supplyLiquidityAvailable(), (0, generalUtils_2.tokenInfo)(client.supplyMint).decimals, supplyPrice);
162
- const insufficientDebtLiquidity = insufficientLiquidity(debtAdjustmentUsd, client.debtLiquidityAvailable(), (0, generalUtils_2.tokenInfo)(client.debtMint).decimals, debtPrice);
163
- let useDebtLiquidity = values.rebalanceDirection === generated_1.RebalanceDirection.Boost ||
164
- insufficientSupplyLiquidity;
165
- let signerFlashLoan = false;
166
- if ((attemptNum ?? 0) >= 3 ||
167
- (insufficientSupplyLiquidity && insufficientDebtLiquidity)) {
168
- const { supplyBalance, debtBalance } = await client.signerBalances();
169
- const sufficientSignerSupplyLiquidity = !insufficientLiquidity(debtAdjustmentUsd, supplyBalance, (0, generalUtils_2.tokenInfo)(client.supplyMint).decimals, supplyPrice);
170
- const sufficientSignerDebtLiquidity = !insufficientLiquidity(debtAdjustmentUsd, debtBalance, (0, generalUtils_2.tokenInfo)(client.debtMint).decimals, debtPrice);
171
- signerFlashLoan =
172
- sufficientSignerSupplyLiquidity || sufficientSignerDebtLiquidity;
173
- if (signerFlashLoan) {
174
- useDebtLiquidity =
175
- values.rebalanceDirection === generated_1.RebalanceDirection.Boost ||
176
- !sufficientSignerSupplyLiquidity;
177
- }
178
- else {
179
- throw new Error(`Insufficient liquidity to perform the transaction`);
180
- }
181
- }
182
- (0, generalUtils_2.consoleLog)("Requires flash loan:", requiresFlashLoan);
183
- (0, generalUtils_2.consoleLog)("Use debt liquidity:", useDebtLiquidity);
184
- (0, generalUtils_2.consoleLog)("Intermediary liq utilization rate:", tempLiqUtilizationRateBps, `$${supplyUsd}`, `$${debtUsd}`, "Max:", maxLiqUtilizationRateBps);
185
- return requiresFlashLoan ? { useDebtLiquidity, signerFlashLoan } : undefined;
186
- }
187
- function getFlashLoanDetails(client, flRequirements, values, jupQuote) {
188
- let flashLoanToken = undefined;
189
- const inAmount = BigInt(parseInt(jupQuote.inAmount));
190
- const outAmount = BigInt(parseInt(jupQuote.outAmount));
191
- const boosting = values.rebalanceDirection === generated_1.RebalanceDirection.Boost;
192
- if (boosting || flRequirements.useDebtLiquidity) {
193
- flashLoanToken = client.solautoPositionState.debt;
194
- }
195
- else {
196
- flashLoanToken = client.solautoPositionState.supply;
197
- }
198
- if (jupQuote.swapMode !== "ExactOut" && jupQuote.swapMode !== "ExactIn") {
199
- throw new Error("Token ledger swap not currently supported");
200
- }
201
- const baseUnitAmount = boosting || (!boosting && !flRequirements.useDebtLiquidity)
202
- ? inAmount
203
- : outAmount;
204
- return {
205
- ...flRequirements,
206
- baseUnitAmount,
207
- mint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(flashLoanToken.mint),
208
- };
209
- }
210
- async function findSufficientQuote(client, values, jupSwapInput, criteria) {
211
- let jupQuote;
212
- let insufficient = false;
213
- for (let i = 0; i < 10; i++) {
214
- (0, generalUtils_2.consoleLog)("Finding sufficient quote...");
215
- jupQuote = await (0, jupiterUtils_1.getJupQuote)(jupSwapInput);
216
- const outputAmount = parseInt(jupQuote.outAmount);
217
- const postRebalanceRate = postRebalanceLiqUtilizationRateBps(client, values, BigInt(outputAmount));
218
- insufficient = criteria.minOutputAmount
219
- ? outputAmount < Number(criteria.minOutputAmount)
220
- : criteria.minLiqUtilizationRateBps
221
- ? postRebalanceRate < criteria.minLiqUtilizationRateBps
222
- : postRebalanceRate > criteria.maxLiqUtilizationRateBps;
223
- if (insufficient) {
224
- (0, generalUtils_2.consoleLog)(jupQuote);
225
- jupSwapInput.amount =
226
- jupSwapInput.amount +
227
- BigInt(Math.round(Number(jupSwapInput.amount) * 0.01));
228
- }
229
- else {
230
- break;
231
- }
232
- }
233
- return jupQuote;
234
- }
235
- async function getJupSwapRebalanceDetails(client, values, flRequirements, targetLiqUtilizationRateBps, attemptNum) {
236
- const input = values.rebalanceDirection === generated_1.RebalanceDirection.Boost
237
- ? client.solautoPositionState.debt
238
- : client.solautoPositionState.supply;
239
- const output = values.rebalanceDirection === generated_1.RebalanceDirection.Boost
240
- ? client.solautoPositionState.supply
241
- : client.solautoPositionState.debt;
242
- const rebalanceToZero = targetLiqUtilizationRateBps === 0;
243
- const usdToSwap = Math.abs(values.debtAdjustmentUsd) +
244
- (values.dcaTokenType === generated_1.TokenType.Debt ? values.amountUsdToDcaIn : 0);
245
- let inputAmount = (0, numberUtils_1.toBaseUnit)(usdToSwap / (0, priceUtils_1.safeGetPrice)(input.mint), input.decimals);
246
- let outputAmount = rebalanceToZero
247
- ? output.amountUsed.baseUnit +
248
- BigInt(Math.round(Number(output.amountUsed.baseUnit) *
249
- // Add this small percentage to account for the APR on the debt between now and the transaction
250
- 0.0001))
251
- : (0, numberUtils_1.toBaseUnit)(usdToSwap / (0, priceUtils_1.safeGetPrice)(output.mint), output.decimals);
252
- const repaying = values.rebalanceDirection === generated_1.RebalanceDirection.Repay;
253
- const flashLoanRepayFromDebt = repaying && flRequirements && flRequirements.useDebtLiquidity;
254
- const exactOut = flashLoanRepayFromDebt && !rebalanceToZero;
255
- // || rebalanceToZero
256
- const exactIn = !exactOut;
257
- if (exactIn && (rebalanceToZero || values.repayingCloseToMaxLtv)) {
258
- inputAmount = inputAmount + BigInt(Math.round(Number(inputAmount) * 0.005));
259
- }
260
- const jupSwapInput = {
261
- inputMint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(input.mint),
262
- outputMint: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(output.mint),
263
- exactIn,
264
- exactOut,
265
- amount: exactOut ? outputAmount : inputAmount,
266
- };
267
- (0, generalUtils_2.consoleLog)(jupSwapInput);
268
- let jupQuote = undefined;
269
- if (exactIn && (rebalanceToZero || values.repayingCloseToMaxLtv)) {
270
- jupQuote = await findSufficientQuote(client, values, jupSwapInput, {
271
- minOutputAmount: rebalanceToZero ? outputAmount : undefined,
272
- maxLiqUtilizationRateBps: values.repayingCloseToMaxLtv
273
- ? (0, numberUtils_1.maxRepayToBps)(client.solautoPositionState?.maxLtvBps ?? 0, client.solautoPositionState?.liqThresholdBps ?? 0) - 15
274
- : undefined,
275
- });
276
- }
277
- const addPadding = exactOut;
278
- return {
279
- ...jupSwapInput,
280
- destinationWallet: flashLoanRepayFromDebt
281
- ? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(client.signer.publicKey)
282
- : client.solautoPosition,
283
- slippageIncFactor: 0.2 + (attemptNum ?? 0) * 0.25,
284
- addPadding,
285
- jupQuote,
286
- };
287
- }
@@ -1,4 +0,0 @@
1
- export * from './solautoMarginfiClient';
2
- export * from './solautoClient';
3
- export * from './referralStateManager';
4
- export * from './txHandler';