import { IGraphicsData } from "./IGraphicsData";
import { GraphicsGradientFill } from "./GraphicsGradientFill";
import { GraphicsStroke } from "./GraphicsStroke";
import { IGraphicsFill } from "./IGraphicsFill";
import { BitmapData } from "./BitmapData";
import { ColorTransform } from "../geom/ColorTransform";
import { Matrix } from "../geom/Matrix";
import { Rectangle } from "../geom/Rectangle";
import { Canvas, Paint, Path } from "canvaskit-wasm";
import { BitmapFilter } from "../filters";
export declare class Graphics extends Object {
    static debug: boolean;
    graphicsData: IGraphicsData[];
    gradientFills: Array<GraphicsGradientFill>;
    lastStroke: GraphicsStroke;
    lastFill: IGraphicsFill;
    private pathPool;
    private pathPoolPos;
    private lastPath;
    private lastHalfThickness;
    private _bound;
    private _rect;
    private lockBound;
    _worldMatrix: Matrix;
    graphicsGroup: Path;
    graphicsGroupPaint: Paint;
    constructor();
    clear: () => void;
    beginFill: (color: number, alpha?: number) => void;
    beginGradientFill: (type: string, colors: any[], alphas: any[], ratios: any[], matrix?: Matrix, spreadMethod?: string, interpolationMethod?: string, focalPointRatio?: number) => void;
    beginBitmapFill: (bitmap: BitmapData, matrix?: Matrix, repeat?: boolean, smooth?: boolean) => void;
    endStrokAndFill: () => void;
    lineGradientStyle: (type: string, colors: any[], alphas: any[], ratios: any[], matrix?: any, spreadMethod?: string, interpolationMethod?: string, focalPointRatio?: number) => void;
    lineStyle: (thickness?: number, color?: number, alpha?: number, pixelHinting?: boolean, scaleMode?: string, caps?: string, joints?: string, miterLimit?: number) => void;
    drawRect: (x: number, y: number, width: number, height: number) => void;
    drawRoundRect: (x: number, y: number, width: number, height: number, ellipseWidth: number, ellipseHeight?: number) => void;
    drawRoundRectComplex: (x: number, y: number, width: number, height: number, topLeftRadius: number, topRightRadius: number, bottomLeftRadius: number, bottomRightRadius: number) => void;
    drawCircle: (x: number, y: number, radius: number) => void;
    drawEllipse: (x: number, y: number, w: number, h: number) => void;
    moveTo: (x: number, y: number) => void;
    lineTo: (x: number, y: number) => void;
    curveTo: (controlX: number, controlY: number, anchorX: number, anchorY: number) => void;
    cubicCurveTo: (controlX1: number, controlY1: number, controlX2: number, controlY2: number, anchorX: number, anchorY: number) => void;
    private inflateBound;
    private makePath;
    endFill: () => void;
    copyFrom: (g: Graphics) => void;
    lineBitmapStyle: (bitmap: BitmapData, matrix?: Matrix, repeat?: boolean, smooth?: boolean) => void;
    drawPath: (commands: any[], data: any[], winding?: string) => void;
    drawTriangles(vertices: number[], indices?: number[], uvtData?: number[], culling?: string): void;
    private drawPathObject;
    private beginFillObject;
    private beginStrokeObject;
    drawGraphicsData: (graphicsData: IGraphicsData[]) => void;
    readGraphicsData: (recurse?: boolean) => IGraphicsData[];
    /**
     * returns rectangle of drawn graphics not including strokes
     */
    get rect(): Rectangle;
    /**
     * returns rectangle of drawn graphics including strokes
     */
    get bound(): Rectangle;
    draw: (ctx: CanvasRenderingContext2D | Canvas, m: Matrix, blendMode: string, colorTransform: ColorTransform, filters: BitmapFilter[]) => void;
}
