import "../../CommonImports";
import "../../Core/core.css";
import "./DropdownList.css";
import "./List.css";
import "./ListDropIndicator.css";
import * as React from "react";
import { IObservableArray, IReadonlyObservableValue } from '../../Core/Observable';
import { IEventDispatch } from '../../Utilities/Dispatch';
import { IItemProvider } from '../../Utilities/Provider';
import { IList, IListItemProps, IListMaterializedStats, IListProps, IOverlayRenderProps } from "./List.Props";
interface IRowOverlay {
    id: string;
    columnIndex?: number;
    render: (props: IOverlayRenderProps) => React.ReactNode;
    rowIndex: number;
    zIndex: number;
}
export interface IDropdownListState<T> {
    columnCount: number;
    eventDispatch: IEventDispatch;
    firstMaterialized: number;
    firstRendered: number;
    itemProvider: IItemProvider<T | IReadonlyObservableValue<T | undefined>>;
    lastMaterialized: number;
    lastRendered: number;
    overlays: IObservableArray<IRowOverlay>;
    pageSize: number;
    renderedRows: {
        [rowIndex: number]: JSX.Element | null;
    };
    rowCount: number;
    rowHeight: number;
    rowProportion: number;
    rows: {
        [rowIndex: number]: T | IReadonlyObservableValue<T | undefined>;
    };
    scrollTop: number;
    virtualize: boolean;
}
/**
 * The DropdownList component is used to render a collection of items with a series of rows.
 */
export declare class DropdownList<T extends {}> extends React.Component<IListProps<T>, IDropdownListState<T>> implements IList<T> {
    static contextType: React.Context<import("../Intersection/Intersection").IIntersectionContext>;
    static defaultProps: Partial<IListProps<any>>;
    static getDerivedStateFromProps<T>(props: Readonly<IListProps<T>>, state: Readonly<IDropdownListState<T>>): Partial<IDropdownListState<T>> | null;
    private bodyElement;
    private listElement;
    private spacerElements;
    private onScrollComplete?;
    private scrollToIndex;
    private scrollToOptions;
    private selectOnFocus;
    private focusIndex;
    private pivotIndex;
    constructor(props: Readonly<IListProps<T>>);
    private onVirtualizeKeyDown;
    render(): JSX.Element;
    componentDidMount(): void;
    componentDidUpdate(): void;
    componentWillUnmount(): void;
    addOverlay(id: string, rowIndex: number, render: (props: IOverlayRenderProps) => React.ReactNode, zIndex?: number, columnIndex?: number): void;
    removeOverlay(id: string): void;
    getFocusIndex(): number;
    getStats(): IListMaterializedStats;
    scrollIntoView(rowIndex: number, options?: ScrollIntoViewOptions, onScrollComplete?: (rowIndex: number) => void): void;
    focusRow(rowIndex: number, direction?: number): Promise<void>;
    private onBlur;
    private onClick;
    private onDispatch;
    private onDoubleClick;
    private onFocusBody;
    private onFocusItem;
    private onKeyDown;
    private onIntersect;
    private onPointerDownBody;
    private processSelectionEvent;
    private renderLoadingRow;
    private renderOverlay;
    private renderRow;
    private getInitialTabbableRow;
    private renderSpacer;
    private getHeight;
    private rowActivated;
    private rowSelected;
    private rowFocused;
}
export declare function DropdownListItem<T>(props: IListItemProps<T> & {
    children: React.ReactNode;
}): JSX.Element;
export {};
