import { Transform } from "./Transform";
import { PointF } from "./PointF";
import { SizeF } from "./SizeF";
import { RotatedRectangleF } from "./RotatedRectangleF";
import { RectangleF } from "./RectangleF";
export declare class PathSegment {
    private _name;
    private _points;
    constructor(name: string, points?: PointF[]);
    get name(): string;
    getPoint(index: number): PointF;
    get length(): number;
    transform(transform: Transform, center: PointF): void;
    rotateAt(angle: number, center: PointF): void;
    translate(offsetX: number, offsetY: number): void;
    scale(scaleX: number, scaleY: number): void;
    draw(ctx: CanvasRenderingContext2D): void;
    toString(): string;
    clone(): PathSegment;
}
export declare class Path {
    private _segments;
    private _pathChangedEvent;
    constructor(path?: string);
    get length(): number;
    get segments(): PathSegment[];
    addPathChanged(handler: (t: Transform) => any): void;
    removePathChanged(handler: any): void;
    moveTo(x: number, y: number): void;
    lineTo(x: number, y: number): void;
    quadraticTo(cx: number, cy: number, x: number, y: number): void;
    cubicTo(cx1: number, cy1: number, cx2: number, cy2: number, x: number, y: number): void;
    close(): void;
    private _onPathChanged;
    transform(transform: Transform, center: PointF): void;
    rotateAt(angle: number, center: PointF): void;
    translate(offsetX: number, offsetY: number): void;
    scale(scaleX: number, scaleY: number): void;
    calculateBounds(): RectangleF;
    draw(ctx: CanvasRenderingContext2D): void;
    toString(): string;
    clone(): Path;
    equals(p: Path): boolean;
    isEqual(path: Path): boolean;
    addPath(path: Path): void;
    private _fromString;
    static rectangle(left: number, top: number, width: number, height: number): Path;
    static ellipse(left: number, top: number, width: number, height: number): Path;
    static roundedRectangle(left: number, top: number, width: number, height: number, radiuses: SizeF[]): Path;
    static rotatedRectangle(rectangle: RotatedRectangleF): Path;
}
