import type { CommandStrType, CommandType, ICurve, ICustomPath2D, IDirection, ILine, IPath2D } from '../interface';
import { CurvePath } from './segment/curve/path';
import type { IPoint, IPointLike } from '@visactor/vutils';
export declare class CustomPath2D extends CurvePath implements ICustomPath2D {
    commandList: CommandType[];
    _boundsContext: IPath2D;
    _ctx?: IPath2D;
    direction?: IDirection;
    protected transformCbList?: ((cmd: CommandType, x: number, y: number, sx: number, sy: number) => void)[];
    protected toStringCbList?: ((cmd: CommandType) => string)[];
    constructor(ctx?: IPath2D);
    get curves(): ICurve<IPoint>[];
    setCtx(ctx?: IPath2D): void;
    moveTo(x: number, y: number): this;
    lineTo(x: number, y: number): this;
    quadraticCurveTo(aCPx: number, aCPy: number, aX: number, aY: number): this;
    bezierCurveTo(aCP1x: number, aCP1y: number, aCP2x: number, aCP2y: number, aX: number, aY: number): this;
    arcTo(aX1: number, aY1: number, aX2: number, aY2: number, aRadius: number): this;
    ellipse(aX: number, aY: number, xRadius: number, yRadius: number, aRotation: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean): this;
    rect(x: number, y: number, w: number, h: number): this;
    arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): this;
    closePath(): this;
    addCurve(curve: ICurve<IPoint>): void;
    clear(): void;
    beginPath(): void;
    tryBuildCurves(): ICurve<IPoint>[];
    toString(): string;
    fromString(str: string, x?: number, y?: number, sX?: number, sY?: number): this;
    fromLine(line: ILine): void;
    fromCustomPath2D(path: ICustomPath2D, x?: number, y?: number, sX?: number, sY?: number): this;
    transform(x: number, y: number, sx: number, sy: number): void;
    protected moveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number): void;
    protected lineToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number): void;
    protected quadraticCurveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number): void;
    protected bezierCurveToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number): void;
    arcToTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number): void;
    ellipseTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number): void;
    rectTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number): void;
    arcTransform(cmd: CommandType, x: number, y: number, sx: number, sy: number): void;
    closePathTransform(): void;
    protected _runCommandStrList(commandStrList: CommandStrType[], l?: number, t?: number, sX?: number, sY?: number): void;
    protected _runCommandList(commandList: CommandType[], l?: number, t?: number, sX?: number, sY?: number): void;
    private _updateBounds;
    release(): void;
    getLength(): number;
    getYAt(x: number): number;
    getAttrAt(distance: number): {
        pos: IPointLike;
        angle: number;
    };
    drawWithClipRange(ctx: IPath2D, size: number, x: number, y: number, clipRange: number): void;
}
