@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
@@ -5,84 +5,79 @@ require("rpc-websockets/dist/lib/client");
5
5
  const web3_js_1 = require("@solana/web3.js");
6
6
  const umi_1 = require("@metaplex-foundation/umi");
7
7
  const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
8
- const generated_1 = require("../generated");
9
- const accountUtils_1 = require("../utils/accountUtils");
10
- const generalAccounts_1 = require("../constants/generalAccounts");
11
- const solanaUtils_1 = require("../utils/solanaUtils");
12
- const solautoConstants_1 = require("../constants/solautoConstants");
13
- const generalUtils_1 = require("../utils/generalUtils");
14
- const generalUtils_2 = require("../utils/solauto/generalUtils");
8
+ const generated_1 = require("../../generated");
9
+ const accountUtils_1 = require("../../utils/accountUtils");
10
+ const generalAccounts_1 = require("../../constants/generalAccounts");
11
+ const solanaUtils_1 = require("../../utils/solanaUtils");
12
+ const solautoConstants_1 = require("../../constants/solautoConstants");
13
+ const solautoUtils_1 = require("../../utils/solautoUtils");
15
14
  const referralStateManager_1 = require("./referralStateManager");
15
+ const solautoPosition_1 = require("../../solautoPosition");
16
+ const flProviderAggregator_1 = require("../flashLoans/flProviderAggregator");
16
17
  class SolautoClient extends referralStateManager_1.ReferralStateManager {
17
18
  constructor() {
18
19
  super(...arguments);
19
- this.contextUpdates = new generalUtils_2.ContextUpdates();
20
+ this.contextUpdates = new solautoUtils_1.ContextUpdates();
20
21
  }
21
22
  async initialize(args) {
22
23
  await super.initialize(args);
23
24
  this.positionId = args.positionId ?? 0;
24
25
  this.selfManaged = this.positionId === 0;
25
- this.solautoPosition = (0, accountUtils_1.getSolautoPositionAccount)(this.authority, this.positionId, this.programId);
26
- this.solautoPositionData = !args.new
27
- ? await (0, generated_1.safeFetchSolautoPosition)(this.umi, (0, umi_1.publicKey)(this.solautoPosition), { commitment: "confirmed" })
28
- : null;
29
- this.solautoPositionState = this.solautoPositionData?.state;
30
- this.maxLtvBps = undefined;
31
- this.liqThresholdBps = undefined;
32
- this.supplyMint =
33
- args.supplyMint ??
34
- (this.solautoPositionData && !this.selfManaged
35
- ? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.solautoPositionData.state.supply.mint)
36
- : web3_js_1.PublicKey.default);
37
- this.positionSupplyTa = (0, accountUtils_1.getTokenAccount)(this.solautoPosition, this.supplyMint);
38
- this.signerSupplyTa = (0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.supplyMint);
39
- this.debtMint =
40
- args.debtMint ??
41
- (this.solautoPositionData && !this.selfManaged
42
- ? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.solautoPositionData.state.debt.mint)
43
- : web3_js_1.PublicKey.default);
44
- this.positionDebtTa = (0, accountUtils_1.getTokenAccount)(this.solautoPosition, this.debtMint);
45
- this.signerDebtTa = (0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.debtMint);
46
- this.solautoFeesSupplyTa = (0, accountUtils_1.getTokenAccount)(generalAccounts_1.SOLAUTO_FEES_WALLET, this.supplyMint);
47
- this.solautoFeesDebtTa = (0, accountUtils_1.getTokenAccount)(generalAccounts_1.SOLAUTO_FEES_WALLET, this.debtMint);
26
+ if (this.selfManaged &&
27
+ (!args.supplyMint || !args.debtMint || !args.lpUserAccount)) {
28
+ throw new Error("Self managed position is missing arguments");
29
+ }
30
+ const positionPk = (0, accountUtils_1.getSolautoPositionAccount)(this.authority, this.positionId, this.programId);
31
+ this.solautoPosition = await (0, solautoPosition_1.getOrCreatePositionEx)(this.umi, positionPk, {
32
+ supplyMint: args.supplyMint,
33
+ debtMint: args.debtMint,
34
+ lpUserAccount: args.lpUserAccount,
35
+ lendingPlatform: this.lendingPlatform,
36
+ }, this.contextUpdates);
37
+ this.positionSupplyTa = (0, accountUtils_1.getTokenAccount)(this.solautoPosition.publicKey, this.solautoPosition.supplyMint());
38
+ this.signerSupplyTa = (0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.solautoPosition.supplyMint());
39
+ this.positionDebtTa = (0, accountUtils_1.getTokenAccount)(this.solautoPosition.publicKey, this.solautoPosition.debtMint());
40
+ this.signerDebtTa = (0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.solautoPosition.debtMint());
41
+ this.solautoFeesSupplyTa = (0, accountUtils_1.getTokenAccount)(generalAccounts_1.SOLAUTO_FEES_WALLET, this.solautoPosition.supplyMint());
42
+ this.solautoFeesDebtTa = (0, accountUtils_1.getTokenAccount)(generalAccounts_1.SOLAUTO_FEES_WALLET, this.solautoPosition.debtMint());
48
43
  this.authorityLutAddress =
