import { ChangeDetectorRef, TemplateRef, OnDestroy, ElementRef, EventEmitter } from '@angular/core';
import { IgxOverlayService } from '../../../services/public_api';
import { IgxFilteringService, ExpressionUI } from '../grid-filtering.service';
import { PlatformUtil } from '../../../core/utils';
import { IgxColumnComponent } from '../../columns/column.component';
import { IgxGridBaseDirective } from '../../grid-base.directive';
import { DisplayDensity } from '../../../core/density';
import { GridBaseAPIService } from '../../api.service';
/**
 * @hidden
 */
export declare class FilterListItem {
    value: any;
    label: any;
    isSelected: boolean;
    indeterminate: boolean;
    isFiltered: boolean;
    isSpecial: boolean;
    isBlanks: boolean;
}
export declare class IgxExcelStyleColumnOperationsTemplateDirective {
}
export declare class IgxExcelStyleFilterOperationsTemplateDirective {
}
/**
 * A component used for presenting Excel style filtering UI for a specific column.
 * It is used internally in the Grid, but could also be hosted in a container outside of it.
 *
 * Example:
 * ```html
 * <igx-grid-excel-style-filtering
 *     [column]="grid1.columns[0]">
 * </igx-grid-excel-style-filtering>
 * ```
 */
export declare class IgxGridExcelStyleFilteringComponent implements OnDestroy {
    private cdr;
    element: ElementRef;
    protected platform: PlatformUtil;
    private gridAPI?;
    /**
     * @hidden @internal
     */
    defaultClass: boolean;
    /**
     * @hidden @internal
     */
    inline: boolean;
    /**
     * @hidden @internal
     */
    loadingStart: EventEmitter<any>;
    /**
     * @hidden @internal
     */
    loadingEnd: EventEmitter<any>;
    /**
     * @hidden @internal
     */
    initialized: EventEmitter<any>;
    /**
     * @hidden @internal
     */
    sortingChanged: EventEmitter<any>;
    /**
     * @hidden @internal
     */
    columnChange: EventEmitter<IgxColumnComponent>;
    /**
     * @hidden @internal
     */
    listDataLoaded: EventEmitter<any>;
    mainDropdown: ElementRef;
    /**
     * @hidden @internal
     */
    excelColumnOperationsDirective: IgxExcelStyleColumnOperationsTemplateDirective;
    /**
     * @hidden @internal
     */
    excelFilterOperationsDirective: IgxExcelStyleFilterOperationsTemplateDirective;
    /**
     * @hidden @internal
     */
    protected defaultExcelColumnOperations: TemplateRef<any>;
    /**
     * @hidden @internal
     */
    protected defaultExcelFilterOperations: TemplateRef<any>;
    /**
     * An @Input property that sets the column.
     */
    set column(value: IgxColumnComponent);
    /**
     * Returns the current column.
     */
    get column(): IgxColumnComponent;
    /**
     * @hidden @internal
     */
    get filteringService(): IgxFilteringService;
    /**
     * @hidden @internal
     */
    expressionsList: ExpressionUI[];
    /**
     * @hidden @internal
     */
    listData: FilterListItem[];
    /**
     * @hidden @internal
     */
    uniqueValues: any[];
    /**
     * @hidden @internal
     */
    overlayService: IgxOverlayService;
    /**
     * @hidden @internal
     */
    overlayComponentId: string;
    private _minHeight;
    /**
     * Gets the minimum height.
     */
    get minHeight(): string;
    /**
     * Sets the minimum height.
     */
    set minHeight(value: string);
    private _maxHeight;
    private destroy$;
    private containsNullOrEmpty;
    private selectAllSelected;
    private selectAllIndeterminate;
    private filterValues;
    private _column;
    private _columnPinning;
    private _columnVisibilityChanged;
    private _sortingChanged;
    private _filteringChanged;
    private _densityChanged;
    private _columnMoved;
    private _originalDisplay;
    /**
     * Gets the maximum height.
     */
    get maxHeight(): string;
    /**
     * Sets the maximum height.
     */
    set maxHeight(value: string);
    /**
     * @hidden @internal
     */
    get grid(): IgxGridBaseDirective;
    /**
     * @hidden @internal
     */
    get displayDensity(): DisplayDensity;
    constructor(cdr: ChangeDetectorRef, element: ElementRef, platform: PlatformUtil, gridAPI?: GridBaseAPIService<IgxGridBaseDirective>);
    /**
     * @hidden @internal
     */
    ngOnDestroy(): void;
    /**
     * @hidden @internal
     */
    selectedClass(): "igx-excel-filter__actions-selected" | "igx-excel-filter__actions-select";
    /**
     * @hidden @internal
     */
    initialize(column: IgxColumnComponent, overlayService: IgxOverlayService, overlayComponentId: string): void;
    /**
     * @hidden @internal
     */
    onPin(): void;
    /**
     * @hidden @internal
     */
    onSelect(): void;
    /**
     * @hidden @internal
     */
    columnSelectable(): boolean;
    /**
     * @hidden @internal
     */
    onHideToggle(): void;
    /**
     * @hidden @internal
     */
    cancel(): void;
    /**
     * @hidden @internal
     */
    closeDropdown(): void;
    /**
     * @hidden @internal
     */
    onKeyDown(eventArgs: KeyboardEvent): void;
    /**
     * @hidden @internal
     */
    hide(): void;
    /**
     * @hidden @internal
     */
    detectChanges(): void;
    private init;
    private areExpressionsSelectable;
    private areExpressionsValuesInTheList;
    private populateColumnData;
    private renderColumnValuesRemotely;
    private shouldFormatValues;
    private renderColumnValuesFromData;
    private renderValues;
    private generateUniqueValues;
    private generateFilterValues;
    private generateListData;
    private getColumnFilterExpressionsTree;
    private addBooleanItems;
    private addItems;
    private addSelectAllItem;
    private addBlanksItem;
    private getFilterItemLabel;
    private getFilterItemValue;
    private getExpressionValue;
}
