import { type DetailedHTMLProps, type InputHTMLAttributes, type ReactNode } from 'react';
import { OptionType } from '../../01-atoms';
type TFilterProps = {
    getValuesFilter?: (data: Record<string, TFilterValues>) => void;
    filtersEnabledText: string;
    resetButton: {
        text: string;
        callback: () => void;
    };
    submitButton: {
        text: string;
        callback: (data: Record<string, TFilterValues>) => void;
    };
    inputs: Record<string, {
        title: string;
        config: Array<TInputRegular | TInputRadio | TInputSelect | TInputMultiSelect | TInputAutocomplete>;
    }>;
};
type TFilterValues = string | boolean | OptionType[];
type TInputBase = {
    label: string;
    value?: TFilterValues;
    minDate?: string;
    maxDate?: string;
    onDebouncedChange?: (query: string) => void | OptionType[] | Promise<void | OptionType[]>;
    debounceDelay?: number;
};
type TInputRegular = TInputBase & {
    type: DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>['type'];
    options?: never;
    placeholder?: never;
};
type TInputRadio = TInputBase & {
    type: 'radio';
    options: Record<string, string>;
    placeholder?: never;
};
type TInputSelect = TInputBase & {
    type: 'select';
    options: Record<string, string>;
    placeholder?: string;
};
type TInputMultiSelect = TInputBase & {
    type: 'multiselect';
    options: OptionType[];
    placeholder?: never;
};
type TInputAutocomplete = TInputBase & {
    type: 'autocomplete';
    options: OptionType[];
    placeholder?: never;
};
/**
 * Filter component for managing a set of filters with various input types.
 *
 * @component
 * @example
 * <Filter
 *   filtersEnabledText="Filters Enabled"
 *   resetButton={{ text: "Reset", callback: () => console.log("Reset") }}
 *   submitButton={{ text: "Submit", callback: (data) => console.log(data) }}
 *   inputs={{
 *     filter1: {
 *       title: "Filter 1",
 *       config: [{ type: "text", label: "Text Input" }]
 *     },
 *     filter2: {
 *       title: "Filter 2",
 *       config: [
 *         { type: "select", label: "Select Input", options: { option1: "Option 1", option2: "Option 2" } }
 *       ]
 *     }
 *   }}
 * />
 *
 * @param {Object} props - The properties of the Filter component.
 * @param {string} props.filtersEnabledText - Text displayed when filters are enabled.
 * @param {Object} props.resetButton - Configuration for the reset button.
 * @param {string} props.resetButton.text - Text displayed on the reset button.
 * @param {Function} props.resetButton.callback - Callback function triggered on reset.
 * @param {Object} props.submitButton - Configuration for the submit button.
 * @param {string} props.submitButton.text - Text displayed on the submit button.
 * @param {Function} props.submitButton.callback - Callback function triggered on submit.
 * @param {Object} props.inputs - Configuration object for the filter inputs.
 * @param {Object} props.inputs.title - The title of each filter group.
 * @param {Array<Object>} props.inputs.config - Configuration for each input field.
 * @param {string} [props.inputs.config.label] - Label for the input field.
 * @param {string} [props.inputs.config.type] - The type of input field (text, select, radio, multiselect).
 * @param {Object|Array} [props.inputs.config.options] - Options for select, radio, or multiselect fields.
 * @param {string} [props.inputs.config.placeholder] - Placeholder text for the input field.
 * @returns {ReactNode} The rendered Filter component.
 */
export declare function Filter({ filtersEnabledText, submitButton, resetButton, inputs, getValuesFilter, }: TFilterProps): ReactNode;
export {};
//# sourceMappingURL=Filter.d.ts.map