import { ControlValueAccessor, FormArray, FormGroup } from '@angular/forms';
import { MatchModes, MenuFilterOperators, MenuFilterRule, MenuFilterValue, NullMatchModes } from '../../interfaces/column-filter-event';
import { PaginableTableHeader } from '../../interfaces/paginable-table-header';
import * as i0 from "@angular/core";
export declare class MenuFilterComponent implements ControlValueAccessor {
    #private;
    get header(): PaginableTableHeader;
    set header(v: PaginableTableHeader);
    form: FormGroup<{
        operator: import("@angular/forms").FormControl<MenuFilterOperators | null>;
        rules: FormArray<import("@angular/forms").FormControl<unknown>>;
    }>;
    get rulesFA(): FormArray;
    onChange: (value: MenuFilterValue | null) => void;
    onTouched: () => void;
    matchModes: Array<MatchModes>;
    nullMatchModes: typeof NullMatchModes;
    defaultValue: MenuFilterValue;
    /**
     * Clears existing rules, sets a default value if none is provided, adds rules based on the input value, and patches the form with the input value.
     * @param {MenuFilterValue} value - MenuFilterValue
     */
    writeValue(value: MenuFilterValue | null): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    /**
     * Adds a new form group to a FormArray with default values or values provided as input.
     *
     * @param {MenuFilterRule} [value] - The `value` parameter in the `add` method is an optional parameter of type `MenuFilterRule`.
     * It is used to provide a value that will be patched into the form group created within the method. If a `value` is provided, it
     * will be used to patch the form group's
     */
    add(value?: MenuFilterRule): void;
    /**
     * Clears all rules in a FormArray, adds a new rule, and applies the changes.
     */
    clear(): void;
    /**
     * Filters rules based on certain conditions and then calls onChange with the filtered rules or null.
     */
    apply(): void;
    /**
     * Determines the appropriate match modes based on the filter type and assigns them to the `matchModes` property.
     */
    setMatchMode(): void;
    /**
     * Initializes a default value for a menu filter with an operator and a rule containing a null value and a match mode.
     */
    setDefaultValue(): void;
    /**
     * Disables or enables a form control based on the selected match mode in a FormGroup.
     *
     * @param {FormGroup} group - The `group` parameter is a FormGroup object in Angular, which represents a collection of FormControl
     * instances. It is typically used to manage the form controls within a form.
     */
    enableOrDisableValueControl(group: FormGroup): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<MenuFilterComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<MenuFilterComponent, "menu-filter", never, { "header": { "alias": "header"; "required": false; }; }, {}, never, never, true, never>;
}