49
44
  this.referralStateData?.lookupTable &&
50
45
  !(0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.referralStateData.lookupTable).equals(web3_js_1.PublicKey.default)
51
46
  ? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.referralStateData.lookupTable)
52
47
  : undefined;
53
- this.log("Position state: ", this.solautoPositionState);
54
- this.log("Position settings: ", this.solautoPositionData?.position?.settingParams);
55
- this.log("Position DCA: ", (this.solautoPositionData?.position?.dca?.automation?.targetPeriods ??
56
- 0) > 0
57
- ? this.solautoPositionData?.position?.dca
58
- : undefined);
48
+ this.flProvider = new flProviderAggregator_1.FlProviderAggregator(this.umi, this.signer, this.solautoPosition.supplyMint(), this.solautoPosition.debtMint());
49
+ await this.flProvider.initialize();
50
+ this.otherSigners.push(...this.flProvider.otherSigners());
51
+ this.log("Position state: ", this.solautoPosition.state());
52
+ this.log("Position settings: ", this.solautoPosition.settings());
53
+ this.log("Position DCA: ", this.solautoPosition.dca());
59
54
  }
60
55
  referredBySupplyTa() {
61
56
  if (this.referredByState !== undefined) {
62
- return (0, accountUtils_1.getTokenAccount)(this.referredByState, this.supplyMint);
57
+ return (0, accountUtils_1.getTokenAccount)(this.referredByState, this.solautoPosition.supplyMint());
63
58
  }
64
59
  return undefined;
65
60
  }
66
61
  referredByDebtTa() {
67
62
  if (this.referredByState !== undefined) {
68
- return (0, accountUtils_1.getTokenAccount)(this.referredByState, this.debtMint);
63
+ return (0, accountUtils_1.getTokenAccount)(this.referredByState, this.solautoPosition.debtMint());
69
64
  }
70
65
  return undefined;
71
66
  }
72
67
  async resetLiveTxUpdates(success) {
68
+ this.log("Resetting context updates...");
73
69
  if (success) {
74
- if (!this.solautoPositionData) {
75
- this.solautoPositionData = await (0, generated_1.safeFetchSolautoPosition)(this.umi, (0, umi_1.publicKey)(this.solautoPosition), { commitment: "confirmed" });
70
+ if (!this.solautoPosition.exists()) {
71
+ await this.solautoPosition.refetchPositionData();
76
72
  }
77
73
  else {
78
- if (this.contextUpdates.activeDca) {
79
- this.solautoPositionData.position.dca =
80
- this.contextUpdates.activeDca;
81
- }
82
74
  if (this.contextUpdates.settings) {
83
- this.solautoPositionData.position.settingParams =
75
+ this.solautoPosition.data().position.settings =
84
76
  this.contextUpdates.settings;
85
77
  }
78
+ if (this.contextUpdates.dca) {
79
+ this.solautoPosition.data().position.dca = this.contextUpdates.dca;
80
+ }
86
81
  // All other live position updates can be derived by getting a fresh position state, so we don't need to do anything else form contextUpdates
87
82
  }
88
83
  }
@@ -105,12 +100,13 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
105
100
  ...((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey).equals(this.authority)
106
101
  ? [this.signerDebtTa]
107
102
  : []),
108
- this.solautoPosition,
103
+ this.solautoPosition.publicKey,
109
104
  this.positionSupplyTa,
110
105
  this.positionDebtTa,
111
106
  this.referralState,
112
107
  ...(this.referredBySupplyTa() ? [this.referredBySupplyTa()] : []),
113
108
  ...(this.referredByDebtTa() ? [this.referredByDebtTa()] : []),
109
+ ...this.flProvider.lutAccountsToAdd(),
114
110
  ];
115
111
  }
