import type { IMatrix } from '@visactor/vutils';
import { Matrix } from '@visactor/vutils';
import type { ICanvas, ICommonStyleParams, IContext2d, ISetCommonStyleParams, ISetStrokeStyleParams, IStrokeStyleParams, IConicalGradientData, ITextStyleParams } from '../interface';
import { CustomPath2D } from '../common/custom-path2d';
export declare class EmptyContext2d implements IContext2d {
    path: CustomPath2D;
    canvas: null;
    stack: Matrix[];
    protected matrix: Matrix;
    protected applyedMatrix?: Matrix;
    fillStyle: string | CanvasGradient | CanvasPattern;
    font: string;
    globalAlpha: number;
    lineCap: string;
    lineDashOffset: number;
    lineJoin: string;
    lineWidth: number;
    miterLimit: number;
    shadowBlur: number;
    shadowColor: string;
    shadowOffsetX: number;
    shadowOffsetY: number;
    strokeStyle: string | CanvasGradient | CanvasPattern;
    textAlign: string;
    textBaseline: string;
    dpr: number;
    _clearMatrix: IMatrix;
    get nativeContext(): any;
    constructor(canvas: any, dpr: number);
    getCanvas(): ICanvas;
    getContext(): void;
    setTransformForCurrent(force?: boolean): void;
    get currentMatrix(): Matrix;
    cloneMatrix(m: Matrix): IMatrix;
    clear(): void;
    restore(): void;
    highPerformanceRestore(): void;
    rotate(rad: number, setTransform?: boolean): void;
    save(): void;
    highPerformanceSave(): void;
    scale(sx: number, sy: number, setTransform?: boolean): void;
    setScale(sx: number, sy: number, setTransform?: boolean): void;
    scalePoint(sx: number, sy: number, px: number, py: number, setTransform?: boolean): void;
    setTransform(a: number, b: number, c: number, d: number, e: number, f: number, setTransform?: boolean, dpr?: number): void;
    setTransformFromMatrix(matrix: Matrix, setTransform?: boolean, dpr?: number): void;
    resetTransform(setTransform?: boolean, dpr?: number): void;
    transform(a: number, b: number, c: number, d: number, e: number, f: number, setTransform?: boolean): void;
    transformFromMatrix(matrix: Matrix, setTransform?: boolean): void;
    translate(x: number, y: number, setTransform?: boolean): void;
    rotateDegrees(deg: number, setTransform?: boolean): void;
    rotateAbout(rad: number, x: number, y: number, setTransform?: boolean): void;
    rotateDegreesAbout(deg: number, x: number, y: number, setTransform?: boolean): void;
    beginPath(): void;
    clip(fillRule?: CanvasFillRule): void;
    clip(path: Path2D, fillRule?: CanvasFillRule): void;
    arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void;
    arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void;
    bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
    closePath(): void;
    ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void;
    lineTo(x: number, y: number): void;
    moveTo(x: number, y: number): void;
    quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void;
    rect(x: number, y: number, w: number, h: number): void;
    createImageData(imageDataOrSw: number | ImageData, sh?: number): ImageData;
    createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient;
    createPattern(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, repetition: string): CanvasPattern;
    createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient;
    createConicGradient(x: number, y: number, startAngle: number, endAngle: number): IConicalGradientData;
    fill(path?: Path2D, fillRule?: CanvasFillRule): void;
    fillRect(x: number, y: number, width: number, height: number): void;
    clearRect(x: number, y: number, w: number, h: number): void;
    fillText(text: string, x: number, y: number): void;
    getImageData(sx: number, sy: number, sw: number, sh: number): ImageData;
    getLineDash(): number[];
    isPointInPath(x: number, y: number): boolean;
    isPointInStroke(x: number, y: number): boolean;
    measureText(text: string): {
        width: number;
    };
    putImageData(imagedata: ImageData, dx: number, dy: number): void;
    setLineDash(segments: number[]): void;
    stroke(path?: Path2D): void;
    strokeRect(x: number, y: number, width: number, height: number): void;
    strokeText(text: string, x: number, y: number): void;
    drawImage(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap, dstX: number, dstY: number): void;
    drawImage(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap, dstX: number, dstY: number, dstW: number, dstH: number): void;
    drawImage(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | ImageBitmap, srcX: number, srcY: number, srcW: number, srcH: number, dstX: number, dstY: number, dstW: number, dstH: number): void;
    setCommonStyle(params: ISetCommonStyleParams, attribute: ICommonStyleParams, offsetX: number, offsetY: number, defaultParams?: ICommonStyleParams | Partial<ICommonStyleParams>[]): void;
    _setCommonStyle(params: ISetCommonStyleParams, offsetX: number, offsetY: number, defaultParams?: ICommonStyleParams): void;
    setStrokeStyle(params: ISetStrokeStyleParams, attribute: IStrokeStyleParams, offsetX: number, offsetY: number, defaultParams?: IStrokeStyleParams | IStrokeStyleParams[]): void;
    _setStrokeStyle(params: ISetStrokeStyleParams, offsetX: number, offsetY: number, defaultParams?: IStrokeStyleParams): void;
    setTextStyleWithoutAlignBaseline(params: Partial<ITextStyleParams>, defaultParams?: ITextStyleParams): void;
    setTextStyle(params: Partial<ITextStyleParams>, defaultParams?: ITextStyleParams): void;
    draw(): void;
    clearMatrix(setTransform?: boolean, dpr?: number): void;
    setClearMatrix(a: number, b: number, c: number, d: number, e: number, f: number): void;
    onlyTranslate(dpr?: number): boolean;
    release(...params: any): void;
}
