import * as React from "react";
import { IColDef, ITablePlainProps as ITableProps, SortDirection } from "@dccs/react-table-plain";
import { IState } from "./IState";
import { IDataState, IUseDataStateProps } from "./useDataState";
export declare type OnLoadData = (page: number, rowsPerPage: number, orderBy: string | undefined, sort: SortDirection | undefined, filter: {
    [key: string]: any;
} | undefined) => Promise<{
    total: number;
    data: any[];
}>;
export interface IRenderPagingProps extends IState {
    backIconButtonText?: string;
    nextIconButtonText?: string;
    labelRowsPerPage?: string;
    labelDisplayedRows?: ({ count, from, to, }: {
        count?: number;
        from?: number;
        to?: number;
    }) => string;
    handleChangePage: (page: number) => void;
    handleChangeRowsPerPage: (rows: number) => void;
}
export interface IDataGridTexts {
    errorText?: string;
    loadingText?: string;
    pagingText?: string;
    reloadText?: string;
    backIconButtonText?: string;
    nextIconButtonText?: string;
    labelRowsPerPage?: string;
    labelDisplayedRows?: ({ count, from, to, }: {
        count?: number;
        from?: number;
        to?: number;
    }) => string;
}
export interface IDataGridWithExternalStateProps extends IDataGridProps {
    state?: IDataState;
}
export interface IDataGridWithInternalStateProps extends IDataGridProps, IUseDataStateProps {
}
export interface IDataGridProps {
    texts?: IDataGridTexts;
    colDef: IColDef[];
    disablePaging?: boolean;
    tableTheme?: any;
    onRowClick?: (data: any) => void;
    subComponent?: (data: any) => React.ReactNode;
    renderTable?: (ps: ITableProps) => React.ReactElement;
    renderLoading?: () => React.ReactElement;
    renderError?: (load: () => void, errorText?: string, reloadText?: string) => React.ReactElement;
    renderPaging?: (props: IRenderPagingProps) => React.ReactElement;
    renderHeaderCell?: (col: IColDef, idx: number) => React.ReactNode;
    renderFooterCell?: (col: IColDef, data: any[], idx: number) => React.ReactNode;
    renderFilter?: (col: IColDef, idx: number) => React.ReactNode;
    renderExpansionIndicator?: (expanded: boolean) => React.ReactNode;
    rowProps?: (data: any) => object;
    cellProps?: (data: any) => object;
    ellipsis?: boolean;
    selectedRow?: any | any[];
    onChangeSelectedRow?: (data: any) => void;
    selectedRowProps?: (data: any) => object;
    rowSelectionColumnName?: string;
}
export declare function DataGridPlain(props: IDataGridWithInternalStateProps | IDataGridWithExternalStateProps): JSX.Element;
