import Column, { widthChanged, labelChanged, metaDataChanged, dirty, dirtyHeader, dirtyValues, rendererTypeChanged, groupRendererChanged, summaryRendererChanged, visibilityChanged, dirtyCaches } from './Column';
import { IDataRow, IGroup, ECompareValueType } from './interfaces';
import { IEventListener, ISequence } from '../internal';
export declare function createGroupDesc(label?: string): {
    type: string;
    label: string;
};
export declare enum EGroupSortMethod {
    name = "name",
    count = "count"
}
/**
 * emitted when the sort method property changes
 * @asMemberOf GroupColumn
 * @event
 */
export declare function sortMethodChanged(previous: EGroupSortMethod, current: EGroupSortMethod): void;
export default class GroupColumn extends Column {
    static readonly EVENT_SORTMETHOD_CHANGED = "sortMethodChanged";
    private groupSortMethod;
    readonly frozen: boolean;
    protected createEventList(): string[];
    on(type: typeof GroupColumn.EVENT_SORTMETHOD_CHANGED, listener: typeof sortMethodChanged | null): this;
    on(type: typeof Column.EVENT_WIDTH_CHANGED, listener: typeof widthChanged | null): this;
    on(type: typeof Column.EVENT_LABEL_CHANGED, listener: typeof labelChanged | null): this;
    on(type: typeof Column.EVENT_METADATA_CHANGED, listener: typeof metaDataChanged | null): this;
    on(type: typeof Column.EVENT_DIRTY, listener: typeof dirty | null): this;
    on(type: typeof Column.EVENT_DIRTY_HEADER, listener: typeof dirtyHeader | null): this;
    on(type: typeof Column.EVENT_DIRTY_VALUES, listener: typeof dirtyValues | null): this;
    on(type: typeof Column.EVENT_DIRTY_CACHES, listener: typeof dirtyCaches | null): this;
    on(type: typeof Column.EVENT_RENDERER_TYPE_CHANGED, listener: typeof rendererTypeChanged | null): this;
    on(type: typeof Column.EVENT_GROUP_RENDERER_TYPE_CHANGED, listener: typeof groupRendererChanged | null): this;
    on(type: typeof Column.EVENT_SUMMARY_RENDERER_TYPE_CHANGED, listener: typeof summaryRendererChanged | null): this;
    on(type: typeof Column.EVENT_VISIBILITY_CHANGED, listener: typeof visibilityChanged | null): this;
    on(type: string | string[], listener: IEventListener | null): this;
    getLabel(): string;
    getValue(): string;
    getSortMethod(): EGroupSortMethod;
    setSortMethod(sortMethod: EGroupSortMethod): void;
    toCompareGroupValue(rows: ISequence<IDataRow>, group: IGroup): string | number | null;
    toCompareGroupValueType(): ECompareValueType.COUNT | ECompareValueType.STRING;
}
