import { PlayerStateEvent, PlayerShownEvent, PlayerHiddenEvent, PlayerState } from '../reducers/player';
export interface GeneralVideoEvent {
    time: Date;
    videoId: string;
    playerId: string;
    muted: boolean;
    volume: number;
    position: number;
    sticky?: boolean;
    streamingMode?: string;
    channelId?: string;
}
export interface VideoPlayEvent extends GeneralVideoEvent {
    type: 'start';
    reason: 'interaction' | 'autostart' | 'viewable';
}
export interface VideoStopEvent extends GeneralVideoEvent {
    type: 'stop';
    reason: 'pause' | 'complete' | 'exit' | 'viewable' | 'stickyClosed';
}
export declare type VideoTimeEvent = VideoPlayEvent | VideoStopEvent;
export declare type VideoEvent = PlayerStateEvent | VideoTimeEvent;
export declare enum PLAYER_TIMER_STATES {
    RUNNING = "RUNNING",
    STOPPED = "STOPPED"
}
export declare enum PLAYER_VISIBILITY_STATES {
    VISIBLE = "VISIBLE",
    HIDDEN = "HIDDEN"
}
export interface VideoWatchEvent {
    watchTime: number;
    startEvent: VideoTimeEvent | PlayerShownEvent;
    stopEvent: VideoTimeEvent | PlayerHiddenEvent;
}
export declare function calculateVideoEventTime(times: VideoTimeEvent[], videoId: string, players: PlayerState, playerId: string, time?: Date): VideoWatchEvent[];