116
112
  async fetchExistingAuthorityLutAccounts() {
@@ -123,9 +119,6 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
123
119
  return lookupTable?.value?.state.addresses ?? [];
124
120
  }
125
121
  async updateLookupTable() {
126
- if (this.selfManaged) {
127
- return undefined;
128
- }
129
122
  const existingLutAccounts = await this.fetchExistingAuthorityLutAccounts();
130
123
  if (this.lutAccountsToAdd().every((element) => existingLutAccounts
131
124
  .map((x) => x.toString().toLowerCase())
@@ -140,7 +133,9 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
140
133
  recentSlot: await this.umi.rpc.getSlot({ commitment: "finalized" }),
141
134
  });
142
135
  this.authorityLutAddress = lookupTableAddress;
143
- tx = tx.add((0, solanaUtils_1.getWrappedInstruction)(this.signer, createLookupTableInst));
136
+ tx = tx
137
+ .add((0, solanaUtils_1.getWrappedInstruction)(this.signer, createLookupTableInst))
138
+ .add(this.updateReferralStatesIx(undefined, this.authorityLutAddress));
144
139
  }
145
140
  const accountsToAdd = this.lutAccountsToAdd().filter((x) => !existingLutAccounts
146
141
  .map((x) => x.toString().toLowerCase())
@@ -148,12 +143,14 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
148
143
  if (accountsToAdd.length === 0) {
149
144
  return undefined;
150
145
  }
151
- tx = tx.add((0, solanaUtils_1.getWrappedInstruction)(this.signer, web3_js_1.AddressLookupTableProgram.extendLookupTable({
146
+ tx = tx
147
+ .add((0, solanaUtils_1.getWrappedInstruction)(this.signer, web3_js_1.AddressLookupTableProgram.extendLookupTable({
152
148
  payer: (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey),
153
149
  authority: this.authority,
154
150
  lookupTable: this.authorityLutAddress,
155
151
  addresses: accountsToAdd,
156
- })));
152
+ })))
153
+ .add(await this.flProvider.flAccountPrereqIxs());
157
154
  this.log("Requires authority LUT update...");
158
155
  return {
159
156
  tx,
@@ -171,11 +168,19 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
171
168
  }
172
169
  [this.signerSupplyBalance, this.signerDebtBalance] = await Promise.all([
173
170
  (async () => {
174
- const data = await this.connection.getTokenAccountBalance((0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.supplyMint), "confirmed");
171
+ let data;
172
+ try {
173
+ data = await this.connection.getTokenAccountBalance((0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.solautoPosition.supplyMint()), "confirmed");
174
+ }
175
+ catch { }
175
176
  return BigInt(parseInt(data?.value.amount ?? "0"));
176
177
  })(),
177
178
  (async () => {
178
- const data = await this.connection.getTokenAccountBalance((0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.debtMint), "confirmed");
179
+ let data;
180
+ try {
181
+ const data = await this.connection.getTokenAccountBalance((0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.solautoPosition.debtMint()), "confirmed");
182
+ }
183
+ catch { }
179
184
  return BigInt(parseInt(data?.value.amount ?? "0"));
180
185
  })(),
181
186
  ]);
@@ -184,21 +189,7 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
184
189
  debtBalance: this.signerDebtBalance,
185
190
  };
186
191
  }
