@perena/bankineco-sdk 1.0.16 → 1.0.18

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,2 +1,2 @@
1
- export * from "./updateSeedpoolLPPrice";
1
+ export * from "./updateSeedLPPrice";
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/oracle/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/oracle/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./updateSeedpoolLPPrice"), exports);
17
+ __exportStar(require("./updateSeedLPPrice"), exports);
18
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/oracle/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/oracle/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC"}
@@ -0,0 +1,3 @@
1
+ import { Environment } from "../../types";
2
+ export declare function runUpdateSeedLPPrice(env: Environment, signerKeypairFp: string, rpcUrl: string): Promise<void>;
3
+ //# sourceMappingURL=updateSeedLPPrice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateSeedLPPrice.d.ts","sourceRoot":"","sources":["../../../src/services/oracle/updateSeedLPPrice.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA4E1C,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,WAAW,EAChB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,iBAYf"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runUpdateSeedLPPrice = runUpdateSeedLPPrice;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ const bankinecoProgram_1 = require("../bankinecoProgram");
6
+ const utils_1 = require("../../utils");
7
+ const constants_1 = require("../../constants");
8
+ const anchor_1 = require("@coral-xyz/anchor");
9
+ async function updatePrice(bankineco) {
10
+ const vaultState = bankineco.vaultPDA(bankineco.bankPDA(constants_1.USD_STAR_BANK_INDEX), new web3_js_1.PublicKey(constants_1.OLD_USD_STAR), constants_1.OLD_USD_STAR_CONTRACT_INDEX);
11
+ const oracleState = bankineco.oraclePDA(vaultState);
12
+ const oracleInfo = await bankineco.pg.account.oracleGenState.fetch(oracleState);
13
+ const decimals = oracleInfo.config.yieldingMintDecimals;
14
+ let associatedOracleIdx = oracleInfo.data.oracleRegistry.findIndex((x) => bankineco.provider.wallet.publicKey.equals(x));
15
+ const signerIsRegisteredOracle = associatedOracleIdx !== -1;
16
+ if (!signerIsRegisteredOracle) {
17
+ // Just to test the logic afterwards, no TX will be sent
18
+ associatedOracleIdx = 0;
19
+ }
20
+ const currentOracleUiPrices = oracleInfo.data.oraclePrices.map((x) => (0, utils_1.toUiAmount)(x, decimals));
21
+ const currentReportedUiPrice = (0, utils_1.toUiAmount)(oracleInfo.data.oraclePrices[associatedOracleIdx], decimals);
22
+ const lastUpdatedTs = oracleInfo.data.oracleLastTs[associatedOracleIdx];
23
+ const impliedPrice = await (0, utils_1.getOldUsdStarPriceFromBurnSim)(bankineco.provider);
24
+ const diffMs = Date.now() - lastUpdatedTs.toNumber() * 1000;
25
+ const hoursSinceLastUpdate = diffMs / (1000 * 60 * 60);
26
+ console.log("Current oracle index: ", associatedOracleIdx);
27
+ console.log("All reported prices: ", currentOracleUiPrices);
28
+ console.log("Current reported price: ", currentReportedUiPrice);
29
+ console.log("Hours since last update: ", hoursSinceLastUpdate);
30
+ console.log("Implied Seedpool price: ", impliedPrice);
31
+ const priceDiffBps = Math.floor(Math.abs((currentReportedUiPrice / impliedPrice - 1) * 100000));
32
+ if (priceDiffBps > 5 || hoursSinceLastUpdate >= 23) {
33
+ console.log("Updating price to ", impliedPrice, " vs. a current price of ", currentReportedUiPrice);
34
+ console.log("Sending price update...");
35
+ if (signerIsRegisteredOracle) {
36
+ const sig = await (0, utils_1.signSendAndConfirm)(bankineco.connection, await bankineco.updateYieldingPriceGen(constants_1.USD_STAR_BANK_INDEX, vaultState, bankineco.provider.publicKey, new web3_js_1.PublicKey(constants_1.OLD_USD_STAR), (0, utils_1.fromUiAmount)(impliedPrice, 6)), [bankineco.provider.wallet]);
37
+ console.log("Success broadcasting price, tx ", sig);
38
+ }
39
+ }
40
+ else {
41
+ console.log("Not updating price, contract price is up to date");
42
+ console.log("Difference in bps: ", priceDiffBps);
43
+ }
44
+ }
45
+ async function runUpdateSeedLPPrice(env, signerKeypairFp, rpcUrl) {
46
+ const bankineco = new bankinecoProgram_1.BankinecoProgram(env, (0, utils_1.createAnchorProvider)(rpcUrl, new anchor_1.Wallet((0, utils_1.readKeypairFile)(signerKeypairFp))));
47
+ // Needed when using the numeraire-sdk
48
+ process.env.ANCHOR_PROVIDER_URL = rpcUrl;
49
+ process.env.ANCHOR_WALLET = (0, utils_1.resolveFp)(signerKeypairFp);
50
+ await updatePrice(bankineco);
51
+ }
52
+ //# sourceMappingURL=updateSeedLPPrice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateSeedLPPrice.js","sourceRoot":"","sources":["../../../src/services/oracle/updateSeedLPPrice.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { AnchorProvider, Wallet } from "@coral-xyz/anchor";
2
2
  import { Connection, Keypair, PublicKey } from "@solana/web3.js";
