import PropTypes from 'prop-types';
import { BulletPointMenuButtonProps } from '../bullet-point-menu-button/types';
import { ButtonLinkProps } from '../../atom/button-link/types';
import { StatusItemProps } from '../../atom/status-item/types';
import { Props as ErrorsTableProps } from '../errors-table/types';
import { Props as BulkProgressBarProps } from '../bulk-progress-bar/types';
export declare const propTypes: {
    columns: PropTypes.Requireable<(PropTypes.InferProps<{
        title: PropTypes.Validator<string>;
    }> | null | undefined)[]>;
    rows: PropTypes.Requireable<(PropTypes.InferProps<{
        fields: PropTypes.Requireable<(NonNullable<string | PropTypes.InferProps<{
            type: PropTypes.Requireable<string>;
            current: PropTypes.Requireable<boolean>;
            selected: PropTypes.Requireable<boolean>;
            icon: PropTypes.Requireable<string>;
            value: PropTypes.Requireable<string>;
        }> | null | undefined> | null | undefined)[]>;
        isRowExpandible: PropTypes.Requireable<boolean>;
        lastField: PropTypes.Requireable<NonNullable<string | PropTypes.InferProps<{
            type: PropTypes.Requireable<string>;
            'data-name': PropTypes.Requireable<string>;
            disabled: PropTypes.Requireable<boolean>;
            buttonAriaLabel: PropTypes.Requireable<string>;
            menuAriaLabel: PropTypes.Requireable<string>;
            buttons: PropTypes.Validator<(PropTypes.InferProps<{
                'data-name': PropTypes.Requireable<string>;
                disabled: PropTypes.Requireable<boolean>;
                label: PropTypes.Validator<string>;
                onClick: PropTypes.Requireable<(...args: any[]) => any>;
                type: PropTypes.Requireable<string>;
                buttonLinkType: PropTypes.Requireable<string>;
                icon: PropTypes.Requireable<PropTypes.InferProps<{
                    theme: PropTypes.Requireable<string>;
                    position: PropTypes.Requireable<string>;
                    type: PropTypes.Requireable<string>;
                    faIcon: PropTypes.Requireable<PropTypes.InferProps<{
                        name: PropTypes.Validator<string>;
                        color: PropTypes.Requireable<string>;
                        backgroundColor: PropTypes.Requireable<string>;
                        size: PropTypes.Requireable<number>;
                        customStyle: PropTypes.Requireable<{
                            [x: string]: NonNullable<string | number | null | undefined> | null | undefined;
                        }>;
                    }>>;
                }>>;
                customStyle: PropTypes.Requireable<{
                    [x: string]: NonNullable<string | number | null | undefined> | null | undefined;
                }>;
            }> | null | undefined)[]>;
            onClick: PropTypes.Requireable<(...args: any[]) => any>;
            menuButtonClassName: PropTypes.Requireable<string>;
            isBulkMenu: PropTypes.Requireable<boolean>;
        }> | null | undefined>>;
    }> | null | undefined)[]>;
    stickyFirstColumn: PropTypes.Requireable<boolean>;
    stickyLastColumn: PropTypes.Requireable<boolean>;
    columnWidth: PropTypes.Requireable<string>;
    ariaDescribedby: PropTypes.Requireable<string>;
    lastField: PropTypes.Requireable<NonNullable<PropTypes.InferProps<{
        componentType: PropTypes.Requireable<string>;
        type: PropTypes.Requireable<string>;
        usage: PropTypes.Requireable<string>;
        label: PropTypes.Requireable<string>;
        content: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        'aria-label': PropTypes.Requireable<string>;
        tooltipText: PropTypes.Requireable<string>;
        tooltipPlacement: PropTypes.Requireable<string>;
        'data-name': PropTypes.Requireable<string>;
        'data-testid': PropTypes.Requireable<string>;
        icon: PropTypes.Requireable<PropTypes.InferProps<{
            position: PropTypes.Requireable<string>;
            type: PropTypes.Requireable<string>;
            faIcon: PropTypes.Requireable<PropTypes.InferProps<{
                name: PropTypes.Validator<string>;
                color: PropTypes.Requireable<string>;
                backgroundColor: PropTypes.Requireable<string>;
                size: PropTypes.Requireable<number>;
                customStyle: PropTypes.Requireable<{
                    [x: string]: NonNullable<string | number | null | undefined> | null | undefined;
                }>;
            }>>;
        }>>;
        onClick: PropTypes.Requireable<(...args: any[]) => any>;
        link: PropTypes.Requireable<PropTypes.InferProps<{
            href: PropTypes.Requireable<string>;
            download: PropTypes.Requireable<boolean>;
            target: PropTypes.Requireable<string>;
        }>>;
        hoverBackgroundColor: PropTypes.Requireable<string>;
        hoverColor: PropTypes.Requireable<string>;
        disabled: PropTypes.Requireable<boolean>;
        className: PropTypes.Requireable<string>;
        customStyle: PropTypes.Requireable<{
            [x: string]: NonNullable<string | number | null | undefined> | null | undefined;
        }>;
    }> | PropTypes.InferProps<{
        componentType: PropTypes.Requireable<string>;
        'data-name': PropTypes.Requireable<string>;
        disabled: PropTypes.Requireable<boolean>;
        buttonAriaLabel: PropTypes.Requireable<string>;
        menuAriaLabel: PropTypes.Requireable<string>;
        buttons: PropTypes.Validator<(PropTypes.InferProps<{
            'data-name': PropTypes.Requireable<string>;
            disabled: PropTypes.Requireable<boolean>;
            label: PropTypes.Validator<string>;
            onClick: PropTypes.Requireable<(...args: any[]) => any>;
            type: PropTypes.Requireable<string>;
            buttonLinkType: PropTypes.Requireable<string>;
            icon: PropTypes.Requireable<PropTypes.InferProps<{
                theme: PropTypes.Requireable<string>;
                position: PropTypes.Requireable<string>;
                type: PropTypes.Requireable<string>;
                faIcon: PropTypes.Requireable<PropTypes.InferProps<{
                    name: PropTypes.Validator<string>;
                    color: PropTypes.Requireable<string>;
                    backgroundColor: PropTypes.Requireable<string>;
                    size: PropTypes.Requireable<number>;
                    customStyle: PropTypes.Requireable<{
                        [x: string]: NonNullable<string | number | null | undefined> | null | undefined;
                    }>;
                }>>;
            }>>;
            customStyle: PropTypes.Requireable<{
                [x: string]: NonNullable<string | number | null | undefined> | null | undefined;
            }>;
        }> | null | undefined)[]>;
        onClick: PropTypes.Requireable<(...args: any[]) => any>;
        menuButtonClassName: PropTypes.Requireable<string>;
        isBulkMenu: PropTypes.Requireable<boolean>;
    }> | null | undefined>>;
    isNestedTable: PropTypes.Requireable<boolean>;
    emptyStateFirstMessage: PropTypes.Requireable<string>;
    emptyStateSecondMessage: PropTypes.Requireable<string>;
};
export declare type Field = string | (StatusItemProps & {
    componentType: 'status';
}) | (BulkProgressBarProps & {
    componentType: 'progress-bar';
});
export declare type LastField = (ButtonLinkProps & {
    componentType: 'button-link';
}) | (BulletPointMenuButtonProps & {
    componentType: 'menu';
});
export declare type NestedRow = (ErrorsTableProps & {
    componentType: 'errors-table';
}) | (Props & {
    componentType: 'expandible-errors-table';
});
export declare type Column = {
    title: string;
};
export declare type Row = {
    fields: Field[];
    nestedRow?: NestedRow;
    isRowExpandible?: boolean;
};
export declare type Columns = Column[];
export declare type Rows = Row[];
export declare type Props = {
    columns: Columns;
    rows?: Rows;
    stickyFirstColumn?: boolean;
    stickyLastColumn?: boolean;
    columnWidth?: `${number}${'px' | '%'}`;
    ariaDescribedby?: string;
    lastField?: LastField;
    isNestedTable?: boolean;
    emptyStateFistMessage?: string;
    emptyStateSecondMessage?: string;
};
export declare type ExpandState = {
    [key: number]: boolean;
};
//# sourceMappingURL=types.d.ts.map