import { Segment, PlayerState, Root, RootState, PlayerLabel, UpdatePlayerState } from '../types';
import { AppAction } from '../state/actions';
declare class PlayerController {
    scenario: Segment[];
    abortedSegment: any;
    private _players;
    constructor();
    get players(): PlayerState[];
    set players(new_players: PlayerState[]);
    buildPool({ scenario, active_player }: {
        scenario: Segment[];
        active_player: PlayerState;
    }): Segment[];
    findSegmentById(id: string, scenario: Segment[]): Segment;
    findDefaultSegment(segment: Segment, scenario: Segment[]): Segment | undefined;
    handleStateUpdates(store: any, action: AppAction): string | number | boolean | Segment | Segment[] | PlayerState | Root | import("../types").ExtendedVideoJsPlayer | import("../types").RewindingState | import("../types").PopupProps | import("../state/actions").ShowSubtitlesPayload | import("../types").PlayerProgress | import("../types").PlayerProgress[] | {
        next_btn: boolean;
    } | {
        prev_btn: boolean;
    } | {
        top: boolean | "any";
    } | {
        bottom: boolean | "any";
    } | import("../types").CurrentTime;
    getActivePlayer(state: Root): {
        id: string;
        segment: Segment;
    };
    updateState(active_player: PlayerState, state: RootState, previous_segment_action?: boolean): {
        pool: Segment[];
        players: PlayerState[];
        watched: Segment[];
        next_default_segment: PlayerState;
        prev_segment: PlayerState;
        active_player_id: string;
    };
    createPlayer(segment: Segment, label: any): {
        id: string;
        label: any;
        segment: Segment;
    };
    _replaceWithSavingPosition(prev_players: any, next_players: any, active_player: any): any[];
    requestPlayerUpdate(label: PlayerLabel, id: string): UpdatePlayerState;
    saveAbortedSegment(segment: Segment): void;
    saveAbortedPlayer(player: PlayerState): void;
    calcTimeline(state: Root): number;
    calcCurrentPosition(state: RootState, current_segment_time: number): number;
    returnPreviousSegment(state: Root, return_from_splitting_segment?: boolean): Segment;
    getNextSegment(state: Root): Segment;
    getWatchedDuration(state: Root): number;
    removeDuplicatesAndSplittingFiles(array: Segment[]): Segment[];
    _createPoolUntilInteractiveSegment(pool: Segment[]): Segment[];
    testViewOfDuration(): import("../types").Branch[];
    isPlayerAlreadyExist(id: string): HTMLElement;
    getSeekableSegment(seekable: number): {
        timeline_duration: number;
        seekable_segment: any;
        segment_current_time: any;
    };
    _isNormalOrSplittingSegmentPlaying(id: string): boolean;
    getPreviousDuration(): number;
    isPreviousSegmentWasSplitting(watched: Segment[]): boolean;
    _createPlayers(active_player_id: string, state: Root): PlayerState[];
    isPreviousPlayer(id: string): boolean;
    isNextPlayer(id: string): boolean;
    isSplittingFilePlaying(id: string): boolean;
    isNormalSegmentPlaying(id: string): boolean;
}
declare const _default: PlayerController;
export default _default;
