import { BeanStub } from '../context/beanStub';
import type { BeanCollection } from '../context/context';
import type { VerticalSection } from '../interfaces/iGridSection';
import type { LayoutView } from '../styling/layoutFeature';
import { GridBodyScrollFeature } from './gridBodyScrollFeature';
export interface PinnedSectionState {
    height: number;
    invisible: boolean;
}
/** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */
export interface IGridBodyComp extends LayoutView {
    setColumnMovingCss(cssClass: string, on: boolean): void;
    setCellSelectableCss(cssClass: string | null, on: boolean): void;
    setPinnedSection(section: VerticalSection, state: PinnedSectionState): void;
    setStickyBottomHeight(height: string): void;
    setStickyBottomWidth(width: string): void;
    setColumnCount(count: number): void;
    setRowCount(count: number): void;
    setRowAnimationCssOnScrollableArea(animate: boolean): void;
    setPreventRowAnimationCssOnContainers(prevent: boolean): void;
    setGridScrollableAreaWidth(width: string): void;
    setGridRole(role: 'grid' | 'treegrid'): void;
}
/** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */
export declare class GridBodyCtrl extends BeanStub {
    private ctrlsSvc;
    private colModel;
    private scrollVisibleSvc;
    private rowGroupColsSvc?;
    private pinnedRowModel?;
    private filterManager?;
    wireBeans(beans: BeanCollection): void;
    private comp;
    eGridBody: HTMLElement;
    eGridViewport: HTMLElement;
    eScrollingRows: HTMLElement;
    private eTop;
    private eTopExtraRows;
    private eBottom;
    private topPinnedRowsHeight;
    private bottomPinnedRowsHeight;
    stickyTopHeight: number;
    stickyBottomHeight: number;
    scrollFeature: GridBodyScrollFeature;
    setComp(comp: IGridBodyComp, eGridBody: HTMLElement, eGridViewport: HTMLElement, eScrollingRows: HTMLElement, eTop: HTMLElement, eTopExtraRows: HTMLElement, eBottom: HTMLElement): void;
    private addEventListeners;
    private toggleRowResizeStyles;
    private onGridColumnsChanged;
    private onScrollVisibilityChanged;
    private onGridSizeChanged;
    private updateScrollableAreaWidth;
    getHorizontalContentWidth(verticalScrollShowing?: boolean): number;
    getHorizontalViewportWidth(): number;
    getViewportWidthWithoutScrollbar(verticalScrollShowing?: boolean): number;
    getCenterWidth(verticalScrollShowing?: boolean): number;
    getHorizontalScrollLeft(): number;
    setHorizontalScrollLeft(value: number): void;
    getHorizontalScrollPosition(): {
        left: number;
        right: number;
    };
    updateColumnViewport(afterScroll?: boolean): void;
    private updateAnchorWidth;
    private setGridRole;
    private addFocusListeners;
    setColumnMovingCss(moving: boolean): void;
    setCellTextSelection(selectable?: boolean): void;
    private updateScrollingClasses;
    private updatePinnedColumnStickyOffsets;
    private disableBrowserDragging;
    private addStopEditingWhenGridLosesFocus;
    updateRowCount(): void;
    private setupRowAnimationCssClass;
    private addBodyViewportListener;
    private onStickyWheel;
    private onBodyViewportContextMenu;
    private onBodyViewportWheel;
    scrollVertically(pixels: number): number;
    private setPinnedRowsHeights;
    private refreshTopSection;
    private refreshBottomSection;
    setStickyTopHeight(height?: number): void;
    setStickyBottomHeight(height?: number): void;
    private updateStickyRowsHeightAdjustment;
    private setStickyWidth;
    getHeaderRowsOffset(): number;
    getTopPinnedRowsOffset(): number;
    getBottomPinnedRowsOffset(): number;
    getBodyViewportHeight(totalViewportHeight: number): number;
    /** Total scroll content height calculated from JS values. Used by FakeVScrollComp
     *  to avoid reading eGridViewport.scrollHeight which can return stale intermediate values. */
    getScrollContentHeight(): number;
    getVerticalScrollbarWidth(verticalScrollShowing?: boolean): number;
    getHorizontalScrollbarHeight(): number;
}
