@perena/bankineco-services 1.0.39 → 1.0.41
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/general.d.ts +1 -0
- package/dist/constants/general.d.ts.map +1 -1
- package/dist/constants/general.js +8 -2
- package/dist/constants/general.js.map +1 -1
- package/dist/oracle/updateSeedLPPrice.d.ts.map +1 -1
- package/dist/oracle/updateSeedLPPrice.js +4 -23
- package/dist/oracle/updateSeedLPPrice.js.map +1 -1
- package/dist/oracle/updateYBTokenPrice.d.ts +4 -0
- package/dist/oracle/updateYBTokenPrice.d.ts.map +1 -0
- package/dist/oracle/updateYBTokenPrice.js +16 -0
- package/dist/oracle/updateYBTokenPrice.js.map +1 -0
- package/dist/utils/oracle.d.ts +4 -2
- package/dist/utils/oracle.d.ts.map +1 -1
- package/dist/utils/oracle.js +34 -4
- package/dist/utils/oracle.js.map +1 -1
- package/package.json +3 -3
|
@@ -3,6 +3,7 @@ export declare const LITTLE_ENGINE_TEST_ACCOUNT = "little-engine-test";
|
|
|
3
3
|
export declare const LITTLE_ENGINE_PROD_ACCOUNT = "little-engine-prod333";
|
|
4
4
|
export declare const LITTLE_ENGINE_BOOSTED_ACCOUNT = "little-engine-prod333-boosted";
|
|
5
5
|
export declare const LITTLE_ENGINE_NERFED = "little-engine-nerfed-333";
|
|
6
|
+
export declare const LITTLE_ENGINE_NERFED_2 = "little-engine-nerfed2";
|
|
6
7
|
export declare const LE_ACCOUNTS: Record<Environment, string[]>;
|
|
7
8
|
export declare const TEST_LE_CUSTODIAN = "64nZHh2DBKEkH7PC1Vo7DHRE6k5MohcnqcDyM6evwEn8";
|
|
8
9
|
export declare const PROD_LE_CUSTODIAN = "58ubrW9j4SJ28oYoJauGbnSbCCyycrFiQNV6zu3XX5HZ";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../src/constants/general.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAC/D,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAClE,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../src/constants/general.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAC/D,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAClE,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;AAC/D,eAAO,MAAM,sBAAsB,0BAA0B,CAAC;AAE9D,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,CASrD,CAAC;AAEF,eAAO,MAAM,iBAAiB,iDAAiD,CAAC;AAChF,eAAO,MAAM,iBAAiB,iDAAiD,CAAC;AAChF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAIpD,CAAC"}
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LE_CUSTODIAN = exports.PROD_LE_CUSTODIAN = exports.TEST_LE_CUSTODIAN = exports.LE_ACCOUNTS = exports.LITTLE_ENGINE_NERFED = exports.LITTLE_ENGINE_BOOSTED_ACCOUNT = exports.LITTLE_ENGINE_PROD_ACCOUNT = exports.LITTLE_ENGINE_TEST_ACCOUNT = void 0;
|
|
3
|
+
exports.LE_CUSTODIAN = exports.PROD_LE_CUSTODIAN = exports.TEST_LE_CUSTODIAN = exports.LE_ACCOUNTS = exports.LITTLE_ENGINE_NERFED_2 = exports.LITTLE_ENGINE_NERFED = exports.LITTLE_ENGINE_BOOSTED_ACCOUNT = exports.LITTLE_ENGINE_PROD_ACCOUNT = exports.LITTLE_ENGINE_TEST_ACCOUNT = void 0;
|
|
4
4
|
exports.LITTLE_ENGINE_TEST_ACCOUNT = "little-engine-test";
|
|
5
5
|
exports.LITTLE_ENGINE_PROD_ACCOUNT = "little-engine-prod333";
|
|
6
6
|
exports.LITTLE_ENGINE_BOOSTED_ACCOUNT = "little-engine-prod333-boosted";
|
|
7
7
|
exports.LITTLE_ENGINE_NERFED = "little-engine-nerfed-333";
|
|
8
|
+
exports.LITTLE_ENGINE_NERFED_2 = "little-engine-nerfed2";
|
|
8
9
|
exports.LE_ACCOUNTS = {
|
|
9
10
|
local: [],
|
|
10
11
|
test: [exports.LITTLE_ENGINE_TEST_ACCOUNT],
|
|
11
|
-
prod: [
|
|
12
|
+
prod: [
|
|
13
|
+
exports.LITTLE_ENGINE_PROD_ACCOUNT,
|
|
14
|
+
exports.LITTLE_ENGINE_BOOSTED_ACCOUNT,
|
|
15
|
+
exports.LITTLE_ENGINE_NERFED,
|
|
16
|
+
exports.LITTLE_ENGINE_NERFED_2,
|
|
17
|
+
],
|
|
12
18
|
};
|
|
13
19
|
exports.TEST_LE_CUSTODIAN = "64nZHh2DBKEkH7PC1Vo7DHRE6k5MohcnqcDyM6evwEn8"; // test-custodian.json
|
|
14
20
|
exports.PROD_LE_CUSTODIAN = "58ubrW9j4SJ28oYoJauGbnSbCCyycrFiQNV6zu3XX5HZ";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"general.js","sourceRoot":"","sources":["../../src/constants/general.ts"],"names":[],"mappings":";;;AAEa,QAAA,0BAA0B,GAAG,oBAAoB,CAAC;AAClD,QAAA,0BAA0B,GAAG,uBAAuB,CAAC;AACrD,QAAA,6BAA6B,GAAG,+BAA+B,CAAC;AAChE,QAAA,oBAAoB,GAAG,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"general.js","sourceRoot":"","sources":["../../src/constants/general.ts"],"names":[],"mappings":";;;AAEa,QAAA,0BAA0B,GAAG,oBAAoB,CAAC;AAClD,QAAA,0BAA0B,GAAG,uBAAuB,CAAC;AACrD,QAAA,6BAA6B,GAAG,+BAA+B,CAAC;AAChE,QAAA,oBAAoB,GAAG,0BAA0B,CAAC;AAClD,QAAA,sBAAsB,GAAG,uBAAuB,CAAC;AAEjD,QAAA,WAAW,GAAkC;IACxD,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,CAAC,kCAA0B,CAAC;IAClC,IAAI,EAAE;QACJ,kCAA0B;QAC1B,qCAA6B;QAC7B,4BAAoB;QACpB,8BAAsB;KACvB;CACF,CAAC;AAEW,QAAA,iBAAiB,GAAG,8CAA8C,CAAC,CAAC,sBAAsB;AAC1F,QAAA,iBAAiB,GAAG,8CAA8C,CAAC;AACnE,QAAA,YAAY,GAAgC;IACvD,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,yBAAiB;IACvB,IAAI,EAAE,yBAAiB;CACxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateSeedLPPrice.d.ts","sourceRoot":"","sources":["../../src/oracle/updateSeedLPPrice.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"updateSeedLPPrice.d.ts","sourceRoot":"","sources":["../../src/oracle/updateSeedLPPrice.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,WAAW,EAKZ,MAAM,uBAAuB,CAAC;AAkC/B,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,WAAW,EAChB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,iBAAiB,CAAC,EAAE,MAAM,iBAI3B"}
|
|
@@ -5,8 +5,6 @@ const web3_js_1 = require("@solana/web3.js");
|
|
|
5
5
|
const utils_1 = require("../utils");
|
|
6
6
|
const bankineco_sdk_1 = require("@perena/bankineco-sdk");
|
|
7
7
|
async function updatePrice(bankineco, signerKeypairFp, reportingDiscount) {
|
|
8
|
-
const vaultState = bankineco.vaultPDA(bankineco.bankPDA(bankineco_sdk_1.USD_STAR_BANK_INDEX), new web3_js_1.PublicKey(bankineco_sdk_1.OLD_USD_STAR), bankineco_sdk_1.OLD_USD_STAR_CONTRACT_INDEX);
|
|
9
|
-
const { associatedOracleIdx, signerIsRegisteredOracle, currentOracleUiPrices, currentReportedUiPrice, lastUpdatedTs, } = await (0, utils_1.getOracleStateInfo)(bankineco, vaultState, bankineco_sdk_1.USD_STAR_DECIMALS);
|
|
10
8
|
let impliedPrice = -1;
|
|
11
9
|
try {
|
|
12
10
|
impliedPrice = await (0, utils_1.getOldUsdStarPriceFromBurnSim)(bankineco.provider, signerKeypairFp);
|
|
@@ -19,27 +17,10 @@ async function updatePrice(bankineco, signerKeypairFp, reportingDiscount) {
|
|
|
19
17
|
console.log("Error getting Seedpool price");
|
|
20
18
|
return;
|
|
21
19
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
console.log("All reported prices: ", currentOracleUiPrices);
|
|
27
|
-
console.log("Current reported price: ", currentReportedUiPrice);
|
|
28
|
-
console.log("Hours since last update: ", hoursSinceLastUpdate);
|
|
29
|
-
console.log("Implied Seedpool price: ", impliedPrice);
|
|
30
|
-
const priceDiffBps = Math.floor(Math.abs((currentReportedUiPrice / impliedPrice - 1) * 100000));
|
|
31
|
-
if (priceDiffBps > 5 || hoursSinceLastUpdate >= 23) {
|
|
32
|
-
console.log("Updating price to ", impliedPrice, " vs. a current price of ", currentReportedUiPrice);
|
|
33
|
-
if (signerIsRegisteredOracle) {
|
|
34
|
-
console.log("Sending price update...");
|
|
35
|
-
const sig = await (0, bankineco_sdk_1.signSendAndConfirm)(bankineco.connection, await bankineco.updateYieldingPriceGen(bankineco_sdk_1.USD_STAR_BANK_INDEX, new web3_js_1.PublicKey(bankineco_sdk_1.USD_STAR[bankineco.environment]), vaultState, bankineco.provider.publicKey, new web3_js_1.PublicKey(bankineco_sdk_1.OLD_USD_STAR), (0, bankineco_sdk_1.fromUiAmount)(impliedPrice, 6)), [bankineco.provider.wallet]);
|
|
36
|
-
console.log("Success broadcasting price, tx ", sig);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
console.log("Not updating price, contract price is up to date");
|
|
41
|
-
console.log("Difference in bps: ", priceDiffBps);
|
|
42
|
-
}
|
|
20
|
+
await (0, utils_1.updateYieldingTokenPriceIfNeeded)(bankineco, {
|
|
21
|
+
yieldingMint: new web3_js_1.PublicKey(bankineco_sdk_1.OLD_USD_STAR),
|
|
22
|
+
yieldingTokenIndex: bankineco_sdk_1.OLD_USD_STAR_CONTRACT_INDEX,
|
|
23
|
+
}, bankineco_sdk_1.USD_STAR_DECIMALS, impliedPrice, reportingDiscount);
|
|
43
24
|
}
|
|
44
25
|
async function runUpdateSeedLPPrice(env, signerKeypairFp, rpcUrl, reportingDiscount) {
|
|
45
26
|
const [bankineco] = (0, bankineco_sdk_1.getBankineco)(env, rpcUrl, undefined, signerKeypairFp);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateSeedLPPrice.js","sourceRoot":"","sources":["../../src/oracle/updateSeedLPPrice.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"updateSeedLPPrice.js","sourceRoot":"","sources":["../../src/oracle/updateSeedLPPrice.ts"],"names":[],"mappings":";;AA8CA,oDAQC;AAtDD,6CAA4C;AAC5C,oCAGkB;AAClB,yDAO+B;AAE/B,KAAK,UAAU,WAAW,CACxB,SAA2B,EAC3B,eAAuB,EACvB,iBAA0B;IAE1B,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC;QACH,YAAY,GAAG,MAAM,IAAA,qCAA6B,EAChD,SAAS,CAAC,QAAQ,EAClB,eAAe,CAChB,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,gDAAgD,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IACD,IAAI,YAAY,IAAI,CAAC,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,MAAM,IAAA,wCAAgC,EACpC,SAAS,EACT;QACE,YAAY,EAAE,IAAI,mBAAS,CAAC,4BAAY,CAAC;QACzC,kBAAkB,EAAE,2CAA2B;KAChD,EACD,iCAAiB,EACjB,YAAY,EACZ,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,oBAAoB,CACxC,GAAgB,EAChB,eAAuB,EACvB,MAAc,EACd,iBAA0B;IAE1B,MAAM,CAAC,SAAS,CAAC,GAAG,IAAA,4BAAY,EAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IAC1E,MAAM,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { BankinecoProgram, Environment, VaultDetails } from "@perena/bankineco-sdk";
|
|
2
|
+
export declare function updateYBTokenPrice(bankineco: BankinecoProgram, vaultDetails: VaultDetails, mintDecimals: number, reportingDiscount?: number): Promise<void>;
|
|
3
|
+
export declare function runUpdateYBTokenPrice(env: Environment, signerKeypairFp: string, rpcUrl: string, vaultDetails: VaultDetails, mintDecimals: number, reportingDiscount?: number): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=updateYBTokenPrice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateYBTokenPrice.d.ts","sourceRoot":"","sources":["../../src/oracle/updateYBTokenPrice.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,EAChB,WAAW,EAGX,YAAY,EACb,MAAM,uBAAuB,CAAC;AAG/B,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,MAAM,EACpB,iBAAiB,CAAC,EAAE,MAAM,iBAa3B;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,WAAW,EAChB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,MAAM,EACpB,iBAAiB,CAAC,EAAE,MAAM,iBAS3B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// await getPythPrices([new PublicKey(ONYC_MINT)]);
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.updateYBTokenPrice = updateYBTokenPrice;
|
|
5
|
+
exports.runUpdateYBTokenPrice = runUpdateYBTokenPrice;
|
|
6
|
+
const bankineco_sdk_1 = require("@perena/bankineco-sdk");
|
|
7
|
+
const utils_1 = require("../utils");
|
|
8
|
+
async function updateYBTokenPrice(bankineco, vaultDetails, mintDecimals, reportingDiscount) {
|
|
9
|
+
const impliedPrice = (await (0, bankineco_sdk_1.getPythPrices)([vaultDetails.yieldingMint]))[vaultDetails.yieldingMint.toString()];
|
|
10
|
+
await (0, utils_1.updateYieldingTokenPriceIfNeeded)(bankineco, vaultDetails, mintDecimals, impliedPrice, reportingDiscount);
|
|
11
|
+
}
|
|
12
|
+
async function runUpdateYBTokenPrice(env, signerKeypairFp, rpcUrl, vaultDetails, mintDecimals, reportingDiscount) {
|
|
13
|
+
const [bankineco] = (0, bankineco_sdk_1.getBankineco)(env, rpcUrl, undefined, signerKeypairFp);
|
|
14
|
+
await updateYBTokenPrice(bankineco, vaultDetails, mintDecimals, reportingDiscount);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=updateYBTokenPrice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateYBTokenPrice.js","sourceRoot":"","sources":["../../src/oracle/updateYBTokenPrice.ts"],"names":[],"mappings":";AAAA,mDAAmD;;AAWnD,gDAiBC;AAED,sDAeC;AA3CD,yDAM+B;AAC/B,oCAA4D;AAErD,KAAK,UAAU,kBAAkB,CACtC,SAA2B,EAC3B,YAA0B,EAC1B,YAAoB,EACpB,iBAA0B;IAE1B,MAAM,YAAY,GAAG,CAAC,MAAM,IAAA,6BAAa,EAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CACrE,YAAY,CAAC,YAAY,CAAC,QAAQ,EAAE,CACrC,CAAC;IAEF,MAAM,IAAA,wCAAgC,EACpC,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,iBAAiB,CAClB,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,qBAAqB,CACzC,GAAgB,EAChB,eAAuB,EACvB,MAAc,EACd,YAA0B,EAC1B,YAAoB,EACpB,iBAA0B;IAE1B,MAAM,CAAC,SAAS,CAAC,GAAG,IAAA,4BAAY,EAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IAC1E,MAAM,kBAAkB,CACtB,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,iBAAiB,CAClB,CAAC;AACJ,CAAC"}
|
package/dist/utils/oracle.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BankinecoProgram } from "@perena/bankineco-sdk";
|
|
1
|
+
import { BankinecoProgram, VaultDetails } from "@perena/bankineco-sdk";
|
|
2
2
|
import { PublicKey } from "@solana/web3.js";
|
|
3
3
|
import { BN } from "@coral-xyz/anchor";
|
|
4
4
|
export declare function getPendingDriftYield(bankineco: BankinecoProgram, vaultState: PublicKey): Promise<BN>;
|
|
@@ -9,7 +9,9 @@ export declare function getOracleStateInfo(bankineco: BankinecoProgram, vaultSta
|
|
|
9
9
|
currentOracleUiPrices: number[];
|
|
10
10
|
currentReportedUiYield: number;
|
|
11
11
|
currentReportedUiPrice: number;
|
|
12
|
-
|
|
12
|
+
lastUpdatedTsForOracle: BN;
|
|
13
|
+
lastFinalizedOracleUpdateTs: BN;
|
|
13
14
|
}>;
|
|
14
15
|
export declare function updateYieldInfoIfNeeded(bankineco: BankinecoProgram, vaultState: PublicKey, impliedYield: BN, reportingDiscount?: number, startAt?: Date): Promise<void>;
|
|
16
|
+
export declare function updateYieldingTokenPriceIfNeeded(bankineco: BankinecoProgram, vaultDetails: VaultDetails, yieldingMintDecimals: number, impliedPrice: number, reportingDiscount?: number): Promise<void>;
|
|
15
17
|
//# sourceMappingURL=oracle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../src/utils/oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,
|
|
1
|
+
{"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../src/utils/oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAUhB,YAAY,EAEb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAQvC,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,SAAS,eAsBtB;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,SAAS,EACrB,oBAAoB,EAAE,MAAM;;;;;;;;;GA4C7B;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,SAAS,EACrB,YAAY,EAAE,EAAE,EAChB,iBAAiB,GAAE,MAAU,EAC7B,OAAO,CAAC,EAAE,IAAI,iBAwFf;AAED,wBAAsB,gCAAgC,CACpD,SAAS,EAAE,gBAAgB,EAC3B,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,MAAM,EAC5B,YAAY,EAAE,MAAM,EACpB,iBAAiB,CAAC,EAAE,MAAM,iBA+D3B"}
|
package/dist/utils/oracle.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getPendingDriftYield = getPendingDriftYield;
|
|
4
4
|
exports.getOracleStateInfo = getOracleStateInfo;
|
|
5
5
|
exports.updateYieldInfoIfNeeded = updateYieldInfoIfNeeded;
|
|
6
|
+
exports.updateYieldingTokenPriceIfNeeded = updateYieldingTokenPriceIfNeeded;
|
|
6
7
|
const bankineco_sdk_1 = require("@perena/bankineco-sdk");
|
|
7
8
|
const web3_js_1 = require("@solana/web3.js");
|
|
8
9
|
const drift_1 = require("./drift");
|
|
@@ -31,7 +32,8 @@ async function getOracleStateInfo(bankineco, vaultState, yieldingMintDecimals) {
|
|
|
31
32
|
const currentOracleUiPrices = oracleInfo.data.oraclePrices.map((x) => (0, bankineco_sdk_1.toUiAmount)(x, yieldingMintDecimals));
|
|
32
33
|
const currentReportedUiYield = (0, bankineco_sdk_1.toUiAmount)(oracleInfo.data.oraclePendingYield[associatedOracleIdx], yieldingMintDecimals);
|
|
33
34
|
const currentReportedUiPrice = (0, bankineco_sdk_1.toUiAmount)(oracleInfo.data.oraclePrices[associatedOracleIdx], yieldingMintDecimals);
|
|
34
|
-
const
|
|
35
|
+
const lastUpdatedTsForOracle = oracleInfo.data.oracleLastTs[associatedOracleIdx];
|
|
36
|
+
const lastFinalizedOracleUpdateTs = oracleInfo.result.updateTs;
|
|
35
37
|
return {
|
|
36
38
|
signerIsRegisteredOracle,
|
|
37
39
|
associatedOracleIdx,
|
|
@@ -39,18 +41,19 @@ async function getOracleStateInfo(bankineco, vaultState, yieldingMintDecimals) {
|
|
|
39
41
|
currentOracleUiPrices,
|
|
40
42
|
currentReportedUiYield,
|
|
41
43
|
currentReportedUiPrice,
|
|
42
|
-
|
|
44
|
+
lastUpdatedTsForOracle,
|
|
45
|
+
lastFinalizedOracleUpdateTs,
|
|
43
46
|
};
|
|
44
47
|
}
|
|
45
48
|
async function updateYieldInfoIfNeeded(bankineco, vaultState, impliedYield, reportingDiscount = 0, startAt) {
|
|
46
|
-
const { associatedOracleIdx, signerIsRegisteredOracle, currentOracleUiYields, currentReportedUiYield,
|
|
49
|
+
const { associatedOracleIdx, signerIsRegisteredOracle, currentOracleUiYields, currentReportedUiYield, lastUpdatedTsForOracle, } = await getOracleStateInfo(bankineco, vaultState, bankineco_sdk_1.USDC_DECIMALS);
|
|
47
50
|
const vaultInfo = await bankineco.pg.account.vaultGenState.fetch(vaultState);
|
|
48
51
|
const yieldingMint = vaultInfo.config.yieldingTokenMint;
|
|
49
52
|
const yieldingMintDecimals = vaultInfo.config.yieldingMintDecimals;
|
|
50
53
|
impliedYield = impliedYield.muln(1 - reportingDiscount);
|
|
51
54
|
const impliedYieldWithoutPerformanceFee = (0, bankineco_sdk_1.yieldWithoutPerformanceFee)(impliedYield, vaultInfo.config.performanceFeeBps);
|
|
52
55
|
console.log(impliedYield.toNumber(), impliedYieldWithoutPerformanceFee.toNumber(), vaultInfo.config.performanceFeeBps);
|
|
53
|
-
const diffMs = Date.now() -
|
|
56
|
+
const diffMs = Date.now() - lastUpdatedTsForOracle.toNumber() * 1000;
|
|
54
57
|
const hoursSinceLastUpdate = diffMs / (1000 * 60 * 60);
|
|
55
58
|
const impliedUiYield = (0, bankineco_sdk_1.toUiAmount)(impliedYieldWithoutPerformanceFee, yieldingMintDecimals);
|
|
56
59
|
console.log("Current oracle index: ", associatedOracleIdx);
|
|
@@ -81,4 +84,31 @@ async function updateYieldInfoIfNeeded(bankineco, vaultState, impliedYield, repo
|
|
|
81
84
|
console.log("Difference in bps: ", diffBps);
|
|
82
85
|
}
|
|
83
86
|
}
|
|
87
|
+
async function updateYieldingTokenPriceIfNeeded(bankineco, vaultDetails, yieldingMintDecimals, impliedPrice, reportingDiscount) {
|
|
88
|
+
const vaultState = bankineco.vaultPDA(bankineco.bankPDA(bankineco_sdk_1.USD_STAR_BANK_INDEX), vaultDetails.yieldingMint, vaultDetails.yieldingTokenIndex);
|
|
89
|
+
const { associatedOracleIdx, signerIsRegisteredOracle, currentOracleUiPrices, currentReportedUiPrice, lastUpdatedTsForOracle, lastFinalizedOracleUpdateTs, } = await getOracleStateInfo(bankineco, vaultState, yieldingMintDecimals);
|
|
90
|
+
impliedPrice = impliedPrice * (1 - (reportingDiscount ?? 0));
|
|
91
|
+
const diffMs = Date.now() - lastUpdatedTsForOracle.toNumber() * 1000;
|
|
92
|
+
const hoursSinceLastUpdate = diffMs / (1000 * 60 * 60);
|
|
93
|
+
console.log("Current oracle index: ", associatedOracleIdx);
|
|
94
|
+
console.log("All reported prices: ", currentOracleUiPrices);
|
|
95
|
+
console.log("Current reported pricey: ", currentReportedUiPrice);
|
|
96
|
+
console.log("Hours since last update: ", hoursSinceLastUpdate);
|
|
97
|
+
console.log("Implied Seedpool price: ", impliedPrice);
|
|
98
|
+
const priceDiffBps = Math.floor(Math.abs((currentReportedUiPrice / impliedPrice - 1) * 100000));
|
|
99
|
+
if (priceDiffBps > 5 ||
|
|
100
|
+
hoursSinceLastUpdate >= 23 ||
|
|
101
|
+
lastFinalizedOracleUpdateTs.toNumber() === 0) {
|
|
102
|
+
console.log("Updating price to ", impliedPrice, " vs. a current price of ", currentReportedUiPrice);
|
|
103
|
+
if (signerIsRegisteredOracle) {
|
|
104
|
+
console.log("Sending price update...");
|
|
105
|
+
const sig = await (0, bankineco_sdk_1.signSendAndConfirm)(bankineco.connection, await bankineco.updateYieldingPriceGen(bankineco_sdk_1.USD_STAR_BANK_INDEX, new web3_js_1.PublicKey(bankineco_sdk_1.USD_STAR[bankineco.environment]), vaultState, bankineco.provider.publicKey, vaultDetails.yieldingMint, (0, bankineco_sdk_1.fromUiAmount)(impliedPrice, yieldingMintDecimals)), [bankineco.provider.wallet]);
|
|
106
|
+
console.log("Success broadcasting price, tx ", sig);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
console.log("Not updating price, contract price is up to date");
|
|
111
|
+
console.log("Difference in bps: ", priceDiffBps);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
84
114
|
//# sourceMappingURL=oracle.js.map
|
package/dist/utils/oracle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracle.js","sourceRoot":"","sources":["../../src/utils/oracle.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"oracle.js","sourceRoot":"","sources":["../../src/utils/oracle.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.
|
|
3
|
+
"version": "1.0.41",
|
|
4
4
|
"description": "Services infra for maintaining Bankineco program on Solana.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@coral-xyz/anchor": "=0.30.1",
|
|
28
28
|
"@drift-labs/sdk": "=2.137.0",
|
|
29
|
-
"@mrgnlabs/marginfi-client-v2": "^6.2
|
|
30
|
-
"@perena/bankineco-sdk": "=1.0.
|
|
29
|
+
"@mrgnlabs/marginfi-client-v2": "^6.3.2",
|
|
30
|
+
"@perena/bankineco-sdk": "=1.0.91",
|
|
31
31
|
"@perena/numeraire-sdk-new": "=1.1.1",
|
|
32
32
|
"@solana/spl-token": "=0.4.13",
|
|
33
33
|
"@solana/web3.js": "=1.98.4",
|