/// import { DriftClientAccountSubscriber, DriftClientAccountEvents, DataAndSlot } from './types'; import { AccountSubscriber } from './types'; import { SpotMarketAccount, PerpMarketAccount, StateAccount } from '../types'; import { Program } from '@coral-xyz/anchor'; import StrictEventEmitter from 'strict-event-emitter-types'; import { EventEmitter } from 'events'; import { Commitment, PublicKey } from '@solana/web3.js'; import { OracleInfo, OraclePriceData } from '../oracles/types'; import { OracleClientCache } from '../oracles/oracleClientCache'; export declare class WebSocketDriftClientAccountSubscriber implements DriftClientAccountSubscriber { isSubscribed: boolean; program: Program; commitment?: Commitment; perpMarketIndexes: number[]; spotMarketIndexes: number[]; oracleInfos: OracleInfo[]; oracleClientCache: OracleClientCache; resubTimeoutMs?: number; shouldFindAllMarketsAndOracles: boolean; eventEmitter: StrictEventEmitter; stateAccountSubscriber?: AccountSubscriber; perpMarketAccountSubscribers: Map>; spotMarketAccountSubscribers: Map>; oracleSubscribers: Map>; private isSubscribing; private subscriptionPromise; private subscriptionPromiseResolver; constructor(program: Program, perpMarketIndexes: number[], spotMarketIndexes: number[], oracleInfos: OracleInfo[], shouldFindAllMarketsAndOracles: boolean, resubTimeoutMs?: number, commitment?: Commitment); subscribe(): Promise; subscribeToPerpMarketAccounts(): Promise; subscribeToPerpMarketAccount(marketIndex: number): Promise; subscribeToSpotMarketAccounts(): Promise; subscribeToSpotMarketAccount(marketIndex: number): Promise; subscribeToOracles(): Promise; subscribeToOracle(oracleInfo: OracleInfo): Promise; unsubscribeFromMarketAccounts(): Promise; unsubscribeFromSpotMarketAccounts(): Promise; unsubscribeFromOracles(): Promise; fetch(): Promise; unsubscribe(): Promise; addSpotMarket(marketIndex: number): Promise; addPerpMarket(marketIndex: number): Promise; addOracle(oracleInfo: OracleInfo): Promise; assertIsSubscribed(): void; getStateAccountAndSlot(): DataAndSlot; getMarketAccountAndSlot(marketIndex: number): DataAndSlot | undefined; getMarketAccountsAndSlots(): DataAndSlot[]; getSpotMarketAccountAndSlot(marketIndex: number): DataAndSlot | undefined; getSpotMarketAccountsAndSlots(): DataAndSlot[]; getOraclePriceDataAndSlot(oraclePublicKey: PublicKey): DataAndSlot | undefined; }