import * as React from 'react';
import { IRowConfig } from '../Table/Table';
export interface IGridPublicProps<Row> {
    className?: string;
    dynamic?: boolean;
    pagination?: boolean;
    fastSearch?: boolean;
    definition: IRowConfig<Row>;
    footerLabel?: string;
    maxResults?: number;
}
interface IGridComponentProps<Row> {
    items: Row[];
    page?: number;
    perPage?: number;
    pages?: number;
    totalCount?: number;
    onPaginationChange?: (page: number, perPage: number) => Promise<any>;
}
interface IGridComponent<Row> extends IGridPublicProps<Row>, IGridComponentProps<Row> {
}
interface IGridComponentState<R> {
    items: R[];
    displayItems?: IObjectAny[];
    query?: string;
}
export declare class GridComponent<Row> extends React.PureComponent<IGridComponent<Row>, IGridComponentState<Row>> {
    state: IGridComponentState<Row>;
    componentDidMount(): void;
    componentDidUpdate(prevProps: IGridComponent<Row>): void;
    render(): JSX.Element;
    private automaticallyPaginate;
    private onPageChange;
    private onPerPageChange;
    private getItems;
    private getDisplayItems;
    private setQuery;
    private getDefinition;
    private getDynamicColumns;
    /**
     * A very primitive inference mechanism for cells that come from a Map. In general, this should not be used (use a typed grid or a ResultSet instead),
     * but it can stay for now.
     */
    private inferColumnType;
}
export declare class Grid<Row> extends React.PureComponent<IGridPublicProps<Row>> {
    render(): JSX.Element;
}
export {};
