import { CSSProperties, MouseEvent, ReactNode } from 'react';
export declare type UnknownObject<T = unknown> = Record<string, T>;
export declare type ParseBool = {
    noWord: string;
    yesWord: string;
};
export declare type ParseImg = {
    style: CSSProperties;
    className: string;
};
export declare type TransformFN<T = UnknownObject> = (value: unknown, index: number, row: T) => ReactNode;
export declare type RowClickFN<T = UnknownObject> = (event: MouseEvent<HTMLElement>, { rowData, rowIndex, tableData, }: {
    rowData: T;
    rowIndex: number;
    tableData: T[];
}) => void;
export declare type CompareFunction<T> = (a: T, b: T) => number;
export declare type HeaderSortable<T> = boolean | CompareFunction<T>;
export interface Column<T> {
    key: string;
    text: string;
    invisible: boolean;
    sortable: HeaderSortable<T>;
    filterable: boolean;
    isImg: boolean;
    transform?: TransformFN<T>;
}
export declare type Headers<T> = Record<string, Column<T>>;
export declare type Sorting = {
    key: string;
    dir: string;
};
export interface Highlight {
    first: string | undefined;
    highlight: string | undefined;
    last: string | undefined;
    value: string;
}
export interface RenderOptions {
    children?: ReactNode;
    content?: ReactNode;
    parseBool?: boolean | ParseBool;
}
export declare type KeyResolverFN<T = UnknownObject> = (args: T) => T[];
export interface FetchDataOptions<T = UnknownObject> {
    dataKey?: string;
    dataKeyResolver?: KeyResolverFN<T>;
    options?: RequestInit;
}
export declare const head: <T>([first]: T[]) => T;
export declare const tail: <T>(arr: T[]) => T;
export declare const isString: (str: unknown) => boolean;
export declare const isArray: <T = unknown>(obj: T) => boolean;
export declare const isObject: <T = unknown>(obj: T) => boolean;
export declare const isEmpty: <T = UnknownObject<unknown>>(obj: T | unknown[]) => boolean;
export declare const isFunction: (fn: (...args: unknown[]) => unknown) => boolean;
export declare const isNumber: <T = unknown>(num: T) => boolean;
export declare const isUndefined: <T = unknown>(undef: T) => boolean;
export declare const capitalize: (str: string) => string;
export declare const sortBy: <T = UnknownObject<unknown>>(arr: T[], key: string, compareFn: HeaderSortable<T>) => T[];
export declare const cleanLonelyInt: (val: string) => boolean;
export declare const debugPrint: (...args: unknown[]) => void;
export declare const errorPrint: (...args: unknown[]) => void;
export declare function generatePagination(activePage?: number, totalPages?: number, margin?: number): {
    active: boolean;
    value: number | undefined;
    text: string;
}[];
export declare function getNestedObject<T = UnknownObject>(nestedObj: T, pathArr: string[]): unknown;
export declare function fetchData<T = UnknownObject>(data: string | unknown[], { dataKey, dataKeyResolver, options, }?: FetchDataOptions<T>): Promise<T[]>;
export declare function capitalizeAll(arr: string[]): string;
export declare function parseHeader(val: string): string;
export declare function valueOrDefault<T = unknown>(value: T, defaultValue: T): T;
export declare function columnObject<T>(key: string, headers?: Headers<T>): Column<T>;
export declare function getSampleElement<T = UnknownObject>(data?: T[], dataSampling?: number): T;
export declare function parseDataForColumns<T = UnknownObject>(data?: T[], headers?: Headers<T>, orderedHeaders?: string[], hideUnordered?: boolean, dataSampling?: number): Column<T>[];
export declare function parseDataForRows<T = UnknownObject>(data?: T[]): T[];
export declare function filterRowsByValue<T = UnknownObject>(value: string, rows: T[], colProperties: Headers<T>): T[];
export declare function filterRows<T = UnknownObject>(value: string, rows: T[], colProperties: Headers<T>): T[];
export declare function sliceRowsPerPage<T = UnknownObject>(rows: T[], currentPage: number, perPage: number): T[];
export declare function sortData<T = UnknownObject>(filterValue: string, colProperties: Headers<T>, sorting: Sorting, data: T[]): T[];
export declare function isDataURL(url: unknown): boolean;
export declare function isImage(url: unknown): boolean;
export declare function highlightValueParts(value: string, filterValue: string): Highlight;
export declare function getRenderValue({ children, content, parseBool, }?: RenderOptions): string;
