import TypedEmitter from 'typed-emitter';
import { Snapshot, SyncCookie } from '@river-build/proto';
import { Stream } from './stream';
import { ParsedMiniblock, ParsedEvent, ParsedStreamResponse } from './types';
import { DLogger } from '@river-build/dlog';
import { IPersistenceStore, LoadedStream } from './persistenceStore';
import { StreamEvents } from './streamEvents';
import { ISyncedStream } from './syncedStreamsLoop';
export declare class SyncedStream extends Stream implements ISyncedStream {
    log: DLogger;
    isUpToDate: boolean;
    readonly persistenceStore: IPersistenceStore;
    constructor(userId: string, streamId: string, clientEmitter: TypedEmitter<StreamEvents>, logEmitFromStream: DLogger, persistenceStore: IPersistenceStore);
    initializeFromPersistence(persistedData?: LoadedStream): Promise<boolean>;
    initialize(nextSyncCookie: SyncCookie, events: ParsedEvent[], snapshot: Snapshot, miniblocks: ParsedMiniblock[], prependedMiniblocks: ParsedMiniblock[], prevSnapshotMiniblockNum: bigint, cleartexts: Record<string, Uint8Array | string> | undefined): Promise<void>;
    initializeFromResponse(response: ParsedStreamResponse): Promise<void>;
    appendEvents(events: ParsedEvent[], nextSyncCookie: SyncCookie, cleartexts: Record<string, Uint8Array | string> | undefined): Promise<void>;
    private onMiniblockHeader;
    private markUpToDate;
    resetUpToDate(): void;
}
//# sourceMappingURL=syncedStream.d.ts.map