@perena/bankineco-services 1.0.67 → 1.0.69

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.
@@ -1 +1 @@
1
- {"version":3,"file":"updateMarginfiVaultPendingYield.d.ts","sourceRoot":"","sources":["../../src/oracle/updateMarginfiVaultPendingYield.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EAGb,gBAAgB,EAEjB,MAAM,uBAAuB,CAAC;AAmG/B;;GAEG;AACH,wBAAsB,kCAAkC,CACtD,IAAI,EAAE,aAAa,EACnB,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,CAAC,EAAE,MAAM,iBAQ3B"}
1
+ {"version":3,"file":"updateMarginfiVaultPendingYield.d.ts","sourceRoot":"","sources":["../../src/oracle/updateMarginfiVaultPendingYield.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EAGb,gBAAgB,EAEjB,MAAM,uBAAuB,CAAC;AA6H/B;;GAEG;AACH,wBAAsB,kCAAkC,CACtD,IAAI,EAAE,aAAa,EACnB,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,CAAC,EAAE,MAAM,iBAQ3B"}
@@ -26,6 +26,19 @@ function mostFrequent(arr) {
26
26
  }
27
27
  return best;
28
28
  }
29
+ function reversePerformanceFee(netYield, performanceFeeBps) {
30
+ if (performanceFeeBps === 0) {
31
+ return netYield;
32
+ }
33
+ const basisPoints = 10000;
34
+ const denominator = basisPoints - performanceFeeBps;
35
+ if (denominator <= 0) {
36
+ throw new Error(`Invalid performance fee bps: ${performanceFeeBps}`);
37
+ }
38
+ const numerator = netYield.muln(basisPoints);
39
+ const grossYield = numerator.divn(denominator);
40
+ return numerator.modn(denominator) === 0 ? grossYield : grossYield.addn(1);
41
+ }
29
42
  async function updateMarginFiVaultPendingYield(client, marginfiVaultTag, reportingDiscount) {
30
43
  const poolAccounts = bankineco_sdk_1.MARGINFI_POOL_ACCOUNTS[marginfiVaultTag];
31
44
  const marginfiClient = await (0, marginfi_1.getMarginfiClient)(client.bankineco.provider.connection, undefined, [poolAccounts.bank]);
@@ -34,6 +47,8 @@ async function updateMarginFiVaultPendingYield(client, marginfiVaultTag, reporti
34
47
  if (!(await (0, utils_1.ensureVaultExists)(client, vault, `${marginfiVaultTag} oracle update`))) {
35
48
  return;
36
49
  }
50
+ const oracleInfo = await client.bankineco.pg.account.oracleGenState.fetch(client.bankineco.oraclePDA(vault));
51
+ const vaultInfo = await client.bankineco.pg.account.vaultGenState.fetch(vault);
37
52
  const marginfiAccount = client.bankineco.marginfiAccountPDA(vault, marginfiVaultTag);
38
53
  const impliedYields = [];
39
54
  for (let i = 0; i < 5; i++) {
@@ -51,10 +66,15 @@ async function updateMarginFiVaultPendingYield(client, marginfiVaultTag, reporti
51
66
  impliedYields.push(res);
52
67
  }
53
68
  }
69
+ let impliedYield;
54
70
  if (impliedYields.length < 4) {
55
- throw new Error("Not enough attempts at fetching implied yield");
71
+ const oraclePendingYield = oracleInfo.result.yieldingPendingAmount;
72
+ impliedYield = reversePerformanceFee(oraclePendingYield, vaultInfo.config.performanceFeeBps);
73
+ console.log(`Falling back to last reported yield for ${marginfiVaultTag}: ${impliedYield.toString()}`);
74
+ }
75
+ else {
76
+ impliedYield = new anchor_1.BN(mostFrequent(impliedYields.map((x) => x.toNumber())));
56
77
  }
57
- const impliedYield = new anchor_1.BN(mostFrequent(impliedYields.map((x) => x.toNumber())));
58
78
  await client.updateYieldInfoIfNeeded(vault, impliedYield, reportingDiscount);
59
79
  }
60
80
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"updateMarginfiVaultPendingYield.js","sourceRoot":"","sources":["../../src/oracle/updateMarginfiVaultPendingYield.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"updateMarginfiVaultPendingYield.js","sourceRoot":"","sources":["../../src/oracle/updateMarginfiVaultPendingYield.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perena/bankineco-services",
3
- "version": "1.0.67",
3
+ "version": "1.0.69",
4
4
  "description": "Services infra for maintaining Bankineco program on Solana.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",