type OperatorT = "<" | "<=" | ">" | ">=" | ":" | "!:" | "=" | "!=" | "^" | "!^" | (string & {});
type OperationT = "and" | "or";
type ExternalToken = {
    propertyKey: string;
    operator: OperatorT;
    value: string;
};
type ExternalQuery = {
    tokens: ExternalToken[];
    operation: OperationT;
};
type ExternalOption = {
    propertyKey: string;
    value: string;
    label?: string;
    tags?: string[];
    disabled?: boolean;
};
type ExternalOptions = ExternalOption[];
type ExternalPropertyGroup = {
    label: string;
    options: ExternalOptions;
};
type ExternalPropertyDefinition = {
    key: string;
    label: string;
    groupLabel?: string;
    group?: string;
    operators?: ExternalPropertyOperator[];
};
type ExternalPropertyDefinitions = ExternalPropertyDefinition[];
type ExternalPropertyOperator = string | {
    operator: string;
    type: "single" | "multiple";
};
export type { ExternalOption, ExternalOptions, ExternalPropertyDefinition, ExternalPropertyDefinitions, ExternalPropertyGroup, ExternalQuery, ExternalToken, OperationT, OperatorT, };
type InternalPropertyDefinition = {
    key: string;
    label: string;
    groupLabel: string;
    group: string;
    operators: ExternalPropertyOperator[];
    externalProperty: ExternalPropertyDefinition;
};
type InternalPropertyOption = {
    property: InternalPropertyDefinition | null;
    value: string;
    label: string;
    tags: string[];
};
type InternalParsedTextState = {
    /** User has typed property + complete operator + value (e.g., "Status != active") */
    step: "property";
    property: InternalPropertyDefinition;
    operator: OperatorT;
    value: string;
} | {
    /** User is typing the operator after property (e.g., "Status !") */
    step: "operator";
    property: InternalPropertyDefinition;
    operatorPrefix: string;
} | {
    /** No property match; treat as free-text search */
    step: "free-text";
    value: string;
    operator?: OperatorT;
};
export type { InternalPropertyDefinition, InternalPropertyOption, InternalParsedTextState, };