187
- solautoPositionSettings() {
188
- return (this.contextUpdates.settings ??
189
- this.solautoPositionData?.position.settingParams);
190
- }
191
- solautoPositionActiveDca() {
192
- return (this.contextUpdates.activeDca ??
193
- this.solautoPositionData?.position.dca);
194
- }
195
- async maxLtvAndLiqThresholdBps() {
196
- if (this.maxLtvBps !== undefined && this.liqThresholdBps !== undefined) {
197
- return [this.maxLtvBps, this.liqThresholdBps];
198
- }
199
- return [0, 0];
200
- }
201
- openPosition(settingParams, dca) {
192
+ openPositionIx(settings, dca) {
202
193
  if (dca && dca.dcaInBaseUnit > 0) {
203
194
  this.contextUpdates.new({
204
195
  type: "dcaInBalance",
@@ -208,10 +199,10 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
208
199
  },
209
200
  });
210
201
  }
211
- if (settingParams) {
202
+ if (settings) {
212
203
  this.contextUpdates.new({
213
204
  type: "settings",
214
- value: settingParams,
205
+ value: settings,
215
206
  });
216
207
  }
217
208
  if (dca) {
@@ -228,12 +219,12 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
228
219
  let signerDcaTa = undefined;
229
220
  if ((0, umi_1.isOption)(args.dca) && (0, umi_1.isSome)(args.dca)) {
230
221
  if (args.dca.value.tokenType === generated_1.TokenType.Supply) {
231
- dcaMint = (0, umi_1.publicKey)(this.supplyMint);
222
+ dcaMint = (0, umi_1.publicKey)(this.solautoPosition.supplyMint());
232
223
  positionDcaTa = (0, umi_1.publicKey)(this.positionSupplyTa);
233
224
  signerDcaTa = (0, umi_1.publicKey)(this.signerSupplyTa);
234
225
  }
235
226
  else {
236
- dcaMint = (0, umi_1.publicKey)(this.debtMint);
227
+ dcaMint = (0, umi_1.publicKey)(this.solautoPosition.debtMint());
237
228
  positionDcaTa = (0, umi_1.publicKey)(this.positionDebtTa);
238
229
  signerDcaTa = (0, umi_1.publicKey)(this.signerDebtTa);
239
230
  }
@@ -249,10 +240,10 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
249
240
  });
250
241
  }
251
242
  }
252
- if ((0, umi_1.isOption)(args.settingParams) && (0, umi_1.isSome)(args.settingParams)) {
243
+ if ((0, umi_1.isOption)(args.settings) && (0, umi_1.isSome)(args.settings)) {
253
244
  this.contextUpdates.new({
254
245
  type: "settings",
255
- value: args.settingParams.value,
246
+ value: args.settings.value,
256
247
  });
257
248
  }
258
249
  if ((0, umi_1.isOption)(args.dca) && (0, umi_1.isSome)(args.dca)) {
@@ -263,54 +254,43 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
263
254
  }
264
255
  return (0, generated_1.updatePosition)(this.umi, {
265
256
  signer: this.signer,
266
- solautoPosition: (0, umi_1.publicKey)(this.solautoPosition),
257
+ solautoPosition: (0, umi_1.publicKey)(this.solautoPosition.publicKey),
267
258
  dcaMint,
268
259
  positionDcaTa,
269
260
  signerDcaTa,
270
261
  updatePositionData: args,
271
262
  });
272
263
  }
