@perena/bankineco-services 1.0.34 → 1.0.35
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/oracle/updateMarginfiVaultPendingYield.d.ts.map +1 -1
- package/dist/oracle/updateMarginfiVaultPendingYield.js +33 -1
- package/dist/oracle/updateMarginfiVaultPendingYield.js.map +1 -1
- package/dist/utils/marginfi.d.ts.map +1 -1
- package/dist/utils/marginfi.js +3 -2
- package/dist/utils/marginfi.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateMarginfiVaultPendingYield.d.ts","sourceRoot":"","sources":["../../src/oracle/updateMarginfiVaultPendingYield.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAIX,gBAAgB,EAEjB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"updateMarginfiVaultPendingYield.d.ts","sourceRoot":"","sources":["../../src/oracle/updateMarginfiVaultPendingYield.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAIX,gBAAgB,EAEjB,MAAM,uBAAuB,CAAC;AAyF/B;;GAEG;AACH,wBAAsB,kCAAkC,CACtD,GAAG,EAAE,WAAW,EAChB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,CAAC,EAAE,MAAM,iBAQ3B"}
|
|
@@ -4,13 +4,45 @@ exports.runUpdateMarginFiVaultPendingYield = runUpdateMarginFiVaultPendingYield;
|
|
|
4
4
|
const bankineco_sdk_1 = require("@perena/bankineco-sdk");
|
|
5
5
|
const utils_1 = require("../utils");
|
|
6
6
|
const marginfi_1 = require("../utils/marginfi");
|
|
7
|
+
const anchor_1 = require("@coral-xyz/anchor");
|
|
8
|
+
function mostFrequent(arr) {
|
|
9
|
+
if (!arr.length) {
|
|
10
|
+
throw new Error("Array is empty");
|
|
11
|
+
}
|
|
12
|
+
const counts = {};
|
|
13
|
+
let best = arr[0];
|
|
14
|
+
let bestCount = 0;
|
|
15
|
+
for (const n of arr) {
|
|
16
|
+
const c = (counts[n] || 0) + 1;
|
|
17
|
+
counts[n] = c;
|
|
18
|
+
if (c > bestCount) {
|
|
19
|
+
bestCount = c;
|
|
20
|
+
best = n;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
if (bestCount <= 1) {
|
|
24
|
+
throw new Error("No value occurs more than once");
|
|
25
|
+
}
|
|
26
|
+
return best;
|
|
27
|
+
}
|
|
7
28
|
async function updateMarginFiVaultPendingYield(bankineco, marginfiVaultTag, reportingDiscount) {
|
|
8
29
|
const marginfiClient = await (0, marginfi_1.getMarginfiClient)(bankineco.provider.connection);
|
|
9
30
|
const vaultPosition = bankineco_sdk_1.MARGINFI_VAULT_POSITIONS[bankineco.environment][marginfiVaultTag];
|
|
10
31
|
const poolAccounts = bankineco_sdk_1.MARGINFI_POOL_ACCOUNTS[marginfiVaultTag];
|
|
11
32
|
const vault = bankineco.vaultPDA(bankineco.bankPDA(bankineco_sdk_1.USD_STAR_BANK_INDEX), vaultPosition.yieldingMint, vaultPosition.yieldingTokenIndex);
|
|
12
33
|
const marginfiAccount = bankineco.marginfiAccountPDA(vault, poolAccounts.group, vaultPosition.accountIndex, vaultPosition.thirdPartyId);
|
|
13
|
-
const
|
|
34
|
+
const fetches = Array.from({ length: 5 }, () => (0, marginfi_1.getPendingMarginFiYield)(marginfiClient, bankineco, vault, marginfiAccount, poolAccounts.bank).catch(() => undefined));
|
|
35
|
+
const impliedYields = [];
|
|
36
|
+
const results = await Promise.all(fetches);
|
|
37
|
+
for (const res of results) {
|
|
38
|
+
if (res !== undefined) {
|
|
39
|
+
impliedYields.push(res);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (impliedYields.length < 4) {
|
|
43
|
+
throw new Error("Not enough attempts at fetching implied yield");
|
|
44
|
+
}
|
|
45
|
+
const impliedYield = new anchor_1.BN(mostFrequent(impliedYields.map((x) => x.toNumber())));
|
|
14
46
|
await (0, utils_1.updateYieldInfoIfNeeded)(bankineco, vault, impliedYield, reportingDiscount);
|
|
15
47
|
}
|
|
16
48
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateMarginfiVaultPendingYield.js","sourceRoot":"","sources":["../../src/oracle/updateMarginfiVaultPendingYield.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"updateMarginfiVaultPendingYield.js","sourceRoot":"","sources":["../../src/oracle/updateMarginfiVaultPendingYield.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marginfi.d.ts","sourceRoot":"","sources":["../../src/utils/marginfi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,cAAc,EACd,sBAAsB,EAEvB,MAAM,8BAA8B,CAAC;AAEtC;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CAGzB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,cAAc,EACtB,iBAAiB,EAAE,SAAS,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CAEjC;AAED;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,cAAc,EACtB,eAAe,EAAE,SAAS,EAC1B,YAAY,EAAE,SAAS,GACtB,OAAO,CAAC,EAAE,CAAC,CAiCb;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,SAAS,EACrB,eAAe,EAAE,SAAS,EAC1B,YAAY,EAAE,SAAS,GACtB,OAAO,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"marginfi.d.ts","sourceRoot":"","sources":["../../src/utils/marginfi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,cAAc,EACd,sBAAsB,EAEvB,MAAM,8BAA8B,CAAC;AAEtC;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CAGzB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,cAAc,EACtB,iBAAiB,EAAE,SAAS,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CAEjC;AAED;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,cAAc,EACtB,eAAe,EAAE,SAAS,EAC1B,YAAY,EAAE,SAAS,GACtB,OAAO,CAAC,EAAE,CAAC,CAiCb;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,SAAS,EACrB,eAAe,EAAE,SAAS,EAC1B,YAAY,EAAE,SAAS,GACtB,OAAO,CAAC,EAAE,CAAC,CAmCb;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,cAAc,EACtB,YAAY,EAAE,SAAS,GACtB,SAAS,EAAE,CAoBb"}
|
package/dist/utils/marginfi.js
CHANGED
|
@@ -71,12 +71,13 @@ async function getPendingMarginFiYield(client, bankineco, vaultState, marginfiAc
|
|
|
71
71
|
console.log(`[getPendingMarginFiYield] Current MarginFi balance: ${currentBalance.toString()}`);
|
|
72
72
|
// Get vault's accounting
|
|
73
73
|
const vault = await bankineco.pg.account.vaultGenState.fetch(vaultState);
|
|
74
|
-
const oracleState = await bankineco.pg.account.oracleGenState.fetch(bankineco.oraclePDA(vaultState));
|
|
75
74
|
// external_yielding_amount tracks the principal deposited into MarginFi
|
|
76
75
|
const principal = vault.accounting.externalYieldingAmount;
|
|
77
76
|
console.log(`[getPendingMarginFiYield] Principal in MarginFi: ${principal.toString()}`);
|
|
78
|
-
// New yield = current_balance - principal - already_reported
|
|
79
77
|
const newYield = currentBalance.sub(principal);
|
|
78
|
+
if (currentBalance.toNumber() < principal.toNumber()) {
|
|
79
|
+
throw new Error("Current balance is less than principal, likely encountering drift due to the difference in timing when fetching Marginfi account and vault data");
|
|
80
|
+
}
|
|
80
81
|
console.log(`[getPendingMarginFiYield] New pending yield: ${newYield.toString()}`);
|
|
81
82
|
return newYield.gt(new anchor_1.BN(0)) ? newYield : new anchor_1.BN(0);
|
|
82
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marginfi.js","sourceRoot":"","sources":["../../src/utils/marginfi.ts"],"names":[],"mappings":";;AAYA,8CAMC;AAKD,8DAKC;AAUD,0DAqCC;AAiBD,
|
|
1
|
+
{"version":3,"file":"marginfi.js","sourceRoot":"","sources":["../../src/utils/marginfi.ts"],"names":[],"mappings":"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"}
|