import { ElementRef, EventEmitter, PipeTransform, QueryList, TemplateRef } from '@angular/core';
import { IChipsAreaReorderEventArgs, IgxChipComponent } from '../../chips/public_api';
import { DisplayDensity } from '../../core/displayDensity';
import { PlatformUtil } from '../../core/utils';
import { IGroupingExpression } from '../../data-operations/grouping-expression.interface';
import { GridType } from '../common/grid.interface';
import * as i0 from "@angular/core";
/**
 * An internal component representing a base group-by drop area.
 *
 * @hidden @internal
 */
export declare abstract class IgxGroupByAreaDirective {
    private ref;
    protected platform: PlatformUtil;
    /**
     * The drop area template if provided by the parent grid.
     * Otherwise, uses the default internal one.
     */
    dropAreaTemplate: TemplateRef<void>;
    density: DisplayDensity;
    defaultClass: boolean;
    get cosyStyle(): boolean;
    get compactStyle(): boolean;
    /** The parent grid containing the component. */
    grid: GridType;
    /**
     * The group-by expressions provided by the parent grid.
     */
    get expressions(): IGroupingExpression[];
    set expressions(value: IGroupingExpression[]);
    /**
     * The default message for the default drop area template.
     * Obviously, if another template is provided, this is ignored.
     */
    get dropAreaMessage(): string;
    set dropAreaMessage(value: string);
    expressionsChange: EventEmitter<IGroupingExpression[]>;
    chips: QueryList<IgxChipComponent>;
    chipExpressions: IGroupingExpression[];
    /** The native DOM element. Used in sizing calculations. */
    get nativeElement(): HTMLElement;
    private _expressions;
    private _dropAreaMessage;
    constructor(ref: ElementRef<HTMLElement>, platform: PlatformUtil);
    get dropAreaVisible(): boolean;
    handleKeyDown(id: string, event: KeyboardEvent): void;
    handleClick(id: string): void;
    onDragDrop(event: any): void;
    protected getReorderedExpressions(chipsArray: IgxChipComponent[]): any[];
    protected updateSorting(id: string): void;
    protected expressionsChanged(): void;
    abstract handleReorder(event: IChipsAreaReorderEventArgs): any;
    abstract handleMoveEnd(): any;
    abstract groupBy(expression: IGroupingExpression): any;
    abstract clearGrouping(name: string): any;
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxGroupByAreaDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<IgxGroupByAreaDirective, never, never, { "dropAreaTemplate": "dropAreaTemplate"; "density": "density"; "grid": "grid"; "expressions": "expressions"; "dropAreaMessage": "dropAreaMessage"; }, { "expressionsChange": "expressionsChange"; }, never>;
}
/**
 * A pipe to circumvent the use of getters/methods just to get some additional
 * information from the grouping expression and pass it to the chip representing
 * that expression.
 *
 * @hidden @internal
 */
export declare class IgxGroupByMetaPipe implements PipeTransform {
    transform(key: string, grid: GridType): {
        groupable: any;
        title: any;
    };
    static ɵfac: i0.ɵɵFactoryDeclaration<IgxGroupByMetaPipe, never>;
    static ɵpipe: i0.ɵɵPipeDeclaration<IgxGroupByMetaPipe, "igxGroupByMeta">;
}
