import { default as React } from 'react';
export declare type Column = {
    key: string;
    title?: string;
    functionString?: string;
    sortValue?: (value: any) => any;
    sortField?: string;
    sort?: boolean;
    show?: boolean;
    export?: boolean;
    exportOnly?: boolean;
    exportValue?: (row: any) => any;
    render?: (row: any) => React.JSX.Element;
    width?: number | string;
    style?: React.CSSProperties;
    className?: string;
    disabled?: boolean;
};
export declare type TableRef = {
    selectedItems: any[];
    exportPDF: () => void;
    exportCSV: () => void;
    setPage: React.Dispatch<React.SetStateAction<number>>;
    setSelectedItems: React.Dispatch<React.SetStateAction<any[]>>;
    columns: Column[];
    page: number;
    rowsPerPage: React.Dispatch<React.SetStateAction<any | number>>;
    setSort: React.Dispatch<React.SetStateAction<{
        key: string;
        order: string;
    }>>;
    resetPagination: () => void;
    refreshTable: () => void;
    getClickedRow: () => any | null;
    allData?: any[];
};
export declare type UseTableRef = React.MutableRefObject<TableRef | null>;
export declare type ActionResponse = {
    type: string;
    payload?: any;
};
export declare interface Action {
    (payload: any): ActionResponse;
    query?: string;
}
export declare type Sort = {
    key: string;
    order: "asc" | "desc";
};
export declare type NewSort = {
    field: string;
    order: "ASC" | "DESC";
};
export declare type Search = {
    fields: string[];
    terms: string[];
};
export declare type PageSize = number | "ALL";
export declare type TableExportType = "Csv" | "Pdf";
export declare type UseTablePagination = (tablePagination: {
    dispatch?: ((action: ActionResponse) => void) | null;
    action?: Action | null;
    searchFields?: Search[] | null;
    isLocalData?: boolean;
    tableRef?: any;
    termsFields?: Search[] | null;
    sendGenericExport?: ((name: string, type: TableExportType, graphqlQuery: string, graphqlVariables: any, columns: any[], exportFormat: any, header?: boolean | null, isDynamo?: boolean | null, general?: boolean | null, columnStyles?: any) => ActionResponse) | null;
    exportName?: string;
}) => {
    onChangeRowsPerPage: (newRowsPerPage: number) => void;
    onSearchChange: (value: any) => void;
    onChangeData: (_data: any, _sort?: Sort, newPage?: number) => void;
    onChangeColumns: (newColums: any) => void;
    onChangeSort: (newSort: Sort) => void;
    onExport: (type: TableExportType) => void;
    refresh: (refreshProps: RefreshProps) => void;
    onChangePage: (newPage: number) => void;
    addConditions: (_newPage: number, _conditions: any[]) => void;
    setColumns: React.Dispatch<React.SetStateAction<Column[]>>;
    setSort: React.Dispatch<React.SetStateAction<Sort | null>>;
    setData: React.Dispatch<React.SetStateAction<any[] | null>>;
    columns: Column[];
    defaultPage: number;
    rowsPerPage: PageSize;
    searchText: string;
    currentConditions: (Search | any)[];
    currentSort: NewSort | null;
    tableRef: TableRef;
    ref: TableRef;
    data?: any[] | null;
    total?: number;
    allData?: any[];
    filteredData?: any[];
    exportName?: string;
};
export declare type RefreshProps = {
    _page?: number;
    _pageSize?: PageSize;
    _searchText?: string;
    _parms?: any;
    _sort?: Sort | null;
    _data?: any[] | null;
    _conditions?: any[];
};
export interface Types {
    data?: any[] | any;
    height?: number | string;
    topheight?: number | string;
    loading?: boolean;
    stickyHeader?: boolean;
    columns?: Column[];
    onChangeColumns?: (ev: any) => void;
    onChangeSort?: (ev: any) => void;
    onSelectedItems?: (ev: any) => void;
    infiniteScroll?: boolean;
    onChangePage?: (ev: any) => void;
    hidePagination?: boolean;
    nextToken?: any;
    groupingValueToCompare?: any;
    grouping?: boolean;
    searchText?: string;
    messageNoData?: string;
    disableItemSelection?: boolean;
    groupingArea?: () => void;
    onCollapse?: () => void;
    keyColumn?: string;
    hideAllInPagination?: boolean;
    onChangeDisplayData?: (ev: any) => void;
    moreRowsAvailable?: boolean;
    onChangeRowsPerPage?: (ev: any) => void;
    noMoreItemsMessage?: boolean;
    ref?: any;
    exportTitle?: any;
    getDataToExport?: (ev: any, type: string) => void;
    exportName?: string;
    exportOrientation?: any;
    defaultPage?: number;
    total?: number;
    valuesPerPage?: number[];
    allData?: any[];
    isLocalData?: boolean;
}
