@haven-fi/solauto-sdk 1.0.86 → 1.0.88
Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAyB,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EACL,IAAI,EAKL,MAAM,iBAAiB,CAAC;AAWzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAI7D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,GAAG,qBAAqB,CAU3E;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,GAAG,EACR,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,CA+D3B;AAED,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,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,
|
1
|
+
{"version":3,"file":"marginfiUtils.d.ts","sourceRoot":"","sources":["../../src/utils/marginfiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAyB,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EACL,IAAI,EAKL,MAAM,iBAAiB,CAAC;AAWzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAsB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAI7D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,GAAG,qBAAqB,CAU3E;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,GAAG,EACR,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,CA+D3B;AAED,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,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,CA6CA;AAgED,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,GAAG,EACR,iBAAiB,EAAE,SAAS,EAC5B,UAAU,CAAC,EAAE,SAAS,EACtB,QAAQ,CAAC,EAAE,SAAS,EACpB,mBAAmB,CAAC,EAAE,mBAAmB,GACxC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CA+IpC;AA+DD,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA0B3B"}
|
@@ -15,7 +15,6 @@ const solautoConstants_1 = require("../constants/solautoConstants");
|
|
15
15
|
const marginfiAccounts_1 = require("../constants/marginfiAccounts");
|
16
16
|
const generalAccounts_1 = require("../constants/generalAccounts");
|
17
17
|
const solanaUtils_1 = require("./solanaUtils");
|
18
|
-
const accountUtils_1 = require("./accountUtils");
|
19
18
|
function findMarginfiAccounts(bank) {
|
20
19
|
for (const key in marginfiAccounts_1.MARGINFI_ACCOUNTS) {
|
21
20
|
const account = marginfiAccounts_1.MARGINFI_ACCOUNTS[key];
|
@@ -60,7 +59,7 @@ async function getMaxLtvAndLiqThreshold(umi, supply, debt, supplyPrice) {
|
|
60
59
|
return [maxLtv, liqThreshold];
|
61
60
|
}
|
62
61
|
async function getAllMarginfiAccountsByAuthority(umi, authority, compatibleWithSolauto) {
|
63
|
-
const
|
62
|
+
const marginfiAccounts = await umi.rpc.getProgramAccounts(marginfi_sdk_1.MARGINFI_PROGRAM_ID, {
|
64
63
|
commitment: "finalized",
|
65
64
|
dataSlice: {
|
66
65
|
offset: 0,
|
@@ -72,22 +71,14 @@ async function getAllMarginfiAccountsByAuthority(umi, authority, compatibleWithS
|
|
72
71
|
},
|
73
72
|
{
|
74
73
|
memcmp: {
|
75
|
-
bytes: new Uint8Array(
|
74
|
+
bytes: new Uint8Array(authority.toBuffer()),
|
76
75
|
offset: 40, // Anchor account discriminator + group pubkey
|
77
76
|
},
|
78
77
|
},
|
79
78
|
],
|
80
79
|
});
|
81
|
-
let marginfiAccounts = [];
|
82
|
-
let selfManagedSolautoPositions = [];
|
83
80
|
if (compatibleWithSolauto) {
|
84
|
-
|
85
|
-
}
|
86
|
-
else {
|
87
|
-
marginfiAccounts = await getAccounts(authority);
|
88
|
-
}
|
89
|
-
if (compatibleWithSolauto) {
|
90
|
-
const positionStates = await Promise.all([...selfManagedSolautoPositions, ...marginfiAccounts].map(async (x) => ({
|
81
|
+
const positionStates = await Promise.all(marginfiAccounts.map(async (x) => ({
|
91
82
|
publicKey: x.publicKey,
|
92
83
|
state: await getMarginfiAccountPositionState(umi, (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(x.publicKey)),
|
93
84
|
})));
|
@@ -70,8 +70,8 @@ function getDebtAdjustmentUsd(liqThresholdBps, supplyUsd, debtUsd, targetLiqUtil
|
|
70
70
|
function getSolautoFeesBps(isReferred, feeType, positionNetWorthUsd) {
|
71
71
|
const minSize = 10000; // Minimum position size
|
72
72
|
const maxSize = 1000000; // Maximum position size
|
73
|
-
const maxFeeBps =
|
74
|
-
const minFeeBps =
|
73
|
+
const maxFeeBps = 300; // Fee in basis points for minSize (5%)
|
74
|
+
const minFeeBps = 50; // Fee in basis points for maxSize (1%)
|
75
75
|
let feeBps = 0;
|
76
76
|
if (feeType === generated_1.FeeType.Small) {
|
77
77
|
feeBps = 100;
|
package/package.json
CHANGED
@@ -120,7 +120,7 @@ export async function getAllMarginfiAccountsByAuthority(
|
|
120
120
|
): Promise<
|
121
121
|
{ marginfiAccount: PublicKey; supplyMint?: PublicKey; debtMint?: PublicKey }[]
|
122
122
|
> {
|
123
|
-
const
|
123
|
+
const marginfiAccounts = await umi.rpc.getProgramAccounts(
|
124
124
|
MARGINFI_PROGRAM_ID,
|
125
125
|
{
|
126
126
|
commitment: "finalized",
|
@@ -134,25 +134,17 @@ export async function getAllMarginfiAccountsByAuthority(
|
|
134
134
|
},
|
135
135
|
{
|
136
136
|
memcmp: {
|
137
|
-
bytes: new Uint8Array(
|
137
|
+
bytes: new Uint8Array(authority.toBuffer()),
|
138
138
|
offset: 40, // Anchor account discriminator + group pubkey
|
139
139
|
},
|
140
140
|
},
|
141
141
|
],
|
142
142
|
}
|
143
|
-
)
|
144
|
-
|
145
|
-
let marginfiAccounts: RpcAccount[] = [];
|
146
|
-
let selfManagedSolautoPositions: RpcAccount[] = [];
|
147
|
-
if (compatibleWithSolauto) {
|
148
|
-
[marginfiAccounts, selfManagedSolautoPositions] = await Promise.all([getAccounts(authority), getAccounts(getSolautoPositionAccount(authority, 0))]);
|
149
|
-
} else {
|
150
|
-
marginfiAccounts = await getAccounts(authority);
|
151
|
-
}
|
143
|
+
);
|
152
144
|
|
153
145
|
if (compatibleWithSolauto) {
|
154
146
|
const positionStates = await Promise.all(
|
155
|
-
|
147
|
+
marginfiAccounts.map(async (x) => ({
|
156
148
|
publicKey: x.publicKey,
|
157
149
|
state: await getMarginfiAccountPositionState(
|
158
150
|
umi,
|
package/src/utils/numberUtils.ts
CHANGED
@@ -98,8 +98,8 @@ export function getSolautoFeesBps(
|
|
98
98
|
} {
|
99
99
|
const minSize = 10000; // Minimum position size
|
100
100
|
const maxSize = 1000000; // Maximum position size
|
101
|
-
const maxFeeBps =
|
102
|
-
const minFeeBps =
|
101
|
+
const maxFeeBps = 300; // Fee in basis points for minSize (5%)
|
102
|
+
const minFeeBps = 50; // Fee in basis points for maxSize (1%)
|
103
103
|
|
104
104
|
let feeBps: number = 0;
|
105
105
|
if (feeType === FeeType.Small) {
|