///
import { DataAndSlot, AccountToPoll, DriftClientAccountEvents, DriftClientAccountSubscriber, OraclesToPoll } from './types';
import { Program } from '@coral-xyz/anchor';
import StrictEventEmitter from 'strict-event-emitter-types';
import { EventEmitter } from 'events';
import { SpotMarketAccount, PerpMarketAccount, StateAccount, UserAccount } from '../types';
import { BulkAccountLoader } from './bulkAccountLoader';
import { PublicKey } from '@solana/web3.js';
import { OracleInfo, OraclePriceData } from '../oracles/types';
import { OracleClientCache } from '../oracles/oracleClientCache';
export declare class PollingDriftClientAccountSubscriber implements DriftClientAccountSubscriber {
isSubscribed: boolean;
program: Program;
perpMarketIndexes: number[];
spotMarketIndexes: number[];
oracleInfos: OracleInfo[];
oracleClientCache: OracleClientCache;
shouldFindAllMarketsAndOracles: boolean;
eventEmitter: StrictEventEmitter;
accountLoader: BulkAccountLoader;
accountsToPoll: Map;
oraclesToPoll: Map;
errorCallbackId?: string;
state?: DataAndSlot;
perpMarket: Map>;
spotMarket: Map>;
oracles: Map>;
user?: DataAndSlot;
private isSubscribing;
private subscriptionPromise;
private subscriptionPromiseResolver;
constructor(program: Program, accountLoader: BulkAccountLoader, perpMarketIndexes: number[], spotMarketIndexes: number[], oracleInfos: OracleInfo[], shouldFindAllMarketsAndOracles: boolean);
subscribe(): Promise;
updateAccountsToPoll(): Promise;
updatePerpMarketAccountsToPoll(): Promise;
addPerpMarketAccountToPoll(marketIndex: number): Promise;
updateSpotMarketAccountsToPoll(): Promise;
addSpotMarketAccountToPoll(marketIndex: number): Promise;
updateOraclesToPoll(): boolean;
addOracleToPoll(oracleInfo: OracleInfo): boolean;
addToAccountLoader(): Promise;
addAccountToAccountLoader(accountToPoll: AccountToPoll): Promise;
addOracleToAccountLoader(oracleToPoll: OraclesToPoll): Promise;
fetch(): Promise;
didSubscriptionSucceed(): boolean;
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;
updateAccountLoaderPollingFrequency(pollingFrequency: number): void;
}