import { Element } from '../../../../../client/element';
import { System } from '../../../../../system';
import { Dict } from '../../../../../types/Dict';
export declare function clearCanvas(context: CanvasRenderingContext2D): void;
export interface Props {
    className?: string;
    style?: Dict<string>;
    width?: number | string;
    height?: number | string;
    sx?: number;
    sy?: number;
    d?: any[];
}
export declare const DEFAULT_STYLE: Dict<string>;
export default class CanvasComp extends Element<HTMLCanvasElement, Props> {
    private _context;
    private _canvas_el;
    private _d;
    constructor($props: Props, $system: System);
    private _reset;
    private _get_parent_width;
    private _get_parent_height;
    private _get_frame_width;
    private _get_frame_height;
    private _create_canvas;
    private _setup;
    private _setup_redraw;
    private _set_width;
    private _set_height;
    private _width_frame_unlisten;
    private _height_frame_unlisten;
    private _get_fill_style;
    onPropChanged(prop: string, current: any): void;
    private _unlisten_frame_width;
    private _unlisten_frame_height;
    private _draw;
    private _draw_steps;
    private _redraw;
    private _setup_canvas;
    private _setup_context;
    onMount(): void;
    draw(step: any[]): void;
    clear(_?: undefined): void;
    drawImage(image: ImageBitmap | HTMLVideoElement, x: number, y: number, width: number, height: number): void;
    strokePath(d: string): void;
    private _strokePath;
    fillPath(d: string, fillRule: CanvasFillRule): void;
    private _fillPath;
    translate(x: number, y: number): void;
    scale(sx: number, sy: number): void;
    toBlob({ type, quality }: {
        type: string;
        quality: number;
    }, callback?: (data: Blob | null) => void): void;
    captureStream({ frameRate, }: {
        frameRate: number;
    }): Promise<MediaStream>;
    putImageData(image: ImageData, dx: number, dy: number, x: number, y: number, width: number, height: number): void;
}
