import { AcDbPolyline, AcGePoint2dLike } from '@mlightcad/data-model';
import { AcApContext } from '../app';
import { AcEdBaseView, AcEdCommand, AcEdPreviewJig } from '../editor';
interface RectSettings {
    chamferDist1: number;
    chamferDist2: number;
    filletRadius: number;
    width: number;
    elevation: number;
    thickness: number;
    rotation: number;
}
/**
 * Dynamic preview jig for RECT command.
 */
export declare class AcApRectJig extends AcEdPreviewJig<AcGePoint2dLike> {
    /**
     * Preview polyline entity reused across cursor updates.
     */
    private _rect;
    /**
     * Fixed first-corner point captured at jig start.
     */
    private _firstPoint;
    /**
     * Lazily supplies latest rectangle settings (fillet/chamfer/rotation...).
     */
    private _settingsProvider;
    /**
     * Creates a dynamic rectangle preview jig.
     *
     * @param view - Active editor view used to render transient geometry.
     * @param start - First corner point of the rectangle.
     * @param settingsProvider - Callback that returns current command settings.
     */
    constructor(view: AcEdBaseView, start: AcGePoint2dLike, settingsProvider: () => RectSettings);
    /**
     * Gets the transient polyline entity displayed by the jig.
     */
    get entity(): AcDbPolyline;
    /**
     * Rebuilds preview geometry from the current cursor point.
     *
     * @param secondPoint - Dynamic opposite corner point under the cursor.
     */
    update(secondPoint: AcGePoint2dLike): void;
}
/**
 * Command to create one rectangle with AutoCAD-like branching options.
 */
export declare class AcApRectCmd extends AcEdCommand {
    /**
     * Last-used rectangle settings persisted between command invocations.
     */
    private static _settings;
    /**
     * Creates RECT command instance.
     */
    constructor();
    /**
     * Command entry point.
     *
     * Flow:
     * 1. Prompt first corner and first-stage options.
     * 2. Prompt second-corner input, dimensions, or area workflow.
     * 3. Build final polyline and append it to model space.
     *
     * @param context - Current application/document context.
     */
    execute(context: AcApContext): Promise<void>;
    /**
     * Prompts for the first rectangle corner while handling setup keywords.
     *
     * Supported options at this step: Chamfer, Elevation, Fillet, Thickness, Width.
     *
     * @param settings - Mutable settings object updated in-place by options.
     * @returns First corner point, or `undefined` when user cancels.
     */
    private promptFirstCorner;
    /**
     * Prompts for rectangle completion input after first corner is known.
     *
     * Supports direct opposite corner pick or switching to Area/Dimensions/Rotation
     * branches through a point-prompt state machine.
     *
     * @param context - Current application/document context.
     * @param firstPoint - First corner point.
     * @param settings - Mutable rectangle settings used by preview/build.
     * @returns Final rectangle build input, or `undefined` on cancel.
     */
    private promptSecondInput;
    /**
     * Prompts for a strictly positive numeric value.
     *
     * @param message - Prompt message text.
     * @param jig - Optional preview jig displayed during input.
     * @returns Positive number, or `undefined` when canceled.
     */
    private promptPositiveDouble;
    /**
     * Prompts chamfer distances and updates settings.
     *
     * Also clears fillet mode, because chamfer and fillet are mutually exclusive.
     *
     * @param settings - Mutable rectangle settings.
     * @returns `true` when values are accepted, otherwise `false`.
     */
    private promptChamfer;
    /**
     * Prompts fillet radius and updates settings.
     *
     * Also clears chamfer values, because fillet and chamfer are mutually exclusive.
     *
     * @param settings - Mutable rectangle settings.
     * @returns `true` when value is accepted, otherwise `false`.
     */
    private promptFillet;
    /**
     * Prompts segment width and updates settings.
     *
     * @param settings - Mutable rectangle settings.
     * @returns `true` when value is accepted, otherwise `false`.
     */
    private promptWidth;
    /**
     * Prompts elevation and updates settings.
     *
     * @param settings - Mutable rectangle settings.
     * @returns `true` when value is accepted, otherwise `false`.
     */
    private promptElevation;
    /**
     * Prompts thickness and updates settings.
     *
     * @param settings - Mutable rectangle settings.
     * @returns `true` when value is accepted, otherwise `false`.
     */
    private promptThickness;
    /**
     * Prompts rectangle rotation angle and updates settings.
     *
     * @param context - Current application/document context.
     * @param firstPoint - First corner used as angle base point.
     * @param settings - Mutable rectangle settings.
     * @returns `true` when value is accepted, otherwise `false`.
     */
    private promptRotation;
    /**
     * Prompts rectangle length and width explicitly.
     *
     * @param context - Current application/document context.
     * @param firstPoint - First corner point.
     * @param settings - Mutable rectangle settings.
     * @returns Dimension-based build input, or `undefined` on cancel.
     */
    private promptDimensions;
    /**
     * Prompts rectangle area, then asks for either known length or known width.
     *
     * @param context - Current application/document context.
     * @param firstPoint - First corner point.
     * @param settings - Mutable rectangle settings.
     * @returns Dimension-based build input derived from area, or `undefined`.
     */
    private promptArea;
}
export {};
//# sourceMappingURL=AcApRectCmd.d.ts.map