import type { Bean, BeanCollection, GridOptions, GridOptionsService, IRowNode, NestedDataGetter, RefreshModelParams, RowNode } from 'ag-grid-community';
export interface IRowGroupingStrategy<TData = any> extends Bean {
    /** Getter for grid option treeDataChildrenField, only not null for tree nested data. */
    readonly nestedDataGetter?: NestedDataGetter<TData> | null;
    /** Map of group nodes (for grouping) or filler nodes (for treeData) by their id. Used by ClientSideRowModel. */
    readonly nonLeafsById: ReadonlyMap<string, RowNode<TData>> | null;
    onPropChange?(changedProps: ReadonlySet<keyof GridOptions<any>> | null): void;
    onShowRowGroupColsSetChanged(): void;
    execute(rootNode: RowNode<TData>, params: RefreshModelParams<TData>): boolean | undefined | void;
    /** Used to lazily compute and store groupData for a row node */
    loadGroupData(node: RowNode<TData>): Record<string, any> | null;
    /** Clears any cached group/filler nodes maintained by the strategy. */
    clearNonLeafs(): void;
    /** Called when row group columns changes */
    invalidateGroupCols?(): void;
}
/**
 * Returns if the node and all of its parents are all firstChild until ancestor node is reached
 * This is to check for [groupHideOpenParents] where we only show the expand controls for first child of a group
 *
 * @returns returns if node and all of its parents are first child until ancestor node is reached
 */
export declare function _isHiddenParent(node: RowNode, ancestor: RowNode, gos: GridOptionsService): boolean;
export declare const _getRowDefaultExpanded: (beans: BeanCollection, rowNode: IRowNode, level: number, group?: boolean | undefined) => boolean;
