import { Component, MouseEvent, ReactNode } from 'react';
import type { SmartDataTableProps, SmartDataTableState } from './types';
import * as utils from './helpers/functions';
import './css/basic.css';
declare class SmartDataTable<T = utils.UnknownObject> extends Component<SmartDataTableProps<T>, SmartDataTableState<T>> {
    static propTypes: any;
    static defaultProps: any;
    constructor(props: SmartDataTableProps<T>);
    static getDerivedStateFromProps(props: SmartDataTableProps, state: SmartDataTableState): SmartDataTableState | null;
    componentDidMount(): void;
    componentDidUpdate(prevProps: SmartDataTableProps<T>): void;
    handleRowClick: (event: MouseEvent<HTMLElement>, rowData: T, rowIndex: number, tableData: T[]) => void;
    handleColumnToggle: (key: string) => void;
    handleColumnToggleAll: (columns: utils.Column<T>[]) => (isChecked: boolean) => void;
    handleOnPageChange: (event: MouseEvent<HTMLElement>, { activePage }: {
        activePage: number;
    }) => void;
    handleSortChange(column: utils.Column<T>): void;
    getColumns(force?: boolean): utils.Column<T>[];
    getRows(): T[];
    fetchData(): Promise<void>;
    renderSorting(column: utils.Column<T>): ReactNode;
    renderHeader(columns: utils.Column<T>[]): ReactNode;
    renderRow(columns: utils.Column<T>[], row: T, i: number): ReactNode;
    renderBody(columns: utils.Column<T>[], rows: T[]): ReactNode;
    renderToggles(columns: utils.Column<T>[]): ReactNode;
    renderPagination(rows: T[]): ReactNode;
    render(): string | number | boolean | import("react").ReactFragment | JSX.Element;
}
export default SmartDataTable;
