import { MVideo, MVideoImmutable } from '../../types/models';
import { VideoViewEvent } from '../../../shared/models';
import { VideoScope, ViewerScope } from './shared';
export declare class VideoViewsManager {
    private static instance;
    private videoViewerStats;
    private videoViewerCounters;
    private videoViews;
    private constructor();
    init(): void;
    processLocalView(options: {
        video: MVideoImmutable;
        currentTime: number;
        ip: string | null;
        viewEvent?: VideoViewEvent;
    }): Promise<{
        successView: boolean;
        successViewer: boolean;
    }>;
    processRemoteView(options: {
        video: MVideo;
        viewerId: string | null;
        viewerExpires?: Date;
    }): Promise<void>;
    getViewers(video: MVideo): number;
    getTotalViewers(options: {
        viewerScope: ViewerScope;
        videoScope: VideoScope;
    }): number;
    buildViewerExpireTime(): number;
    processViewerStats(): Promise<void>;
    static get Instance(): VideoViewsManager;
}
//# sourceMappingURL=video-views-manager.d.ts.map