/// <reference types="node" />
import { DataAndSlot, OracleEvents, OracleAccountSubscriber } from './types';
import StrictEventEmitter from 'strict-event-emitter-types';
import { EventEmitter } from 'events';
import { PublicKey } from '@solana/web3.js';
import { BulkAccountLoader } from './bulkAccountLoader';
import { OracleClient, OraclePriceData } from '../oracles/types';
import { DriftProgram } from '../config';
export declare class PollingOracleAccountSubscriber implements OracleAccountSubscriber {
    isSubscribed: boolean;
    program: DriftProgram;
    eventEmitter: StrictEventEmitter<EventEmitter, OracleEvents>;
    publicKey: PublicKey;
    accountLoader: BulkAccountLoader;
    oracleClient: OracleClient;
    callbackId?: string;
    errorCallbackId?: string;
    oraclePriceData?: DataAndSlot<OraclePriceData>;
    constructor(publicKey: PublicKey, oracleClient: OracleClient, accountLoader: BulkAccountLoader);
    subscribe(): Promise<boolean>;
    addToAccountLoader(): Promise<void>;
    fetch(): Promise<void>;
    unsubscribe(): Promise<void>;
    assertIsSubscribed(): void;
    getOraclePriceData(): DataAndSlot<OraclePriceData>;
    didSubscriptionSucceed(): boolean;
}
