@haven-fi/solauto-sdk 1.0.582 → 1.0.584

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 (260) 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/generated/accounts/solautoPosition.js +2 -2
  5. package/dist/generated/errors/solauto.d.ts +14 -2
  6. package/dist/generated/errors/solauto.d.ts.map +1 -1
  7. package/dist/generated/errors/solauto.js +27 -5
  8. package/dist/generated/instructions/claimReferralFees.d.ts +1 -1
  9. package/dist/generated/instructions/claimReferralFees.d.ts.map +1 -1
  10. package/dist/generated/instructions/closePosition.d.ts +1 -1
  11. package/dist/generated/instructions/closePosition.d.ts.map +1 -1
  12. package/dist/generated/instructions/closePosition.js +2 -2
  13. package/dist/generated/instructions/marginfiOpenPosition.d.ts +1 -3
  14. package/dist/generated/instructions/marginfiOpenPosition.d.ts.map +1 -1
  15. package/dist/generated/instructions/marginfiOpenPosition.js +0 -1
  16. package/dist/generated/instructions/marginfiRebalance.d.ts +7 -3
  17. package/dist/generated/instructions/marginfiRebalance.d.ts.map +1 -1
  18. package/dist/generated/instructions/marginfiRebalance.js +3 -1
  19. package/dist/generated/types/index.d.ts +7 -1
  20. package/dist/generated/types/index.d.ts.map +1 -1
  21. package/dist/generated/types/index.js +7 -1
  22. package/dist/generated/types/positionData.d.ts +2 -2
  23. package/dist/generated/types/positionData.d.ts.map +1 -1
  24. package/dist/generated/types/positionData.js +1 -1
  25. package/dist/generated/types/positionState.d.ts +7 -7
  26. package/dist/generated/types/positionState.d.ts.map +1 -1
  27. package/dist/generated/types/positionState.js +3 -3
  28. package/dist/generated/types/{positionTokenUsage.d.ts → positionTokenState.d.ts} +6 -8
  29. package/dist/generated/types/positionTokenState.d.ts.map +1 -0
  30. package/dist/generated/types/{positionTokenUsage.js → positionTokenState.js} +6 -7
  31. package/dist/generated/types/rebalanceData.d.ts +7 -13
  32. package/dist/generated/types/rebalanceData.d.ts.map +1 -1
  33. package/dist/generated/types/rebalanceData.js +3 -6
  34. package/dist/generated/types/rebalanceDirection.d.ts +3 -2
  35. package/dist/generated/types/rebalanceDirection.d.ts.map +1 -1
  36. package/dist/generated/types/rebalanceDirection.js +3 -2
  37. package/dist/generated/types/rebalanceInstructionData.d.ts +27 -0
  38. package/dist/generated/types/rebalanceInstructionData.d.ts.map +1 -0
  39. package/dist/generated/types/rebalanceInstructionData.js +22 -0
  40. package/dist/generated/types/rebalanceStateValues.d.ts +27 -0
  41. package/dist/generated/types/rebalanceStateValues.d.ts.map +1 -0
  42. package/dist/generated/types/rebalanceStateValues.js +22 -0
  43. package/dist/generated/types/rebalanceStep.d.ts +15 -0
  44. package/dist/generated/types/rebalanceStep.d.ts.map +1 -0
  45. package/dist/generated/types/rebalanceStep.js +22 -0
  46. package/dist/generated/types/solautoRebalanceType.d.ts +4 -5
  47. package/dist/generated/types/solautoRebalanceType.d.ts.map +1 -1
  48. package/dist/generated/types/solautoRebalanceType.js +4 -5
  49. package/dist/generated/types/solautoSettingsParameters.d.ts +2 -15
  50. package/dist/generated/types/solautoSettingsParameters.d.ts.map +1 -1
  51. package/dist/generated/types/solautoSettingsParameters.js +1 -5
  52. package/dist/generated/types/solautoSettingsParametersInp.d.ts +1 -12
  53. package/dist/generated/types/solautoSettingsParametersInp.d.ts.map +1 -1
  54. package/dist/generated/types/solautoSettingsParametersInp.js +0 -3
  55. package/dist/generated/types/swapType.d.ts +15 -0
  56. package/dist/generated/types/swapType.d.ts.map +1 -0
  57. package/dist/generated/types/swapType.js +22 -0
  58. package/dist/generated/types/tokenBalanceChange.d.ts +21 -0
  59. package/dist/generated/types/tokenBalanceChange.d.ts.map +1 -0
  60. package/dist/generated/types/tokenBalanceChange.js +19 -0
  61. package/dist/generated/types/tokenBalanceChangeType.d.ts +18 -0
  62. package/dist/generated/types/tokenBalanceChangeType.d.ts.map +1 -0
  63. package/dist/generated/types/tokenBalanceChangeType.js +25 -0
  64. package/dist/generated/types/updatePositionData.d.ts +2 -2
  65. package/dist/generated/types/updatePositionData.d.ts.map +1 -1
  66. package/dist/generated/types/updatePositionData.js +1 -1
  67. package/dist/index.d.ts +8 -6
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +5 -5
  70. package/dist/marginfi-sdk/types/interestRateConfig.d.ts +3 -1
  71. package/dist/marginfi-sdk/types/interestRateConfig.d.ts.map +1 -1
  72. package/dist/marginfi-sdk/types/interestRateConfig.js +2 -1
  73. package/dist/services/flashLoans/flProviderAggregator.d.ts +19 -0
  74. package/dist/services/flashLoans/flProviderAggregator.d.ts.map +1 -0
  75. package/dist/services/flashLoans/flProviderAggregator.js +46 -0
  76. package/dist/services/flashLoans/flProviderBase.d.ts +23 -0
  77. package/dist/services/flashLoans/flProviderBase.d.ts.map +1 -0
  78. package/dist/services/flashLoans/flProviderBase.js +37 -0
  79. package/dist/services/flashLoans/index.d.ts +4 -0
  80. package/dist/services/flashLoans/index.d.ts.map +1 -0
  81. package/dist/services/flashLoans/index.js +19 -0
  82. package/dist/services/flashLoans/marginfiFlProvider.d.ts +25 -0
  83. package/dist/services/flashLoans/marginfiFlProvider.d.ts.map +1 -0
  84. package/dist/services/flashLoans/marginfiFlProvider.js +246 -0
  85. package/dist/services/index.d.ts +6 -0
  86. package/dist/services/index.d.ts.map +1 -0
  87. package/dist/services/index.js +21 -0
  88. package/dist/services/rebalance/index.d.ts +3 -0
  89. package/dist/services/rebalance/index.d.ts.map +1 -0
  90. package/dist/services/rebalance/index.js +18 -0
  91. package/dist/services/rebalance/rebalanceSwapManager.d.ts +30 -0
  92. package/dist/services/rebalance/rebalanceSwapManager.d.ts.map +1 -0
  93. package/dist/services/rebalance/rebalanceSwapManager.js +144 -0
  94. package/dist/services/rebalance/rebalanceTxBuilder.d.ts +22 -0
  95. package/dist/services/rebalance/rebalanceTxBuilder.d.ts.map +1 -0
  96. package/dist/services/rebalance/rebalanceTxBuilder.js +200 -0
  97. package/dist/services/rebalance/rebalanceValues.d.ts +31 -0
  98. package/dist/services/rebalance/rebalanceValues.d.ts.map +1 -0
  99. package/dist/services/rebalance/rebalanceValues.js +118 -0
  100. package/dist/services/rebalance/solautoFees.d.ts +13 -0
  101. package/dist/services/rebalance/solautoFees.d.ts.map +1 -0
  102. package/dist/services/rebalance/solautoFees.js +54 -0
  103. package/dist/services/solauto/index.d.ts +5 -0
  104. package/dist/services/solauto/index.d.ts.map +1 -0
  105. package/dist/{clients → services/solauto}/referralStateManager.d.ts +4 -5
  106. package/dist/services/solauto/referralStateManager.d.ts.map +1 -0
  107. package/dist/{clients → services/solauto}/referralStateManager.js +10 -12
  108. package/dist/services/solauto/solautoClient.d.ts +59 -0
  109. package/dist/services/solauto/solautoClient.d.ts.map +1 -0
  110. package/dist/{clients → services/solauto}/solautoClient.js +78 -109
  111. package/dist/services/solauto/solautoMarginfiClient.d.ts +34 -0
  112. package/dist/services/solauto/solautoMarginfiClient.d.ts.map +1 -0
  113. package/dist/services/solauto/solautoMarginfiClient.js +322 -0
  114. package/dist/{clients → services/solauto}/txHandler.d.ts +11 -2
  115. package/dist/services/solauto/txHandler.d.ts.map +1 -0
  116. package/dist/services/solauto/txHandler.js +38 -0
  117. package/dist/services/swap/index.d.ts +2 -0
  118. package/dist/services/swap/index.d.ts.map +1 -0
  119. package/dist/{utils/solauto → services/swap}/index.js +1 -2
  120. package/dist/services/swap/jupSwapManager.d.ts +37 -0
  121. package/dist/services/swap/jupSwapManager.d.ts.map +1 -0
  122. package/dist/services/swap/jupSwapManager.js +108 -0
  123. package/dist/services/transactions/index.d.ts.map +1 -0
  124. package/dist/{transactions → services/transactions}/transactionUtils.d.ts +3 -5
  125. package/dist/services/transactions/transactionUtils.d.ts.map +1 -0
  126. package/dist/{transactions → services/transactions}/transactionUtils.js +29 -137
  127. package/dist/{transactions → services/transactions}/transactionsManager.d.ts +4 -4
  128. package/dist/services/transactions/transactionsManager.d.ts.map +1 -0
  129. package/dist/{transactions → services/transactions}/transactionsManager.js +10 -8
  130. package/dist/solautoPosition/index.d.ts +4 -0
  131. package/dist/solautoPosition/index.d.ts.map +1 -0
  132. package/dist/solautoPosition/index.js +19 -0
  133. package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts +14 -0
  134. package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts.map +1 -0
  135. package/dist/solautoPosition/marginfiSolautoPositionEx.js +73 -0
  136. package/dist/solautoPosition/solautoPositionEx.d.ts +67 -0
  137. package/dist/solautoPosition/solautoPositionEx.d.ts.map +1 -0
  138. package/dist/solautoPosition/solautoPositionEx.js +143 -0
  139. package/dist/solautoPosition/utils.d.ts +17 -0
  140. package/dist/solautoPosition/utils.d.ts.map +1 -0
  141. package/dist/solautoPosition/utils.js +115 -0
  142. package/dist/types/solauto.d.ts +19 -1
  143. package/dist/types/solauto.d.ts.map +1 -1
  144. package/dist/utils/generalUtils.d.ts +1 -0
  145. package/dist/utils/generalUtils.d.ts.map +1 -1
  146. package/dist/utils/generalUtils.js +9 -1
  147. package/dist/utils/index.d.ts +1 -1
  148. package/dist/utils/index.d.ts.map +1 -1
  149. package/dist/utils/index.js +1 -1
  150. package/dist/utils/jitoUtils.d.ts.map +1 -1
  151. package/dist/utils/jupiterUtils.d.ts +3 -28
  152. package/dist/utils/jupiterUtils.d.ts.map +1 -1
  153. package/dist/utils/jupiterUtils.js +2 -73
  154. package/dist/utils/marginfiUtils.d.ts +4 -3
  155. package/dist/utils/marginfiUtils.d.ts.map +1 -1
  156. package/dist/utils/marginfiUtils.js +47 -18
  157. package/dist/utils/numberUtils.d.ts +3 -6
  158. package/dist/utils/numberUtils.d.ts.map +1 -1
  159. package/dist/utils/numberUtils.js +13 -48
  160. package/dist/utils/solanaUtils.js +2 -2
  161. package/dist/utils/{solauto/generalUtils.d.ts → solautoUtils.d.ts} +9 -16
  162. package/dist/utils/solautoUtils.d.ts.map +1 -0
  163. package/dist/utils/{solauto/generalUtils.js → solautoUtils.js} +49 -173
  164. package/local/createTokenAccounts.ts +1 -5
  165. package/local/logPositions.ts +22 -68
  166. package/local/shared.ts +29 -24
  167. package/local/txSandbox.ts +66 -0
  168. package/local/updateMarginfiLUT.ts +80 -4
  169. package/package.json +3 -6
  170. package/src/constants/solautoConstants.ts +4 -9
  171. package/src/generated/accounts/solautoPosition.ts +2 -2
  172. package/src/generated/errors/solauto.ts +45 -4
  173. package/src/generated/instructions/claimReferralFees.ts +1 -1
  174. package/src/generated/instructions/closePosition.ts +3 -3
  175. package/src/generated/instructions/marginfiOpenPosition.ts +0 -7
  176. package/src/generated/instructions/marginfiRebalance.ts +12 -3
  177. package/src/generated/types/index.ts +7 -1
  178. package/src/generated/types/positionData.ts +3 -3
  179. package/src/generated/types/positionState.ts +12 -12
  180. package/src/generated/types/{positionTokenUsage.ts → positionTokenState.ts} +13 -16
  181. package/src/generated/types/rebalanceData.ts +16 -27
  182. package/src/generated/types/rebalanceDirection.ts +1 -0
  183. package/src/generated/types/rebalanceInstructionData.ts +62 -0
  184. package/src/generated/types/rebalanceStateValues.ts +59 -0
  185. package/src/generated/types/rebalanceStep.ts +25 -0
  186. package/src/generated/types/solautoRebalanceType.ts +0 -1
  187. package/src/generated/types/solautoSettingsParameters.ts +4 -25
  188. package/src/generated/types/solautoSettingsParametersInp.ts +2 -24
  189. package/src/generated/types/swapType.ts +22 -0
  190. package/src/generated/types/tokenBalanceChange.ts +46 -0
  191. package/src/generated/types/tokenBalanceChangeType.ts +28 -0
  192. package/src/generated/types/updatePositionData.ts +3 -3
  193. package/src/index.ts +8 -8
  194. package/src/marginfi-sdk/types/interestRateConfig.ts +6 -2
  195. package/src/services/flashLoans/flProviderAggregator.ts +74 -0
  196. package/src/services/flashLoans/flProviderBase.ts +88 -0
  197. package/src/services/flashLoans/index.ts +3 -0
  198. package/src/services/flashLoans/marginfiFlProvider.ts +392 -0
  199. package/src/services/index.ts +5 -0
  200. package/src/services/rebalance/index.ts +2 -0
  201. package/src/services/rebalance/rebalanceSwapManager.ts +218 -0
  202. package/src/services/rebalance/rebalanceTxBuilder.ts +330 -0
  203. package/src/services/rebalance/rebalanceValues.ts +232 -0
  204. package/src/services/rebalance/solautoFees.ts +61 -0
  205. package/src/services/solauto/index.ts +4 -0
  206. package/src/{clients → services/solauto}/referralStateManager.ts +17 -31
  207. package/src/{clients → services/solauto}/solautoClient.ts +142 -205
  208. package/src/services/solauto/solautoMarginfiClient.ts +472 -0
  209. package/src/services/solauto/txHandler.ts +69 -0
  210. package/src/services/swap/index.ts +1 -0
  211. package/src/services/swap/jupSwapManager.ts +189 -0
  212. package/src/{transactions → services/transactions}/transactionUtils.ts +40 -280
  213. package/src/{transactions → services/transactions}/transactionsManager.ts +15 -10
  214. package/src/solautoPosition/index.ts +3 -0
  215. package/src/solautoPosition/marginfiSolautoPositionEx.ts +111 -0
  216. package/src/solautoPosition/solautoPositionEx.ts +281 -0
  217. package/src/solautoPosition/utils.ts +188 -0
  218. package/src/types/solauto.ts +30 -2
  219. package/src/utils/generalUtils.ts +9 -1
  220. package/src/utils/index.ts +2 -2
  221. package/src/utils/jitoUtils.ts +0 -4
  222. package/src/utils/jupiterUtils.ts +3 -164
  223. package/src/utils/marginfiUtils.ts +77 -43
  224. package/src/utils/numberUtils.ts +18 -77
  225. package/src/utils/solanaUtils.ts +1 -1
  226. package/src/utils/{solauto/generalUtils.ts → solautoUtils.ts} +67 -288
  227. package/tests/transactions/shared.ts +135 -0
  228. package/tests/transactions/solautoMarginfi.ts +8 -198
  229. package/tests/unit/accounts.ts +3 -10
  230. package/tests/unit/lookupTables.ts +23 -2
  231. package/tests/unit/rebalanceCalculations.ts +65 -343
  232. package/dist/clients/index.d.ts +0 -5
  233. package/dist/clients/index.d.ts.map +0 -1
  234. package/dist/clients/referralStateManager.d.ts.map +0 -1
  235. package/dist/clients/solautoClient.d.ts +0 -71
  236. package/dist/clients/solautoClient.d.ts.map +0 -1
  237. package/dist/clients/solautoMarginfiClient.d.ts +0 -51
  238. package/dist/clients/solautoMarginfiClient.d.ts.map +0 -1
  239. package/dist/clients/solautoMarginfiClient.js +0 -497
  240. package/dist/clients/txHandler.d.ts.map +0 -1
  241. package/dist/clients/txHandler.js +0 -23
  242. package/dist/generated/types/positionTokenUsage.d.ts.map +0 -1
  243. package/dist/transactions/index.d.ts.map +0 -1
  244. package/dist/transactions/transactionUtils.d.ts.map +0 -1
  245. package/dist/transactions/transactionsManager.d.ts.map +0 -1
  246. package/dist/utils/solauto/generalUtils.d.ts.map +0 -1
  247. package/dist/utils/solauto/index.d.ts +0 -3
  248. package/dist/utils/solauto/index.d.ts.map +0 -1
  249. package/dist/utils/solauto/rebalanceUtils.d.ts +0 -30
  250. package/dist/utils/solauto/rebalanceUtils.d.ts.map +0 -1
  251. package/dist/utils/solauto/rebalanceUtils.js +0 -287
  252. package/src/clients/index.ts +0 -4
  253. package/src/clients/solautoMarginfiClient.ts +0 -774
  254. package/src/clients/txHandler.ts +0 -38
  255. package/src/utils/solauto/index.ts +0 -2
  256. package/src/utils/solauto/rebalanceUtils.ts +0 -562
  257. package/dist/{clients → services/solauto}/index.js +2 -2
  258. /package/dist/{transactions → services/transactions}/index.d.ts +0 -0
  259. /package/dist/{transactions → services/transactions}/index.js +0 -0
  260. /package/src/{transactions → services/transactions}/index.ts +0 -0
