import { ChangeEvent, ComponentType, ReactNode } from 'react';
type InputComponentProps = {
    label: ReactNode;
    checked?: boolean;
    onChange?: (checked: boolean, event: ChangeEvent<HTMLInputElement>) => void;
    size?: 'small' | 'medium';
};
export type RadioAndCheckboxGroupProps<T, V> = {
    component: ComponentType<InputComponentProps>;
    getOnChangeHandler: (optionValue: T, value?: V) => InputComponentProps['onChange'];
    getOptionChecked: (optionValue: T, value?: V) => boolean;
    value?: V;
    /**
     * Array of values and their labels
     */
    options?: {
        value: T;
        label: ReactNode;
    }[];
    /**
     * Group label
     */
    label?: ReactNode;
    message?: ReactNode;
    status?: 'error';
    size?: 'small' | 'medium';
    direction?: 'horizontal' | 'vertical';
    /**
     * controls spacing between options
     */
    spacing?: 'dense' | 'normal';
    className?: string;
    testId?: string;
};
export declare const RadioAndCheckboxGroup: <T, V>({ component: Component, getOnChangeHandler, getOptionChecked, value, testId, className, label, status, message, options, size, spacing, direction, }: RadioAndCheckboxGroupProps<T, V>) => JSX.Element;
export {};
//# sourceMappingURL=RadioAndCheckboxGroup.d.ts.map