import moment from 'moment'; import { FilterResultResponse, DropdownOption, FilterOptions, DropdownFilterOptions, FiltersConfig, MaybeFiltersDateRange, FilterResults } from '../../../Types'; import { DropdownSelections } from './FiltersUtil'; import { OptionChooser } from './OptionChooser'; declare type MaybeMoment = moment.Moment | null; export declare class FiltersDateRange { readonly startDate: MaybeMoment; readonly endDate: MaybeMoment; constructor(startDate: MaybeMoment, endDate: MaybeMoment); isComplete(): boolean; } export declare abstract class Filters { readonly timeframe: number; readonly dateRange: MaybeFiltersDateRange; readonly options: DropdownSelections; protected constructor(config: FiltersConfig); protected abstract create(config: FiltersConfig): Filters; abstract createOptionChooser(filterType: DropdownFilterOptions, selections: DropdownOption[], oldSelections: DropdownSelections, filterOptions: FilterOptions): OptionChooser; abstract filter(rawResults: FilterResults): FilterResults; static generateConfig(newOptions: FilterResultResponse, oldConfig: FiltersConfig): FiltersConfig; withTimeFrame(timeframe: number): Filters; withDropdownOption(dropdownOption: DropdownOption[], filterOptions: FilterOptions, dropdownFilter: DropdownFilterOptions): Filters; withDateRange(dateRange: FiltersDateRange): Filters; label(allOptions: DropdownOption[], optionType: string): string; } export {};