import type { DateRangePickerProps } from '../DateRangePicker';
import type { CurrencyInputProps } from '../CurrencyInput';
import type { PercentageInputProps } from '../PercentageInput';
import type { AutocompleteProps } from '../Autocomplete';
import type { FilterableCheckboxGroupProps } from '../FilterableCheckboxGroup';
type DateTime = string;
export interface FilterBaseItem<V = never> {
    id: string;
    label: string;
    value?: V;
    hidden?: boolean;
    onChange?: (value: V) => void;
}
export interface FilterCheckboxGroupItem extends FilterBaseItem<(string | number)[]> {
    type: 'checkbox-group';
    options: {
        label: string;
        value: string | number;
    }[];
}
export interface FilterableCheckboxGroupItem extends FilterBaseItem<string[]>, Pick<FilterableCheckboxGroupProps, 'placeholder' | 'maxHeight'> {
    type: 'filterable-checkbox-group';
    options: {
        label: string;
        value: string;
    }[];
}
export interface FilterRadioGroupItem extends FilterBaseItem<string | number> {
    type: 'radio-group';
    options: {
        label: string;
        value: string | number;
    }[];
}
export interface FilterDateRangeItem extends FilterBaseItem<[DateTime, DateTime]>, Pick<DateRangePickerProps, 'minDate' | 'maxDate' | 'disableFuture' | 'disablePast' | 'displayFormat' | 'inputReadOnly' | 'hideClearButton'> {
    type: 'date-range';
}
export interface FilterCurrencyInputItem extends FilterBaseItem<number>, Pick<CurrencyInputProps, 'max' | 'placeholder' | 'useMinorUnit' | 'currency'> {
    type: 'currency-input';
}
export interface FilterCurrencyRangeItem extends FilterBaseItem<[number, number]>, Pick<CurrencyInputProps, 'max' | 'placeholder' | 'useMinorUnit' | 'currency'> {
    type: 'currency-range';
}
export interface FilterPercentageInputItem extends FilterBaseItem<number>, Pick<PercentageInputProps, 'useMinorUnit' | 'maxDecimalScale' | 'min' | 'max' | 'placeholder'> {
    type: 'percentage-input';
}
export interface FilterPercentageRangeItem extends FilterBaseItem<[number, number]>, Pick<PercentageInputProps, 'useMinorUnit' | 'maxDecimalScale' | 'min' | 'max'> {
    type: 'percentage-range';
}
export interface FilterAutocompleteItem extends FilterBaseItem<string | number>, Pick<AutocompleteProps<any, boolean>, 'options' | 'multiple' | 'placeholder'> {
    type: 'autocomplete';
}
export type FilterItem = FilterCheckboxGroupItem | FilterableCheckboxGroupItem | FilterRadioGroupItem | FilterDateRangeItem | FilterCurrencyInputItem | FilterCurrencyRangeItem | FilterPercentageInputItem | FilterPercentageRangeItem | FilterAutocompleteItem;
export {};
