import { default as React } from 'react';
import { TUseValues } from '../../AHooks/useValues';
import { TCanCallback } from '../../AUtils/cbF';
import { IItem } from '../../AUtils/objF';
import { IABaseProps } from '../ABase/ABase';
import { Resources } from '../AResource/AResource';
import { IATablePagination, IATableSortation, IATableTRProps, TATableDefs, TATableFilteration } from './ATable';
export declare const MIN_COLUMN_WIDTH = 25;
export declare const DEF_HEADER_HEIGHT = 50;
interface IATableBodyProps<T extends IItem> {
    RowRenderer?: (props: IATableRowProps<T>) => React.ReactNode;
    appliedFilteration: TATableFilteration<T>;
    defs: TATableDefs<T>;
    getRowKey?: (item: T, index: number) => React.Key;
    isEqual: (a: T, b: T) => boolean;
    isLoading?: boolean;
    isRowRendered: boolean;
    isSelectMulti?: boolean;
    isTableDisabled?: string | boolean;
    noDefHeader?: boolean;
    noMarking?: boolean;
    onScrollToSelectedReady?: (scrollToSelected: (block?: ScrollLogicalPosition) => void) => void;
    pagedItems: T[];
    pagination: IATablePagination;
    rProps?: TCanCallback<IATableTRProps<T>, IABaseProps>;
    resources: Partial<typeof Resources.ATable>;
    rowHeight: number;
    selectDisabled?: (item: T) => string | boolean | undefined;
    showRows?: number;
    useSelect?: TUseValues<T[]>;
    useSortation: TUseValues<IATableSortation<T> | undefined>;
}
export declare const ATableBody: <T extends IItem>(props: IATableBodyProps<T>) => import("react/jsx-runtime").JSX.Element;
export interface IATableRowItem {
    [key: string]: React.ReactElement;
}
export type TSpanWidths<T> = {
    [key in keyof T]?: {
        flexGrow: number;
        maxWidth?: number;
        minWidth: number;
        width: number;
    };
};
export interface IATableRowProps<T extends IItem> {
    defs: TATableDefs<T>;
    item: T;
    itemIdx?: number;
    markedItem?: IATableRowItem;
}
export interface IATableDefaultRowProps<T extends IItem> extends Omit<IATableRowProps<T>, 'markedItem'> {
    isBodyBodyOverflowed: boolean;
    noMarking?: boolean;
    rowHeight: number;
    singleFilterValue?: string;
    spanWidths: TSpanWidths<T>;
}
export {};
