import { Stream } from './stream';
import { ClientInitStatus } from './types';
import { IPersistenceStore, LoadedStream } from './persistenceStore';
interface SyncedStreamsExtensionDelegate {
    startSyncStreams: () => Promise<void>;
    initStream(streamId: string, allowGetStream: boolean, persistedData?: LoadedStream): Promise<Stream>;
    emitClientInitStatus: (status: ClientInitStatus) => void;
}
export declare class SyncedStreamsExtension {
    private persistenceStore;
    private logId;
    private log;
    private logDebug;
    private logError;
    private readonly delegate;
    private readonly tasks;
    private streamIds;
    private highPriorityIds;
    private started;
    private inProgressTick?;
    private timeoutId?;
    private initStreamsStartTime;
    private startSyncRequested;
    private didLoadStreamsFromPersistence;
    private didLoadHighPriorityStreams;
    private streamCountRequiringNetworkAccess;
    private numStreamsLoadedFromCache;
    private numStreamsLoadedFromNetwork;
    private numStreamsFailedToLoad;
    private totalStreamCount;
    private loadedStreamCount;
    initStatus: ClientInitStatus;
    constructor(highPriorityStreamIds: string[] | undefined, delegate: SyncedStreamsExtensionDelegate, persistenceStore: IPersistenceStore, logId: string);
    setStreamIds(streamIds: string[]): void;
    setHighPriorityStreams(streamIds: string[]): void;
    setStartSyncRequested(startSyncRequested: boolean): void;
    start(): void;
    stop(): Promise<void>;
    private checkStartTicking;
    private loadStreamsFromPersistence;
    private loadStreamFromPersistence;
    private loadStreamsFromNetwork;
    private loadStreamFromNetwork;
    private tick;
    private startSync;
    private emitClientStatus;
    private stopTicking;
}
export {};
//# sourceMappingURL=syncedStreamsExtension.d.ts.map