import { Intersection, Matrix4, Vector3 } from 'three';
import { KeyWord } from '../Common/InputState';
import { ObjectSnapMode } from './ObjectSnapMode';
import { PromptEntityResult, PromptSsgetResult } from './PromptResult';
import { SelectType } from './SelectBox';
import { Filter } from './SelectFilter';
export interface PromptOptions {
    Msg?: string;
    KeyWordList?: KeyWord[];
    /**
     * 如果提供关键字回调,并且返回true,则消费该关键字输入,而不返回关键字,有利于快速交互而不用写While
     * 当前仅在Ssget中实现
     */
    KeyWordCallback?: (key: string, prompt: PromptOptions) => boolean | Promise<boolean>;
}
export interface GetKeyWordPrommpt extends PromptOptions {
    Default?: string;
    KeyWordList: KeyWord[];
    Modal?: boolean;
}
export interface GetStringPrompt extends PromptOptions {
    Default?: string;
}
export interface GetPointPrompt extends PromptOptions {
    BasePoint?: Vector3;
    RelativeBasePoint?: Vector3;
    Callback?: (pt: Vector3, intersection: Intersection, snapMode?: ObjectSnapMode) => void;
    AllowDrawRubberBand?: Boolean;
    NotShowDynPrompt?: boolean;
    /** 如果UCS和视图平行,则不捕捉Z轴 */
    NotSnapZ?: boolean;
    AllowNone?: boolean;
    Use2DCursor?: boolean;
    DisabledSnap?: boolean;
    DisabledBasePointSupportSnap?: boolean;
    Raycast?: boolean;
    RaycastFilter?: Filter;
    RaycastPreExecFunc?: Function;
    DisableAngleDynInput?: boolean;
    SupportSnapPoints?: Vector3[];
}
export interface GetDistendPrompt extends PromptOptions {
    BasePoint?: Vector3;
    DisabledBasePointSupportSnap?: boolean;
    DisableRubberBand?: boolean;
    Callback?: (dist: number, pt?: Vector3) => void;
    CalcDistance?: (ptBase: Vector3, pt: Vector3) => number;
    Default?: number;
}
export interface PromptRectPointOptions extends PromptOptions {
    BasePoint?: Vector3;
    Callback?: (p1UCS: Vector3, p2UCS: Vector3, UCS: Matrix4) => void;
    SupportSnapPoints?: Vector3[];
}
export interface GetEntityPrompt extends PromptOptions {
    NotNone?: boolean;
    UseSelect?: boolean;
    IsSelect?: boolean;
    Filter?: Filter;
    AllowAnyString?: boolean;
    Callback?: (res: PromptEntityResult) => void;
}
export interface GetSelectionPrompt extends PromptOptions {
    Once?: boolean;
    AllowNone?: boolean;
    UseSelect?: boolean;
    Filter?: Filter;
    SelectType?: SelectType;
    Callback?: (res: PromptSsgetResult) => void;
}
//# sourceMappingURL=PromptOptions.d.ts.map