@drift-labs/sdk-browser
Version:
SDK for Drift Protocol
38 lines (32 loc) • 1.14 kB
text/typescript
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,
};
}
}