@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
package/local/shared.ts
CHANGED
@@ -8,15 +8,11 @@ import {
|
|
8
8
|
VersionedTransaction,
|
9
9
|
PublicKey,
|
10
10
|
} from "@solana/web3.js";
|
11
|
-
import {
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
batches.push(items.slice(i, i + batchSize));
|
17
|
-
}
|
18
|
-
return batches;
|
19
|
-
}
|
11
|
+
import {
|
12
|
+
buildHeliusApiUrl,
|
13
|
+
getSolanaRpcConnection,
|
14
|
+
} from "../src/utils/solanaUtils";
|
15
|
+
import { getBatches } from "../src";
|
20
16
|
|
21
17
|
function loadSecretKey(keypairPath: string) {
|
22
18
|
const secretKey = JSON.parse(fs.readFileSync(keypairPath, "utf8"));
|
@@ -30,19 +26,25 @@ export function getSecretKey(keypairFilename: string = "id"): Uint8Array {
|
|
30
26
|
}
|
31
27
|
|
32
28
|
const keypair = Keypair.fromSecretKey(getSecretKey("solauto-fees"));
|
33
|
-
const [connection, _] = getSolanaRpcConnection(
|
29
|
+
const [connection, _] = getSolanaRpcConnection(
|
30
|
+
buildHeliusApiUrl(process.env.HELIUS_API_KEY ?? "")
|
31
|
+
);
|
34
32
|
|
35
|
-
async function createAndSendV0Tx(
|
33
|
+
export async function createAndSendV0Tx(
|
34
|
+
txInstructions: TransactionInstruction[],
|
35
|
+
payer: Keypair,
|
36
|
+
otherSigners?: Keypair[]
|
37
|
+
) {
|
36
38
|
let latestBlockhash = await connection.getLatestBlockhash("finalized");
|
37
39
|
|
38
40
|
const messageV0 = new TransactionMessage({
|
39
|
-
payerKey:
|
41
|
+
payerKey: payer.publicKey,
|
40
42
|
recentBlockhash: latestBlockhash.blockhash,
|
41
43
|
instructions: txInstructions,
|
42
44
|
}).compileToV0Message();
|
43
45
|
const transaction = new VersionedTransaction(messageV0);
|
44
46
|
|
45
|
-
transaction.sign([
|
47
|
+
transaction.sign([payer, ...(otherSigners ?? [])]);
|
46
48
|
|
47
49
|
const txid = await connection.sendTransaction(transaction, {
|
48
50
|
maxRetries: 5,
|
@@ -67,19 +69,22 @@ async function addAddressesIfNeeded(
|
|
67
69
|
const addresses = addressesToAdd
|
68
70
|
.filter((x) => !existingAddresses.includes(x))
|
69
71
|
.map((x) => new PublicKey(x));
|
70
|
-
|
72
|
+
|
71
73
|
if (addresses.length > 0) {
|
72
74
|
const batches = getBatches(addresses, 20);
|
73
75
|
for (const addressBatch of batches) {
|
74
|
-
console.log(addressBatch.map(x => x.toString()));
|
75
|
-
await createAndSendV0Tx(
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
76
|
+
console.log(addressBatch.map((x) => x.toString()));
|
77
|
+
await createAndSendV0Tx(
|
78
|
+
[
|
79
|
+
AddressLookupTableProgram.extendLookupTable({
|
80
|
+
payer: keypair.publicKey,
|
81
|
+
authority: keypair.publicKey,
|
82
|
+
lookupTable: lookupTableAddress,
|
83
|
+
addresses: addressBatch,
|
84
|
+
}),
|
85
|
+
],
|
86
|
+
keypair
|
87
|
+
);
|
83
88
|
}
|
84
89
|
}
|
85
90
|
}
|
@@ -99,7 +104,7 @@ export async function updateLookupTable(
|
|
99
104
|
});
|
100
105
|
lookupTableAddress = addr;
|
101
106
|
console.log("Lookup Table Address:", lookupTableAddress.toString());
|
102
|
-
await createAndSendV0Tx([createLutIx]);
|
107
|
+
await createAndSendV0Tx([createLutIx], keypair);
|
103
108
|
}
|
104
109
|
|
105
110
|
const existingAccounts =
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import { Keypair } from "@solana/web3.js";
|
2
|
+
import {
|
3
|
+
buildIronforgeApiUrl,
|
4
|
+
getSolanaRpcConnection,
|
5
|
+
SOLAUTO_PROD_PROGRAM,
|
6
|
+
SOLAUTO_TEST_PROGRAM,
|
7
|
+
} from "../src";
|
8
|
+
import { getSecretKey } from "./shared";
|
9
|
+
import { createSignerFromKeypair } from "@metaplex-foundation/umi";
|
10
|
+
import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters";
|
11
|
+
|
12
|
+
const testProgram = true;
|
13
|
+
|
14
|
+
export async function main() {
|
15
|
+
const [conn, umi] = getSolanaRpcConnection(
|
16
|
+
buildIronforgeApiUrl(process.env.IRONFORGE_API_KEY!),
|
17
|
+
testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM
|
18
|
+
);
|
19
|
+
const signer = createSignerFromKeypair(
|
20
|
+
umi,
|
21
|
+
fromWeb3JsKeypair(Keypair.fromSecretKey(getSecretKey()))
|
22
|
+
);
|
23
|
+
|
24
|
+
|
25
|
+
}
|
26
|
+
|
27
|
+
main();
|
@@ -1,13 +1,48 @@
|
|
1
|
-
import { PublicKey } from "@solana/web3.js";
|
1
|
+
import { Keypair, PublicKey } from "@solana/web3.js";
|
2
2
|
import { MARGINFI_ACCOUNTS_LOOKUP_TABLE } from "../src/constants/marginfiAccounts";
|
3
3
|
import {
|
4
4
|
MARGINFI_ACCOUNTS,
|
5
5
|
DEFAULT_MARGINFI_GROUP,
|
6
6
|
} from "../src/constants/marginfiAccounts";
|
7
|
-
import {
|
8
|
-
|
7
|
+
import {
|
8
|
+
MARGINFI_PROGRAM_ID,
|
9
|
+
marginfiAccountInitialize,
|
10
|
+
} from "../src/marginfi-sdk";
|
11
|
+
import { createAndSendV0Tx, getSecretKey, updateLookupTable } from "./shared";
|
12
|
+
import {
|
13
|
+
buildIronforgeApiUrl,
|
14
|
+
getEmptyMarginfiAccountsByAuthority,
|
15
|
+
getSolanaRpcConnection,
|
16
|
+
SOLAUTO_MANAGER,
|
17
|
+
} from "../src";
|
18
|
+
import {
|
19
|
+
createSignerFromKeypair,
|
20
|
+
publicKey,
|
21
|
+
signerIdentity,
|
22
|
+
} from "@metaplex-foundation/umi";
|
23
|
+
import {
|
24
|
+
fromWeb3JsKeypair,
|
25
|
+
toWeb3JsInstruction,
|
26
|
+
toWeb3JsKeypair,
|
27
|
+
} from "@metaplex-foundation/umi-web3js-adapters";
|
9
28
|
|
10
29
|
const LOOKUP_TABLE_ADDRESS = new PublicKey(MARGINFI_ACCOUNTS_LOOKUP_TABLE);
|
30
|
+
let [, umi] = getSolanaRpcConnection(
|
31
|
+
buildIronforgeApiUrl(process.env.IRONFORGE_API_KEY!)
|
32
|
+
);
|
33
|
+
umi = umi.use(
|
34
|
+
signerIdentity(
|
35
|
+
createSignerFromKeypair(umi, umi.eddsa.generateKeypair()),
|
36
|
+
true
|
37
|
+
)
|
38
|
+
);
|
39
|
+
const solautoManagerKeypair = Keypair.fromSecretKey(
|
40
|
+
getSecretKey("solauto-manager")
|
41
|
+
);
|
42
|
+
const solautoManager = createSignerFromKeypair(
|
43
|
+
umi,
|
44
|
+
fromWeb3JsKeypair(solautoManagerKeypair)
|
45
|
+
);
|
11
46
|
|
12
47
|
async function addBanks() {
|
13
48
|
for (const group in MARGINFI_ACCOUNTS) {
|
@@ -27,9 +62,50 @@ async function addBanks() {
|
|
27
62
|
}
|
28
63
|
}
|
29
64
|
|
65
|
+
async function addImfiAccounts() {
|
66
|
+
const imfiAccounts = await getEmptyMarginfiAccountsByAuthority(
|
67
|
+
umi,
|
68
|
+
SOLAUTO_MANAGER
|
69
|
+
);
|
70
|
+
|
71
|
+
for (const group in MARGINFI_ACCOUNTS) {
|
72
|
+
const emptyAccs = imfiAccounts.filter((x) => x.group.toString() === group);
|
73
|
+
if (emptyAccs.length > 0) {
|
74
|
+
await updateLookupTable(
|
75
|
+
emptyAccs.map((x) => x.publicKey.toString()),
|
76
|
+
LOOKUP_TABLE_ADDRESS
|
77
|
+
);
|
78
|
+
} else {
|
79
|
+
console.log("Creating Imfi account for group:", group);
|
80
|
+
const iMfiAccountKeypair = umi.eddsa.generateKeypair();
|
81
|
+
const iMfiAccount = createSignerFromKeypair(umi, iMfiAccountKeypair);
|
82
|
+
const umiIx = marginfiAccountInitialize(umi, {
|
83
|
+
marginfiAccount: iMfiAccount,
|
84
|
+
marginfiGroup: publicKey(group),
|
85
|
+
authority: solautoManager,
|
86
|
+
feePayer: solautoManager,
|
87
|
+
});
|
88
|
+
const ix = toWeb3JsInstruction(umiIx.getInstructions()[0]);
|
89
|
+
await createAndSendV0Tx([ix], solautoManagerKeypair, [
|
90
|
+
toWeb3JsKeypair(iMfiAccountKeypair),
|
91
|
+
]);
|
92
|
+
await updateLookupTable(
|
93
|
+
[iMfiAccount.publicKey.toString()],
|
94
|
+
LOOKUP_TABLE_ADDRESS
|
95
|
+
);
|
96
|
+
}
|
97
|
+
}
|
98
|
+
}
|
99
|
+
|
30
100
|
updateLookupTable(
|
31
101
|
[DEFAULT_MARGINFI_GROUP, MARGINFI_PROGRAM_ID],
|
32
102
|
LOOKUP_TABLE_ADDRESS
|
33
103
|
);
|
34
104
|
|
35
|
-
addBanks();
|
105
|
+
addBanks().then((x) => x);
|
106
|
+
|
107
|
+
addImfiAccounts().then((x) => x);
|
108
|
+
|
109
|
+
// EoEVYjz3MnsX6fKyxrwJkRhzMCHKjj6dvnjTCHoZLMc7
|
110
|
+
// AuoepJfrCrkQF2PeUAgpnnJybRoiff82cNdwXTqyjjvm
|
111
|
+
// Bno3JybASPc1jNBZ9rnrdKVvbhk6UNMvSsYvgtitq3zb
|
package/package.json
CHANGED
@@ -1,16 +1,15 @@
|
|
1
1
|
{
|
2
2
|
"name": "@haven-fi/solauto-sdk",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.583",
|
4
4
|
"main": "dist/index.js",
|
5
5
|
"types": "dist/index.d.ts",
|
6
6
|
"description": "Typescript SDK for the Solauto program on the Solana blockchain",
|
7
7
|
"author": "Chelioso",
|
8
|
-
"license": "MIT",
|
9
8
|
"scripts": {
|
10
9
|
"build": "rm -rf dist && npx tsc",
|
10
|
+
"test:all": "pnpm test:unit && pnpm test:txs",
|
11
11
|
"test:txs": "ts-mocha -p ./tsconfig.json -t 1000000 tests/transactions/**/*.ts",
|
12
|
-
"test:unit": "ts-mocha -p ./tsconfig.json -t 1000000 tests/unit/**/*.ts"
|
13
|
-
"test:all": "pnpm test:unit && pnpm test:txs"
|
12
|
+
"test:unit": "ts-mocha -p ./tsconfig.json -t 1000000 tests/unit/**/*.ts"
|
14
13
|
},
|
15
14
|
"dependencies": {
|
16
15
|
"@coral-xyz/anchor": "^0.30.1",
|
@@ -19,8 +18,6 @@
|
|
19
18
|
"@metaplex-foundation/umi-bundle-defaults": "^0.9.1",
|
20
19
|
"@metaplex-foundation/umi-signer-wallet-adapters": "^0.9.1",
|
21
20
|
"@metaplex-foundation/umi-web3js-adapters": "^0.9.1",
|
22
|
-
"@mrgnlabs/marginfi-client-v2": "^4.0.0",
|
23
|
-
"@mrgnlabs/mrgn-common": "^1.8.0",
|
24
21
|
"@solana/spl-token": "^0.4.0",
|
25
22
|
"@solana/web3.js": "=1.95.8",
|
26
23
|
"@switchboard-xyz/common": "=3.0.12",
|
@@ -20,7 +20,7 @@ export const SOLAUTO_TEST_PROGRAM = new PublicKey(
|
|
20
20
|
"TesTjfQ6TbXv96Tv6fqr95XTZ1LYPxtkafmShN9PjBp"
|
21
21
|
);
|
22
22
|
|
23
|
-
(globalThis as any).
|
23
|
+
(globalThis as any).SHOW_LOGS = false;
|
24
24
|
|
25
25
|
export const BASIS_POINTS = 10000;
|
26
26
|
|
@@ -29,6 +29,8 @@ export const MIN_REPAY_GAP_BPS = 50;
|
|
29
29
|
export const MIN_BOOST_GAP_BPS = 50;
|
30
30
|
export const MIN_USD_SUPPORTED_POSITION = 1000;
|
31
31
|
|
32
|
+
export const REFERRER_PERCENTAGE = 0.15;
|
33
|
+
|
32
34
|
export const PRICES: { [key: string]: { price: number; time: number } } = {};
|
33
35
|
|
34
36
|
export const JITO_BLOCK_ENGINE = "https://mainnet.block-engine.jito.wtf";
|
@@ -60,11 +62,4 @@ export const STANDARD_LUT_ACCOUNTS = [
|
|
60
62
|
].map((x) => x.toString());
|
61
63
|
|
62
64
|
// TODO:
|
63
|
-
export const BROKEN_TOKENS = [
|
64
|
-
JUP,
|
65
|
-
JLP,
|
66
|
-
WETH,
|
67
|
-
HNT,
|
68
|
-
JTO,
|
69
|
-
PYTH
|
70
|
-
]
|
65
|
+
export const BROKEN_TOKENS = [JUP, JLP, WETH, HNT, JTO, PYTH];
|
@@ -88,7 +88,7 @@ export function getSolautoPositionAccountDataSerializer(): Serializer<
|
|
88
88
|
['position', getPositionDataSerializer()],
|
89
89
|
['state', getPositionStateSerializer()],
|
90
90
|
['rebalance', getRebalanceDataSerializer()],
|
91
|
-
['padding', array(u32(), { size:
|
91
|
+
['padding', array(u32(), { size: 20 })],
|
92
92
|
],
|
93
93
|
{ description: 'SolautoPositionAccountData' }
|
94
94
|
) as Serializer<SolautoPositionAccountDataArgs, SolautoPositionAccountData>;
|
@@ -188,7 +188,7 @@ export function getSolautoPositionGpaBuilder(
|
|
188
188
|
position: [40, getPositionDataSerializer()],
|
189
189
|
state: [360, getPositionStateSerializer()],
|
190
190
|
rebalance: [648, getRebalanceDataSerializer()],
|
191
|
-
padding: [
|
191
|
+
padding: [752, array(u32(), { size: 20 })],
|
192
192
|
})
|
193
193
|
.deserializeUsing<SolautoPosition>((account) =>
|
194
194
|
deserializeSolautoPosition(account)
|
@@ -15,7 +15,7 @@ type ProgramErrorConstructor = new (
|
|
15
15
|
const codeToErrorMap: Map<number, ProgramErrorConstructor> = new Map();
|
16
16
|
const nameToErrorMap: Map<string, ProgramErrorConstructor> = new Map();
|
17
17
|
|
18
|
-
/** IncorrectAccounts: Missing or incorrect accounts provided for the given
|
18
|
+
/** IncorrectAccounts: Missing or incorrect accounts provided for the given instructions */
|
19
19
|
export class IncorrectAccountsError extends ProgramError {
|
20
20
|
override readonly name: string = 'IncorrectAccounts';
|
21
21
|
|
@@ -23,7 +23,7 @@ export class IncorrectAccountsError extends ProgramError {
|
|
23
23
|
|
24
24
|
constructor(program: Program, cause?: Error) {
|
25
25
|
super(
|
26
|
-
'Missing or incorrect accounts provided for the given
|
26
|
+
'Missing or incorrect accounts provided for the given instructions',
|
27
27
|
program,
|
28
28
|
cause
|
29
29
|
);
|
@@ -113,14 +113,18 @@ export class InstructionIsCPIError extends ProgramError {
|
|
113
113
|
codeToErrorMap.set(0x6, InstructionIsCPIError);
|
114
114
|
nameToErrorMap.set('InstructionIsCPI', InstructionIsCPIError);
|
115
115
|
|
116
|
-
/** IncorrectInstructions: Incorrect set of instructions in the transaction */
|
116
|
+
/** IncorrectInstructions: Incorrect set of instructions or instruction data in the transaction */
|
117
117
|
export class IncorrectInstructionsError extends ProgramError {
|
118
118
|
override readonly name: string = 'IncorrectInstructions';
|
119
119
|
|
120
120
|
readonly code: number = 0x7; // 7
|
121
121
|
|
122
122
|
constructor(program: Program, cause?: Error) {
|
123
|
-
super(
|
123
|
+
super(
|
124
|
+
'Incorrect set of instructions or instruction data in the transaction',
|
125
|
+
program,
|
126
|
+
cause
|
127
|
+
);
|
124
128
|
}
|
125
129
|
}
|
126
130
|
codeToErrorMap.set(0x7, IncorrectInstructionsError);
|
@@ -143,6 +147,43 @@ export class IncorrectDebtAdjustmentError extends ProgramError {
|
|
143
147
|
codeToErrorMap.set(0x8, IncorrectDebtAdjustmentError);
|
144
148
|
nameToErrorMap.set('IncorrectDebtAdjustment', IncorrectDebtAdjustmentError);
|
145
149
|
|
150
|
+
/** InvalidRebalanceMade: Invalid rebalance was made. Target supply USD and target debt USD was not met */
|
151
|
+
export class InvalidRebalanceMadeError extends ProgramError {
|
152
|
+
override readonly name: string = 'InvalidRebalanceMade';
|
153
|
+
|
154
|
+
readonly code: number = 0x9; // 9
|
155
|
+
|
156
|
+
constructor(program: Program, cause?: Error) {
|
157
|
+
super(
|
158
|
+
'Invalid rebalance was made. Target supply USD and target debt USD was not met',
|
159
|
+
program,
|
160
|
+
cause
|
161
|
+
);
|
162
|
+
}
|
163
|
+
}
|
164
|
+
codeToErrorMap.set(0x9, InvalidRebalanceMadeError);
|
165
|
+
nameToErrorMap.set('InvalidRebalanceMade', InvalidRebalanceMadeError);
|
166
|
+
|
167
|
+
/** NonAuthorityProvidedTargetLTV: Cannot provide a target liquidation utilization rate if the instruction is not signed by the position authority */
|
168
|
+
export class NonAuthorityProvidedTargetLTVError extends ProgramError {
|
169
|
+
override readonly name: string = 'NonAuthorityProvidedTargetLTV';
|
170
|
+
|
171
|
+
readonly code: number = 0xa; // 10
|
172
|
+
|
173
|
+
constructor(program: Program, cause?: Error) {
|
174
|
+
super(
|
175
|
+
'Cannot provide a target liquidation utilization rate if the instruction is not signed by the position authority',
|
176
|
+
program,
|
177
|
+
cause
|
178
|
+
);
|
179
|
+
}
|
180
|
+
}
|
181
|
+
codeToErrorMap.set(0xa, NonAuthorityProvidedTargetLTVError);
|
182
|
+
nameToErrorMap.set(
|
183
|
+
'NonAuthorityProvidedTargetLTV',
|
184
|
+
NonAuthorityProvidedTargetLTVError
|
185
|
+
);
|
186
|
+
|
146
187
|
/**
|
147
188
|
* Attempts to resolve a custom program error from the provided error code.
|
148
189
|
* @category Errors
|
@@ -38,7 +38,7 @@ export type ClaimReferralFeesInstructionAccounts = {
|
|
38
38
|
referralState: PublicKey | Pda;
|
39
39
|
referralFeesDestTa: PublicKey | Pda;
|
40
40
|
referralFeesDestMint: PublicKey | Pda;
|
41
|
-
referralAuthority
|
41
|
+
referralAuthority: PublicKey | Pda;
|
42
42
|
feesDestinationTa?: PublicKey | Pda;
|
43
43
|
};
|
44
44
|
|
@@ -33,7 +33,7 @@ export type ClosePositionInstructionAccounts = {
|
|
33
33
|
tokenProgram?: PublicKey | Pda;
|
34
34
|
ataProgram?: PublicKey | Pda;
|
35
35
|
solautoPosition: PublicKey | Pda;
|
36
|
-
|
36
|
+
lpUserAccount: PublicKey | Pda;
|
37
37
|
positionSupplyTa: PublicKey | Pda;
|
38
38
|
signerSupplyTa: PublicKey | Pda;
|
39
39
|
positionDebtTa: PublicKey | Pda;
|
@@ -102,10 +102,10 @@ export function closePosition(
|
|
102
102
|
isWritable: true as boolean,
|
103
103
|
value: input.solautoPosition ?? null,
|
104
104
|
},
|
105
|
-
|
105
|
+
lpUserAccount: {
|
106
106
|
index: 5,
|
107
107
|
isWritable: true as boolean,
|
108
|
-
value: input.
|
108
|
+
value: input.lpUserAccount ?? null,
|
109
109
|
},
|
110
110
|
positionSupplyTa: {
|
111
111
|
index: 6,
|
@@ -8,8 +8,6 @@
|
|
8
8
|
|
9
9
|
import {
|
10
10
|
Context,
|
11
|
-
Option,
|
12
|
-
OptionOrNullable,
|
13
11
|
Pda,
|
14
12
|
PublicKey,
|
15
13
|
Signer,
|
@@ -20,9 +18,7 @@ import {
|
|
20
18
|
import {
|
21
19
|
Serializer,
|
22
20
|
mapSerializer,
|
23
|
-
option,
|
24
21
|
struct,
|
25
|
-
u64,
|
26
22
|
u8,
|
27
23
|
} from '@metaplex-foundation/umi/serializers';
|
28
24
|
import {
|
@@ -67,13 +63,11 @@ export type MarginfiOpenPositionInstructionData = {
|
|
67
63
|
discriminator: number;
|
68
64
|
positionType: PositionType;
|
69
65
|
positionData: UpdatePositionData;
|
70
|
-
marginfiAccountSeedIdx: Option<bigint>;
|
71
66
|
};
|
72
67
|
|
73
68
|
export type MarginfiOpenPositionInstructionDataArgs = {
|
74
69
|
positionType: PositionTypeArgs;
|
75
70
|
positionData: UpdatePositionDataArgs;
|
76
|
-
marginfiAccountSeedIdx: OptionOrNullable<number | bigint>;
|
77
71
|
};
|
78
72
|
|
79
73
|
export function getMarginfiOpenPositionInstructionDataSerializer(): Serializer<
|
@@ -90,7 +84,6 @@ export function getMarginfiOpenPositionInstructionDataSerializer(): Serializer<
|
|
90
84
|
['discriminator', u8()],
|
91
85
|
['positionType', getPositionTypeSerializer()],
|
92
86
|
['positionData', getUpdatePositionDataSerializer()],
|
93
|
-
['marginfiAccountSeedIdx', option(u64())],
|
94
87
|
],
|
95
88
|
{ description: 'MarginfiOpenPositionInstructionData' }
|
96
89
|
),
|
@@ -33,7 +33,10 @@ import {
|
|
33
33
|
import {
|
34
34
|
SolautoRebalanceType,
|
35
35
|
SolautoRebalanceTypeArgs,
|
36
|
+
SwapType,
|
37
|
+
SwapTypeArgs,
|
36
38
|
getSolautoRebalanceTypeSerializer,
|
39
|
+
getSwapTypeSerializer,
|
37
40
|
} from '../types';
|
38
41
|
|
39
42
|
// Accounts.
|
@@ -70,13 +73,17 @@ export type MarginfiRebalanceInstructionData = {
|
|
70
73
|
discriminator: number;
|
71
74
|
rebalanceType: SolautoRebalanceType;
|
72
75
|
targetLiqUtilizationRateBps: Option<number>;
|
73
|
-
|
76
|
+
swapInAmountBaseUnit: Option<bigint>;
|
77
|
+
flashLoanFeeBps: Option<number>;
|
78
|
+
swapType: Option<SwapType>;
|
74
79
|
};
|
75
80
|
|
76
81
|
export type MarginfiRebalanceInstructionDataArgs = {
|
77
82
|
rebalanceType: SolautoRebalanceTypeArgs;
|
78
83
|
targetLiqUtilizationRateBps: OptionOrNullable<number>;
|
79
|
-
|
84
|
+
swapInAmountBaseUnit: OptionOrNullable<number | bigint>;
|
85
|
+
flashLoanFeeBps: OptionOrNullable<number>;
|
86
|
+
swapType: OptionOrNullable<SwapTypeArgs>;
|
80
87
|
};
|
81
88
|
|
82
89
|
export function getMarginfiRebalanceInstructionDataSerializer(): Serializer<
|
@@ -93,7 +100,9 @@ export function getMarginfiRebalanceInstructionDataSerializer(): Serializer<
|
|
93
100
|
['discriminator', u8()],
|
94
101
|
['rebalanceType', getSolautoRebalanceTypeSerializer()],
|
95
102
|
['targetLiqUtilizationRateBps', option(u16())],
|
96
|
-
['
|
103
|
+
['swapInAmountBaseUnit', option(u64())],
|
104
|
+
['flashLoanFeeBps', option(u16())],
|
105
|
+
['swapType', option(getSwapTypeSerializer())],
|
97
106
|
],
|
98
107
|
{ description: 'MarginfiRebalanceInstructionData' }
|
99
108
|
),
|
@@ -14,15 +14,21 @@ export * from './lendingPlatform';
|
|
14
14
|
export * from './podBool';
|
15
15
|
export * from './positionData';
|
16
16
|
export * from './positionState';
|
17
|
-
export * from './
|
17
|
+
export * from './positionTokenState';
|
18
18
|
export * from './positionType';
|
19
19
|
export * from './rebalanceData';
|
20
20
|
export * from './rebalanceDirection';
|
21
|
+
export * from './rebalanceInstructionData';
|
22
|
+
export * from './rebalanceStateValues';
|
23
|
+
export * from './rebalanceStep';
|
21
24
|
export * from './solautoAction';
|
22
25
|
export * from './solautoRebalanceType';
|
23
26
|
export * from './solautoSettingsParameters';
|
24
27
|
export * from './solautoSettingsParametersInp';
|
28
|
+
export * from './swapType';
|
25
29
|
export * from './tokenAmount';
|
26
30
|
export * from './tokenBalanceAmount';
|
31
|
+
export * from './tokenBalanceChange';
|
32
|
+
export * from './tokenBalanceChangeType';
|
27
33
|
export * from './tokenType';
|
28
34
|
export * from './updatePositionData';
|
@@ -33,7 +33,7 @@ export type PositionData = {
|
|
33
33
|
protocolUserAccount: PublicKey;
|
34
34
|
protocolSupplyAccount: PublicKey;
|
35
35
|
protocolDebtAccount: PublicKey;
|
36
|
-
|
36
|
+
settings: SolautoSettingsParameters;
|
37
37
|
dca: DCASettings;
|
38
38
|
padding: Array<number>;
|
39
39
|
};
|
@@ -44,7 +44,7 @@ export type PositionDataArgs = {
|
|
44
44
|
protocolUserAccount: PublicKey;
|
45
45
|
protocolSupplyAccount: PublicKey;
|
46
46
|
protocolDebtAccount: PublicKey;
|
47
|
-
|
47
|
+
settings: SolautoSettingsParametersArgs;
|
48
48
|
dca: DCASettingsArgs;
|
49
49
|
padding: Array<number>;
|
50
50
|
};
|
@@ -60,7 +60,7 @@ export function getPositionDataSerializer(): Serializer<
|
|
60
60
|
['protocolUserAccount', publicKeySerializer()],
|
61
61
|
['protocolSupplyAccount', publicKeySerializer()],
|
62
62
|
['protocolDebtAccount', publicKeySerializer()],
|
63
|
-
['
|
63
|
+
['settings', getSolautoSettingsParametersSerializer()],
|
64
64
|
['dca', getDCASettingsSerializer()],
|
65
65
|
['padding', array(u32(), { size: 4 })],
|
66
66
|
],
|
@@ -16,11 +16,11 @@ import {
|
|
16
16
|
u8,
|
17
17
|
} from '@metaplex-foundation/umi/serializers';
|
18
18
|
import {
|
19
|
-
|
20
|
-
|
19
|
+
PositionTokenState,
|
20
|
+
PositionTokenStateArgs,
|
21
21
|
TokenAmount,
|
22
22
|
TokenAmountArgs,
|
23
|
-
|
23
|
+
getPositionTokenStateSerializer,
|
24
24
|
getTokenAmountSerializer,
|
25
25
|
} from '.';
|
26
26
|
|
@@ -28,12 +28,12 @@ export type PositionState = {
|
|
28
28
|
liqUtilizationRateBps: number;
|
29
29
|
padding1: Array<number>;
|
30
30
|
netWorth: TokenAmount;
|
31
|
-
supply:
|
32
|
-
debt:
|
31
|
+
supply: PositionTokenState;
|
32
|
+
debt: PositionTokenState;
|
33
33
|
maxLtvBps: number;
|
34
34
|
liqThresholdBps: number;
|
35
35
|
padding2: Array<number>;
|
36
|
-
|
36
|
+
lastRefreshed: bigint;
|
37
37
|
padding: Array<number>;
|
38
38
|
};
|
39
39
|
|
@@ -41,12 +41,12 @@ export type PositionStateArgs = {
|
|
41
41
|
liqUtilizationRateBps: number;
|
42
42
|
padding1: Array<number>;
|
43
43
|
netWorth: TokenAmountArgs;
|
44
|
-
supply:
|
45
|
-
debt:
|
44
|
+
supply: PositionTokenStateArgs;
|
45
|
+
debt: PositionTokenStateArgs;
|
46
46
|
maxLtvBps: number;
|
47
47
|
liqThresholdBps: number;
|
48
48
|
padding2: Array<number>;
|
49
|
-
|
49
|
+
lastRefreshed: number | bigint;
|
50
50
|
padding: Array<number>;
|
51
51
|
};
|
52
52
|
|
@@ -59,12 +59,12 @@ export function getPositionStateSerializer(): Serializer<
|
|
59
59
|
['liqUtilizationRateBps', u16()],
|
60
60
|
['padding1', array(u8(), { size: 6 })],
|
61
61
|
['netWorth', getTokenAmountSerializer()],
|
62
|
-
['supply',
|
63
|
-
['debt',
|
62
|
+
['supply', getPositionTokenStateSerializer()],
|
63
|
+
['debt', getPositionTokenStateSerializer()],
|
64
64
|
['maxLtvBps', u16()],
|
65
65
|
['liqThresholdBps', u16()],
|
66
66
|
['padding2', array(u8(), { size: 4 })],
|
67
|
-
['
|
67
|
+
['lastRefreshed', u64()],
|
68
68
|
['padding', array(u32(), { size: 2 })],
|
69
69
|
],
|
70
70
|
{ description: 'PositionState' }
|
@@ -19,49 +19,46 @@ import {
|
|
19
19
|
} from '@metaplex-foundation/umi/serializers';
|
20
20
|
import { TokenAmount, TokenAmountArgs, getTokenAmountSerializer } from '.';
|
21
21
|
|
22
|
-
export type
|
22
|
+
export type PositionTokenState = {
|
23
23
|
mint: PublicKey;
|
24
24
|
decimals: number;
|
25
25
|
padding1: Array<number>;
|
26
|
+
borrowFeeBps: number;
|
26
27
|
amountUsed: TokenAmount;
|
27
28
|
amountCanBeUsed: TokenAmount;
|
28
29
|
baseAmountMarketPriceUsd: bigint;
|
29
|
-
flashLoanFeeBps: number;
|
30
|
-
borrowFeeBps: number;
|
31
30
|
padding2: Array<number>;
|
32
31
|
padding: Uint8Array;
|
33
32
|
};
|
34
33
|
|
35
|
-
export type
|
34
|
+
export type PositionTokenStateArgs = {
|
36
35
|
mint: PublicKey;
|
37
36
|
decimals: number;
|
38
37
|
padding1: Array<number>;
|
38
|
+
borrowFeeBps: number;
|
39
39
|
amountUsed: TokenAmountArgs;
|
40
40
|
amountCanBeUsed: TokenAmountArgs;
|
41
41
|
baseAmountMarketPriceUsd: number | bigint;
|
42
|
-
flashLoanFeeBps: number;
|
43
|
-
borrowFeeBps: number;
|
44
42
|
padding2: Array<number>;
|
45
43
|
padding: Uint8Array;
|
46
44
|
};
|
47
45
|
|
48
|
-
export function
|
49
|
-
|
50
|
-
|
46
|
+
export function getPositionTokenStateSerializer(): Serializer<
|
47
|
+
PositionTokenStateArgs,
|
48
|
+
PositionTokenState
|
51
49
|
> {
|
52
|
-
return struct<
|
50
|
+
return struct<PositionTokenState>(
|
53
51
|
[
|
54
52
|
['mint', publicKeySerializer()],
|
55
53
|
['decimals', u8()],
|
56
|
-
['padding1', array(u8(), { size:
|
54
|
+
['padding1', array(u8(), { size: 5 })],
|
55
|
+
['borrowFeeBps', u16()],
|
57
56
|
['amountUsed', getTokenAmountSerializer()],
|
58
57
|
['amountCanBeUsed', getTokenAmountSerializer()],
|
59
58
|
['baseAmountMarketPriceUsd', u64()],
|
60
|
-
['
|
61
|
-
['borrowFeeBps', u16()],
|
62
|
-
['padding2', array(u8(), { size: 4 })],
|
59
|
+
['padding2', array(u8(), { size: 8 })],
|
63
60
|
['padding', bytes({ size: 32 })],
|
64
61
|
],
|
65
|
-
{ description: '
|
66
|
-
) as Serializer<
|
62
|
+
{ description: 'PositionTokenState' }
|
63
|
+
) as Serializer<PositionTokenStateArgs, PositionTokenState>;
|
67
64
|
}
|