import * as React from 'react';
import { TableColumn, TableRow } from './TableRow';
interface TableState<T> {
    allChecked: boolean;
    sort: {
        reverse: boolean;
        field: null | keyof T;
    };
    checkedItems: T[];
    page: number;
}
declare class Table<T> extends React.Component<TableProps<T>, TableState<T>> {
    constructor(props: TableProps<T>);
    componentWillReceiveProps(newProps: TableProps<T>): void;
    isChecked(item: T): boolean;
    isHighlighted(item: T): boolean;
    isEachRowChecked(checkedItems: T[]): boolean;
    sortData(data: T[]): T[];
    setRowSelection: (selectedRows: T[]) => void;
    toggleAllChecked: () => void;
    toggleChecked: (e: React.ChangeEvent<HTMLInputElement>) => false | undefined;
    toggleSort: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
    getElementFromKey(key: string): T | undefined;
    onRowClick: (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void;
    resetPager: () => void;
    incrementPage: () => void;
    decrementPage: () => void;
    render(): JSX.Element;
}
export interface TableSortOptions<T> {
    reverse: boolean;
    field: keyof T | null;
}
export interface TableProps<T> {
    columns: Array<TableColumn<T>>;
    data?: T[] | null;
    getRowHref?: (row: T) => string;
    onCheck?: (checkedItems: T[]) => void;
    onRowClick?: (row: T, event: React.MouseEvent<HTMLAnchorElement>) => void;
    onSort?: (sort: TableSortOptions<T>) => void;
    sort?: TableSortOptions<T>;
    rowAnchorAttributes?: React.AnchorHTMLAttributes<HTMLAnchorElement>;
    rowCheckboxAttributes?: React.InputHTMLAttributes<HTMLInputElement>;
    rowKey?: keyof T;
    tbodyPrefix?: JSX.Element | JSX.Element[];
    highlightedRows?: any;
    getRowClass?: (row: T) => string[];
    usePager?: boolean;
    itemsPerPage?: number;
    pagerPosition?: 'top' | 'bottom' | 'both';
}
export { TableColumn, TableRow };
export default Table;
