@perena/bankineco-sdk 1.0.28 → 1.0.30

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":"updateSeedLPPrice.d.ts","sourceRoot":"","sources":["../../../src/services/oracle/updateSeedLPPrice.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAkF1C,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,WAAW,EAChB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,iBAQf"}
1
+ {"version":3,"file":"updateSeedLPPrice.d.ts","sourceRoot":"","sources":["../../../src/services/oracle/updateSeedLPPrice.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAmF1C,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,WAAW,EAChB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,iBAQf"}
@@ -6,6 +6,7 @@ const bankinecoProgram_1 = require("../bankinecoProgram");
6
6
  const utils_1 = require("../../utils");
7
7
  const constants_1 = require("../../constants");
8
8
  const anchor_1 = require("@coral-xyz/anchor");
9
+ const oldUtils_1 = require("../../utils/oldUtils");
9
10
  async function updatePrice(bankineco, signerKeypairFp) {
10
11
  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
12
  const oracleState = bankineco.oraclePDA(vaultState);
@@ -20,7 +21,7 @@ async function updatePrice(bankineco, signerKeypairFp) {
20
21
  const currentOracleUiPrices = oracleInfo.data.oraclePrices.map((x) => (0, utils_1.toUiAmount)(x, decimals));
21
22
  const currentReportedUiPrice = (0, utils_1.toUiAmount)(oracleInfo.data.oraclePrices[associatedOracleIdx], decimals);
22
23
  const lastUpdatedTs = oracleInfo.data.oracleLastTs[associatedOracleIdx];
23
- const impliedPrice = await (0, utils_1.getOldUsdStarPriceFromBurnSim)(bankineco.provider, signerKeypairFp);
24
+ const impliedPrice = await (0, oldUtils_1.getOldUsdStarPriceFromBurnSim)(bankineco.provider, signerKeypairFp);
24
25
  const diffMs = Date.now() - lastUpdatedTs.toNumber() * 1000;
25
26
  const hoursSinceLastUpdate = diffMs / (1000 * 60 * 60);
26
27
  console.log("Current oracle index: ", associatedOracleIdx);
@@ -1 +1 @@
1
- {"version":3,"file":"updateSeedLPPrice.js","sourceRoot":"","sources":["../../../src/services/oracle/updateSeedLPPrice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"updateSeedLPPrice.js","sourceRoot":"","sources":["../../../src/services/oracle/updateSeedLPPrice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { AnchorProvider } from "@coral-xyz/anchor";
2
+ export declare function getOldUsdStarPriceFromBurnSim(provider: AnchorProvider, signerKeypairFp: string): Promise<number>;
3
+ //# sourceMappingURL=oldUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oldUtils.d.ts","sourceRoot":"","sources":["../../src/utils/oldUtils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAuB,MAAM,mBAAmB,CAAC;AAIxE,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,cAAc,EACxB,eAAe,EAAE,MAAM,mBAuDxB"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getOldUsdStarPriceFromBurnSim = getOldUsdStarPriceFromBurnSim;
4
+ const numeraire_sdk_1 = require("@perena/numeraire-sdk");
5
+ const anchor_1 = require("@coral-xyz/anchor");
6
+ const localUtils_1 = require("./localUtils");
7
+ const web3_js_1 = require("@solana/web3.js");
8
+ async function getOldUsdStarPriceFromBurnSim(provider, signerKeypairFp) {
9
+ // Needed when using the numeraire-sdk
10
+ process.env.ANCHOR_PROVIDER_URL = provider.connection.rpcEndpoint;
11
+ process.env.ANCHOR_WALLET = (0, localUtils_1.resolveFp)(signerKeypairFp);
12
+ // Intialize numeraire sdk
13
+ (0, numeraire_sdk_1.init)({ applyD: false });
14
+ (0, anchor_1.setProvider)(provider);
15
+ const decimals = 6;
16
+ const d = 10 ** decimals;
17
+ // Simulate the burn of 1 Seedpool LP
18
+ const { call } = await (0, numeraire_sdk_1.removeLiquidity)({
19
+ pool: new web3_js_1.PublicKey(numeraire_sdk_1.PRODUCTION_POOLS.tripool),
20
+ lpTokenRedeemAmount: 1 * d,
21
+ out: 1,
22
+ });
23
+ let simulatedBurn = await call.simulate({ commitment: "confirmed" });
24
+ console.log("Simulated burn...");
25
+ // Retrieve the output amounts in PYUSD, USDT and USDC
26
+ let burningTransfers1 = simulatedBurn.events[0].data.xReserveDeltas;
27
+ let amountUsdc = Number(burningTransfers1[0]) / 1000000;
28
+ let amountUsdt = Number(burningTransfers1[1]) / 1000000;
29
+ let amountPyusd = Number(burningTransfers1[2]) / 1000000;
30
+ // Calculate the burned amount of USDStar
31
+ let burnedUsdstar = Number(simulatedBurn.events[0].data.lpTokenRedeemAmount) / 1000000;
32
+ // Deduct the onchain USDT price from the USDC-USDT price practiced on Numeraire
33
+ // We're assuming the numeraire local USDC-USDT price is in line with the rest of the market
34
+ // This is an important assumption but it seams valid to me because otherwise the Numeraire price would be arbitraged
35
+ // We're also not considering slippage here
36
+ const callSwap1 = await (0, numeraire_sdk_1.swapExactIn)({
37
+ pool: new web3_js_1.PublicKey(numeraire_sdk_1.PRODUCTION_POOLS.tripool),
38
+ in: 1,
39
+ out: 0,
40
+ exactAmountIn: 100000,
41
+ minAmountOut: 0,
42
+ });
43
+ let simulatedUsdtSell = await callSwap1.call.simulate({
44
+ commitment: "confirmed",
45
+ });
46
+ let spentUsdt = simulatedUsdtSell.events[0].data.amountIn;
47
+ let gatheredUsdc = simulatedUsdtSell.events[0].data.amountOut;
48
+ let impliedUsdtPrice = gatheredUsdc / spentUsdt;
49
+ // With the below formula, we're assuming PYUSD will always be 1 USDC
50
+ // The implied price is also in USDC ie we get a price of 1 Seedpool = X USDC (and not 1 Seedpool = W USD)
51
+ let impliedPrice = (amountUsdc + amountUsdt * impliedUsdtPrice + amountPyusd) / burnedUsdstar;
52
+ return impliedPrice;
53
+ }
54
+ //# sourceMappingURL=oldUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oldUtils.js","sourceRoot":"","sources":["../../src/utils/oldUtils.ts"],"names":[],"mappings":";;AAUA,sEAyDC;AAnED,yDAK+B;AAC/B,8CAAwE;AACxE,6CAAyC;AACzC,6CAA4C;AAErC,KAAK,UAAU,6BAA6B,CACjD,QAAwB,EACxB,eAAuB;IAEvB,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,IAAA,sBAAS,EAAC,eAAe,CAAC,CAAC;IAEvD,0BAA0B;IAC1B,IAAA,oBAAI,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACxB,IAAA,oBAAW,EAAC,QAAQ,CAAC,CAAC;IAEtB,MAAM,QAAQ,GAAG,CAAC,CAAC;IACnB,MAAM,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC;IACzB,qCAAqC;IACrC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,+BAAe,EAAC;QACrC,IAAI,EAAE,IAAI,mBAAS,CAAC,gCAAgB,CAAC,OAAO,CAAC;QAC7C,mBAAmB,EAAE,CAAC,GAAG,CAAC;QAC1B,GAAG,EAAE,CAAC;KACP,CAAC,CAAC;IACH,IAAI,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjC,sDAAsD;IACtD,IAAI,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;IAEpE,IAAI,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAS,CAAC;IAC1D,IAAI,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAS,CAAC;IAC1D,IAAI,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAS,CAAC;IAC3D,yCAAyC;IACzC,IAAI,aAAa,GACf,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC;IAErE,gFAAgF;IAChF,4FAA4F;IAC5F,qHAAqH;IACrH,2CAA2C;IAC3C,MAAM,SAAS,GAAG,MAAM,IAAA,2BAAW,EAAC;QAClC,IAAI,EAAE,IAAI,mBAAS,CAAC,gCAAgB,CAAC,OAAO,CAAC;QAC7C,EAAE,EAAE,CAAC;QACL,GAAG,EAAE,CAAC;QACN,aAAa,EAAE,MAAO;QACtB,YAAY,EAAE,CAAC;KAChB,CAAC,CAAC;IAEH,IAAI,iBAAiB,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpD,UAAU,EAAE,WAAW;KACxB,CAAC,CAAC;IACH,IAAI,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC1D,IAAI,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IAC9D,IAAI,gBAAgB,GAAG,YAAY,GAAG,SAAS,CAAC;IAEhD,qEAAqE;IACrE,0GAA0G;IAC1G,IAAI,YAAY,GACd,CAAC,UAAU,GAAG,UAAU,GAAG,gBAAgB,GAAG,WAAW,CAAC,GAAG,aAAa,CAAC;IAE7E,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -1,9 +1,7 @@
1
1
  import { PublicKey } from "@solana/web3.js";
2
2
  import { BankinecoProgram } from "../services";
3
- import { AnchorProvider } from "@coral-xyz/anchor";
4
3
  import { Environment } from "../types";
5
4
  export declare function getLatestBankMintUiPrice(bankineco: BankinecoProgram, bankIndex: number): Promise<number>;
6
5
  export declare function getLatestUsdStarUiPrice(rpcUrl: string, env?: Environment): Promise<number>;
7
6
  export declare function getLatestYieldingPrice(bankineco: BankinecoProgram, oracle: PublicKey): Promise<number>;
8
- export declare function getOldUsdStarPriceFromBurnSim(provider: AnchorProvider, signerKeypairFp: string): Promise<number>;
9
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,EAAuB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQ/C,OAAO,EAAE,cAAc,EAAuB,MAAM,mBAAmB,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,MAAM,mBAOlB;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,WAAoB,mBAW1B;AAED,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,SAAS,mBAUlB;AAED,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,cAAc,EACxB,eAAe,EAAE,MAAM,mBAuDxB"}
1
+ {"version":3,"file":"priceUtils.d.ts","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAI/C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,MAAM,mBAOlB;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,WAAoB,mBAW1B;AAED,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,SAAS,mBAUlB"}
@@ -3,13 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getLatestBankMintUiPrice = getLatestBankMintUiPrice;
4
4
  exports.getLatestUsdStarUiPrice = getLatestUsdStarUiPrice;
5
5
  exports.getLatestYieldingPrice = getLatestYieldingPrice;
6
- exports.getOldUsdStarPriceFromBurnSim = getOldUsdStarPriceFromBurnSim;
7
6
  const web3_js_1 = require("@solana/web3.js");
8
7
  const services_1 = require("../services");
9
8
  const mathUtils_1 = require("./mathUtils");
10
- const numeraire_sdk_1 = require("@perena/numeraire-sdk");
11
9
  const anchor_1 = require("@coral-xyz/anchor");
12
- const localUtils_1 = require("./localUtils");
13
10
  const constants_1 = require("../constants");
14
11
  async function getLatestBankMintUiPrice(bankineco, bankIndex) {
15
12
  const bankInfo = await bankineco.pg.account.bankState.fetch(bankineco.bankPDA(bankIndex), "confirmed");
@@ -23,50 +20,4 @@ async function getLatestYieldingPrice(bankineco, oracle) {
23
20
  const oracleInfo = await bankineco.pg.account.oracleGenState.fetch(oracle, "confirmed");
24
21
  return (0, mathUtils_1.toUiAmount)(oracleInfo.result.yieldingTokenPrice, oracleInfo.config.yieldingMintDecimals);
25
22
  }
26
- async function getOldUsdStarPriceFromBurnSim(provider, signerKeypairFp) {
27
- // Needed when using the numeraire-sdk
28
- process.env.ANCHOR_PROVIDER_URL = provider.connection.rpcEndpoint;
29
- process.env.ANCHOR_WALLET = (0, localUtils_1.resolveFp)(signerKeypairFp);
30
- // Intialize numeraire sdk
31
- (0, numeraire_sdk_1.init)({ applyD: false });
32
- (0, anchor_1.setProvider)(provider);
33
- const decimals = 6;
34
- const d = 10 ** decimals;
35
- // Simulate the burn of 1 Seedpool LP
36
- const { call } = await (0, numeraire_sdk_1.removeLiquidity)({
37
- pool: new web3_js_1.PublicKey(numeraire_sdk_1.PRODUCTION_POOLS.tripool),
38
- lpTokenRedeemAmount: 1 * d,
39
- out: 1,
40
- });
41
- let simulatedBurn = await call.simulate({ commitment: "confirmed" });
42
- console.log("Simulated burn...");
43
- // Retrieve the output amounts in PYUSD, USDT and USDC
44
- let burningTransfers1 = simulatedBurn.events[0].data.xReserveDeltas;
45
- let amountUsdc = Number(burningTransfers1[0]) / 1000000;
46
- let amountUsdt = Number(burningTransfers1[1]) / 1000000;
47
- let amountPyusd = Number(burningTransfers1[2]) / 1000000;
48
- // Calculate the burned amount of USDStar
49
- let burnedUsdstar = Number(simulatedBurn.events[0].data.lpTokenRedeemAmount) / 1000000;
50
- // Deduct the onchain USDT price from the USDC-USDT price practiced on Numeraire
51
- // We're assuming the numeraire local USDC-USDT price is in line with the rest of the market
52
- // This is an important assumption but it seams valid to me because otherwise the Numeraire price would be arbitraged
53
- // We're also not considering slippage here
54
- const callSwap1 = await (0, numeraire_sdk_1.swapExactIn)({
55
- pool: new web3_js_1.PublicKey(numeraire_sdk_1.PRODUCTION_POOLS.tripool),
56
- in: 1,
57
- out: 0,
58
- exactAmountIn: 100000,
59
- minAmountOut: 0,
60
- });
61
- let simulatedUsdtSell = await callSwap1.call.simulate({
62
- commitment: "confirmed",
63
- });
64
- let spentUsdt = simulatedUsdtSell.events[0].data.amountIn;
65
- let gatheredUsdc = simulatedUsdtSell.events[0].data.amountOut;
66
- let impliedUsdtPrice = gatheredUsdc / spentUsdt;
67
- // With the below formula, we're assuming PYUSD will always be 1 USDC
68
- // The implied price is also in USDC ie we get a price of 1 Seedpool = X USDC (and not 1 Seedpool = W USD)
69
- let impliedPrice = (amountUsdc + amountUsdt * impliedUsdtPrice + amountPyusd) / burnedUsdstar;
70
- return impliedPrice;
71
- }
72
23
  //# sourceMappingURL=priceUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"priceUtils.js","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":";;AAcA,4DASC;AAED,0DAaC;AAED,wDAYC;AAED,sEAyDC;AA/GD,6CAAiE;AACjE,0CAA+C;AAC/C,2CAAyC;AACzC,yDAK+B;AAC/B,8CAAwE;AACxE,6CAAyC;AAEzC,4CAAmD;AAE5C,KAAK,UAAU,wBAAwB,CAC5C,SAA2B,EAC3B,SAAiB;IAEjB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CACzD,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAC5B,WAAW,CACZ,CAAC;IACF,OAAO,IAAA,sBAAU,EAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjE,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAC3C,MAAc,EACd,MAAmB,MAAM;IAEzB,MAAM,SAAS,GAAG,IAAI,2BAAgB,CACpC,GAAG,EACH,IAAI,uBAAc,CAChB,IAAI,oBAAU,CAAC,MAAM,EAAE,WAAW,CAAC,EACnC,IAAI,eAAM,CAAC,iBAAO,CAAC,QAAQ,EAAE,CAAC,EAC9B,EAAE,UAAU,EAAE,WAAW,EAAE,CAC5B,CACF,CAAC;IACF,OAAO,MAAM,wBAAwB,CAAC,SAAS,EAAE,+BAAmB,CAAC,CAAC;AACxE,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAC1C,SAA2B,EAC3B,MAAiB;IAEjB,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAChE,MAAM,EACN,WAAW,CACZ,CAAC;IACF,OAAO,IAAA,sBAAU,EACf,UAAU,CAAC,MAAM,CAAC,kBAAkB,EACpC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CACvC,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,6BAA6B,CACjD,QAAwB,EACxB,eAAuB;IAEvB,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,IAAA,sBAAS,EAAC,eAAe,CAAC,CAAC;IAEvD,0BAA0B;IAC1B,IAAA,oBAAI,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACxB,IAAA,oBAAW,EAAC,QAAQ,CAAC,CAAC;IAEtB,MAAM,QAAQ,GAAG,CAAC,CAAC;IACnB,MAAM,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC;IACzB,qCAAqC;IACrC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,+BAAe,EAAC;QACrC,IAAI,EAAE,IAAI,mBAAS,CAAC,gCAAgB,CAAC,OAAO,CAAC;QAC7C,mBAAmB,EAAE,CAAC,GAAG,CAAC;QAC1B,GAAG,EAAE,CAAC;KACP,CAAC,CAAC;IACH,IAAI,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjC,sDAAsD;IACtD,IAAI,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;IAEpE,IAAI,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAS,CAAC;IAC1D,IAAI,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAS,CAAC;IAC1D,IAAI,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAS,CAAC;IAC3D,yCAAyC;IACzC,IAAI,aAAa,GACf,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC;IAErE,gFAAgF;IAChF,4FAA4F;IAC5F,qHAAqH;IACrH,2CAA2C;IAC3C,MAAM,SAAS,GAAG,MAAM,IAAA,2BAAW,EAAC;QAClC,IAAI,EAAE,IAAI,mBAAS,CAAC,gCAAgB,CAAC,OAAO,CAAC;QAC7C,EAAE,EAAE,CAAC;QACL,GAAG,EAAE,CAAC;QACN,aAAa,EAAE,MAAO;QACtB,YAAY,EAAE,CAAC;KAChB,CAAC,CAAC;IAEH,IAAI,iBAAiB,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpD,UAAU,EAAE,WAAW;KACxB,CAAC,CAAC;IACH,IAAI,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC1D,IAAI,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IAC9D,IAAI,gBAAgB,GAAG,YAAY,GAAG,SAAS,CAAC;IAEhD,qEAAqE;IACrE,0GAA0G;IAC1G,IAAI,YAAY,GACd,CAAC,UAAU,GAAG,UAAU,GAAG,gBAAgB,GAAG,WAAW,CAAC,GAAG,aAAa,CAAC;IAE7E,OAAO,YAAY,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"priceUtils.js","sourceRoot":"","sources":["../../src/utils/priceUtils.ts"],"names":[],"mappings":";;AAQA,4DASC;AAED,0DAaC;AAED,wDAYC;AA9CD,6CAAiE;AACjE,0CAA+C;AAC/C,2CAAyC;AAEzC,8CAA2D;AAE3D,4CAAmD;AAE5C,KAAK,UAAU,wBAAwB,CAC5C,SAA2B,EAC3B,SAAiB;IAEjB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CACzD,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAC5B,WAAW,CACZ,CAAC;IACF,OAAO,IAAA,sBAAU,EAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjE,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAC3C,MAAc,EACd,MAAmB,MAAM;IAEzB,MAAM,SAAS,GAAG,IAAI,2BAAgB,CACpC,GAAG,EACH,IAAI,uBAAc,CAChB,IAAI,oBAAU,CAAC,MAAM,EAAE,WAAW,CAAC,EACnC,IAAI,eAAM,CAAC,iBAAO,CAAC,QAAQ,EAAE,CAAC,EAC9B,EAAE,UAAU,EAAE,WAAW,EAAE,CAC5B,CACF,CAAC;IACF,OAAO,MAAM,wBAAwB,CAAC,SAAS,EAAE,+BAAmB,CAAC,CAAC;AACxE,CAAC;AAEM,KAAK,UAAU,sBAAsB,CAC1C,SAA2B,EAC3B,MAAiB;IAEjB,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAChE,MAAM,EACN,WAAW,CACZ,CAAC;IACF,OAAO,IAAA,sBAAU,EACf,UAAU,CAAC,MAAM,CAAC,kBAAkB,EACpC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CACvC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@perena/bankineco-sdk",
3
- "version": "1.0.28",
3
+ "version": "1.0.30",
4
4
  "description": "SDK for interacting with Bankineco program on Solana.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -26,7 +26,6 @@
26
26
  "dependencies": {
27
27
  "@coral-xyz/anchor": "=0.30.1",
28
28
  "@metaplex-foundation/mpl-token-metadata": "2",
29
- "@perena/numeraire-sdk": "^1.1.1",
30
29
  "@solana/spl-token": "=0.4.13",
31
30
  "@solana/web3.js": "=1.98.4",
32
31
  "@sqds/multisig": "^2.1.4"
@@ -43,8 +42,7 @@
43
42
  "typescript": "^5.6.3"
44
43
  },
45
44
  "overrides": {
46
- "node-fetch": "2.6.11",
47
- "@solana-developers/helpers": "2.8.0"
45
+ "node-fetch": "2.6.11"
48
46
  },
49
47
  "publishConfig": {
50
48
  "access": "public"