import type { _AgComponent, _AgComponentEvent, _AgCoreBeanCollection, _BaseEvents, _BaseProperties, _IPropertiesService, _StopPropagationCallbacks } from 'ag-grid-community';
import { _AgTabGuardComp } from 'ag-grid-community';
import type { VirtualListModel } from './iVirtualList';
export interface VirtualListParams<C> {
    cssIdentifier?: string;
    ariaRole?: string;
    listName?: string;
    moveItemCallback?: (item: C, isUp: boolean) => void;
}
export declare class AgVirtualList<TBeanCollection extends _AgCoreBeanCollection<TProperties, TGlobalEvents, TCommon, TPropertiesService>, TProperties extends _BaseProperties, TGlobalEvents extends _BaseEvents, TCommon, TPropertiesService extends _IPropertiesService<TProperties, TCommon>, TComponentSelectorType extends string, C extends _AgComponent<TBeanCollection, TProperties, TGlobalEvents, any> = _AgComponent<TBeanCollection, TProperties, TGlobalEvents, any>, V = any, TEventType extends string = _AgComponentEvent> extends _AgTabGuardComp<TBeanCollection, TProperties, TGlobalEvents, TCommon, TPropertiesService, TComponentSelectorType, TEventType> {
    private readonly stopPropagationCallbacks?;
    private readonly cssIdentifier;
    private readonly ariaRole;
    private readonly listName?;
    protected model: VirtualListModel;
    private readonly renderedRows;
    private componentCreator;
    private componentUpdater;
    private rowHeight;
    private pageSize;
    private isScrolling;
    private lastFocusedRowIndex;
    private isHeightFromTheme;
    private readonly eContainer;
    private awaitStableCallbacks;
    private readonly moveItemCallback?;
    constructor(stopPropagationCallbacks?: _StopPropagationCallbacks | undefined, params?: VirtualListParams<C>);
    postConstruct(): void;
    private onStylesChanged;
    private refreshAriaProperties;
    private addResizeObserver;
    protected focusInnerElement(fromBottom: boolean): boolean;
    protected onFocusIn(e: FocusEvent): void;
    protected onFocusOut(e: FocusEvent): void;
    protected handleKeyDown(e: KeyboardEvent): void;
    protected onTabKeyDown(e: KeyboardEvent): void;
    private getNextRow;
    private moveItem;
    private navigate;
    navigateToPage(key: 'Home' | 'PageUp' | 'PageDown' | 'End', fromItem?: number | 'focused'): number | null;
    getLastFocusedRow(): number | null;
    focusRow(rowNumber: number): void;
    getComponentAt(rowIndex: number): C | undefined;
    forEachRenderedRow(func: (comp: C, idx: number) => void): void;
    private getItemHeight;
    /**
     * Returns true if the view had to be scrolled, otherwise, false.
     */
    ensureIndexVisible(index: number, scrollPartialIntoView?: boolean): boolean;
    setComponentCreator(componentCreator: (value: V, listItemElement: HTMLElement) => C): void;
    setComponentUpdater(componentUpdater: (value: V, component: C) => void): void;
    getRowHeight(): number;
    getScrollTop(): number;
    setRowHeight(rowHeight: number): void;
    refresh(softRefresh?: boolean): void;
    awaitStable(callback: () => void): void;
    private canSoftRefresh;
    private clearVirtualRows;
    protected drawVirtualRows(softRefresh?: boolean): void;
    private ensureRowsRendered;
    private insertRow;
    private removeRow;
    private refreshRows;
    private addScrollListener;
    setModel(model: VirtualListModel): void;
    getAriaElement(): Element;
    destroy(): void;
}
