import { SyncCookie } from '@river-build/proto';
import { StreamRpcClient } from './makeStreamRpcClient';
import { SyncedStreamEvents } from './streamEvents';
import TypedEmitter from 'typed-emitter';
import { PingInfo, SyncState } from './syncedStreamsLoop';
import { SyncedStream } from './syncedStream';
import { UnpackEnvelopeOpts } from './sign';
export declare class SyncedStreams {
    private readonly unpackEnvelopeOpts;
    private readonly logId;
    private readonly streamOpts?;
    private syncedStreamsLoop;
    private highPriorityIds;
    private readonly userId;
    private readonly streams;
    private readonly log;
    private readonly logError;
    private readonly clientEmitter;
    private rpcClient;
    constructor(userId: string, rpcClient: StreamRpcClient, clientEmitter: TypedEmitter<SyncedStreamEvents>, unpackEnvelopeOpts: UnpackEnvelopeOpts | undefined, logId: string, streamOpts?: {
        useModifySync?: boolean | undefined;
    } | undefined);
    get syncState(): SyncState;
    get pingInfo(): PingInfo | undefined;
    stats(): {
        syncState: SyncState;
        streams: number;
        syncId: string | undefined;
        queuedResponses: number;
    } | undefined;
    has(streamId: string | Uint8Array): boolean;
    get(streamId: string | Uint8Array): SyncedStream | undefined;
    set(streamId: string | Uint8Array, stream: SyncedStream): void;
    setHighPriorityStreams(streamIds: string[]): void;
    delete(inStreamId: string | Uint8Array): void;
    size(): number;
    getSyncId(): string | undefined;
    getStreams(): SyncedStream[];
    getStreamIds(): string[];
    onNetworkStatusChanged(isOnline: boolean): void;
    startSyncStreams(): void;
    stopSync(): Promise<void>;
    addStreamToSync(streamId: string, syncCookie: SyncCookie): void;
    removeStreamFromSync(inStreamId: string | Uint8Array): Promise<void>;
}
//# sourceMappingURL=syncedStreams.d.ts.map