import { MatchingOperatorDropdownOption, UserRoleType } from '@zeniai/client-epic-state';
import { AutoCompleteActions, AutoCompleteData } from '../../../common/autoComplete/autoCompleteProps';
import { SupportedFilterEntityType } from '../GenericFilters';
import { GenericFilterCategory, GenericFilterCategoryDropdownOption, GenericFiltersType, ValuesDropdownOption } from '../genericFilterTypes';
export interface GenericFiltersSelectionProps<TEntity extends SupportedFilterEntityType, TField extends string, TCategoryDropdownOption extends GenericFilterCategoryDropdownOption<TField>, TFiltersType extends GenericFiltersType<TField>> {
    filters: TFiltersType;
    filterStrings: {
        addFilterBtnText: string;
        categoryPlaceholder: string;
        clearAllBtnText: string;
        filterByLabel: string;
        searchPlaceholder: string;
        select: string;
        getValuePlaceholder?: (categoryField: string, categoryLabel: string) => string | undefined;
    };
    filterValues: Record<string, ValuesDropdownOption[]>;
    helpers: {
        getAppliedFiltersCount: (filters: TFiltersType) => number;
        getDefaultEmptyFilters: () => TFiltersType;
        getFilterCategories: (entity: TEntity, userRole?: UserRoleType[]) => TCategoryDropdownOption[];
        getFilterCategoryLabel: (entity: TEntity, key: string) => string;
        getUpdatedFiltersOnCategoryChange: (props: {
            currentFilters: TFiltersType;
            selectedOption: TCategoryDropdownOption;
            categoryIndex?: number;
        }) => TFiltersType;
        getUpdatedFiltersOnMatchingOperatorChange: (props: {
            currentFilters: TFiltersType;
            selectedOption: MatchingOperatorDropdownOption;
            categoryIndex?: number;
        }) => TFiltersType;
        getUpdatedFiltersOnValueChange: (props: {
            categoryIndex: number;
            currentFilters: TFiltersType;
            selectedOptions: ValuesDropdownOption[];
        }) => TFiltersType;
    };
    selectedEntity: TEntity;
    vendorSearchAutoCompleteActions?: AutoCompleteActions;
    vendorSearchAutoCompleteData?: AutoCompleteData;
    onFiltersChange: (filters: TFiltersType) => void;
    renderCustomCategoryValueSection?: (field: string, props: {
        categoryIndex: number;
        filter: GenericFilterCategory<TField>;
        onMatchingOperatorChange: (option: {
            label: string;
            value: string;
        }, categoryIndex?: number) => void;
        onValueChange: (value: ValuesDropdownOption[], categoryIndex: number) => void;
    }) => {
        operatorDropdown: React.ReactNode;
        valueField: React.ReactNode;
    } | null;
}
declare const _default: <TEntity extends SupportedFilterEntityType, TField extends string, TCategoryDropdownOption extends GenericFilterCategoryDropdownOption<TField>, TFiltersType extends GenericFiltersType<TField>>(props: GenericFiltersSelectionProps<TEntity, TField, TCategoryDropdownOption, TFiltersType> & {
    ref?: React.ForwardedRef<HTMLDivElement>;
}) => React.ReactElement;
export default _default;
