import { DateRangeFilterStoreFactory, Identifiable, SearchOptionsDelegate, SelectFilterStoreFactory, MultipleOptionsTextFilterStoreFactory, DateWidgetStoreFactory, SwitchFieldStoreFactory } from '@custis/common';
import { TTableColumn } from './models';
/**
 * Фабрика для создания колонок
 * Инкапсулирует логику создания колонок, а так же связь между конечным компонентом фильтра и его враппером
 */
export declare class ColumnFactory<TItem extends Identifiable, TFilter, TSorting> {
    private multipleFilterStoreFactory;
    private selectFilterStoreFactory;
    private dateRangeFilterStoreFactory;
    private dateWidgetStoreFactory;
    private switchFieldStoreFactory;
    constructor(multipleFilterStoreFactory: MultipleOptionsTextFilterStoreFactory, selectFilterStoreFactory: SelectFilterStoreFactory, dateRangeFilterStoreFactory: DateRangeFilterStoreFactory, dateWidgetStoreFactory: DateWidgetStoreFactory, switchFieldStoreFactory: SwitchFieldStoreFactory);
    create(options: TTableColumn<TItem, TFilter, TSorting>): TTableColumn<TItem, TFilter, TSorting>;
    createWithTextFilter(options: TTableColumn<TItem, TFilter, TSorting>): TTableColumn<TItem, TFilter, TSorting>;
    createWithSingleTextFilter(options: TTableColumn<TItem, TFilter, TSorting>): TTableColumn<TItem, TFilter, TSorting>;
    createWithNumberFilter(options: TTableColumn<TItem, TFilter, TSorting>): TTableColumn<TItem, TFilter, TSorting>;
    createWithSelectFilter<TFilterKey extends number | string>(options: TTableColumn<TItem, TFilter, TSorting>, search: SearchOptionsDelegate<TFilterKey>): TTableColumn<TItem, TFilter, TSorting, TFilterKey>;
    createWithSingleSelectFilter<TFilterKey extends number | string>(options: TTableColumn<TItem, TFilter, TSorting>, search: SearchOptionsDelegate<TFilterKey>): TTableColumn<TItem, TFilter, TSorting, TFilterKey>;
    createWithDateRangeFilter(options: TTableColumn<TItem, TFilter, TSorting>): TTableColumn<TItem, TFilter, TSorting>;
    createWithDateFilter(options: TTableColumn<TItem, TFilter, TSorting>): TTableColumn<TItem, TFilter, TSorting>;
    createWithSwitchFilter(options: TTableColumn<TItem, TFilter, TSorting>): TTableColumn<TItem, TFilter, TSorting>;
}
