import type { ReactNode, TableHTMLAttributes } from 'react';
import type { Column as RTColumn } from 'react-table';
import type { EntityChange } from './ChangeLogging';
export declare let defaultColumns: Column<EntityChange>[];
declare type TableContext<TData extends object = {}> = {
    rowState: any;
    setRowState: (state: any) => void;
    pageIndex: number;
    setPageIndex: (page: number) => void;
    pageSize?: number;
    setPageSize: (page: number) => void;
    requestBodyState: any;
    setRequestBodyState: (state: any) => void;
    loading: boolean;
    error: any;
    submitRequest: () => void;
    data: TData[];
    columns: Column<TData>[];
    totalFilteredRecords: number;
    totalRecords: number;
};
export declare type BasicTableProps<T extends object = {}> = {
    columns?: Column<T>[];
    loadingComponent?: ReactNode;
    noDataComponent?: ReactNode;
    overrideColumns?: (columns: Column<T>[]) => Column<T>[];
    tableContextInstance?: TableContext<T>;
} & TableHTMLAttributes<HTMLTableElement>;
export declare type Column<T extends object = {}> = {
    sortable?: boolean;
} & RTColumn<T>;
export default function ChangeLoggingTable<T extends EntityChange>(props: BasicTableProps<T>): JSX.Element;
export {};
