import { Path2D } from './Canvas';
export interface MoveToCommand {
    type: 'moveTo';
    args: {
        x: number;
        y: number;
    };
}
export interface LineToCommand {
    type: 'lineTo';
    args: {
        x: number;
        y: number;
    };
}
export interface ArcCommand {
    type: 'arc';
    args: {
        x: number;
        y: number;
        radius: number;
        startAngle: number;
        endAngle: number;
        anticlockwise: boolean;
    };
}
export interface BezierCurveToCommand {
    type: 'bezierCurveTo';
    args: {
        cp1x: number;
        cp1y: number;
        cp2x: number;
        cp2y: number;
        x: number;
        y: number;
    };
}
export interface QuadraticCurveToCommand {
    type: 'quadraticCurveTo';
    args: {
        qx1: number;
        qy1: number;
        qx: number;
        qy: number;
    };
}
export interface ClosePathCommand {
    type: 'closePath';
}
export type PathCommand = MoveToCommand | LineToCommand | ArcCommand | BezierCurveToCommand | QuadraticCurveToCommand | ClosePathCommand;
export declare function parseCommands(svgPath: string): PathCommand[];
export declare function commandToSvgPath(command: PathCommand): string;
export declare function transformPath(commands: PathCommand[], transform: DOMMatrix): PathCommand[];
export declare function calculateBoundingBox(commands: PathCommand[]): {
    x: number;
    y: number;
    width: number;
    height: number;
};
declare class SvgPath2D extends Path2D {
    readonly commands: PathCommand[];
    constructor(svgPath?: string);
    moveTo(x: number, y: number): void;
    lineTo(x: number, y: number): void;
    arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void;
    bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void;
    quadraticCurveTo(qx1: number, qy1: number, qx: number, qy: number): void;
    addPath(path: SvgPath2D, matrix?: DOMMatrix): void;
    closePath(): void;
}
export declare function toCommands(path: SvgPath2D): string;
export { SvgPath2D as Path2D };