3
3
  export declare function createAnchorProvider(rpcUrl: string, wallet: Wallet): AnchorProvider;
4
+ export declare function resolveFp(keypairFp: string): string;
4
5
  export declare function readKeypairFile(keypairFp: string): Keypair;
5
6
  export declare function getLocalnetAnchorProvider(keypairFp?: string, keypair?: Keypair): AnchorProvider;
6
7
  export declare function fundWallet(wallet: PublicKey, connection: Connection, sol?: number): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"localUtils.d.ts","sourceRoot":"","sources":["../../src/utils/localUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EACL,UAAU,EACV,OAAO,EAEP,SAAS,EACV,MAAM,iBAAiB,CAAC;AAKzB,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAKlE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,WAYhD;AAED,wBAAgB,yBAAyB,CACvC,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,OAAO,kBAQlB;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,UAAU,EACtB,GAAG,CAAC,EAAE,MAAM,iBAOb"}
1
+ {"version":3,"file":"localUtils.d.ts","sourceRoot":"","sources":["../../src/utils/localUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EACL,UAAU,EACV,OAAO,EAEP,SAAS,EACV,MAAM,iBAAiB,CAAC;AAKzB,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAKlE;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,UAU1C;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,WAIhD;AAED,wBAAgB,yBAAyB,CACvC,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,OAAO,kBAQlB;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,UAAU,EACtB,GAAG,CAAC,EAAE,MAAM,iBAOb"}
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.createAnchorProvider = createAnchorProvider;
7
+ exports.resolveFp = resolveFp;
7
8
  exports.readKeypairFile = readKeypairFile;
8
9
  exports.getLocalnetAnchorProvider = getLocalnetAnchorProvider;
9
10
  exports.fundWallet = fundWallet;
@@ -18,14 +19,17 @@ function createAnchorProvider(rpcUrl, wallet) {
18
19
  commitment: "confirmed",
19
20
  });
20
21
  }
