import { PathOptions, Color, VectorLike, SpinorLike, Path, Board } from '@g20/core';

interface RegularPolygonOptions extends PathOptions {
    id?: string;
    fillColor?: Color;
    fillOpacity?: number;
    opacity?: number;
    position?: VectorLike;
    attitude?: SpinorLike;
    radius?: number;
    sides?: number;
    strokeColor?: Color;
    strokeOpacity?: number;
    strokeWidth?: number;
    twist?: number;
    visibility?: "visible" | "hidden" | "collapse";
}
declare class RegularPolygon extends Path {
    #private;
    constructor(owner: Board, options?: RegularPolygonOptions);
    dispose(): void;
    update(): this;
    flagReset(dirtyFlag?: boolean): this;
    get radius(): number;
    set radius(radius: number);
    get sides(): number;
    set sides(sides: number);
    get twist(): number;
    set twist(twist: number);
}

interface RoundedRectangleOptions extends PathOptions {
    id?: string;
    fillColor?: Color;
    fillOpacity?: number;
    opacity?: number;
    position?: VectorLike;
    attitude?: SpinorLike;
    radius?: number;
    strokeColor?: Color;
    strokeOpacity?: number;
    strokeWidth?: number;
    visibility?: "visible" | "hidden" | "collapse";
    height?: number;
    width?: number;
}
declare class RoundedRectangle extends Path {
    #private;
    constructor(owner: Board, options?: RoundedRectangleOptions);
    dispose(): void;
    update(): this;
    get width(): number;
    set width(width: number);
    get height(): number;
    set height(height: number);
    get radius(): number;
    set radius(radius: number);
}

interface StarOptions extends PathOptions {
    id?: string;
    fillColor?: Color;
    fillOpacity?: number;
    opacity?: number;
    position?: VectorLike;
    attitude?: SpinorLike;
    radius?: number;
    strokeColor?: Color;
    strokeOpacity?: number;
    strokeWidth?: number;
    visibility?: "visible" | "hidden" | "collapse";
    innerRadius?: number;
    outerRadius?: number;
    points?: number;
    twist?: number;
}
declare class Star extends Path {
    #private;
    constructor(owner: Board, options?: StarOptions);
    dispose(): void;
    update(): this;
    get innerRadius(): number;
    set innerRadius(innerRadius: number);
    get outerRadius(): number;
    set outerRadius(outerRadius: number);
    get points(): number;
    set points(points: number);
    get twist(): number;
    set twist(twist: number);
}

export { RegularPolygon, type RegularPolygonOptions, RoundedRectangle, type RoundedRectangleOptions, Star, type StarOptions };
