UNPKG

@drift-labs/sdk-browser

Version:
38 lines (32 loc) 1.14 kB
import { Connection, PublicKey } from '@solana/web3.js'; import { OracleClient, OraclePriceData } from './types'; import { Program } from '@coral-xyz/anchor'; import { PrelaunchOracle } from '../types'; export class PrelaunchOracleClient implements OracleClient { private connection: Connection; private program: Program; public constructor(connection: Connection, program: Program) { this.connection = connection; this.program = program; } public async getOraclePriceData( pricePublicKey: PublicKey ): Promise<OraclePriceData> { const accountInfo = await this.connection.getAccountInfo(pricePublicKey); return this.getOraclePriceDataFromBuffer(accountInfo.data); } public getOraclePriceDataFromBuffer(buffer: Buffer): OraclePriceData { const prelaunchOracle = this.program.account.prelaunchOracle.coder.accounts.decodeUnchecked( 'PrelaunchOracle', buffer ) as PrelaunchOracle; return { price: prelaunchOracle.price, slot: prelaunchOracle.ammLastUpdateSlot, confidence: prelaunchOracle.confidence, hasSufficientNumberOfDataPoints: true, maxPrice: prelaunchOracle.maxPrice, }; } }