21
- function readKeypairFile(keypairFp) {
22
+ function resolveFp(keypairFp) {
22
23
  // Expand ~ to home dir
23
24
  if (keypairFp.startsWith("~")) {
24
25
  keypairFp = path_1.default.join(os_1.default.homedir(), keypairFp.slice(1));
25
26
  }
26
27
  // Resolve relative paths to absolute ones
27
28
  keypairFp = path_1.default.resolve(keypairFp);
28
- const keypairFile = fs_1.default.readFileSync(keypairFp, "utf-8");
29
+ return keypairFp;
30
+ }
31
+ function readKeypairFile(keypairFp) {
32
+ const keypairFile = fs_1.default.readFileSync(resolveFp(keypairFp), "utf-8");
29
33
  const keypairData = JSON.parse(keypairFile);
30
34
  return web3_js_1.Keypair.fromSecretKey(new Uint8Array(keypairData));
31
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"localUtils.js","sourceRoot":"","sources":["../../src/utils/localUtils.ts"],"names":[],"mappings":";;;;;AAWA,oDAKC;AAED,0CAYC;AAED,8DAUC;AAED,gCAUC;AAtDD,8CAA2D;AAC3D,6CAKyB;AACzB,4CAAoB;AACpB,4CAAoB;AACpB,gDAAwB;AAExB,SAAgB,oBAAoB,CAAC,MAAc,EAAE,MAAc;IACjE,MAAM,UAAU,GAAG,IAAI,oBAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvD,OAAO,IAAI,uBAAc,CAAC,UAAU,EAAE,MAAM,EAAE;QAC5C,UAAU,EAAE,WAAW;KACxB,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,eAAe,CAAC,SAAiB;IAC/C,uBAAuB;IACvB,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,0CAA0C;IAC1C,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEpC,MAAM,WAAW,GAAG,YAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5C,OAAO,iBAAO,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAgB,yBAAyB,CACvC,SAAkB,EAClB,OAAiB;IAEjB,MAAM,MAAM,GAAG,SAAS;QACtB,CAAC,CAAC,IAAI,eAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,IAAI,eAAM,CAAC,OAAO,CAAC;YACrB,CAAC,CAAC,IAAI,eAAM,CAAC,iBAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnC,OAAO,oBAAoB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC;AAEM,KAAK,UAAU,UAAU,CAC9B,MAAiB,EACjB,UAAsB,EACtB,GAAY;IAEZ,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,cAAc,CAC/C,MAAM,EACN,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,0BAAgB,CAC9B,CAAC;IACF,MAAM,UAAU,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"localUtils.js","sourceRoot":"","sources":["../../src/utils/localUtils.ts"],"names":[],"mappings":";;;;;AAWA,oDAKC;AAED,8BAUC;AAED,0CAIC;AAED,8DAUC;AAED,gCAUC;AA1DD,8CAA2D;AAC3D,6CAKyB;AACzB,4CAAoB;AACpB,4CAAoB;AACpB,gDAAwB;AAExB,SAAgB,oBAAoB,CAAC,MAAc,EAAE,MAAc;IACjE,MAAM,UAAU,GAAG,IAAI,oBAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvD,OAAO,IAAI,uBAAc,CAAC,UAAU,EAAE,MAAM,EAAE;QAC5C,UAAU,EAAE,WAAW;KACxB,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,SAAS,CAAC,SAAiB;IACzC,uBAAuB;IACvB,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,0CAA0C;IAC1C,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEpC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,eAAe,CAAC,SAAiB;IAC/C,MAAM,WAAW,GAAG,YAAE,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5C,OAAO,iBAAO,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAgB,yBAAyB,CACvC,SAAkB,EAClB,OAAiB;IAEjB,MAAM,MAAM,GAAG,SAAS;QACtB,CAAC,CAAC,IAAI,eAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,IAAI,eAAM,CAAC,OAAO,CAAC;YACrB,CAAC,CAAC,IAAI,eAAM,CAAC,iBAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnC,OAAO,oBAAoB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC;AAEM,KAAK,UAAU,UAAU,CAC9B,MAAiB,EACjB,UAAsB,EACtB,GAAY;IAEZ,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,cAAc,CAC/C,MAAM,EACN,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,0BAAgB,CAC9B,CAAC;IACF,MAAM,UAAU,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAC9D,CAAC"}
@@ -1,10 +1,7 @@
1
- import { Connection, PublicKey } from "@solana/web3.js";
1
+ import { PublicKey } from "@solana/web3.js";
2
2
  import { BankinecoProgram } from "../services";
3
+ import { AnchorProvider } from "@coral-xyz/anchor";
3
4
  export declare function getLatestBankMintUiPrice(bankineco: BankinecoProgram, bankIndex: number): Promise<number>;
4
5
  export declare function getLatestYieldingPrice(bankineco: BankinecoProgram, oracle: PublicKey): Promise<number>;
5
- export declare function getOraclePriceDetails(bankineco: BankinecoProgram, oracleState: PublicKey): Promise<{
6
- currentReportedUiPrice: number;
7
- currentOracleUiPrices: number[];
8
- }>;
9
- export declare function getOldUsdStarPriceFromBurnSim(connection: Connection): Promise<number>;
6
+ export declare function getOldUsdStarPriceFromBurnSim(provider: AnchorProvider): Promise<number>;
10
7
  //# sourceMappingURL=priceUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"priceUtils.d.ts","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAS/C,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,MAAM,mBAOlB;AAED,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,SAAS,mBAUlB;AAED,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,gBAAgB,EAC3B,WAAW,EAAE,SAAS;;;GAgBvB;AAED,wBAAsB,6BAA6B,CAAC,UAAU,EAAE,UAAU,mBA6CzE"}
1
+ {"version":3,"file":"priceUtils.d.ts","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQ/C,OAAO,EAAE,cAAc,EAAe,MAAM,mBAAmB,CAAC;AAEhE,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,MAAM,mBAOlB;AAED,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,SAAS,mBAUlB;AAED,wBAAsB,6BAA6B,CAAC,QAAQ,EAAE,cAAc,mBAkD3E"}
@@ -2,11 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getLatestBankMintUiPrice = getLatestBankMintUiPrice;
4
4
  exports.getLatestYieldingPrice = getLatestYieldingPrice;
5
- exports.getOraclePriceDetails = getOraclePriceDetails;
6
5
  exports.getOldUsdStarPriceFromBurnSim = getOldUsdStarPriceFromBurnSim;
7
6
  const web3_js_1 = require("@solana/web3.js");
8
7
  const mathUtils_1 = require("./mathUtils");
9
8
  const numeraire_sdk_1 = require("@perena/numeraire-sdk");
9
+ const anchor_1 = require("@coral-xyz/anchor");
10
10
  async function getLatestBankMintUiPrice(bankineco, bankIndex) {
11
11
  const bankInfo = await bankineco.pg.account.bankState.fetch(bankineco.bankPDA(bankIndex), "confirmed");
12
12
  return (0, mathUtils_1.toUiAmount)(bankInfo.mint.price, bankInfo.mint.decimals);
@@ -15,17 +15,10 @@ async function getLatestYieldingPrice(bankineco, oracle) {
15
15
  const oracleInfo = await bankineco.pg.account.oracleGenState.fetch(oracle, "confirmed");
16
16
  return (0, mathUtils_1.toUiAmount)(oracleInfo.result.yieldingTokenPrice, oracleInfo.config.yieldingMintDecimals);
17
17
  }
18
- async function getOraclePriceDetails(bankineco, oracleState) {
19
- const oracleInfo = await bankineco.pg.account.oracleGenState.fetch(oracleState);
20
- const decimals = oracleInfo.config.yieldingMintDecimals;
21
- return {
22
- currentReportedUiPrice: (0, mathUtils_1.toUiAmount)(oracleInfo.result.yieldingTokenPrice, decimals),
23
- currentOracleUiPrices: oracleInfo.data.oraclePrices.map((x) => (0, mathUtils_1.toUiAmount)(x, decimals)),
24
- };
25
- }
26
- async function getOldUsdStarPriceFromBurnSim(connection) {
18
+ async function getOldUsdStarPriceFromBurnSim(provider) {
27
19
  // Intialize numeraire sdk
28
20
  (0, numeraire_sdk_1.init)({ applyD: false });
21
+ (0, anchor_1.setProvider)(provider);
29
22
  const decimals = 6;
30
23
  const d = 10 ** decimals;
31
24
  // Simulate the burn of 1 Seedpool LP
@@ -34,14 +27,15 @@ async function getOldUsdStarPriceFromBurnSim(connection) {
34
27
  lpTokenRedeemAmount: 1 * d,
35
28
  out: 1,
36
29
  });
37
- let simulated_burn = await call.simulate(connection);
38
- // Retreive the output amounts in PYUSD, USDT and USDC
39
- let burningTransfers1 = simulated_burn.events[0].data.xReserveDeltas;
30
+ let simulatedBurn = await call.simulate({ commitment: "confirmed" });
31
+ console.log("Simulated burn...");
32
+ // Retrieve the output amounts in PYUSD, USDT and USDC
33
+ let burningTransfers1 = simulatedBurn.events[0].data.xReserveDeltas;
40
34
  let amountUsdc = Number(burningTransfers1[0]) / 1000000;
41
35
  let amountUsdt = Number(burningTransfers1[1]) / 1000000;
42
36
  let amountPyusd = Number(burningTransfers1[2]) / 1000000;
43
37
  // Calculate the burned amount of USDStar
44
- let burnedUsdstar = Number(simulated_burn.events[0].data.lpTokenRedeemAmount) / 1000000;
38
+ let burnedUsdstar = Number(simulatedBurn.events[0].data.lpTokenRedeemAmount) / 1000000;
45
39
  // Deduct the onchain USDT price from the USDC-USDT price practiced on Numeraire
46
40
  // We're assuming the numeraire local USDC-USDT price is in line with the rest of the market
47
41
  // This is an important assumption but it seams valid to me because otherwise the Numeraire price would be arbitraged
@@ -53,7 +47,9 @@ async function getOldUsdStarPriceFromBurnSim(connection) {
53
47
  exactAmountIn: 100000,
54
48
  minAmountOut: 0,
55
49
  });
56
- let simulatedUsdtSell = await callSwap1.call.simulate(connection);
50
+ let simulatedUsdtSell = await callSwap1.call.simulate({
51
+ commitment: "confirmed",
52
+ });
57
53
  let spentUsdt = simulatedUsdtSell.events[0].data.amountIn;
58
54
  let gatheredUsdc = simulatedUsdtSell.events[0].data.amountOut;
59
55
  let impliedUsdtPrice = gatheredUsdc / spentUsdt;
@@ -1 +1 @@
1
- {"version":3,"file":"priceUtils.js","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"priceUtils.js","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perena/bankineco-sdk",
3
- "version": "1.0.16",
3
+ "version": "1.0.18",
4
4
  "description": "SDK for interacting with Bankineco program on Solana.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -42,6 +42,9 @@
42
42
  "ts-mocha": "^10.0.0",
43
43
  "typescript": "^5.6.3"
44
44
  },
45
+ "overrides": {
46
+ "node-fetch": "2.6.11"
47
+ },
45
48
  "publishConfig": {
46
49
  "access": "public"
47
50
  }
@@ -1,3 +0,0 @@
1
- import { Environment } from "../../types";
2
- export declare function runUpdateSeedpoolLPPrice(env: Environment, signerKeypairFp: string, rpcUrl: string): Promise<void>;
3
- //# sourceMappingURL=updateSeedpoolLPPrice.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"updateSeedpoolLPPrice.d.ts","sourceRoot":"","sources":["../../../src/services/oracle/updateSeedpoolLPPrice.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAmD1C,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,WAAW,EAChB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,iBAaf"}
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runUpdateSeedpoolLPPrice = runUpdateSeedpoolLPPrice;
4
- const web3_js_1 = require("@solana/web3.js");
5
- const bankinecoProgram_1 = require("../bankinecoProgram");
6
- const utils_1 = require("../../utils");
7
- const constants_1 = require("../../constants");
8
- const anchor_1 = require("@coral-xyz/anchor");
9
- async function updatePrice(bankineco) {
10
- const vaultState = bankineco.vaultPDA(bankineco.bankPDA(constants_1.USD_STAR_BANK_INDEX), new web3_js_1.PublicKey(constants_1.OLD_USD_STAR), constants_1.OLD_USD_STAR_CONTRACT_INDEX);
11
- const oracleState = bankineco.oraclePDA(vaultState);
12
- let impliedPrice = await (0, utils_1.getOldUsdStarPriceFromBurnSim)(bankineco.connection);
13
- console.log("Implied Seedpool price", impliedPrice);
14
- const oracleInfo = await (0, utils_1.getOraclePriceDetails)(bankineco, oracleState);
15
- console.log("All reported prices: ", oracleInfo.currentOracleUiPrices);
16
- console.log("Current reported price: ", oracleInfo.currentReportedUiPrice);
17
- const priceDiffBps = Math.floor(Math.abs((oracleInfo.currentReportedUiPrice / impliedPrice - 1) * 100000));
18
- if (priceDiffBps > 5) {
19
- console.log("Updating price to ", impliedPrice, " vs. a current price of ", oracleInfo.currentReportedUiPrice);
20
- console.log("Sending price update...");
21
- const sig = await (0, utils_1.signSendAndConfirm)(bankineco.connection, await bankineco.updateYieldingPriceGen(constants_1.USD_STAR_BANK_INDEX, vaultState, bankineco.provider.publicKey, new web3_js_1.PublicKey(constants_1.OLD_USD_STAR), (0, utils_1.fromUiAmount)(impliedPrice, 6)), [bankineco.provider.wallet]);
22
- console.log("Success broadcasting price, tx ", sig);
23
- }
24
- else {
25
- console.log("Not updating price, contract price is up to date");
26
- console.log("Difference in bps: ", priceDiffBps);
27
- }
28
- }
29
- async function runUpdateSeedpoolLPPrice(env, signerKeypairFp, rpcUrl) {
30
- const bankineco = new bankinecoProgram_1.BankinecoProgram(env, (0, utils_1.createAnchorProvider)(rpcUrl, new anchor_1.Wallet((0, utils_1.readKeypairFile)(signerKeypairFp))));
31
- while (true) {
32
- console.log("Sleeping for 10s...");
33
- await new Promise((resolve) => setTimeout(resolve, 10000));
34
- await updatePrice(bankineco);
35
- }
36
- }
37
- //# sourceMappingURL=updateSeedpoolLPPrice.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"updateSeedpoolLPPrice.js","sourceRoot":"","sources":["../../../src/services/oracle/updateSeedpoolLPPrice.ts"],"names":[],"mappings":";;AAkEA,4DAgBC;AAlFD,6CAA4C;AAC5C,0DAAuD;AACvD,uCAOqB;AACrB,+CAIyB;AAEzB,8CAA2C;AAE3C,KAAK,UAAU,WAAW,CAAC,SAA2B;IACpD,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CACnC,SAAS,CAAC,OAAO,CAAC,+BAAmB,CAAC,EACtC,IAAI,mBAAS,CAAC,wBAAY,CAAC,EAC3B,uCAA2B,CAC5B,CAAC;IACF,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,YAAY,GAAG,MAAM,IAAA,qCAA6B,EAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAE7E,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;IAEpD,MAAM,UAAU,GAAG,MAAM,IAAA,6BAAqB,EAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAEvE,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,UAAU,CAAC,qBAAqB,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAE3E,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,sBAAsB,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAC1E,CAAC;IACF,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CACT,oBAAoB,EACpB,YAAY,EACZ,0BAA0B,EAC1B,UAAU,CAAC,sBAAsB,CAClC,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAEvC,MAAM,GAAG,GAAG,MAAM,IAAA,0BAAkB,EAClC,SAAS,CAAC,UAAU,EACpB,MAAM,SAAS,CAAC,sBAAsB,CACpC,+BAAmB,EACnB,UAAU,EACV,SAAS,CAAC,QAAQ,CAAC,SAAS,EAC5B,IAAI,mBAAS,CAAC,wBAAY,CAAC,EAC3B,IAAA,oBAAY,EAAC,YAAY,EAAE,CAAC,CAAC,CAC9B,EACD,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAC5B,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,wBAAwB,CAC5C,GAAgB,EAChB,eAAuB,EACvB,MAAc;IAEd,MAAM,SAAS,GAAG,IAAI,mCAAgB,CACpC,GAAG,EACH,IAAA,4BAAoB,EAAC,MAAM,EAAE,IAAI,eAAM,CAAC,IAAA,uBAAe,EAAC,eAAe,CAAC,CAAC,CAAC,CAC3E,CAAC;IAEF,OAAO,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAE3D,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC"}