@haven-fi/solauto-sdk 1.0.351 → 1.0.352
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/clients/solautoClient.d.ts.map +1 -1
- package/dist/clients/solautoClient.js +3 -0
- package/dist/clients/solautoMarginfiClient.d.ts.map +1 -1
- package/dist/clients/solautoMarginfiClient.js +14 -7
- package/dist/utils/accountUtils.d.ts +0 -1
- package/dist/utils/accountUtils.d.ts.map +1 -1
- package/dist/utils/accountUtils.js +0 -9
- package/dist/utils/marginfiUtils.d.ts +1 -0
- package/dist/utils/marginfiUtils.d.ts.map +1 -1
- package/dist/utils/marginfiUtils.js +6 -0
- package/package.json +1 -1
- package/src/clients/solautoClient.ts +4 -0
- package/src/clients/solautoMarginfiClient.ts +31 -17
- package/src/utils/accountUtils.ts +0 -18
- package/src/utils/marginfiUtils.ts +11 -0
- package/tests/transactions/solautoMarginfi.ts +14 -14
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAA6B,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EACL,MAAM,EACN,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,gCAAgC,EAEhC,sBAAsB,EAKvB,MAAM,cAAc,CAAC;AAUtB,OAAO,EACL,gBAAgB,EAChB,eAAe,EAChB,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB;IACjE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,8BAAsB,aAAc,SAAQ,oBAAoB;IACvD,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC,SAAS,EAAG,SAAS,CAAC;IACtB,MAAM,EAAG,MAAM,CAAC;IAEhB,UAAU,EAAG,MAAM,CAAC;IACpB,WAAW,EAAG,OAAO,CAAC;IACtB,eAAe,EAAG,SAAS,CAAC;IAC5B,mBAAmB,EAAG,eAAe,GAAG,IAAI,CAAC;IAC7C,oBAAoB,EAAG,aAAa,GAAG,SAAS,CAAC;IAEjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,UAAU,EAAG,SAAS,CAAC;IACvB,gBAAgB,EAAG,SAAS,CAAC;IAC7B,cAAc,EAAG,SAAS,CAAC;IAE3B,QAAQ,EAAG,SAAS,CAAC;IACrB,cAAc,EAAG,SAAS,CAAC;IAC3B,YAAY,EAAG,SAAS,CAAC;IAEzB,mBAAmB,EAAG,SAAS,CAAC;IAChC,iBAAiB,EAAG,SAAS,CAAC;IAE9B,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAEhC,mBAAmB,EAAE,mBAAmB,CAA6B;IAEtE,UAAU,CAAC,IAAI,EAAE,iBAAiB;IA8ExC,kBAAkB,IAAI,SAAS,GAAG,SAAS;IAO3C,gBAAgB,IAAI,SAAS,GAAG,SAAS;IAOnC,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO;IAuB1C,QAAQ,CAAC,eAAe,IAAI,SAAS;IAErC,mBAAmB,IAAI,MAAM,EAAE;IAS/B,gBAAgB,IAAI,SAAS,EAAE;IAkBzB,iCAAiC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAUzD,iBAAiB,IAAI,OAAO,CAC9B;QACE,EAAE,EAAE,kBAAkB,CAAC;QACvB,GAAG,EAAE,OAAO,CAAC;QACb,aAAa,EAAE,SAAS,EAAE,CAAC;KAC5B,GACD,SAAS,CACZ;
|
1
|
+
{"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"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"}
|
@@ -123,6 +123,9 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
|
|
123
123
|
return lookupTable?.value?.state.addresses ?? [];
|
124
124
|
}
|
125
125
|
async updateLookupTable() {
|
126
|
+
if (this.selfManaged) {
|
127
|
+
return undefined;
|
128
|
+
}
|
126
129
|
const existingLutAccounts = await this.fetchExistingAuthorityLutAccounts();
|
127
130
|
if (this.lutAccountsToAdd().every((element) => existingLutAccounts
|
128
131
|
.map((x) => x.toString().toLowerCase())
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoMarginfiClient.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,MAAM,EACN,kBAAkB,EAMnB,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,mBAAmB,CAAC;AAM1D,OAAO,EACL,kBAAkB,EAElB,aAAa,EAGb,iBAAiB,EACjB,wBAAwB,EACxB,gCAAgC,EAKjC,MAAM,cAAc,CAAC;
|
1
|
+
{"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoMarginfiClient.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,MAAM,EACN,kBAAkB,EAMnB,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,mBAAmB,CAAC;AAM1D,OAAO,EACL,kBAAkB,EAElB,aAAa,EAGb,iBAAiB,EACjB,wBAAwB,EACxB,gCAAgC,EAKjC,MAAM,cAAc,CAAC;AAEtB,OAAO,EAEL,eAAe,EAUhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,eAAe,EAChB,MAAM,iCAAiC,CAAC;AASzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,eAAe,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,qBAAa,qBAAsB,SAAQ,aAAa;IACtD,OAAO,CAAC,WAAW,CAAkB;IAE9B,eAAe,EAAG,SAAS,CAAC;IAE5B,sBAAsB,EAAE,MAAM,CAAa;IAC3C,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;IAG5B,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,6BAA6B,EAAG,SAAS,CAAC;IAC1C,2BAA2B,CAAC,EAAE,eAAe,CAAC;IAE/C,UAAU,CAAC,IAAI,EAAE,yBAAyB;IAoF1C,8BAA8B;IAoCpC,eAAe,IAAI,SAAS;IAI5B,mBAAmB,IAAI,MAAM,EAAE;IAI/B,gBAAgB,IAAI,SAAS,EAAE;IAUzB,wBAAwB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IA0BvE,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG,kBAAkB;IAStE,YAAY,CACV,aAAa,CAAC,EAAE,gCAAgC,EAChD,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IAMrB,OAAO,CAAC,sBAAsB;IA6C9B,OAAO,IAAI,kBAAkB;IAc7B,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAUhE,OAAO,CAAC,6BAA6B;IAmErC,OAAO,CAAC,oCAAoC;IA0D5C,SAAS,CACP,aAAa,EAAE,GAAG,GAAG,GAAG,EACxB,QAAQ,EAAE,aAAa,EACvB,aAAa,EAAE,wBAAwB,EACvC,eAAe,EAAE,eAAe,EAChC,SAAS,CAAC,EAAE,gBAAgB,EAC5B,2BAA2B,CAAC,EAAE,MAAM,GACnC,kBAAkB;IAgFrB,WAAW,CACT,gBAAgB,EAAE,gBAAgB,EAClC,uBAAuB,EAAE,SAAS,GACjC,kBAAkB;IA2BrB,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,kBAAkB;IAoF5D,qBAAqB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;CA8ClE"}
|
@@ -27,9 +27,19 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
27
27
|
(0, umi_1.createSignerFromKeypair)(this.umi, this.umi.eddsa.generateKeypair());
|
28
28
|
}
|
29
29
|
else {
|
30
|
-
|
31
|
-
|
32
|
-
|
30
|
+
if (this.solautoPositionData) {
|
31
|
+
this.marginfiAccount = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.solautoPositionData.position.protocolUserAccount);
|
32
|
+
}
|
33
|
+
else {
|
34
|
+
const accounts = await (0, marginfiUtils_1.getAllMarginfiAccountsByAuthority)(this.umi, this.solautoPosition, args.marginfiGroup, false);
|
35
|
+
const reusableAccounts = accounts.length > 0
|
36
|
+
? (await (0, marginfi_sdk_1.safeFetchAllMarginfiAccount)(this.umi, accounts.map((x) => (0, umi_1.publicKey)(x.marginfiAccount)))).filter((x) => (0, marginfiUtils_1.marginfiAccountEmpty)(x))
|
37
|
+
: [];
|
38
|
+
this.marginfiAccount =
|
39
|
+
reusableAccounts.length > 0
|
40
|
+
? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(reusableAccounts[0].publicKey)
|
41
|
+
: (0, umi_1.createSignerFromKeypair)(this.umi, this.umi.eddsa.generateKeypair());
|
42
|
+
}
|
33
43
|
}
|
34
44
|
this.marginfiAccountPk =
|
35
45
|
"publicKey" in this.marginfiAccount
|
@@ -64,10 +74,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
64
74
|
.filter((x) => !x.marginfiAccount.equals(this.marginfiAccountPk))
|
65
75
|
.sort((a, b) => a.marginfiAccount.toString().localeCompare(b.marginfiAccount.toString()));
|
66
76
|
const compatibleMarginfiAccounts = existingMarginfiAccounts.length > 0
|
67
|
-
? (await (0, marginfi_sdk_1.safeFetchAllMarginfiAccount)(this.umi, existingMarginfiAccounts.map((x) => (0, umi_1.publicKey)(x.marginfiAccount)))).filter((x) =>
|
68
|
-
x.lendingAccount.balances.find((y) => y.bankPk.toString() !== web3_js_1.PublicKey.default.toString() &&
|
69
|
-
(Math.round((0, numberUtils_1.bytesToI80F48)(y.assetShares.value)) != 0 ||
|
70
|
-
Math.round((0, numberUtils_1.bytesToI80F48)(y.liabilityShares.value)) != 0)) === undefined)
|
77
|
+
? (await (0, marginfi_sdk_1.safeFetchAllMarginfiAccount)(this.umi, existingMarginfiAccounts.map((x) => (0, umi_1.publicKey)(x.marginfiAccount)))).filter((x) => (0, marginfiUtils_1.marginfiAccountEmpty)(x))
|
71
78
|
: [];
|
72
79
|
this.intermediaryMarginfiAccountSigner =
|
73
80
|
compatibleMarginfiAccounts.length > 0
|
@@ -7,5 +7,4 @@ export declare function getTokenAccounts(wallet: PublicKey, tokenMints: PublicKe
|
|
7
7
|
export declare function getTokenAccountData(umi: Umi, tokenAccount: PublicKey): Promise<import("@solana/spl-token").RawAccount | undefined>;
|
8
8
|
export declare function getSolautoPositionAccount(authority: PublicKey, positionId: number, programId: PublicKey): PublicKey;
|
9
9
|
export declare function getReferralState(authority: PublicKey, programId: PublicKey): PublicKey;
|
10
|
-
export declare function getMarginfiAccountPDA(solautoPositionAccount: PublicKey, marginfiAccountSeedIdx: bigint, programId: PublicKey): PublicKey;
|
11
10
|
//# sourceMappingURL=accountUtils.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"accountUtils.d.ts","sourceRoot":"","sources":["../../src/utils/accountUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,CAMlF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAExF;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,+DAO1E;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,SAAS,aAQrB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,aAU1E
|
1
|
+
{"version":3,"file":"accountUtils.d.ts","sourceRoot":"","sources":["../../src/utils/accountUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,CAMlF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAExF;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,+DAO1E;AAED,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,SAAS,aAQrB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,aAU1E"}
|
@@ -7,7 +7,6 @@ exports.getTokenAccounts = getTokenAccounts;
|
|
7
7
|
exports.getTokenAccountData = getTokenAccountData;
|
8
8
|
exports.getSolautoPositionAccount = getSolautoPositionAccount;
|
9
9
|
exports.getReferralState = getReferralState;
|
10
|
-
exports.getMarginfiAccountPDA = getMarginfiAccountPDA;
|
11
10
|
const web3_js_1 = require("@solana/web3.js");
|
12
11
|
const spl_token_1 = require("@solana/spl-token");
|
13
12
|
const umi_1 = require("@metaplex-foundation/umi");
|
@@ -46,11 +45,3 @@ function getReferralState(authority, programId) {
|
|
46
45
|
const [ReferralState, _] = web3_js_1.PublicKey.findProgramAddressSync([strBuffer, authority.toBuffer()], programId);
|
47
46
|
return ReferralState;
|
48
47
|
}
|
49
|
-
function getMarginfiAccountPDA(solautoPositionAccount, marginfiAccountSeedIdx, programId) {
|
50
|
-
const seeds = [
|
51
|
-
solautoPositionAccount.toBuffer(),
|
52
|
-
bufferFromU64(marginfiAccountSeedIdx),
|
53
|
-
];
|
54
|
-
const [marginfiAccount, _] = web3_js_1.PublicKey.findProgramAddressSync(seeds, programId);
|
55
|
-
return marginfiAccount;
|
56
|
-
}
|
@@ -37,5 +37,6 @@ export declare function getMarginfiAccountPositionState(umi: Umi, protocolAccoun
|
|
37
37
|
}, marginfiGroup?: PublicKey, supply?: BankSelection, debt?: BankSelection, livePositionUpdates?: LivePositionUpdates): Promise<PositionState | undefined>;
|
38
38
|
export declare function calculateAnnualAPYs(bank: Bank): [number, number];
|
39
39
|
export declare function getUpToDateShareValues(bank: Bank): [number, number];
|
40
|
+
export declare function marginfiAccountEmpty(marginfiAccount: MarginfiAccount): boolean;
|
40
41
|
export {};
|
41
42
|
//# sourceMappingURL=marginfiUtils.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,IAAI,EAGJ,eAAe,EAGhB,MAAM,iBAAiB,CAAC;AAazB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAI7D,UAAU,wBAAyB,SAAQ,qBAAqB;IAC9D,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,GACd,wBAAwB,CAY1B;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,WAAW,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BlB;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,SAAS,EACxB,MAAM,EAAE;IACN,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,IAAI,EAAE;IACJ,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAwC3B;AAED,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,KAAK,CAAC,EAAE,SAAS,EACjB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CACR;IAAE,eAAe,EAAE,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,EAAE,CAC/E,CAiEA;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,OAAO,EAAE,OAAO,UAejB;AAsDD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,KAAK,UAAU,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAAE,CAAC;AAEhE,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,GAAG,EACR,eAAe,EAAE;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,CAAA;CAAE,EAC1D,aAAa,CAAC,EAAE,SAAS,EACzB,MAAM,CAAC,EAAE,aAAa,EACtB,IAAI,CAAC,EAAE,aAAa,EACpB,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAiLpC;AA+DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,oBAU7C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBnE"}
|
1
|
+
{"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EACL,IAAI,EAGJ,eAAe,EAGhB,MAAM,iBAAiB,CAAC;AAazB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAI7D,UAAU,wBAAyB,SAAQ,qBAAqB;IAC9D,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,SAAS,GACd,wBAAwB,CAY1B;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,WAAW,EAAE,MAAM,GAClB,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BlB;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,SAAS,EACxB,MAAM,EAAE;IACN,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,IAAI,EAAE;IACJ,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB,EACD,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAwC3B;AAED,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,KAAK,CAAC,EAAE,SAAS,EACjB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CACR;IAAE,eAAe,EAAE,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,EAAE,CAC/E,CAiEA;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,OAAO,EAAE,OAAO,UAejB;AAsDD,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,KAAK,UAAU,GAAG;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAAE,CAAC;AAEhE,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,GAAG,EACR,eAAe,EAAE;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,CAAA;CAAE,EAC1D,aAAa,CAAC,EAAE,SAAS,EACzB,MAAM,CAAC,EAAE,aAAa,EACtB,IAAI,CAAC,EAAE,aAAa,EACpB,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAiLpC;AA+DD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,oBAU7C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBnE;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,eAAe,WASpE"}
|
@@ -8,6 +8,7 @@ exports.getBankLiquidityAvailableBaseUnit = getBankLiquidityAvailableBaseUnit;
|
|
8
8
|
exports.getMarginfiAccountPositionState = getMarginfiAccountPositionState;
|
9
9
|
exports.calculateAnnualAPYs = calculateAnnualAPYs;
|
10
10
|
exports.getUpToDateShareValues = getUpToDateShareValues;
|
11
|
+
exports.marginfiAccountEmpty = marginfiAccountEmpty;
|
11
12
|
const web3_js_1 = require("@solana/web3.js");
|
12
13
|
const umi_1 = require("@metaplex-foundation/umi");
|
13
14
|
const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
|
@@ -306,3 +307,8 @@ function getUpToDateShareValues(bank) {
|
|
306
307
|
calcAccruedInterestPaymentPerPeriod(borrowingApr, timeDelta, (0, numberUtils_1.bytesToI80F48)(bank.liabilityShareValue.value)),
|
307
308
|
];
|
308
309
|
}
|
310
|
+
function marginfiAccountEmpty(marginfiAccount) {
|
311
|
+
return (marginfiAccount.lendingAccount.balances.find((x) => x.bankPk.toString() !== web3_js_1.PublicKey.default.toString() &&
|
312
|
+
(Math.round((0, numberUtils_1.bytesToI80F48)(x.assetShares.value)) != 0 ||
|
313
|
+
Math.round((0, numberUtils_1.bytesToI80F48)(x.liabilityShares.value)) != 0)) === undefined);
|
314
|
+
}
|
package/package.json
CHANGED
@@ -251,6 +251,10 @@ export abstract class SolautoClient extends ReferralStateManager {
|
|
251
251
|
}
|
252
252
|
| undefined
|
253
253
|
> {
|
254
|
+
if (this.selfManaged) {
|
255
|
+
return undefined;
|
256
|
+
}
|
257
|
+
|
254
258
|
const existingLutAccounts = await this.fetchExistingAuthorityLutAccounts();
|
255
259
|
if (
|
256
260
|
this.lutAccountsToAdd().every((element) =>
|
@@ -33,8 +33,7 @@ import {
|
|
33
33
|
marginfiRebalance,
|
34
34
|
marginfiRefreshData,
|
35
35
|
} from "../generated";
|
36
|
-
import {
|
37
|
-
import { generateRandomU64 } from "../utils/generalUtils";
|
36
|
+
import { getTokenAccount } from "../utils/accountUtils";
|
38
37
|
import {
|
39
38
|
MARGINFI_PROGRAM_ID,
|
40
39
|
MarginfiAccount,
|
@@ -57,6 +56,7 @@ import {
|
|
57
56
|
getAllMarginfiAccountsByAuthority,
|
58
57
|
getMarginfiAccountPositionState,
|
59
58
|
getMaxLtvAndLiqThreshold,
|
59
|
+
marginfiAccountEmpty,
|
60
60
|
} from "../utils/marginfiUtils";
|
61
61
|
import { bytesToI80F48, fromBaseUnit, toBps } from "../utils/numberUtils";
|
62
62
|
import { QuoteResponse } from "@jup-ag/api";
|
@@ -99,11 +99,34 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
99
99
|
args.marginfiAccount ??
|
100
100
|
createSignerFromKeypair(this.umi, this.umi.eddsa.generateKeypair());
|
101
101
|
} else {
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
102
|
+
if (this.solautoPositionData) {
|
103
|
+
this.marginfiAccount = toWeb3JsPublicKey(
|
104
|
+
this.solautoPositionData.position.protocolUserAccount
|
105
|
+
);
|
106
|
+
} else {
|
107
|
+
const accounts = await getAllMarginfiAccountsByAuthority(
|
108
|
+
this.umi,
|
109
|
+
this.solautoPosition,
|
110
|
+
args.marginfiGroup,
|
111
|
+
false
|
112
|
+
);
|
113
|
+
const reusableAccounts =
|
114
|
+
accounts.length > 0
|
115
|
+
? (
|
116
|
+
await safeFetchAllMarginfiAccount(
|
117
|
+
this.umi,
|
118
|
+
accounts.map((x) => publicKey(x.marginfiAccount))
|
119
|
+
)
|
120
|
+
).filter((x) => marginfiAccountEmpty(x))
|
121
|
+
: [];
|
122
|
+
this.marginfiAccount =
|
123
|
+
reusableAccounts.length > 0
|
124
|
+
? toWeb3JsPublicKey(reusableAccounts[0].publicKey)
|
125
|
+
: createSignerFromKeypair(
|
126
|
+
this.umi,
|
127
|
+
this.umi.eddsa.generateKeypair()
|
128
|
+
);
|
129
|
+
}
|
107
130
|
}
|
108
131
|
this.marginfiAccountPk =
|
109
132
|
"publicKey" in this.marginfiAccount
|
@@ -169,16 +192,7 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
169
192
|
this.umi,
|
170
193
|
existingMarginfiAccounts.map((x) => publicKey(x.marginfiAccount))
|
171
194
|
)
|
172
|
-
).filter(
|
173
|
-
(x) =>
|
174
|
-
x.group.toString() === this.marginfiGroup.toString() &&
|
175
|
-
x.lendingAccount.balances.find(
|
176
|
-
(y) =>
|
177
|
-
y.bankPk.toString() !== PublicKey.default.toString() &&
|
178
|
-
(Math.round(bytesToI80F48(y.assetShares.value)) != 0 ||
|
179
|
-
Math.round(bytesToI80F48(y.liabilityShares.value)) != 0)
|
180
|
-
) === undefined
|
181
|
-
)
|
195
|
+
).filter((x) => marginfiAccountEmpty(x))
|
182
196
|
: [];
|
183
197
|
|
184
198
|
this.intermediaryMarginfiAccountSigner =
|
@@ -58,22 +58,4 @@ export function getReferralState(authority: PublicKey, programId: PublicKey) {
|
|
58
58
|
);
|
59
59
|
|
60
60
|
return ReferralState;
|
61
|
-
}
|
62
|
-
|
63
|
-
export function getMarginfiAccountPDA(
|
64
|
-
solautoPositionAccount: PublicKey,
|
65
|
-
marginfiAccountSeedIdx: bigint,
|
66
|
-
programId: PublicKey
|
67
|
-
) {
|
68
|
-
const seeds = [
|
69
|
-
solautoPositionAccount.toBuffer(),
|
70
|
-
bufferFromU64(marginfiAccountSeedIdx),
|
71
|
-
];
|
72
|
-
|
73
|
-
const [marginfiAccount, _] = PublicKey.findProgramAddressSync(
|
74
|
-
seeds,
|
75
|
-
programId
|
76
|
-
);
|
77
|
-
|
78
|
-
return marginfiAccount;
|
79
61
|
}
|
@@ -565,3 +565,14 @@ export function getUpToDateShareValues(bank: Bank): [number, number] {
|
|
565
565
|
),
|
566
566
|
];
|
567
567
|
}
|
568
|
+
|
569
|
+
export function marginfiAccountEmpty(marginfiAccount: MarginfiAccount) {
|
570
|
+
return (
|
571
|
+
marginfiAccount.lendingAccount.balances.find(
|
572
|
+
(x) =>
|
573
|
+
x.bankPk.toString() !== PublicKey.default.toString() &&
|
574
|
+
(Math.round(bytesToI80F48(x.assetShares.value)) != 0 ||
|
575
|
+
Math.round(bytesToI80F48(x.liabilityShares.value)) != 0)
|
576
|
+
) === undefined
|
577
|
+
);
|
578
|
+
}
|
@@ -26,12 +26,14 @@ import {
|
|
26
26
|
SOLAUTO_TEST_PROGRAM,
|
27
27
|
USDC,
|
28
28
|
} from "../../src/constants";
|
29
|
-
import {
|
29
|
+
import {
|
30
|
+
buildHeliusApiUrl,
|
31
|
+
} from "../../src/utils";
|
30
32
|
import { PriorityFeeSetting } from "../../src/types";
|
31
33
|
|
32
34
|
describe("Solauto Marginfi tests", async () => {
|
33
|
-
|
34
|
-
const signer = setupTest("solauto-manager");
|
35
|
+
const signer = setupTest();
|
36
|
+
// const signer = setupTest("solauto-manager");
|
35
37
|
|
36
38
|
const payForTransactions = true;
|
37
39
|
const testProgram = false;
|
@@ -51,7 +53,7 @@ describe("Solauto Marginfi tests", async () => {
|
|
51
53
|
await client.initialize({
|
52
54
|
signer,
|
53
55
|
positionId,
|
54
|
-
authority: new PublicKey("
|
56
|
+
authority: new PublicKey("rC5dMP5dmSsfQ66rynzfFzuc122Eex9h1RJHVDkeH6D"),
|
55
57
|
// new: true,
|
56
58
|
// marginfiAccount: new PublicKey(
|
57
59
|
// "4nNvUXF5YqHFcH2nGweSiuvy1ct7V5FXfoCLKFYUN36z"
|
@@ -61,8 +63,6 @@ describe("Solauto Marginfi tests", async () => {
|
|
61
63
|
// debtMint: new PublicKey(USDC),
|
62
64
|
});
|
63
65
|
|
64
|
-
console.log(await getSolautoManagedPositions(client.umi));
|
65
|
-
|
66
66
|
const transactionItems: TransactionItem[] = [];
|
67
67
|
// const settingParams: SolautoSettingsParametersInpArgs = {
|
68
68
|
// boostToBps: maxBoostToBps(
|
@@ -157,14 +157,14 @@ describe("Solauto Marginfi tests", async () => {
|
|
157
157
|
// )
|
158
158
|
// );
|
159
159
|
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
160
|
+
const statuses = await new TransactionsManager(
|
161
|
+
client,
|
162
|
+
undefined,
|
163
|
+
!payForTransactions ? "only-simulate" : "normal",
|
164
|
+
PriorityFeeSetting.Low,
|
165
|
+
true
|
166
|
+
).clientSend(transactionItems);
|
167
167
|
|
168
|
-
|
168
|
+
console.log(statuses);
|
169
169
|
});
|
170
170
|
});
|