import { CellProps, Hooks, Renderer } from 'react-table';
import { ReactElement, ReactNode } from 'react';
import { TTableColumn } from './models';
import { Identifiable } from '@custis/common';
import { DataQuery } from './DataQuery';
export declare function arraysEqual<T>(a: T[], b: T[]): boolean;
/**
 * Немного фиксим тип функции-хука, чтобы можно было задать константу с этим типом
 */
export interface FixedPluginHook {
    <D extends object>(hooks: Hooks<D>): void;
    pluginName?: string | undefined;
}
export type RowRenderer<T> = (row: T) => ReactElement;
export declare function renderRow<D extends object = {}, V = any>(renderer: RowRenderer<D>): Renderer<CellProps<D, V>>;
export declare function formatCellByColumnType<T extends Identifiable, TFilter, TSorting>(cellValue: ReactElement, column: TTableColumn<T, TFilter, TSorting>): ReactNode;
export declare const createStateLink: <T>(pathname: string, urlKey: string, filters: T) => string;
export declare function isNotEmpty<T>(value: T | null | undefined): value is T;
export declare function transformStringFromInputNumberFieldToNumber<TItem extends Identifiable, TFilter, TSorting>(row: TItem, columns: TTableColumn<TItem, TFilter, TSorting>[]): TItem;
export declare function getNonNaNFloatValue(value: string): number | undefined;
export declare function getNonNaNNumberValue(value: string): number | undefined;
export declare function getUrlGridState<TFilter, TSorting>(initialState?: DataQuery<TFilter, TSorting>): DataQuery<TFilter, TSorting>;