273
- closePositionIx() {
274
- return (0, generated_1.closePosition)(this.umi, {
275
- signer: this.signer,
276
- solautoPosition: (0, umi_1.publicKey)(this.solautoPosition),
277
- signerSupplyTa: (0, umi_1.publicKey)(this.signerSupplyTa),
278
- positionSupplyTa: (0, umi_1.publicKey)(this.positionSupplyTa),
279
- positionDebtTa: (0, umi_1.publicKey)(this.positionDebtTa),
280
- signerDebtTa: (0, umi_1.publicKey)(this.signerDebtTa),
281
- protocolAccount: (0, umi_1.publicKey)(this.protocolAccount()),
282
- });
283
- }
284
264
  cancelDCAIx() {
285
265
  let dcaMint = undefined;
286
266
  let positionDcaTa = undefined;
287
267
  let signerDcaTa = undefined;
288
- const currDca = this.solautoPositionActiveDca();
268
+ const currDca = this.solautoPosition.dca();
289
269
  if (currDca.dcaInBaseUnit > 0) {
290
270
  if (currDca.tokenType === generated_1.TokenType.Supply) {
291
- dcaMint = (0, umi_1.publicKey)(this.supplyMint);
271
+ dcaMint = (0, umi_1.publicKey)(this.solautoPosition.supplyMint());
292
272
  positionDcaTa = (0, umi_1.publicKey)(this.positionSupplyTa);
293
273
  signerDcaTa = (0, umi_1.publicKey)(this.signerSupplyTa);
294
274
  }
295
275
  else {
296
- dcaMint = (0, umi_1.publicKey)(this.debtMint);
276
+ dcaMint = (0, umi_1.publicKey)(this.solautoPosition.debtMint());
297
277
  positionDcaTa = (0, umi_1.publicKey)(this.positionDebtTa);
298
278
  signerDcaTa = (0, umi_1.publicKey)(this.signerDebtTa);
299
279
  }
300
280
  this.contextUpdates.new({
301
281
  type: "cancellingDca",
302
- value: this.solautoPositionData.position.dca.tokenType,
282
+ value: this.solautoPosition.dca().tokenType,
303
283
  });
304
284
  }
305
285
  return (0, generated_1.cancelDCA)(this.umi, {
306
286
  signer: this.signer,
307
- solautoPosition: (0, umi_1.publicKey)(this.solautoPosition),
287
+ solautoPosition: (0, umi_1.publicKey)(this.solautoPosition.publicKey),
308
288
  dcaMint,
309
289
  positionDcaTa,
310
290
  signerDcaTa,
311
291
  });
312
292
  }
313
- protocolInteraction(args) {
293
+ protocolInteractionIx(args) {
314
294
  let tx = (0, umi_1.transactionBuilder)();
315
295
  if (!this.selfManaged) {
316
296
  if (args.__kind === "Deposit") {
@@ -321,8 +301,7 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
321
301
  tx = tx.add((0, solanaUtils_1.splTokenTransferUmiIx)(this.signer, this.signerDebtTa, this.positionDebtTa, (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), BigInt(args.fields[0].fields[0])));
322
302
  }
323
303
  else {
324
- tx = tx.add((0, solanaUtils_1.splTokenTransferUmiIx)(this.signer, this.signerDebtTa, this.positionDebtTa, (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), BigInt(Math.round(Number(this.solautoPositionState.debt.amountUsed.baseUnit) *
325
- 1.01))));
304
+ tx = tx.add((0, solanaUtils_1.splTokenTransferUmiIx)(this.signer, this.signerDebtTa, this.positionDebtTa, (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), BigInt(Math.round(Number(this.solautoPosition.state().debt.amountUsed.baseUnit) * 1.01))));
326
305
  }
327
306
  }
328
307
  }
@@ -342,7 +321,7 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
342
321
  else {
343
322
  this.contextUpdates.new({
344
323
  type: "supply",
345
- value: (this.solautoPositionState?.supply.amountUsed.baseUnit ??
324
+ value: (this.solautoPosition.state().supply.amountUsed.baseUnit ??
346
325
  BigInt(0)) * BigInt(-1),
347
326
  });
348
327
  }
@@ -363,22 +342,12 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
363
342
  else {
364
343
  this.contextUpdates.new({
365
344
  type: "debt",
366
- value: (this.solautoPositionState?.debt.amountUsed.baseUnit ?? BigInt(0)) *
367
- BigInt(-1),
345
+ value: (this.solautoPosition.state().debt.amountUsed.baseUnit ??
346
+ BigInt(0)) * BigInt(-1),
368
347
  });
369
348
  }
370
349
  }
371
350
  return tx;
372
351
  }
373
- async getFreshPositionState() {
374
- if (Boolean(this.solautoPositionData) &&
375
- Boolean(this.solautoPositionState) &&
376
- Number(this.solautoPositionState.lastUpdated) >
377
- (0, generalUtils_1.currentUnixSeconds)() - solautoConstants_1.MIN_POSITION_STATE_FRESHNESS_SECS &&
378
- !this.contextUpdates.positionUpdates()) {
379
- return this.solautoPositionState;
380
- }
381
- return undefined;
382
- }
383
352
  }
384
353
  exports.SolautoClient = SolautoClient;
