import { LitElement, nothing, PropertyValueMap, ReactiveController, TemplateResult } from 'lit';
import { EFAudio } from '../elements/EFAudio.js';
import { EFImage } from '../elements/EFImage.js';
import { TemporalMixinInterface } from '../elements/EFTemporal.js';
import { EFTimegroup } from '../elements/EFTimegroup.js';
import { EFVideo } from '../elements/EFVideo.js';
import { TimegroupController } from '../elements/TimegroupController.js';
import { FocusContext } from './focusContext.js';
declare class ElementFilmstripController implements ReactiveController {
    private host;
    private filmstrip;
    constructor(host: LitElement, filmstrip: FilmstripItem);
    remove(): void;
    hostDisconnected(): void;
    hostUpdated(): void;
}
declare const FilmstripItem_base: typeof LitElement;
declare class FilmstripItem extends FilmstripItem_base {
    static styles: import('lit').CSSResult[];
    focusContext?: FocusContext;
    focusedElement?: HTMLElement | null;
    get isFocused(): boolean;
    element: TemporalMixinInterface & LitElement;
    pixelsPerMs: number;
    get gutterStyles(): {
        position: string;
        left: string;
        width: string;
    };
    get trimPortionStyles(): {
        width: string;
        left: string;
    };
    render(): TemplateResult<1>;
    renderChildren(): Array<TemplateResult<1> | typeof nothing> | typeof nothing;
    contents(): TemplateResult<1>;
    animations(): (TemplateResult<1> | typeof nothing)[];
    protected filmstripController?: ElementFilmstripController;
    update(changedProperties: Map<string | number | symbol, unknown>): void;
}
export declare class EFAudioFilmstrip extends FilmstripItem {
    contents(): TemplateResult<1>;
}
export declare class EFVideoFilmstrip extends FilmstripItem {
    contents(): TemplateResult<1>;
}
export declare class EFCaptionsFilmstrip extends FilmstripItem {
    contents(): TemplateResult<1>;
}
export declare class EFWaveformFilmstrip extends FilmstripItem {
    contents(): TemplateResult<1>;
    renderChildren(): typeof nothing;
}
export declare class EFImageFilmstrip extends FilmstripItem {
    contents(): TemplateResult<1>;
}
export declare class EFTimegroupFilmstrip extends FilmstripItem {
    contents(): TemplateResult<1>;
}
export declare class EFHTMLFilmstrip extends FilmstripItem {
    contents(): TemplateResult<1>;
}
declare const EFHierarchyItem_base: typeof LitElement;
declare class EFHierarchyItem<ElementType extends HTMLElement = HTMLElement> extends EFHierarchyItem_base {
    element: ElementType;
    focusContext?: FocusContext;
    focusedElement?: HTMLElement | null;
    get icon(): TemplateResult<1> | string;
    get isFocused(): boolean;
    displayLabel(): TemplateResult<1> | string | typeof nothing;
    render(): TemplateResult<1>;
    renderChildren(): Array<TemplateResult<1> | typeof nothing> | typeof nothing;
}
declare class EFTimegroupHierarchyItem extends EFHierarchyItem<EFTimegroup> {
    get icon(): string;
    displayLabel(): string | TemplateResult<1> | typeof nothing;
}
declare class EFAudioHierarchyItem extends EFHierarchyItem<EFAudio> {
    get icon(): string;
    displayLabel(): string;
}
declare class EFVideoHierarchyItem extends EFHierarchyItem<EFVideo> {
    get icon(): string;
    displayLabel(): string;
}
declare class EFCaptionsHierarchyItem extends EFHierarchyItem {
    get icon(): string;
}
declare class EFCaptionsActiveWordHierarchyItem extends EFHierarchyItem {
    get icon(): string;
}
declare class EFWaveformHierarchyItem extends EFHierarchyItem {
    get icon(): string;
    renderChildren(): typeof nothing;
}
declare class EFImageHierarchyItem extends EFHierarchyItem<EFImage> {
    get icon(): string;
    displayLabel(): string;
}
declare class EFHTMLHierarchyItem extends EFHierarchyItem {
    get icon(): TemplateResult<1>;
}
declare const EFFilmstrip_base: typeof LitElement;
export declare class EFFilmstrip extends EFFilmstrip_base {
    #private;
    static styles: import('lit').CSSResult[];
    pixelsPerMs: number;
    scrubbing: boolean;
    timelineScrolltop: number;
    playing?: boolean;
    loop?: boolean;
    timegroupController?: TimegroupController;
    currentTimeMs: number;
    autoScale: boolean;
    private resizeObserver;
    connectedCallback(): void;
    disconnectedCallback(): void;
    updatePixelsPerMs(): void;
    syncGutterScroll(): void;
    syncHierarchyScroll(): void;
    scrub(e: MouseEvent): void;
    startScrub(e: MouseEvent): void;
    scrollScrub(e: WheelEvent): void;
    gutterRef: import('lit-html/directives/ref').Ref<HTMLDivElement>;
    hierarchyRef: import('lit-html/directives/ref').Ref<HTMLDivElement>;
    playheadRef: import('lit-html/directives/ref').Ref<HTMLDivElement>;
    get gutter(): HTMLDivElement | undefined;
    render(): TemplateResult<1>;
    updated(changes: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
    target?: string;
    targetTimegroup?: EFTimegroup | null;
    protected willUpdate(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
}
declare global {
    interface HTMLElementTagNameMap {
        "ef-filmstrip": EFFilmstrip;
        "ef-timegroup-hierarchy-item": EFTimegroupHierarchyItem;
        "ef-audio-hierarchy-item": EFAudioHierarchyItem;
        "ef-video-hierarchy-item": EFVideoHierarchyItem;
        "ef-captions-hierarchy-item": EFCaptionsHierarchyItem;
        "ef-captions-active-word-hierarchy-item": EFCaptionsActiveWordHierarchyItem;
        "ef-waveform-hierarchy-item": EFWaveformHierarchyItem;
        "ef-image-hierarchy-item": EFImageHierarchyItem;
        "ef-html-hierarchy-item": EFHTMLHierarchyItem;
        "ef-timegroup-filmstrip": EFTimegroupFilmstrip;
        "ef-audio-filmstrip": EFAudioFilmstrip;
        "ef-video-filmstrip": EFVideoFilmstrip;
        "ef-captions-filmstrip": EFCaptionsFilmstrip;
        "ef-waveform-filmstrip": EFWaveformFilmstrip;
        "ef-image-filmstrip": EFImageFilmstrip;
        "ef-html-filmstrip": EFHTMLFilmstrip;
    }
}
export {};
