import { Task } from '@lit/task';
import { LitElement, PropertyValueMap } from 'lit';
import { Ref } from 'lit/directives/ref.js';
import { EFAudio } from './EFAudio.js';
import { EFVideo } from './EFVideo.js';
import { TargetController } from './TargetController.ts';
declare const EFWaveform_base: (new (...args: any[]) => import('./EFTemporal.js').TemporalMixinInterface) & typeof LitElement;
export declare class EFWaveform extends EFWaveform_base {
    static styles: import('lit').CSSResult;
    canvasRef: Ref<HTMLCanvasElement>;
    private ctx;
    private styleObserver;
    private resizeObserver?;
    private mutationObserver?;
    render(): import('lit-html').TemplateResult<1>;
    mode: "roundBars" | "bars" | "bricks" | "line" | "curve" | "pixel" | "wave" | "spikes";
    color: string;
    target: string;
    barSpacing: number;
    targetElement: EFAudio | EFVideo | null;
    lineWidth: number;
    targetController: TargetController;
    connectedCallback(): void;
    disconnectedCallback(): void;
    private resizeCanvas;
    protected initCanvas(): CanvasRenderingContext2D | null;
    protected drawBars(ctx: CanvasRenderingContext2D, frequencyData: Uint8Array): void;
    protected drawBricks(ctx: CanvasRenderingContext2D, frequencyData: Uint8Array): void;
    protected drawRoundBars(ctx: CanvasRenderingContext2D, frequencyData: Uint8Array): void;
    protected drawLine(ctx: CanvasRenderingContext2D, frequencyData: Uint8Array): void;
    protected drawCurve(ctx: CanvasRenderingContext2D, frequencyData: Uint8Array): void;
    protected drawPixel(ctx: CanvasRenderingContext2D, frequencyData: Uint8Array): void;
    protected drawWave(ctx: CanvasRenderingContext2D, frequencyData: Uint8Array): void;
    protected drawSpikes(ctx: CanvasRenderingContext2D, frequencyData: Uint8Array): void;
    frameTask: Task<readonly [EFAudio | EFVideo | null, Uint8Array | null | undefined], void>;
    get durationMs(): number;
    protected updated(changedProperties: PropertyValueMap<this>): void;
}
declare global {
    interface HTMLElementTagNameMap {
        "ef-waveform": EFWaveform & Element;
    }
}
export {};