@@ -1,497 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SolautoMarginfiClient = void 0;
4
- const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
5
- const umi_1 = require("@metaplex-foundation/umi");
6
- const web3_js_1 = require("@solana/web3.js");
7
- const solautoClient_1 = require("./solautoClient");
8
- const marginfiAccounts_1 = require("../constants/marginfiAccounts");
9
- const generated_1 = require("../generated");
10
- const accountUtils_1 = require("../utils/accountUtils");
11
- const marginfi_sdk_1 = require("../marginfi-sdk");
12
- const marginfiUtils_1 = require("../utils/marginfiUtils");
13
- const numberUtils_1 = require("../utils/numberUtils");
14
- const utils_1 = require("../utils");
15
- class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
16
- constructor() {
17
- super(...arguments);
18
- this.marginfiAccountSeedIdx = BigInt(0);
19
- this.supplyBank = null;
20
- this.debtBank = null;
21
- }
22
- async initialize(args) {
23
- await super.initialize(args);
24
- this.lendingPlatform = generated_1.LendingPlatform.Marginfi;
25
- if (this.selfManaged) {
26
- this.marginfiAccount =
27
- args.marginfiAccount ??
28
- (0, umi_1.createSignerFromKeypair)(this.umi, this.umi.eddsa.generateKeypair());
29
- }
30
- else {
31
- if (this.solautoPositionData) {
32
- this.marginfiAccount = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.solautoPositionData.position.protocolUserAccount);
33
- }
34
- else {
35
- const accounts = await (0, marginfiUtils_1.getAllMarginfiAccountsByAuthority)(this.umi, this.solautoPosition, args.marginfiGroup ?? new web3_js_1.PublicKey(marginfiAccounts_1.DEFAULT_MARGINFI_GROUP), false);
36
- const reusableAccounts = accounts.length > 0
37
- ? (await (0, marginfi_sdk_1.safeFetchAllMarginfiAccount)(this.umi, accounts.map((x) => (0, umi_1.publicKey)(x.marginfiAccount)))).filter((x) => (0, marginfiUtils_1.marginfiAccountEmpty)(x))
38
- : [];
39
- this.marginfiAccount =
40
- reusableAccounts.length > 0
41
- ? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(reusableAccounts[0].publicKey)
42
- : (0, umi_1.createSignerFromKeypair)(this.umi, this.umi.eddsa.generateKeypair());
43
- }
44
- }
45
- this.marginfiAccountPk =
46
- "publicKey" in this.marginfiAccount
47
- ? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.marginfiAccount.publicKey)
48
- : this.marginfiAccount;
49
- if ("publicKey" in this.marginfiAccount) {
50
- this.otherSigners.push(this.marginfiAccount);
51
- }
52
- const marginfiAccountData = !args.new
53
- ? await (0, marginfi_sdk_1.safeFetchMarginfiAccount)(this.umi, (0, umi_1.publicKey)(this.marginfiAccountPk), { commitment: "confirmed" })
54
- : null;
55
- this.marginfiGroup = new web3_js_1.PublicKey(marginfiAccountData
56
- ? marginfiAccountData.group.toString()
57
- : (args.marginfiGroup ?? marginfiAccounts_1.DEFAULT_MARGINFI_GROUP));
58
- this.marginfiSupplyAccounts =
59
- marginfiAccounts_1.MARGINFI_ACCOUNTS[this.marginfiGroup.toString()][this.supplyMint.toString()];
60
- this.marginfiDebtAccounts =
61
- marginfiAccounts_1.MARGINFI_ACCOUNTS[this.marginfiGroup.toString()][this.debtMint.toString()];
62
- // TODO: Don't dynamically pull oracle from bank until Marginfi sorts out their price oracle issues.
63
- // const [supplyBank, debtBank] = await safeFetchAllBank(this.umi, [
64
- // publicKey(this.marginfiSupplyAccounts.bank),
65
- // publicKey(this.marginfiDebtAccounts.bank),
66
- // ]);
67
- // this.supplyPriceOracle = toWeb3JsPublicKey(supplyBank.config.oracleKeys[0]);
68
- // this.debtPriceOracle = toWeb3JsPublicKey(debtBank.config.oracleKeys[0]);
69
- this.supplyPriceOracle = new web3_js_1.PublicKey(this.marginfiSupplyAccounts.priceOracle);
70
- this.debtPriceOracle = new web3_js_1.PublicKey(this.marginfiDebtAccounts.priceOracle);
71
- if (!this.initializedFor ||
72
- !this.initializedFor.equals((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey))) {
73
- await this.setIntermediaryMarginfiDetails();
74
- this.initializedFor = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey);
75
- }
76
- (0, utils_1.consoleLog)("Marginfi account:", this.marginfiAccountPk.toString());
77
- (0, utils_1.consoleLog)("Intermediary MF account:", this.intermediaryMarginfiAccountPk.toString());
78
- }
79
- async setIntermediaryMarginfiDetails() {
80
- const existingMarginfiAccounts = (await (0, marginfiUtils_1.getAllMarginfiAccountsByAuthority)(this.umi, (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.marginfiGroup))
81
- .filter((x) => !x.marginfiAccount.equals(this.marginfiAccountPk))
82
- .sort((a, b) => a.marginfiAccount.toString().localeCompare(b.marginfiAccount.toString()));
83
- const compatibleMarginfiAccounts = existingMarginfiAccounts.length > 0
84
- ? (await (0, marginfi_sdk_1.safeFetchAllMarginfiAccount)(this.umi, existingMarginfiAccounts.map((x) => (0, umi_1.publicKey)(x.marginfiAccount)))).filter((x) => (0, marginfiUtils_1.marginfiAccountEmpty)(x))
85
- : [];
86
- this.intermediaryMarginfiAccountSigner =
87
- compatibleMarginfiAccounts.length > 0
88
- ? undefined
89
- : (0, umi_1.createSignerFromKeypair)(this.umi, this.umi.eddsa.generateKeypair());
90
- this.intermediaryMarginfiAccountPk =
91
- compatibleMarginfiAccounts.length > 0
92
- ? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(compatibleMarginfiAccounts[0].publicKey)
93
- : (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.intermediaryMarginfiAccountSigner.publicKey);
94
- this.intermediaryMarginfiAccount =
95
- compatibleMarginfiAccounts.length > 0
96
- ? compatibleMarginfiAccounts[0]
97
- : undefined;
98
- if (this.intermediaryMarginfiAccountSigner) {
99
- this.otherSigners.push(this.intermediaryMarginfiAccountSigner);
100
- }
101
- }
102
- protocolAccount() {
103
- return this.marginfiAccountPk;
104
- }
105
- defaultLookupTables() {
106
- return [marginfiAccounts_1.MARGINFI_ACCOUNTS_LOOKUP_TABLE, ...super.defaultLookupTables()];
107
- }
108
- lutAccountsToAdd() {
109
- return [
110
- ...super.lutAccountsToAdd(),
111
- this.marginfiAccountPk,
112
- ...(this.signer.publicKey.toString() === this.authority.toString()
113
- ? [this.intermediaryMarginfiAccountPk]
114
- : []),
115
- ];
116
- }
117
- async maxLtvAndLiqThresholdBps() {
118
- const result = await super.maxLtvAndLiqThresholdBps();
119
- if (result[0] && result[1]) {
120
- return result;
121
- }
122
- else if (this.supplyMint.equals(web3_js_1.PublicKey.default) ||
123
- this.debtMint.equals(web3_js_1.PublicKey.default)) {
124
- return [0, 0];
125
- }
126
- else {
127
- const [maxLtv, liqThreshold] = await (0, marginfiUtils_1.getMarginfiMaxLtvAndLiqThreshold)(this.umi, this.marginfiGroup, {
128
- mint: this.supplyMint,
129
- }, {
130
- mint: this.debtMint,
131
- });
132
- this.maxLtvBps = (0, numberUtils_1.toBps)(maxLtv);
133
- this.liqThresholdBps = (0, numberUtils_1.toBps)(liqThreshold);
134
- return [this.maxLtvBps, this.liqThresholdBps];
135
- }
136
- }
137
- marginfiAccountInitialize(marginfiAccount) {
138
- return (0, marginfi_sdk_1.marginfiAccountInitialize)(this.umi, {
139
- marginfiAccount: marginfiAccount,
140
- marginfiGroup: (0, umi_1.publicKey)(this.marginfiGroup),
141
- authority: this.signer,
142
- feePayer: this.signer,
143
- });
144
- }
145
- openPosition(settingParams, dca) {
146
- return super
147
- .openPosition(settingParams, dca)
148
- .add(this.marginfiOpenPositionIx(settingParams, dca));
149
- }
150
- marginfiOpenPositionIx(settingParams, dca, positionType) {
151
- let signerDebtTa = undefined;
152
- if (dca) {
153
- signerDebtTa = (0, umi_1.publicKey)(this.signerDebtTa);
154
- }
155
- return (0, generated_1.marginfiOpenPosition)(this.umi, {
156
- signer: this.signer,
157
- marginfiProgram: (0, umi_1.publicKey)(marginfi_sdk_1.MARGINFI_PROGRAM_ID),
158
- signerReferralState: (0, umi_1.publicKey)(this.referralState),
159
- referredByState: this.referredByState
160
- ? (0, umi_1.publicKey)(this.referredByState)
161
- : undefined,
162
- referredBySupplyTa: this.referredBySupplyTa()
163
- ? (0, umi_1.publicKey)(this.referredBySupplyTa())
164
- : undefined,
165
- solautoPosition: (0, umi_1.publicKey)(this.solautoPosition),
166
- marginfiGroup: (0, umi_1.publicKey)(this.marginfiGroup),
167
- marginfiAccount: "publicKey" in this.marginfiAccount
168
- ? this.marginfiAccount
169
- : (0, umi_1.publicKey)(this.marginfiAccount),
170
- supplyMint: (0, umi_1.publicKey)(this.supplyMint),
171
- supplyBank: (0, umi_1.publicKey)(this.marginfiSupplyAccounts.bank),
172
- positionSupplyTa: (0, umi_1.publicKey)(this.positionSupplyTa),
173
- debtMint: (0, umi_1.publicKey)(this.debtMint),
174
- debtBank: (0, umi_1.publicKey)(this.marginfiDebtAccounts.bank),
175
- positionDebtTa: (0, umi_1.publicKey)(this.positionDebtTa),
176
- signerDebtTa: signerDebtTa,
177
- positionType: positionType ?? generated_1.PositionType.Leverage,
178
- positionData: {
179
- positionId: this.positionId,
180
- settingParams: settingParams ?? null,
181
- dca: dca ?? null,
182
- },
183
- marginfiAccountSeedIdx: !this.selfManaged
184
- ? this.marginfiAccountSeedIdx
185
- : null,
186
- });
187
- }
188
- refresh() {
189
- return (0, generated_1.marginfiRefreshData)(this.umi, {
190
- signer: this.signer,
191
- marginfiProgram: (0, umi_1.publicKey)(marginfi_sdk_1.MARGINFI_PROGRAM_ID),
192
- marginfiGroup: (0, umi_1.publicKey)(this.marginfiGroup),
193
- marginfiAccount: (0, umi_1.publicKey)(this.marginfiAccount),
194
- supplyBank: (0, umi_1.publicKey)(this.marginfiSupplyAccounts.bank),
195
- supplyPriceOracle: (0, umi_1.publicKey)(this.supplyPriceOracle),
196
- debtBank: (0, umi_1.publicKey)(this.marginfiDebtAccounts.bank),
197
- debtPriceOracle: (0, umi_1.publicKey)(this.debtPriceOracle),
198
- solautoPosition: (0, umi_1.publicKey)(this.solautoPosition),
199
- });
200
- }
201
- protocolInteraction(args) {
202
- let tx = super.protocolInteraction(args);
203
- if (this.selfManaged) {
204
- return tx.add(this.marginfiProtocolInteractionIx(args));
205
- }
206
- else {
207
- return tx.add(this.marginfiSolautoProtocolInteractionIx(args));
208
- }
209
- }
210
- marginfiProtocolInteractionIx(args) {
211
- switch (args.__kind) {
212
- case "Deposit": {
213
- return (0, marginfi_sdk_1.lendingAccountDeposit)(this.umi, {
214
- amount: args.fields[0],
215
- signer: this.signer,
216
- signerTokenAccount: (0, umi_1.publicKey)(this.signerSupplyTa),
217
- marginfiAccount: (0, umi_1.publicKey)(this.marginfiAccountPk),
218
- marginfiGroup: (0, umi_1.publicKey)(this.marginfiGroup),
219
- bank: (0, umi_1.publicKey)(this.marginfiSupplyAccounts.bank),
220
- bankLiquidityVault: (0, umi_1.publicKey)(this.marginfiSupplyAccounts.liquidityVault),
221
- });
222
- }
223
- case "Borrow": {
224
- return (0, marginfi_sdk_1.lendingAccountBorrow)(this.umi, {
225
- amount: args.fields[0],
226
- signer: this.signer,
227
- destinationTokenAccount: (0, umi_1.publicKey)(this.signerDebtTa),
228
- marginfiAccount: (0, umi_1.publicKey)(this.marginfiAccountPk),
229
- marginfiGroup: (0, umi_1.publicKey)(this.marginfiGroup),
230
- bank: (0, umi_1.publicKey)(this.marginfiDebtAccounts.bank),
231
- bankLiquidityVault: (0, umi_1.publicKey)(this.marginfiDebtAccounts.liquidityVault),
232
- bankLiquidityVaultAuthority: (0, umi_1.publicKey)(this.marginfiDebtAccounts.vaultAuthority),
233
- });
234
- }
235
- case "Repay": {
236
- return (0, marginfi_sdk_1.lendingAccountRepay)(this.umi, {
237
- amount: args.fields[0].__kind === "Some" ? args.fields[0].fields[0] : 0,
238
- repayAll: args.fields[0].__kind === "All" ? true : false,
239
- signer: this.signer,
240
- signerTokenAccount: (0, umi_1.publicKey)(this.signerDebtTa),
241
- marginfiAccount: (0, umi_1.publicKey)(this.marginfiAccountPk),
242
- marginfiGroup: (0, umi_1.publicKey)(this.marginfiGroup),
243
- bank: (0, umi_1.publicKey)(this.marginfiDebtAccounts.bank),
244
- bankLiquidityVault: (0, umi_1.publicKey)(this.marginfiDebtAccounts.liquidityVault),
245
- });
246
- }
247
- case "Withdraw": {
248
- return (0, marginfi_sdk_1.lendingAccountWithdraw)(this.umi, {
249
- amount: args.fields[0].__kind === "Some" ? args.fields[0].fields[0] : 0,
250
- withdrawAll: args.fields[0].__kind === "All" ? true : false,
251
- signer: this.signer,
252
- destinationTokenAccount: (0, umi_1.publicKey)(this.signerSupplyTa),
253
- marginfiAccount: (0, umi_1.publicKey)(this.marginfiAccountPk),
254
- marginfiGroup: (0, umi_1.publicKey)(this.marginfiGroup),
255
- bank: (0, umi_1.publicKey)(this.marginfiSupplyAccounts.bank),
256
- bankLiquidityVault: (0, umi_1.publicKey)(this.marginfiSupplyAccounts.liquidityVault),
257
- bankLiquidityVaultAuthority: (0, umi_1.publicKey)(this.marginfiSupplyAccounts.vaultAuthority),
258
- });
259
- }
260
- }
261
- }
262
- marginfiSolautoProtocolInteractionIx(args) {
263
- let positionSupplyTa = undefined;
264
- let vaultSupplyTa = undefined;
265
- let supplyVaultAuthority = undefined;
266
- if (args.__kind === "Deposit" || args.__kind === "Withdraw") {
267
- positionSupplyTa = (0, umi_1.publicKey)(args.__kind === "Withdraw" || this.selfManaged
268
- ? this.signerSupplyTa
269
- : this.positionSupplyTa);
270
- vaultSupplyTa = (0, umi_1.publicKey)(this.marginfiSupplyAccounts.liquidityVault);
271
- supplyVaultAuthority = (0, umi_1.publicKey)(this.marginfiSupplyAccounts.vaultAuthority);
272
- }
273
- let positionDebtTa = undefined;
274
- let vaultDebtTa = undefined;
275
- let debtVaultAuthority = undefined;
276
- if (args.__kind === "Borrow" || args.__kind === "Repay") {
277
- positionDebtTa = (0, umi_1.publicKey)(args.__kind === "Borrow" || this.selfManaged
278
- ? this.signerDebtTa
279
- : this.positionDebtTa);
280
- vaultDebtTa = (0, umi_1.publicKey)(this.marginfiDebtAccounts.liquidityVault);
281
- debtVaultAuthority = (0, umi_1.publicKey)(this.marginfiDebtAccounts.vaultAuthority);
282
- }
283
- let supplyPriceOracle = undefined;
284
- let debtPriceOracle = undefined;
285
- if (args.__kind === "Withdraw" || args.__kind === "Borrow") {
286
- supplyPriceOracle = (0, umi_1.publicKey)(this.supplyPriceOracle);
287
- debtPriceOracle = (0, umi_1.publicKey)(this.debtPriceOracle);
288
- }
289
- return (0, generated_1.marginfiProtocolInteraction)(this.umi, {
290
- signer: this.signer,
291
- marginfiProgram: (0, umi_1.publicKey)(marginfi_sdk_1.MARGINFI_PROGRAM_ID),
292
- solautoPosition: (0, umi_1.publicKey)(this.solautoPosition),
293
- marginfiGroup: (0, umi_1.publicKey)(this.marginfiGroup),
294
- marginfiAccount: (0, umi_1.publicKey)(this.marginfiAccountPk),
295
- supplyBank: (0, umi_1.publicKey)(this.marginfiSupplyAccounts.bank),
296
- supplyPriceOracle,
297
- positionSupplyTa,
298
- vaultSupplyTa,
299
- supplyVaultAuthority,
300
- debtBank: (0, umi_1.publicKey)(this.marginfiDebtAccounts.bank),
301
- debtPriceOracle,
302
- positionDebtTa,
303
- vaultDebtTa,
304
- debtVaultAuthority,
305
- solautoAction: args,
306
- });
307
- }
308
- rebalance(rebalanceStep, jupQuote, rebalanceType, rebalanceValues, flashLoan, targetLiqUtilizationRateBps) {
309
- const inputIsSupply = new web3_js_1.PublicKey(jupQuote.inputMint).equals(this.supplyMint);
310
- const outputIsSupply = new web3_js_1.PublicKey(jupQuote.outputMint).equals(this.supplyMint);
311
- const needSupplyAccounts = (inputIsSupply && rebalanceStep === "A") ||
312
- (outputIsSupply && rebalanceStep === "B") ||
313
- (inputIsSupply && flashLoan !== undefined && rebalanceStep == "B");
314
- const needDebtAccounts = (!inputIsSupply && rebalanceStep === "A") ||
315
- (!outputIsSupply && rebalanceStep === "B") ||
316
- (!inputIsSupply && flashLoan !== undefined && rebalanceStep == "B");
317
- return (0, generated_1.marginfiRebalance)(this.umi, {
318
- signer: this.signer,
319
- marginfiProgram: (0, umi_1.publicKey)(marginfi_sdk_1.MARGINFI_PROGRAM_ID),
320
- ixsSysvar: (0, umi_1.publicKey)(web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY),
321
- solautoFeesTa: rebalanceStep === "B"
322
- ? (0, umi_1.publicKey)(rebalanceValues.rebalanceDirection === generated_1.RebalanceDirection.Boost
323
- ? this.solautoFeesSupplyTa
324
- : this.solautoFeesDebtTa)
325
- : undefined,
326
- authorityReferralState: (0, umi_1.publicKey)(this.referralState),
327
- referredByTa: this.referredByState
328
- ? (0, umi_1.publicKey)(rebalanceValues.rebalanceDirection === generated_1.RebalanceDirection.Boost
329
- ? this.referredBySupplyTa()
330
- : this.referredByDebtTa())
331
- : undefined,
332
- positionAuthority: rebalanceValues.rebalanceAction === "dca"
333
- ? (0, umi_1.publicKey)(this.authority)
334
- : undefined,
335
- solautoPosition: (0, umi_1.publicKey)(this.solautoPosition),
336
- marginfiGroup: (0, umi_1.publicKey)(this.marginfiGroup),
337
- marginfiAccount: (0, umi_1.publicKey)(this.marginfiAccountPk),
338
- intermediaryTa: (0, umi_1.publicKey)((0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), new web3_js_1.PublicKey(jupQuote.inputMint))),
339
- supplyBank: (0, umi_1.publicKey)(this.marginfiSupplyAccounts.bank),
340
- supplyPriceOracle: (0, umi_1.publicKey)(this.supplyPriceOracle),
341
- positionSupplyTa: (0, umi_1.publicKey)(this.positionSupplyTa),
342
- authoritySupplyTa: this.selfManaged
343
- ? (0, umi_1.publicKey)((0, accountUtils_1.getTokenAccount)(this.authority, this.supplyMint))
344
- : undefined,
345
- vaultSupplyTa: needSupplyAccounts
346
- ? (0, umi_1.publicKey)(this.marginfiSupplyAccounts.liquidityVault)
347
- : undefined,
348
- supplyVaultAuthority: needSupplyAccounts
349
- ? (0, umi_1.publicKey)(this.marginfiSupplyAccounts.vaultAuthority)
350
- : undefined,
351
- debtBank: (0, umi_1.publicKey)(this.marginfiDebtAccounts.bank),
352
- debtPriceOracle: (0, umi_1.publicKey)(this.debtPriceOracle),
353
- positionDebtTa: (0, umi_1.publicKey)(this.positionDebtTa),
354
- authorityDebtTa: this.selfManaged
355
- ? (0, umi_1.publicKey)((0, accountUtils_1.getTokenAccount)(this.authority, this.debtMint))
356
- : undefined,
357
- vaultDebtTa: needDebtAccounts
358
- ? (0, umi_1.publicKey)(this.marginfiDebtAccounts.liquidityVault)
359
- : undefined,
360
- debtVaultAuthority: needDebtAccounts
361
- ? (0, umi_1.publicKey)(this.marginfiDebtAccounts.vaultAuthority)
362
- : undefined,
363
- rebalanceType,
364
- targetLiqUtilizationRateBps: targetLiqUtilizationRateBps ?? null,
365
- targetInAmountBaseUnit: parseInt(jupQuote.inAmount),
366
- });
367
- }
368
- flashBorrow(rebalanceType, flashLoanDetails, destinationTokenAccount) {
369
- if (flashLoanDetails.signerFlashLoan) {
370
- if (rebalanceType === generated_1.SolautoRebalanceType.FLRebalanceThenSwap) {
371
- return (0, umi_1.transactionBuilder)().add((0, utils_1.splTokenTransferUmiIx)(this.signer, (0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.debtMint), destinationTokenAccount, (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), flashLoanDetails.baseUnitAmount));
372
- }
373
- else {
374
- return (0, umi_1.transactionBuilder)();
375
- }
376
- }
377
- const bank = flashLoanDetails.mint.equals(this.supplyMint)
378
- ? this.marginfiSupplyAccounts
379
- : this.marginfiDebtAccounts;
380
- return (0, umi_1.transactionBuilder)()
381
- .add((0, marginfi_sdk_1.lendingAccountStartFlashloan)(this.umi, {
382
- endIndex: 0, // We set this after building the transaction
383
- ixsSysvar: (0, umi_1.publicKey)(web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY),
384
- marginfiAccount: (0, umi_1.publicKey)(this.intermediaryMarginfiAccountPk),
385
- signer: this.signer,
386
- }))
387
- .add((0, marginfi_sdk_1.lendingAccountBorrow)(this.umi, {
388
- amount: flashLoanDetails.baseUnitAmount,
389
- bank: (0, umi_1.publicKey)(bank.bank),
390
- bankLiquidityVault: (0, umi_1.publicKey)(bank.liquidityVault),
391
- bankLiquidityVaultAuthority: (0, umi_1.publicKey)(bank.vaultAuthority),
392
- destinationTokenAccount: (0, umi_1.publicKey)(destinationTokenAccount),
393
- marginfiAccount: (0, umi_1.publicKey)(this.intermediaryMarginfiAccountPk),
394
- marginfiGroup: (0, umi_1.publicKey)(this.marginfiGroup),
395
- signer: this.signer,
396
- }));
397
- }
398
- flashRepay(flashLoanDetails) {
399
- if (flashLoanDetails.signerFlashLoan) {
400
- return (0, umi_1.transactionBuilder)();
401
- }
402
- const accounts = flashLoanDetails.useDebtLiquidity
403
- ? { data: this.marginfiDebtAccounts, oracle: this.debtPriceOracle }
404
- : { data: this.marginfiSupplyAccounts, oracle: this.supplyPriceOracle };
405
- const remainingAccounts = [];
406
- let includedFlashLoanToken = false;
407
- if (this.intermediaryMarginfiAccount) {
408
- this.intermediaryMarginfiAccount.lendingAccount.balances.forEach(async (x) => {
409
- if (x.active) {
410
- if (x.bankPk === accounts.data.bank) {
411
- includedFlashLoanToken = true;
412
- }
413
- // TODO: Don't dynamically pull from bank until Marginfi sorts out their price oracle issues.
414
- // const bankData = await safeFetchBank(this.umi, publicKey(accounts.data.bank));
415
- // const priceOracle = bankData!.config.oracleKeys[0];
416
- const priceOracle = (0, umi_1.publicKey)((0, marginfiUtils_1.findMarginfiAccounts)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(x.bankPk)).priceOracle);
417
- remainingAccounts.push(...[
418
- {
419
- pubkey: x.bankPk,
420
- isSigner: false,
421
- isWritable: false,
422
- },
423
- {
424
- pubkey: priceOracle,
425
- isSigner: false,
426
- isWritable: false,
427
- },
428
- ]);
429
- }
430
- });
431
- }
432
- if (!this.intermediaryMarginfiAccount || !includedFlashLoanToken) {
433
- remainingAccounts.push(...[
434
- {
435
- pubkey: (0, umi_web3js_adapters_1.fromWeb3JsPublicKey)(new web3_js_1.PublicKey(accounts.data.bank)),
436
- isSigner: false,
437
- isWritable: false,
438
- },
439
- {
440
- pubkey: (0, umi_web3js_adapters_1.fromWeb3JsPublicKey)(new web3_js_1.PublicKey(accounts.oracle)),
441
- isSigner: false,
442
- isWritable: false,
443
- },
444
- ]);
445
- }
446
- return (0, umi_1.transactionBuilder)()
447
- .add((0, marginfi_sdk_1.lendingAccountRepay)(this.umi, {
448
- amount: flashLoanDetails.baseUnitAmount,
449
- repayAll: null,
450
- bank: (0, umi_1.publicKey)(accounts.data.bank),
451
- bankLiquidityVault: (0, umi_1.publicKey)(accounts.data.liquidityVault),
452
- marginfiAccount: (0, umi_1.publicKey)(this.intermediaryMarginfiAccountPk),
453
- marginfiGroup: (0, umi_1.publicKey)(this.marginfiGroup),
454
- signer: this.signer,
455
- signerTokenAccount: (0, umi_1.publicKey)((0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), flashLoanDetails.mint)),
456
- }))
457
- .add((0, marginfi_sdk_1.lendingAccountEndFlashloan)(this.umi, {
458
- marginfiAccount: (0, umi_1.publicKey)(this.intermediaryMarginfiAccountPk),
459
- signer: this.signer,
460
- }).addRemainingAccounts(remainingAccounts));
461
- }
462
- async getFreshPositionState() {
463
- const state = await super.getFreshPositionState();
464
- if (state) {
465
- return state;
466
- }
467
- const useDesignatedMint = !this.selfManaged &&
468
- (this.solautoPositionData === null ||
469
- !(0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey).equals(this.authority));
470
- const resp = await (0, marginfiUtils_1.getMarginfiAccountPositionState)(this.umi, { pk: this.marginfiAccountPk }, this.marginfiGroup, useDesignatedMint ? { mint: this.supplyMint } : undefined, useDesignatedMint ? { mint: this.debtMint } : undefined, this.contextUpdates);
471
- if (resp) {
472
- this.supplyBank = resp?.supplyBank;
473
- this.debtBank = resp?.debtBank;
474
- const freshState = resp.state;
475
- this.log("Fresh state", freshState);
476
- const supplyPrice = (0, utils_1.safeGetPrice)(freshState?.supply.mint);
477
- const debtPrice = (0, utils_1.safeGetPrice)(freshState?.debt.mint);
478
- this.log("Supply price: ", supplyPrice);
479
- this.log("Debt price: ", debtPrice);
480
- this.log("Liq threshold bps:", freshState.liqThresholdBps);
481
- this.log("Liq utilization rate bps:", freshState.liqUtilizationRateBps);
482
- this.log("Supply USD:", (0, numberUtils_1.fromBaseUnit)(freshState.supply.amountUsed.baseUnit, freshState.supply.decimals) * supplyPrice);
483
- this.log("Debt USD:", (0, numberUtils_1.fromBaseUnit)(freshState.debt.amountUsed.baseUnit, freshState.debt.decimals) * debtPrice);
484
- }
485
- return resp?.state;
486
- }
487
- supplyLiquidityAvailable() {
488
- return (0, marginfiUtils_1.getBankLiquidityAvailableBaseUnit)(this.supplyBank, false);
489
- }
490
- supplyLiquidityDepositable() {
491
- return (0, marginfiUtils_1.getBankLiquidityAvailableBaseUnit)(this.supplyBank, true);
492
- }
493
- debtLiquidityAvailable() {
494
- return (0, marginfiUtils_1.getBankLiquidityAvailableBaseUnit)(this.debtBank, false);
495
- }
496
- }
497
- exports.SolautoMarginfiClient = SolautoMarginfiClient;
@@ -1 +0,0 @@
1
- {"version":3,"file":"txHandler.d.ts","sourceRoot":"","sources":["../../src/clients/txHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIxD,8BAAsB,SAAS;IAOpB,MAAM,EAAE,MAAM;IAEd,SAAS,EAAE,SAAS;IACpB,UAAU,CAAC,EAAE,MAAM;IATrB,UAAU,EAAG,UAAU,CAAC;IACxB,GAAG,EAAG,GAAG,CAAC;IACV,MAAM,EAAG,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAM;gBAG1B,MAAM,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,OAAO,EACZ,SAAS,GAAE,SAAgC,EAC3C,UAAU,CAAC,EAAE,MAAM,YAAA;IAe5B,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAIzB,QAAQ,CAAC,mBAAmB,IAAI,MAAM,EAAE;IAExC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAC9D"}
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TxHandler = void 0;
4
- const utils_1 = require("../utils");
5
- const constants_1 = require("../constants");
6
- class TxHandler {
7
- constructor(rpcUrl, localTest, programId = constants_1.SOLAUTO_PROD_PROGRAM, wsEndpoint) {
8
- this.rpcUrl = rpcUrl;
9
- this.programId = programId;
10
- this.wsEndpoint = wsEndpoint;
11
- this.otherSigners = [];
12
- const [connection, umi] = (0, utils_1.getSolanaRpcConnection)(this.rpcUrl, this.programId, wsEndpoint);
13
- this.connection = connection;
14
- this.umi = umi;
15
- if (!globalThis.LOCAL_TEST && localTest) {
16
- globalThis.LOCAL_TEST = Boolean(localTest);
17
- }
18
- }
19
- log(...args) {
20
- (0, utils_1.consoleLog)(...args);
21
- }
22
- }
23
- exports.TxHandler = TxHandler;
@@ -1 +0,0 @@
1
- {"version":3,"file":"positionTokenUsage.d.ts","sourceRoot":"","sources":["../../../src/generated/types/positionTokenUsage.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EACL,UAAU,EAQX,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,eAAe,EAA4B,MAAM,GAAG,CAAC;AAE3E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,UAAU,EAAE,WAAW,CAAC;IACxB,eAAe,EAAE,WAAW,CAAC;IAC7B,wBAAwB,EAAE,MAAM,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,UAAU,EAAE,eAAe,CAAC;IAC5B,eAAe,EAAE,eAAe,CAAC;IACjC,wBAAwB,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,wBAAgB,+BAA+B,IAAI,UAAU,CAC3D,sBAAsB,EACtB,kBAAkB,CACnB,CAgBA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transactions/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAoBxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAsCzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAOlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AA4LjD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAoH7B;AA2LD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,8BAA8B,CAAC,MAAM,EAAE,aAAa,oBAqDzE;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAsI5C;AAED,wBAAsB,gCAAgC,CACpD,eAAe,EAAE,oBAAoB,EACrC,YAAY,EAAE,SAAS,EACvB,eAAe,EAAE,SAAS,GACzB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAsC5C;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,kBAAkB,EAAE,EACzB,KAAK,EAAE,KAAK,EACZ,oBAAoB,CAAC,EAAE,OAAO;;;;EA6G/B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionsManager.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMzD,OAAO,EAEL,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAElB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAa,MAAM,YAAY,CAAC;AAa7D,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAK5B;AAqCD,qBAAa,eAAe;IAOjB,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM;IATtB,oBAAoB,EAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACxB,WAAW,EAAE,OAAO,CAAS;IAC7B,SAAS,EAAE,MAAM,CAAK;gBAGb,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,EACxC,IAAI,CAAC,EAAE,MAAM,YAAA;IAGhB,UAAU;IAKV,OAAO,CAAC,UAAU,EAAE,MAAM;IAOhC,cAAc,IAAI,MAAM,EAAE;CAY3B;AAwGD,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EAAE,CAAC;AAEJ,UAAU,WAAW;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,mBAAmB;IAU5B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa,CAAC;IAdxB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAS;IAE3B,kBAAkB,SAAmB;gBAG3B,SAAS,EAAE,aAAa,GAAG,oBAAoB,EAC/C,cAAc,CAAC,GAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,aAAA,EAC/D,MAAM,CAAC,EAAE,kBAAkB,YAAA,EAC3B,kBAAkB,GAAE,kBAA2C,EAC/D,UAAU,GAAE,OAAe,EAC3B,aAAa,CAAC,EAAE,aAAa,YAAA,EACrC,WAAW,CAAC,EAAE,WAAW;YAab,uBAAuB;IA0CrC,OAAO,CAAC,YAAY;YA6CN,aAAa;IAoB3B,OAAO,CAAC,4BAA4B;IAgBpC,OAAO,CAAC,mBAAmB;YAoBb,SAAS;IAiBV,UAAU,CACrB,YAAY,EAAE,eAAe,EAAE,GAC9B,OAAO,CAAC,0BAA0B,CAAC;IA0GzB,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,0BAA0B,CAAC;YA8BxB,6BAA6B;YA4I7B,qBAAqB;YAgDrB,eAAe;YA0Df,eAAe;CA4D9B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export * from './generalUtils';
2
- export * from './rebalanceUtils';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
@@ -1,30 +0,0 @@
1
- import { PublicKey } from "@solana/web3.js";
2
- import { SolautoClient } from "../../clients/solautoClient";
3
- import { DCASettings, PositionState, RebalanceDirection, SolautoSettingsParameters, TokenType } from "../../generated";
4
- import { QuoteResponse } from "@jup-ag/api";
5
- import { JupSwapDetails } from "../jupiterUtils";
6
- import { RebalanceAction } from "../../types";
7
- export interface RebalanceValues {
8
- debtAdjustmentUsd: number;
9
- repayingCloseToMaxLtv: boolean;
10
- amountToDcaIn: number;
11
- amountUsdToDcaIn: number;
12
- dcaTokenType?: TokenType;
13
- rebalanceAction: RebalanceAction;
14
- rebalanceDirection: RebalanceDirection;
15
- feesUsd: number;
16
- targetRateBps: number;
17
- }
18
- export declare function getRebalanceValues(state: PositionState, settings: SolautoSettingsParameters | undefined, dca: DCASettings | undefined, currentUnixTime: number, supplyPrice: number, debtPrice: number, targetLiqUtilizationRateBps?: number): RebalanceValues;
19
- export interface FlashLoanRequirements {
20
- useDebtLiquidity: boolean;
21
- signerFlashLoan: boolean;
22
- }
23
- export declare function getFlashLoanRequirements(client: SolautoClient, values: RebalanceValues, attemptNum?: number): Promise<FlashLoanRequirements | undefined>;
24
- export interface FlashLoanDetails extends FlashLoanRequirements {
25
- baseUnitAmount: bigint;
26
- mint: PublicKey;
27
- }
28
- export declare function getFlashLoanDetails(client: SolautoClient, flRequirements: FlashLoanRequirements, values: RebalanceValues, jupQuote: QuoteResponse): FlashLoanDetails | undefined;
29
- export declare function getJupSwapRebalanceDetails(client: SolautoClient, values: RebalanceValues, flRequirements?: FlashLoanRequirements, targetLiqUtilizationRateBps?: number, attemptNum?: number): Promise<JupSwapDetails>;
30
- //# sourceMappingURL=rebalanceUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rebalanceUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/rebalanceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,aAAa,EAEb,kBAAkB,EAClB,yBAAyB,EACzB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAOzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAe,cAAc,EAAgB,MAAM,iBAAiB,CAAC;AAiB5E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAkI9C,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,eAAe,EAAE,eAAe,CAAC;IACjC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,yBAAyB,GAAG,SAAS,EAC/C,GAAG,EAAE,WAAW,GAAG,SAAS,EAC5B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,2BAA2B,CAAC,EAAE,MAAM,GACnC,eAAe,CAgEjB;AA6CD,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CA8F5C;AAED,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,cAAc,EAAE,qBAAqB,EACrC,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,aAAa,GACtB,gBAAgB,GAAG,SAAS,CA2B9B;AA4CD,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,eAAe,EACvB,cAAc,CAAC,EAAE,qBAAqB,EACtC,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC,CA4EzB"}