import { Direction } from '../agStack/constants/direction';
import { BeanStub } from '../context/beanStub';
import type { FocusableContainer } from '../interfaces/iFocusableContainer';
import type { LayoutView } from '../styling/layoutFeature';
import type { Component, ComponentSelector } from '../widgets/component';
/** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */
export interface IGridComp extends LayoutView {
    setRtlClass(cssClass: string): void;
    destroyGridUi(): void;
    forceFocusOutOfContainer(up: boolean): void;
    getFocusableContainers(): FocusableContainer[];
    setCursor(value: string | null): void;
    setUserSelect(value: string | null): void;
}
export interface OptionalGridComponents {
    paginationSelector?: ComponentSelector<Component>;
    gridHeaderDropZonesSelector?: ComponentSelector<Component>;
    sideBarSelector?: ComponentSelector<Component>;
    statusBarSelector?: ComponentSelector<Component>;
    watermarkSelector?: ComponentSelector<Component>;
}
/** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */
export declare class GridCtrl extends BeanStub {
    private view;
    private eGridHostDiv;
    private eGui;
    private readonly additionalFocusableContainers;
    setComp(view: IGridComp, eGridDiv: HTMLElement, eGui: HTMLElement): void;
    isDetailGrid(): boolean;
    getOptionalSelectors(): OptionalGridComponents;
    private onGridSizeChanged;
    destroyGridUi(): void;
    getGui(): HTMLElement;
    setResizeCursor(direction: Direction | false): void;
    disableUserSelect(on: boolean): void;
    focusNextInnerContainer(backwards: boolean): boolean | undefined;
    focusInnerElement(fromBottom?: boolean): boolean;
    forceFocusOutOfContainer(up?: boolean): void;
    isFocusInsideGridBody(): boolean;
    addFocusableContainer(container: FocusableContainer): void;
    removeFocusableContainer(container: FocusableContainer): void;
    allowFocusForNextCoreContainer(up?: boolean): void;
    isFocusable(): boolean;
    private getNextFocusableIndex;
    private focusGridBodyDefault;
    private focusNextInnerContainerDefault;
    private getFocusableContainers;
    destroy(): void;
}
