use provider connection to fetch switchboard idl
This commit is contained in:
parent
20ff7c99c6
commit
717d3f7711
|
@ -303,6 +303,7 @@ export class Group {
|
||||||
bank.oracle,
|
bank.oracle,
|
||||||
ai,
|
ai,
|
||||||
this.getMintDecimals(bank.mint),
|
this.getMintDecimals(bank.mint),
|
||||||
|
client,
|
||||||
);
|
);
|
||||||
bank._price = price;
|
bank._price = price;
|
||||||
bank._uiPrice = uiPrice;
|
bank._uiPrice = uiPrice;
|
||||||
|
@ -333,6 +334,7 @@ export class Group {
|
||||||
perpMarket.oracle,
|
perpMarket.oracle,
|
||||||
ai,
|
ai,
|
||||||
perpMarket.baseDecimals,
|
perpMarket.baseDecimals,
|
||||||
|
client,
|
||||||
);
|
);
|
||||||
perpMarket._price = price;
|
perpMarket._price = price;
|
||||||
perpMarket._uiPrice = uiPrice;
|
perpMarket._uiPrice = uiPrice;
|
||||||
|
@ -344,6 +346,7 @@ export class Group {
|
||||||
oracle: PublicKey,
|
oracle: PublicKey,
|
||||||
ai: AccountInfo<Buffer>,
|
ai: AccountInfo<Buffer>,
|
||||||
baseDecimals: number,
|
baseDecimals: number,
|
||||||
|
client: MangoClient,
|
||||||
): Promise<{ price: I80F48; uiPrice: number }> {
|
): Promise<{ price: I80F48; uiPrice: number }> {
|
||||||
let price, uiPrice;
|
let price, uiPrice;
|
||||||
if (
|
if (
|
||||||
|
@ -358,7 +361,10 @@ export class Group {
|
||||||
uiPrice = parsePriceData(ai.data).previousPrice;
|
uiPrice = parsePriceData(ai.data).previousPrice;
|
||||||
price = this?.toNativePrice(uiPrice, baseDecimals);
|
price = this?.toNativePrice(uiPrice, baseDecimals);
|
||||||
} else if (isSwitchboardOracle(ai)) {
|
} else if (isSwitchboardOracle(ai)) {
|
||||||
uiPrice = await parseSwitchboardOracle(ai);
|
uiPrice = await parseSwitchboardOracle(
|
||||||
|
ai,
|
||||||
|
client.program.provider.connection,
|
||||||
|
);
|
||||||
price = this?.toNativePrice(uiPrice, baseDecimals);
|
price = this?.toNativePrice(uiPrice, baseDecimals);
|
||||||
} else {
|
} else {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { Magic as PythMagic } from '@pythnetwork/client';
|
import { Magic as PythMagic } from '@pythnetwork/client';
|
||||||
import { AccountInfo, PublicKey } from '@solana/web3.js';
|
import { AccountInfo, Connection, PublicKey } from '@solana/web3.js';
|
||||||
import SwitchboardProgram from '@switchboard-xyz/sbv2-lite';
|
import SwitchboardProgram from '@switchboard-xyz/sbv2-lite';
|
||||||
import BN from 'bn.js';
|
import BN from 'bn.js';
|
||||||
import { I80F48, I80F48Dto } from '../numbers/I80F48';
|
import { I80F48, I80F48Dto } from '../numbers/I80F48';
|
||||||
|
@ -72,17 +72,18 @@ export function parseSwitcboardOracleV2(
|
||||||
*/
|
*/
|
||||||
export async function parseSwitchboardOracle(
|
export async function parseSwitchboardOracle(
|
||||||
accountInfo: AccountInfo<Buffer>,
|
accountInfo: AccountInfo<Buffer>,
|
||||||
|
connection: Connection,
|
||||||
): Promise<number> {
|
): Promise<number> {
|
||||||
if (accountInfo.owner.equals(SwitchboardProgram.devnetPid)) {
|
if (accountInfo.owner.equals(SwitchboardProgram.devnetPid)) {
|
||||||
if (!sbv2DevnetProgram) {
|
if (!sbv2DevnetProgram) {
|
||||||
sbv2DevnetProgram = await SwitchboardProgram.loadDevnet();
|
sbv2DevnetProgram = await SwitchboardProgram.loadDevnet(connection);
|
||||||
}
|
}
|
||||||
return parseSwitcboardOracleV2(sbv2DevnetProgram, accountInfo);
|
return parseSwitcboardOracleV2(sbv2DevnetProgram, accountInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (accountInfo.owner.equals(SwitchboardProgram.mainnetPid)) {
|
if (accountInfo.owner.equals(SwitchboardProgram.mainnetPid)) {
|
||||||
if (!sbv2MainnetProgram) {
|
if (!sbv2MainnetProgram) {
|
||||||
sbv2MainnetProgram = await SwitchboardProgram.loadMainnet();
|
sbv2MainnetProgram = await SwitchboardProgram.loadMainnet(connection);
|
||||||
}
|
}
|
||||||
return parseSwitcboardOracleV2(sbv2MainnetProgram, accountInfo);
|
return parseSwitcboardOracleV2(sbv2MainnetProgram, accountInfo);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue