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,
|
||||
ai,
|
||||
this.getMintDecimals(bank.mint),
|
||||
client,
|
||||
);
|
||||
bank._price = price;
|
||||
bank._uiPrice = uiPrice;
|
||||
|
@ -333,6 +334,7 @@ export class Group {
|
|||
perpMarket.oracle,
|
||||
ai,
|
||||
perpMarket.baseDecimals,
|
||||
client,
|
||||
);
|
||||
perpMarket._price = price;
|
||||
perpMarket._uiPrice = uiPrice;
|
||||
|
@ -344,6 +346,7 @@ export class Group {
|
|||
oracle: PublicKey,
|
||||
ai: AccountInfo<Buffer>,
|
||||
baseDecimals: number,
|
||||
client: MangoClient,
|
||||
): Promise<{ price: I80F48; uiPrice: number }> {
|
||||
let price, uiPrice;
|
||||
if (
|
||||
|
@ -358,7 +361,10 @@ export class Group {
|
|||
uiPrice = parsePriceData(ai.data).previousPrice;
|
||||
price = this?.toNativePrice(uiPrice, baseDecimals);
|
||||
} else if (isSwitchboardOracle(ai)) {
|
||||
uiPrice = await parseSwitchboardOracle(ai);
|
||||
uiPrice = await parseSwitchboardOracle(
|
||||
ai,
|
||||
client.program.provider.connection,
|
||||
);
|
||||
price = this?.toNativePrice(uiPrice, baseDecimals);
|
||||
} else {
|
||||
throw new Error(
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
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 BN from 'bn.js';
|
||||
import { I80F48, I80F48Dto } from '../numbers/I80F48';
|
||||
|
@ -72,17 +72,18 @@ export function parseSwitcboardOracleV2(
|
|||
*/
|
||||
export async function parseSwitchboardOracle(
|
||||
accountInfo: AccountInfo<Buffer>,
|
||||
connection: Connection,
|
||||
): Promise<number> {
|
||||
if (accountInfo.owner.equals(SwitchboardProgram.devnetPid)) {
|
||||
if (!sbv2DevnetProgram) {
|
||||
sbv2DevnetProgram = await SwitchboardProgram.loadDevnet();
|
||||
sbv2DevnetProgram = await SwitchboardProgram.loadDevnet(connection);
|
||||
}
|
||||
return parseSwitcboardOracleV2(sbv2DevnetProgram, accountInfo);
|
||||
}
|
||||
|
||||
if (accountInfo.owner.equals(SwitchboardProgram.mainnetPid)) {
|
||||
if (!sbv2MainnetProgram) {
|
||||
sbv2MainnetProgram = await SwitchboardProgram.loadMainnet();
|
||||
sbv2MainnetProgram = await SwitchboardProgram.loadMainnet(connection);
|
||||
}
|
||||
return parseSwitcboardOracleV2(sbv2MainnetProgram, accountInfo);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue