import React from 'react';
interface CommonFilterConfig {
    label: string;
    placeholder: string;
}
export interface TextFilterConfig extends CommonFilterConfig {
    type: 'text';
}
export interface SelectFilterConfig extends CommonFilterConfig {
    type: 'select';
    options: {
        value: string;
        label: string;
    }[];
}
export interface MultiselectFilterConfig extends CommonFilterConfig {
    type: 'multiselect';
    options: {
        value: string;
        label: string;
    }[];
}
export type FilterConfig = TextFilterConfig | SelectFilterConfig | MultiselectFilterConfig;
export type FilterType = FilterConfig['type'];
export type FilterConfigMap<K extends string> = {
    [key in K]: FilterConfig;
};
/** Filter value type - string for text/select, string[] for multiselect */
export type FilterValue = string | string[];
export type FilterState<K extends string> = Record<K, FilterValue>;
export interface ToolbarFilterProps<K extends string> {
    filterConfig: FilterConfigMap<K>;
    visibleFilterKeys: readonly K[];
    filterValues: FilterState<K>;
    onFilterChange: (key: K, value: FilterValue) => void;
    onClearAllFilters: () => void;
    toolbarActions?: React.ReactNode;
    testIdPrefix?: string;
}
export interface ToolbarFilterRef<K extends string> {
    clearAll: () => void;
    setFilter: (key: K, value: FilterValue) => void;
}
declare const ToolbarFilter: <K extends string>(props: ToolbarFilterProps<K> & {
    ref?: React.ForwardedRef<ToolbarFilterRef<K>>;
}) => React.ReactElement;
export default ToolbarFilter;
//# sourceMappingURL=ToolbarFilter.d.ts.map