///
import { Connection, Commitment, SlotInfo, SlotUpdate, Context, AccountInfo } from '@solana/web3.js';
import { Observable, ReplaySubject } from 'rxjs';
import { ILogsWithSlot, ISolanaAccountUpdate } from '../../interfaces';
import { IMap, SolanaConnection } from '../../types';
import { SolanaKey } from '../../utils';
import { BaseLoggerService } from '../base-logger.service';
import { SolanaApiService } from './solana-api.service';
export declare class SolanaUpdateService {
protected readonly logger: BaseLoggerService;
protected readonly solanaApi: SolanaApiService;
readonly logPrefix = "[SolanaUpdate]";
readonly RESOLVE_QUEUE_INTERVAL_MS = 1000;
readonly UPDATE_QUEUE_INTERVAL_MS = 1000;
readonly accountUpdates$: IMap>;
readonly accountUpdatesMaxSlots: IMap;
readonly logUpdates$: IMap>;
readonly slotChanges$: ReplaySubject;
readonly slotInfo$: Observable;
readonly slotUpdates$: ReplaySubject;
readonly slotUpdate$: Observable;
readonly resolvedAccounts: IMap;
readonly resolveQueue: SolanaKey[];
readonly resolvedSubscriptions: IMap;
readonly subscriptionQueue: IMap<{
account: SolanaKey;
connection: SolanaConnection;
}>;
constructor(logger: BaseLoggerService, solanaApi: SolanaApiService);
private handleUpdateQueue;
safeAccountUpdate(accountKey: SolanaKey, connection?: SolanaConnection, autoSubscribe?: boolean, getInitial?: boolean, poolingMs?: number): Observable;
safeAccountUpdates(accountKeys: SolanaKey[], connection?: SolanaConnection, autoSubscribe?: boolean, getInitial?: boolean, poolingMs?: number): Observable>;
safeLogUpdate(accountKey: SolanaKey | 'all', connection?: SolanaConnection, commitment?: Commitment): Observable | null;
subscribeToLogChanges(accountKey: SolanaKey | 'all', connection?: Connection, commitment?: Commitment): number;
unsubscribeFromLogChanges(listener: number, connection?: Connection): Promise;
subscribeToAccountChanges(accounts: SolanaKey[], connection?: Connection, commitment?: Commitment, callback?: (accountId: SolanaKey, accountInfo: AccountInfo, context: Context, connection: SolanaConnection) => void): void;
resubscribeToAccountChanges(): void;
private ensureAccountUpdates;
private handleAccountChange;
private handleLogChange;
private addToResolveQueue;
private addToSubscribeQueue;
private updateCache;
}
//# sourceMappingURL=solana-update.service.d.ts.map