import { Task } from '@lit/task';
import { PropertyValueMap } from 'lit';
import { EFMedia } from './EFMedia.js';
declare global {
    var EF_FRAMEGEN: import("../EF_FRAMEGEN.js").EFFramegen;
}
interface LoadingState {
    isLoading: boolean;
    operation: "scrub-segment" | "video-segment" | "seeking" | "decoding" | null;
    message: string;
}
declare const EFVideo_base: typeof EFMedia;
export declare class EFVideo extends EFVideo_base {
    static styles: import('lit').CSSResult[];
    canvasRef: import('lit-html/directives/ref').Ref<HTMLCanvasElement>;
    /**
     * Duration in milliseconds for video buffering ahead of current time
     * @domAttribute "video-buffer-duration"
     */
    videoBufferDurationMs: number;
    /**
     * Maximum number of concurrent video segment fetches for buffering
     * @domAttribute "max-video-buffer-fetches"
     */
    maxVideoBufferFetches: number;
    /**
     * Enable/disable video buffering system
     * @domAttribute "enable-video-buffering"
     */
    enableVideoBuffering: boolean;
    videoSegmentIdTask: Task<readonly [import('../transcoding/types/index.ts').MediaEngine | undefined, number], number | undefined>;
    videoInitSegmentFetchTask: Task<readonly [import('../transcoding/types/index.ts').MediaEngine | undefined], ArrayBuffer>;
    videoSegmentFetchTask: Task<readonly [import('../transcoding/types/index.ts').MediaEngine | undefined, number | undefined], ArrayBuffer>;
    videoInputTask: import('./EFMedia/shared/MediaTaskUtils.ts').InputTask;
    videoSeekTask: Task<readonly [number, import('./EFMedia/BufferedSeekingInput.ts').BufferedSeekingInput | undefined], import('mediabunny').VideoSample | undefined>;
    videoBufferTask: Task<readonly [number], import('./EFMedia/videoTasks/makeVideoBufferTask.ts').VideoBufferState>;
    /**
     * Delayed loading state manager for user feedback
     */
    private delayedLoadingState;
    /**
     * Loading state for user feedback
     */
    loadingState: {
        isLoading: boolean;
        operation: LoadingState["operation"];
        message: string;
    };
    constructor();
    render(): import('lit-html').TemplateResult<1>;
    get canvasElement(): HTMLCanvasElement | undefined;
    frameTask: Task<readonly [number], void>;
    protected updated(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
    /**
     * Start a delayed loading operation for testing
     */
    startDelayedLoading(operationId: string, message: string, options?: {
        background?: boolean;
    }): void;
    /**
     * Clear a delayed loading operation for testing
     */
    clearDelayedLoading(operationId: string): void;
    /**
     * Set loading state for user feedback
     */
    private setLoadingState;
    paintTask: Task<readonly [number], void>;
    /**
     * Display a video frame on the canvas
     */
    private displayFrame;
    /**
     * Check if we're in production rendering mode (EF_FRAMEGEN active) vs preview mode
     */
    private isInProductionRenderingMode;
    /**
     * Check if EF_FRAMEGEN has explicitly started frame rendering (not just initialization)
     */
    private isFrameRenderingActive;
    /**
     * Legacy getter for fragment index task (maps to videoSegmentIdTask)
     * Still used by EFCaptions
     */
    get fragmentIndexTask(): Task<readonly [import('../transcoding/types/index.ts').MediaEngine | undefined, number], number | undefined>;
    /**
     * Clean up resources when component is disconnected
     */
    disconnectedCallback(): void;
}
declare global {
    interface HTMLElementTagNameMap {
        "ef-video": EFVideo;
    }
}
export {};
