///
import { AccountSubscriber, DataAndSlot, DelistedMarketSetting, DriftClientAccountEvents, DriftClientAccountSubscriber, ResubOpts } from './types';
import { PerpMarketAccount, SpotMarketAccount, 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';
import RemoteUtil, { PublicAccountInfo } from './remoteUtil';
export declare class WebSocketDriftClientAccountSubscriber implements DriftClientAccountSubscriber {
isSubscribed: boolean;
program: Program;
commitment?: Commitment;
perpMarketIndexes: number[];
spotMarketIndexes: number[];
oracleInfos: OracleInfo[];
oracleClientCache: OracleClientCache;
resubOpts?: ResubOpts;
shouldFindAllMarketsAndOracles: boolean;
eventEmitter: StrictEventEmitter;
stateAccountSubscriber?: AccountSubscriber;
perpMarketAccountSubscribers: Map>;
perpOracleMap: Map;
perpOracleStringMap: Map;
spotMarketAccountSubscribers: Map>;
spotOracleMap: Map;
spotOracleStringMap: Map;
oracleSubscribers: Map>;
delistedMarketSetting: DelistedMarketSetting;
initialPerpMarketAccountData: Map;
initialSpotMarketAccountData: Map;
initialOraclePriceData: Map;
remoteUtil: RemoteUtil;
publicAccountInfo: PublicAccountInfo;
protected isSubscribing: boolean;
protected subscriptionPromise: Promise;
protected subscriptionPromiseResolver: (val: boolean) => void;
constructor(program: Program, perpMarketIndexes: number[], spotMarketIndexes: number[], oracleInfos: OracleInfo[], shouldFindAllMarketsAndOracles: boolean, delistedMarketSetting: DelistedMarketSetting, resubOpts?: ResubOpts, commitment?: Commitment);
subscribe(): Promise;
setInitialData(): Promise;
removeInitialData(): void;
subscribeToPerpMarketAccounts(): Promise;
subscribeToPerpMarketAccount(marketIndex: number, publicKey?: PublicKey): Promise;
subscribeToSpotMarketAccounts(): Promise;
subscribeToSpotMarketAccount(marketIndex: number, publicKey?: PublicKey): 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;
setPerpOracleMap(): Promise;
setSpotOracleMap(): Promise;
handleDelistedMarkets(): Promise;
assertIsSubscribed(): void;
getStateAccountAndSlot(): DataAndSlot;
getMarketAccountAndSlot(marketIndex: number): DataAndSlot | undefined;
getMarketAccountsAndSlots(): DataAndSlot[];
getSpotMarketAccountAndSlot(marketIndex: number): DataAndSlot | undefined;
getSpotMarketAccountsAndSlots(): DataAndSlot[];
getOraclePriceDataAndSlot(oraclePublicKey: PublicKey | string): DataAndSlot | undefined;
getOraclePriceDataAndSlotForPerpMarket(marketIndex: number): DataAndSlot | undefined;
getOraclePriceDataAndSlotForSpotMarket(marketIndex: number): DataAndSlot | undefined;
}