import { MVideo, MVideoImmutable } from '../../../types/models';
export declare type ViewerScope = 'local' | 'remote';
export declare type VideoScope = 'local' | 'remote';
export declare class VideoViewerCounters {
    private readonly viewersPerVideo;
    private readonly idToViewer;
    private readonly salt;
    private processingViewerCounters;
    constructor();
    addLocalViewer(options: {
        video: MVideoImmutable;
        ip: string;
    }): Promise<boolean>;
    addRemoteViewer(options: {
        video: MVideo;
        viewerId: string;
        viewerExpires: Date;
    }): Promise<boolean>;
    getTotalViewers(options: {
        viewerScope: ViewerScope;
        videoScope: VideoScope;
    }): number;
    getViewers(video: MVideo): number;
    buildViewerExpireTime(): number;
    private addViewerToVideo;
    private cleanViewerCounters;
    private notifyClients;
    private generateViewerId;
    private federateViewerIfNeeded;
}
//# sourceMappingURL=video-viewer-counters.d.ts.map