/**
 * RuleEditor type definitions
 * @countermeasure/web-components/visualization/rule-editor
 */
export interface RuleCondition {
    /** Stable identifier. */
    id: string;
    /** Name of the field this condition applies to (matches `FieldDefinition.name`). */
    field: string;
    /** Operator applied to the field (e.g. `'equals'`, `'contains'`). */
    operator: string;
    /** Value compared against the field. */
    value: string | number | boolean;
    /**
     * Override the inferred value type.
     * @default 'string'
     */
    type?: 'string' | 'number' | 'boolean' | 'date';
}
export interface RuleGroup {
    /** Stable identifier. */
    id: string;
    /** Boolean logic combining all conditions in this group. */
    logic: 'AND' | 'OR';
    /** Mix of leaf conditions and nested groups. */
    conditions: (RuleCondition | RuleGroup)[];
}
export interface FieldDefinition {
    /** Field name used in conditions. */
    name: string;
    /** Display label shown in the field selector. */
    label: string;
    /** Field value type — drives the operator and input controls. */
    type: 'string' | 'number' | 'boolean' | 'date';
    /** Subset of operators allowed for this field (defaults inferred from type). */
    operators?: string[];
}
export interface RuleEditorConfig {
    /** Container element (or selector) the editor is mounted into. */
    container: HTMLElement | string;
    /** Initial rule tree. */
    rules: RuleGroup;
    /** Field definitions available for selection. */
    fields: FieldDefinition[];
    /** Fired when the rule tree changes. */
    onChange?: (rules: RuleGroup) => void;
    /**
     * Maximum nesting depth allowed for groups.
     * @default 5
     */
    maxDepth?: number;
    /** Additional CSS class names. */
    className?: string;
}
//# sourceMappingURL=types.d.ts.map