import type { RefreshModelParams } from 'ag-grid-community';
import { BeanStub, RowNode } from 'ag-grid-community';
import type { IRowGroupingStrategy } from '../../rowHierarchy/rowHierarchyUtils';
export declare class GroupStrategy extends BeanStub implements IRowGroupingStrategy {
    private readonly groupCols;
    readonly nonLeafsById: Map<string, RowNode<any>>;
    private checkGroupCols;
    private pivotMode;
    private groupEmpty;
    invalidateGroupCols(): void;
    destroy(): void;
    clearNonLeafs(): void;
    loadGroupData(node: RowNode): Record<string, any> | null;
    execute(rootNode: RowNode, params: RefreshModelParams): void;
    private positionLeafsAndGroups;
    private initRefresh;
    private handleDeltaUpdate;
    private sortChildren;
    private orderGroups;
    private moveNodeInWrongPath;
    private groupShouldBeRemoved;
    private removeEmptyGroups;
    private removeFromParent;
    /**
     * This is idempotent, but relies on the `key` field being the same throughout a RowNode's lifetime
     */
    private addToParent;
    private shotgunResetEverything;
    /** Remove and destroy group nodes that were not reused (still have childrenAfterGroup === null) */
    private destroyStaleGroups;
    private insertOneNode;
    private createGroup;
    private getChildrenMappedKey;
    onShowRowGroupColsSetChanged(): void;
}
