/// 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; }