import { MarkerApi, MarkerListApi } from '../api';
import { VideoControllerApi } from '../video';
import { MarkerVttFile, ThumbnailVttFile } from '../vtt';
import { MarkerAwareApi } from '../api/marker-aware-api';
import { Subject } from 'rxjs';
import { VttLoadOptions } from '../api/vtt-aware-api';
import { Destroyable, MarkerCreateEvent, MarkerDeleteEvent, MarkerInitEvent, MarkerListActionEvent, MarkerListClickEvent, MarkerSelectedEvent, MarkerUpdateEvent, MarkerVttCue } from '../types';
import { MarkerListItem } from './marker-list-item';
export interface MarkerListConfig {
    markerListHTMLElementId: string;
    templateHTMLElementId?: string;
    headerHTMLElementId?: string;
    emptyHTMLElementId?: string;
    loadingHTMLElementId?: string;
    styleUrl?: string | string[];
    thumbnailVttFile?: ThumbnailVttFile;
    vttUrl?: string;
    vttLoadOptions?: VttLoadOptions;
    vttMarkerCreateFn?: (marker: MarkerVttCue, index: number) => MarkerListItem;
    thumbnailFn?: (time: number) => string | undefined;
    timeEditable?: boolean;
    nameEditable?: boolean;
    nameOptions?: string[];
    nameValidationFn?: (name: string) => boolean;
    source?: MarkerAwareApi | MarkerAwareApi[];
}
export declare class MarkerList implements Destroyable, MarkerListApi {
    onVttLoaded$: Subject<MarkerVttFile | undefined>;
    onMarkerAction$: Subject<MarkerListActionEvent>;
    onMarkerClick$: Subject<MarkerListClickEvent>;
    onMarkerInit$: Subject<MarkerInitEvent>;
    onMarkerCreate$: Subject<MarkerCreateEvent>;
    onMarkerDelete$: Subject<MarkerDeleteEvent>;
    onMarkerUpdate$: Subject<MarkerUpdateEvent>;
    onMarkerSelected$: Subject<MarkerSelectedEvent>;
    private _markerListDomController;
    private _markerListComponent;
    private _config;
    private _sources;
    private _thumbnailVttFile?;
    private _vttAdapter;
    private _lastActiveMarker?;
    private readonly _destroyed$;
    constructor(config: MarkerListConfig, videoController: VideoControllerApi);
    get name(): string;
    getMarkers(): MarkerApi[];
    get config(): MarkerListConfig;
    get thumbnailVttFile(): ThumbnailVttFile | undefined;
    set thumbnailVttFile(thumbnailVttFile: ThumbnailVttFile | undefined);
    addMarker(createData: Partial<MarkerApi>, source?: MarkerAwareApi): MarkerApi;
    updateMarker(id: string, updateValue: Partial<MarkerListItem>): void;
    removeMarker(id: string): void;
    toggleMarker(id: string): void;
    getSelectedMarker(): MarkerApi | undefined;
    destroy(): void;
    private getMarkerItem;
    private addSourceListeners;
    private addMarkerToComponent;
    private findThumbnail;
    private createDefaultMarker;
}
