import React, { ElementType, ReactNode, LegacyRef } from 'react';
import { ColumnProp } from '../../table';
export type DataTypes = {
    [key: string]: any;
    id: string;
    data: string;
    index: number;
    checkboxAccessor: string;
    selected?: boolean;
    isDisabled?: boolean;
    updatedData?: Array<DataTypes>;
    updatedCheckboxValues?: Array<boolean>;
    setCheckboxItems: Array<boolean>;
};
type UpdatedDataTypes = {
    updatedData?: Array<DataTypes>;
    updatedCheckboxValues: Array<boolean>;
};
export type WithTableCellCheckboxesProps = {
    forwardRef?: LegacyRef<HTMLDivElement>;
    areAllChecked?: boolean;
    areAllUnChecked?: boolean;
    areSomeChecked?: boolean;
    setAllChecked?: () => void;
    setAllUnChecked?: () => void;
    toggleValueByIndex?: () => void;
    onUpdateSelection: (updatedData: UpdatedDataTypes) => void;
    checkboxAccessor: string;
    headerCheckboxWrapper?: (headerCell?: React.ReactElement) => ReactNode;
    checkboxHeaderClassName?: string;
    checkboxCellClassName?: string;
    data: Array<DataTypes>;
    className?: string;
    columns: (Array<ColumnProp> | null | undefined)[];
    checkboxSelectAllAriaLabel?: string;
    checkboxSelectRowAriaLabel?: (row: BodyCellTypes['row']) => string;
};
type BodyCellTypes = {
    row: {
        pid: string;
        isDisabled: boolean;
    };
    index: number;
    testId: string;
};
/**
 * Wrapper around base table to add checkboxes column
 * @param {React.Component} BaseTable - table to wrap
 * @param {
 *   headerCheckboxTestId {string} - test-id to be passed to header checkbox
 *   bodyRowCheckboxTestId {string} - test-id to be passed to table row checkbox
 * @returns React.Component;
 */
export default function withTableCellCheckboxes(BaseTable: ElementType, { headerCheckboxTestId, bodyRowCheckboxTestId, }?: {
    headerCheckboxTestId?: string | undefined;
    bodyRowCheckboxTestId?: string | undefined;
}): React.ForwardRefExoticComponent<WithTableCellCheckboxesProps & React.RefAttributes<HTMLDivElement>>;
export {};