@@ -0,0 +1,34 @@
1
+ import { Signer, TransactionBuilder } from "@metaplex-foundation/umi";
2
+ import { PublicKey } from "@solana/web3.js";
3
+ import { SolautoClient, SolautoClientArgs } from "./solautoClient";
4
+ import { MarginfiAssetAccounts } from "../../types/accounts";
5
+ import { DCASettingsInpArgs, LendingPlatform, RebalanceStep, SolautoActionArgs, SolautoSettingsParametersInpArgs } from "../../generated";
6
+ import { RebalanceDetails } from "../../types";
7
+ export interface SolautoMarginfiClientArgs extends SolautoClientArgs {
8
+ marginfiAccount?: PublicKey | Signer;
9
+ marginfiAccountSeedIdx?: bigint;
10
+ }
11
+ export declare class SolautoMarginfiClient extends SolautoClient {
12
+ lendingPlatform: LendingPlatform;
13
+ marginfiProgram: PublicKey;
14
+ marginfiAccount: PublicKey | Signer;
15
+ marginfiAccountPk: PublicKey;
16
+ marginfiGroup: PublicKey;
17
+ marginfiSupplyAccounts: MarginfiAssetAccounts;
18
+ marginfiDebtAccounts: MarginfiAssetAccounts;
19
+ supplyPriceOracle: PublicKey;
20
+ debtPriceOracle: PublicKey;
21
+ initialize(args: SolautoMarginfiClientArgs): Promise<void>;
22
+ defaultLookupTables(): string[];
23
+ lutAccountsToAdd(): PublicKey[];
24
+ marginfiAccountInitialize(marginfiAccount: Signer): TransactionBuilder;
25
+ openPositionIx(settings?: SolautoSettingsParametersInpArgs, dca?: DCASettingsInpArgs): TransactionBuilder;
26
+ private marginfiOpenPositionIx;
27
+ closePositionIx(): TransactionBuilder;
28
+ refreshIx(): TransactionBuilder;
29
+ protocolInteractionIx(args: SolautoActionArgs): TransactionBuilder;
30
+ private marginfiProtocolInteractionIx;
31
+ private marginfiSolautoProtocolInteractionIx;
32
+ rebalanceIx(rebalanceStep: RebalanceStep, data: RebalanceDetails): TransactionBuilder;
33
+ }
34
+ //# sourceMappingURL=solautoMarginfiClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/solautoMarginfiClient.ts"],"names":[],"mappings":"AACA,OAAO,EACL,MAAM,EACN,kBAAkB,EAInB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAK7D,OAAO,EACL,kBAAkB,EAClB,eAAe,EAGf,aAAa,EACb,iBAAiB,EAEjB,gCAAgC,EAOjC,MAAM,iBAAiB,CAAC;AAgBzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,eAAe,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,qBAAa,qBAAsB,SAAQ,aAAa;IAC/C,eAAe,kBAA4B;IAE3C,eAAe,EAAG,SAAS,CAAC;IAE5B,eAAe,EAAG,SAAS,GAAG,MAAM,CAAC;IACrC,iBAAiB,EAAG,SAAS,CAAC;IAC9B,aAAa,EAAG,SAAS,CAAC;IAE1B,sBAAsB,EAAG,qBAAqB,CAAC;IAC/C,oBAAoB,EAAG,qBAAqB,CAAC;IAE7C,iBAAiB,EAAG,SAAS,CAAC;IAC9B,eAAe,EAAG,SAAS,CAAC;IAE7B,UAAU,CAAC,IAAI,EAAE,yBAAyB;IAsEhD,mBAAmB,IAAI,MAAM,EAAE;IAI/B,gBAAgB,IAAI,SAAS,EAAE;IAI/B,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG,kBAAkB;IAStE,cAAc,CACZ,QAAQ,CAAC,EAAE,gCAAgC,EAC3C,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IAMrB,OAAO,CAAC,sBAAsB;IA0C9B,eAAe,IAAI,kBAAkB;IAYrC,SAAS,IAAI,kBAAkB;IAc/B,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAUlE,OAAO,CAAC,6BAA6B;IAmErC,OAAO,CAAC,oCAAoC;IA0D5C,WAAW,CACT,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,gBAAgB,GACrB,kBAAkB;CAqGtB"}