import { AbstractControl, FormGroup } from '@angular/forms';
import { ClrDatagridFilter } from '@clr/angular';
import { SelectOption } from '../../common/interfaces/select-option';
import { SubscriptionTracker } from '../../common/subscription/subscription-tracker';
import { DatagridFilter, FilterConfig, FilterRendererSpec } from './datagrid-filter';
import * as i0 from "@angular/core";
/**
 * Same as the {@link SelectOption} but value is always a string
 */
export interface MultiSelectOption extends SelectOption {
    value: string;
}
export interface DatagridMultiSelectFilterConfig extends FilterConfig<string[]> {
    /**
     * List of select options
     */
    options: MultiSelectOption[];
}
/**
 * Used internally for {@link DatagridMultiSelectFilterComponent.options} to add unique IDs to filter options. The IDs are used for
 * associating checkbox options with their labels in the HTML
 */
interface MultiSelectOptionInternal extends MultiSelectOption {
    /**
     * Unique identifier for each checkbox option instantiated in the HTML
     */
    id: string;
}
declare type BooleanFormGroup = FormGroup<{
    [name: string]: AbstractControl<boolean, boolean>;
}>;
/**
 * Used within a clarity grid column {@link DatagridComponent} to render a filter widget with list of checkboxes to select
 * multiple options
 * Example usage:
 * columns: GridColumn<MockRecord>[] = [{
 *      displayName: 'Custom Select filter',
 *      renderer: 'state',
 *      queryFieldName: 'state',
 *      filterRendererSpec: FilterComponentRendererSpec({
 *          type: DatagridMultiSelectFilterComponent,
 *          config: {
 *              options: [{
 *                  value: 'CA',
 *                  display: 'California'
 *              }, {
 *                  value: 'MA',
 *                  display: 'Massachusetts'
 *              }],
 *              value: ['MA', 'NC'],
 *          },
 *      }),
 *   }]
 */
export declare class DatagridMultiSelectFilterComponent extends DatagridFilter<string[], DatagridMultiSelectFilterConfig> {
    private filterContainer;
    constructor(filterContainer: ClrDatagridFilter, subTracker: SubscriptionTracker);
    /**
     * Used inside the HTML to instantiate checkbox options
     */
    options: MultiSelectOptionInternal[];
    formGroup: BooleanFormGroup;
    /**
     * Overrides the config property because, the formGroup controls are defined by the config set by the caller.
     * Value of each option becomes a formControl name inside the formGroup.
     */
    onBeforeSetConfig(config: DatagridMultiSelectFilterConfig): void;
    protected getDebounceTimeMs(): number;
    setValue(values: string[]): void;
    getValue(): string;
    isActive(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<DatagridMultiSelectFilterComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DatagridMultiSelectFilterComponent, "vcd-dg-multiselect-filter", never, {}, {}, never, never, false, never>;
}
/**
 * Creates a {@link FilterRendererSpec} with the given config.
 * @param options List of options for select input
 * @param value the default value that should go in this multi-select filter.
 */
export declare function DatagridMultiSelectFilter(options: MultiSelectOption[], value?: string[]): FilterRendererSpec<DatagridMultiSelectFilterConfig>;
export {};
