@haven-fi/solauto-sdk 1.0.582 → 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.
- package/dist/constants/solautoConstants.d.ts +1 -0
- package/dist/constants/solautoConstants.d.ts.map +1 -1
- package/dist/constants/solautoConstants.js +4 -10
- package/dist/generated/accounts/solautoPosition.js +2 -2
- package/dist/generated/errors/solauto.d.ts +14 -2
- package/dist/generated/errors/solauto.d.ts.map +1 -1
- package/dist/generated/errors/solauto.js +27 -5
- package/dist/generated/instructions/claimReferralFees.d.ts +1 -1
- package/dist/generated/instructions/claimReferralFees.d.ts.map +1 -1
- package/dist/generated/instructions/closePosition.d.ts +1 -1
- package/dist/generated/instructions/closePosition.d.ts.map +1 -1
- package/dist/generated/instructions/closePosition.js +2 -2
- package/dist/generated/instructions/marginfiOpenPosition.d.ts +1 -3
- package/dist/generated/instructions/marginfiOpenPosition.d.ts.map +1 -1
- package/dist/generated/instructions/marginfiOpenPosition.js +0 -1
- package/dist/generated/instructions/marginfiRebalance.d.ts +7 -3
- package/dist/generated/instructions/marginfiRebalance.d.ts.map +1 -1
- package/dist/generated/instructions/marginfiRebalance.js +3 -1
- package/dist/generated/types/index.d.ts +7 -1
- package/dist/generated/types/index.d.ts.map +1 -1
- package/dist/generated/types/index.js +7 -1
- package/dist/generated/types/positionData.d.ts +2 -2
- package/dist/generated/types/positionData.d.ts.map +1 -1
- package/dist/generated/types/positionData.js +1 -1
- package/dist/generated/types/positionState.d.ts +7 -7
- package/dist/generated/types/positionState.d.ts.map +1 -1
- package/dist/generated/types/positionState.js +3 -3
- package/dist/generated/types/{positionTokenUsage.d.ts → positionTokenState.d.ts} +6 -8
- package/dist/generated/types/positionTokenState.d.ts.map +1 -0
- package/dist/generated/types/{positionTokenUsage.js → positionTokenState.js} +6 -7
- package/dist/generated/types/rebalanceData.d.ts +7 -13
- package/dist/generated/types/rebalanceData.d.ts.map +1 -1
- package/dist/generated/types/rebalanceData.js +3 -6
- package/dist/generated/types/rebalanceDirection.d.ts +3 -2
- package/dist/generated/types/rebalanceDirection.d.ts.map +1 -1
- package/dist/generated/types/rebalanceDirection.js +3 -2
- package/dist/generated/types/rebalanceInstructionData.d.ts +27 -0
- package/dist/generated/types/rebalanceInstructionData.d.ts.map +1 -0
- package/dist/generated/types/rebalanceInstructionData.js +22 -0
- package/dist/generated/types/rebalanceStateValues.d.ts +27 -0
- package/dist/generated/types/rebalanceStateValues.d.ts.map +1 -0
- package/dist/generated/types/rebalanceStateValues.js +22 -0
- package/dist/generated/types/rebalanceStep.d.ts +15 -0
- package/dist/generated/types/rebalanceStep.d.ts.map +1 -0
- package/dist/generated/types/rebalanceStep.js +22 -0
- package/dist/generated/types/solautoRebalanceType.d.ts +4 -5
- package/dist/generated/types/solautoRebalanceType.d.ts.map +1 -1
- package/dist/generated/types/solautoRebalanceType.js +4 -5
- package/dist/generated/types/solautoSettingsParameters.d.ts +2 -15
- package/dist/generated/types/solautoSettingsParameters.d.ts.map +1 -1
- package/dist/generated/types/solautoSettingsParameters.js +1 -5
- package/dist/generated/types/solautoSettingsParametersInp.d.ts +1 -12
- package/dist/generated/types/solautoSettingsParametersInp.d.ts.map +1 -1
- package/dist/generated/types/solautoSettingsParametersInp.js +0 -3
- package/dist/generated/types/swapType.d.ts +15 -0
- package/dist/generated/types/swapType.d.ts.map +1 -0
- package/dist/generated/types/swapType.js +22 -0
- package/dist/generated/types/tokenBalanceChange.d.ts +21 -0
- package/dist/generated/types/tokenBalanceChange.d.ts.map +1 -0
- package/dist/generated/types/tokenBalanceChange.js +19 -0
- package/dist/generated/types/tokenBalanceChangeType.d.ts +18 -0
- package/dist/generated/types/tokenBalanceChangeType.d.ts.map +1 -0
- package/dist/generated/types/tokenBalanceChangeType.js +25 -0
- package/dist/generated/types/updatePositionData.d.ts +2 -2
- package/dist/generated/types/updatePositionData.d.ts.map +1 -1
- package/dist/generated/types/updatePositionData.js +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/marginfi-sdk/types/interestRateConfig.d.ts +3 -1
- package/dist/marginfi-sdk/types/interestRateConfig.d.ts.map +1 -1
- package/dist/marginfi-sdk/types/interestRateConfig.js +2 -1
- package/dist/services/flashLoans/flProviderAggregator.d.ts +19 -0
- package/dist/services/flashLoans/flProviderAggregator.d.ts.map +1 -0
- package/dist/services/flashLoans/flProviderAggregator.js +46 -0
- package/dist/services/flashLoans/flProviderBase.d.ts +23 -0
- package/dist/services/flashLoans/flProviderBase.d.ts.map +1 -0
- package/dist/services/flashLoans/flProviderBase.js +37 -0
- package/dist/services/flashLoans/index.d.ts +4 -0
- package/dist/services/flashLoans/index.d.ts.map +1 -0
- package/dist/services/flashLoans/index.js +19 -0
- package/dist/services/flashLoans/marginfiFlProvider.d.ts +25 -0
- package/dist/services/flashLoans/marginfiFlProvider.d.ts.map +1 -0
- package/dist/services/flashLoans/marginfiFlProvider.js +246 -0
- package/dist/services/index.d.ts +6 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +21 -0
- package/dist/services/rebalance/index.d.ts +3 -0
- package/dist/services/rebalance/index.d.ts.map +1 -0
- package/dist/services/rebalance/index.js +18 -0
- package/dist/services/rebalance/rebalanceSwapManager.d.ts +30 -0
- package/dist/services/rebalance/rebalanceSwapManager.d.ts.map +1 -0
- package/dist/services/rebalance/rebalanceSwapManager.js +144 -0
- package/dist/services/rebalance/rebalanceTxBuilder.d.ts +22 -0
- package/dist/services/rebalance/rebalanceTxBuilder.d.ts.map +1 -0
- package/dist/services/rebalance/rebalanceTxBuilder.js +200 -0
- package/dist/services/rebalance/rebalanceValues.d.ts +31 -0
- package/dist/services/rebalance/rebalanceValues.d.ts.map +1 -0
- package/dist/services/rebalance/rebalanceValues.js +118 -0
- package/dist/services/rebalance/solautoFees.d.ts +13 -0
- package/dist/services/rebalance/solautoFees.d.ts.map +1 -0
- package/dist/services/rebalance/solautoFees.js +54 -0
- package/dist/services/solauto/index.d.ts +5 -0
- package/dist/services/solauto/index.d.ts.map +1 -0
- package/dist/{clients → services/solauto}/referralStateManager.d.ts +4 -5
- package/dist/services/solauto/referralStateManager.d.ts.map +1 -0
- package/dist/{clients → services/solauto}/referralStateManager.js +10 -12
- package/dist/services/solauto/solautoClient.d.ts +59 -0
- package/dist/services/solauto/solautoClient.d.ts.map +1 -0
- package/dist/{clients → services/solauto}/solautoClient.js +78 -109
- package/dist/services/solauto/solautoMarginfiClient.d.ts +34 -0
- package/dist/services/solauto/solautoMarginfiClient.d.ts.map +1 -0
- package/dist/services/solauto/solautoMarginfiClient.js +322 -0
- package/dist/{clients → services/solauto}/txHandler.d.ts +11 -2
- package/dist/services/solauto/txHandler.d.ts.map +1 -0
- package/dist/services/solauto/txHandler.js +38 -0
- package/dist/services/swap/index.d.ts +2 -0
- package/dist/services/swap/index.d.ts.map +1 -0
- package/dist/{utils/solauto → services/swap}/index.js +1 -2
- package/dist/services/swap/jupSwapManager.d.ts +37 -0
- package/dist/services/swap/jupSwapManager.d.ts.map +1 -0
- package/dist/services/swap/jupSwapManager.js +108 -0
- package/dist/services/transactions/index.d.ts.map +1 -0
- package/dist/{transactions → services/transactions}/transactionUtils.d.ts +3 -5
- package/dist/services/transactions/transactionUtils.d.ts.map +1 -0
- package/dist/{transactions → services/transactions}/transactionUtils.js +29 -137
- package/dist/{transactions → services/transactions}/transactionsManager.d.ts +4 -4
- package/dist/services/transactions/transactionsManager.d.ts.map +1 -0
- package/dist/{transactions → services/transactions}/transactionsManager.js +10 -8
- package/dist/solautoPosition/index.d.ts +4 -0
- package/dist/solautoPosition/index.d.ts.map +1 -0
- package/dist/solautoPosition/index.js +19 -0
- package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts +14 -0
- package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts.map +1 -0
- package/dist/solautoPosition/marginfiSolautoPositionEx.js +73 -0
- package/dist/solautoPosition/solautoPositionEx.d.ts +67 -0
- package/dist/solautoPosition/solautoPositionEx.d.ts.map +1 -0
- package/dist/solautoPosition/solautoPositionEx.js +143 -0
- package/dist/solautoPosition/utils.d.ts +17 -0
- package/dist/solautoPosition/utils.d.ts.map +1 -0
- package/dist/solautoPosition/utils.js +115 -0
- package/dist/types/solauto.d.ts +19 -1
- package/dist/types/solauto.d.ts.map +1 -1
- package/dist/utils/generalUtils.d.ts +1 -0
- package/dist/utils/generalUtils.d.ts.map +1 -1
- package/dist/utils/generalUtils.js +9 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/jitoUtils.d.ts.map +1 -1
- package/dist/utils/jupiterUtils.d.ts +3 -28
- package/dist/utils/jupiterUtils.d.ts.map +1 -1
- package/dist/utils/jupiterUtils.js +2 -73
- package/dist/utils/marginfiUtils.d.ts +4 -3
- package/dist/utils/marginfiUtils.d.ts.map +1 -1
- package/dist/utils/marginfiUtils.js +47 -18
- package/dist/utils/numberUtils.d.ts +3 -6
- package/dist/utils/numberUtils.d.ts.map +1 -1
- package/dist/utils/numberUtils.js +13 -48
- package/dist/utils/solanaUtils.js +2 -2
- package/dist/utils/{solauto/generalUtils.d.ts → solautoUtils.d.ts} +9 -16
- package/dist/utils/solautoUtils.d.ts.map +1 -0
- package/dist/utils/{solauto/generalUtils.js → solautoUtils.js} +48 -173
- package/local/createTokenAccounts.ts +1 -5
- package/local/logPositions.ts +22 -68
- package/local/shared.ts +29 -24
- package/local/txSandbox.ts +27 -0
- package/local/updateMarginfiLUT.ts +80 -4
- package/package.json +3 -6
- package/src/constants/solautoConstants.ts +4 -9
- package/src/generated/accounts/solautoPosition.ts +2 -2
- package/src/generated/errors/solauto.ts +45 -4
- package/src/generated/instructions/claimReferralFees.ts +1 -1
- package/src/generated/instructions/closePosition.ts +3 -3
- package/src/generated/instructions/marginfiOpenPosition.ts +0 -7
- package/src/generated/instructions/marginfiRebalance.ts +12 -3
- package/src/generated/types/index.ts +7 -1
- package/src/generated/types/positionData.ts +3 -3
- package/src/generated/types/positionState.ts +12 -12
- package/src/generated/types/{positionTokenUsage.ts → positionTokenState.ts} +13 -16
- package/src/generated/types/rebalanceData.ts +16 -27
- package/src/generated/types/rebalanceDirection.ts +1 -0
- package/src/generated/types/rebalanceInstructionData.ts +62 -0
- package/src/generated/types/rebalanceStateValues.ts +59 -0
- package/src/generated/types/rebalanceStep.ts +25 -0
- package/src/generated/types/solautoRebalanceType.ts +0 -1
- package/src/generated/types/solautoSettingsParameters.ts +4 -25
- package/src/generated/types/solautoSettingsParametersInp.ts +2 -24
- package/src/generated/types/swapType.ts +22 -0
- package/src/generated/types/tokenBalanceChange.ts +46 -0
- package/src/generated/types/tokenBalanceChangeType.ts +28 -0
- package/src/generated/types/updatePositionData.ts +3 -3
- package/src/index.ts +8 -8
- package/src/marginfi-sdk/types/interestRateConfig.ts +6 -2
- package/src/services/flashLoans/flProviderAggregator.ts +74 -0
- package/src/services/flashLoans/flProviderBase.ts +88 -0
- package/src/services/flashLoans/index.ts +3 -0
- package/src/services/flashLoans/marginfiFlProvider.ts +392 -0
- package/src/services/index.ts +5 -0
- package/src/services/rebalance/index.ts +2 -0
- package/src/services/rebalance/rebalanceSwapManager.ts +218 -0
- package/src/services/rebalance/rebalanceTxBuilder.ts +330 -0
- package/src/services/rebalance/rebalanceValues.ts +232 -0
- package/src/services/rebalance/solautoFees.ts +61 -0
- package/src/services/solauto/index.ts +4 -0
- package/src/{clients → services/solauto}/referralStateManager.ts +17 -31
- package/src/{clients → services/solauto}/solautoClient.ts +142 -205
- package/src/services/solauto/solautoMarginfiClient.ts +472 -0
- package/src/services/solauto/txHandler.ts +69 -0
- package/src/services/swap/index.ts +1 -0
- package/src/services/swap/jupSwapManager.ts +189 -0
- package/src/{transactions → services/transactions}/transactionUtils.ts +40 -280
- package/src/{transactions → services/transactions}/transactionsManager.ts +15 -10
- package/src/solautoPosition/index.ts +3 -0
- package/src/solautoPosition/marginfiSolautoPositionEx.ts +111 -0
- package/src/solautoPosition/solautoPositionEx.ts +281 -0
- package/src/solautoPosition/utils.ts +188 -0
- package/src/types/solauto.ts +30 -2
- package/src/utils/generalUtils.ts +9 -1
- package/src/utils/index.ts +2 -2
- package/src/utils/jitoUtils.ts +0 -4
- package/src/utils/jupiterUtils.ts +3 -164
- package/src/utils/marginfiUtils.ts +77 -43
- package/src/utils/numberUtils.ts +18 -77
- package/src/utils/solanaUtils.ts +1 -1
- package/src/utils/{solauto/generalUtils.ts → solautoUtils.ts} +66 -288
- package/tests/transactions/shared.ts +135 -0
- package/tests/transactions/solautoMarginfi.ts +8 -198
- package/tests/unit/accounts.ts +3 -10
- package/tests/unit/lookupTables.ts +23 -2
- package/tests/unit/rebalanceCalculations.ts +65 -343
- package/dist/clients/index.d.ts +0 -5
- package/dist/clients/index.d.ts.map +0 -1
- package/dist/clients/referralStateManager.d.ts.map +0 -1
- package/dist/clients/solautoClient.d.ts +0 -71
- package/dist/clients/solautoClient.d.ts.map +0 -1
- package/dist/clients/solautoMarginfiClient.d.ts +0 -51
- package/dist/clients/solautoMarginfiClient.d.ts.map +0 -1
- package/dist/clients/solautoMarginfiClient.js +0 -497
- package/dist/clients/txHandler.d.ts.map +0 -1
- package/dist/clients/txHandler.js +0 -23
- package/dist/generated/types/positionTokenUsage.d.ts.map +0 -1
- package/dist/transactions/index.d.ts.map +0 -1
- package/dist/transactions/transactionUtils.d.ts.map +0 -1
- package/dist/transactions/transactionsManager.d.ts.map +0 -1
- package/dist/utils/solauto/generalUtils.d.ts.map +0 -1
- package/dist/utils/solauto/index.d.ts +0 -3
- package/dist/utils/solauto/index.d.ts.map +0 -1
- package/dist/utils/solauto/rebalanceUtils.d.ts +0 -30
- package/dist/utils/solauto/rebalanceUtils.d.ts.map +0 -1
- package/dist/utils/solauto/rebalanceUtils.js +0 -287
- package/src/clients/index.ts +0 -4
- package/src/clients/solautoMarginfiClient.ts +0 -774
- package/src/clients/txHandler.ts +0 -38
- package/src/utils/solauto/index.ts +0 -2
- package/src/utils/solauto/rebalanceUtils.ts +0 -562
- package/dist/{clients → services/solauto}/index.js +2 -2
- /package/dist/{transactions → services/transactions}/index.d.ts +0 -0
- /package/dist/{transactions → services/transactions}/index.js +0 -0
- /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("
|
9
|
-
const accountUtils_1 = require("
|
10
|
-
const generalAccounts_1 = require("
|
11
|
-
const solanaUtils_1 = require("
|
12
|
-
const solautoConstants_1 = require("
|
13
|
-
const
|
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
|
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
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
this.
|
30
|
-
this.
|
31
|
-
|
32
|
-
|
33
|
-
args.
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
this.
|
38
|
-
this.
|
39
|
-
this.
|
40
|
-
|
41
|
-
|
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.
|
54
|
-
this.
|
55
|
-
this.
|
56
|
-
|
57
|
-
|
58
|
-
|
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.
|
75
|
-
|
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.
|
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
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
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 (
|
202
|
+
if (settings) {
|
212
203
|
this.contextUpdates.new({
|
213
204
|
type: "settings",
|
214
|
-
value:
|
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.
|
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.
|
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.
|
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.
|
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
|
-
|
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.
|
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.
|
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.
|
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"}
|