import { BeanStub } from '../context/beanStub';
import type { AgColumnGroupEvent, Column, ColumnGroup, ColumnGroupShowType, ColumnPinnedType, HeaderColumnId } from '../interfaces/iColumn';
import type { AgColumn } from './agColumn';
import type { AgProvidedColumnGroup } from './agProvidedColumnGroup';
import type { AbstractColDef, ColGroupDef, HeaderLocation } from './colDef';
export declare const isColumnGroup: (col: Column | ColumnGroup | string) => col is AgColumnGroup;
/** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */
export declare class AgColumnGroup<TValue = any> extends BeanStub<AgColumnGroupEvent> implements ColumnGroup<TValue> {
    readonly providedColumnGroup: AgProvidedColumnGroup;
    readonly groupId: string;
    readonly partId: number;
    pinned: ColumnPinnedType;
    readonly isColumn: false;
    readonly uniqueId: HeaderColumnId;
    /** Sanitised version of the column id */
    readonly colIdSanitised: string;
    children: (AgColumn | AgColumnGroup)[] | null;
    displayedChildren: (AgColumn | AgColumnGroup)[] | null;
    autoHeaderHeight: number | null;
    left: number | null;
    oldLeft: number | null;
    parent: AgColumnGroup | null;
    /** Most recent build token that claimed this instance — sweeps use it to spot orphans. */
    buildToken: number;
    constructor(providedColumnGroup: AgProvidedColumnGroup, groupId: string, partId: number, pinned: ColumnPinnedType);
    getParent(): AgColumnGroup | null;
    getUniqueId(): HeaderColumnId;
    isEmptyGroup(): boolean;
    /** Returns true only when every leaf column in this group is currently moving. */
    isMoving(): boolean;
    checkLeft(): void;
    getLeft(): number | null;
    getOldLeft(): number | null;
    setLeft(left: number | null): void;
    getPinned(): ColumnPinnedType;
    getGroupId(): string;
    getDisplayName(location?: HeaderLocation): string;
    getPartId(): number;
    getActualWidth(): number;
    isResizable(): boolean;
    getMinWidth(): number;
    getDisplayedChildren(): (AgColumn | AgColumnGroup)[] | null;
    getLeafColumns(): AgColumn[];
    getDisplayedLeafColumns(): AgColumn[];
    /** 1-based aria column index for this group's header cell: first leaf column's index */
    get ariaColIndex(): number;
    getDefinition(): AbstractColDef | null;
    getColGroupDef(): ColGroupDef | null;
    isPadding(): boolean;
    isExpandable(): boolean;
    isExpanded(): boolean;
    isAutoHeaderHeight(): boolean;
    getAutoHeaderHeight(): number | null;
    /** Returns true if the header height has changed */
    setAutoHeaderHeight(height: number): boolean;
    private addDisplayedLeafColumns;
    private addLeafColumns;
    getChildren(): (AgColumn | AgColumnGroup)[] | null;
    getColumnGroupShow(): ColumnGroupShowType | undefined;
    getProvidedColumnGroup(): AgProvidedColumnGroup;
    getPaddingLevel(): number;
}
/** First/last (`last`) leaf under `group`, walking `children` or `displayedChildren` (`displayed`) — the
 *  `get(Displayed)LeafColumns()` edge without allocating the array; `null` if empty.
 *  @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */
export declare const edgeLeafColumn: (group: AgColumnGroup, displayed: boolean, last: boolean) => AgColumn | null;
/** Walk up `column`'s parent chain to the group sitting at header-row `level`. */
export declare const getColGroupAtLevel: (column: AgColumn, level: number) => AgColumnGroup | null;
