import { default as React } from 'react';

export interface RadioGroupContextValue {
    value?: string;
    onChange?: (value: string) => void;
    disabled?: boolean;
    required?: boolean;
    loading?: boolean;
    variant?: RadioGroupVariant;
    size?: RadioGroupSize;
    status?: RadioGroupStatus;
    name?: string;
}
export type RadioGroupVariant = 'default' | 'filled' | 'outlined' | 'ghost' | 'card';
export type RadioGroupSize = 'sm' | 'md' | 'lg';
export type RadioGroupStatus = 'default' | 'success' | 'warning' | 'error';
export type RadioGroupOrientation = 'horizontal' | 'vertical';
export interface RadioGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
    value?: string;
    defaultValue?: string;
    onChange?: (value: string) => void;
    disabled?: boolean;
    required?: boolean;
    loading?: boolean;
    name?: string;
    variant?: RadioGroupVariant;
    size?: RadioGroupSize;
    status?: RadioGroupStatus;
    orientation?: RadioGroupOrientation;
    label?: React.ReactNode;
    helperText?: React.ReactNode;
    errorMessage?: string;
    emptyMessage?: string;
    transition?: 'none' | 'slide' | 'fade' | 'bounce' | 'smooth';
    transitionDuration?: number;
    containerClassName?: string;
    containerStyle?: React.CSSProperties;
    backgroundColor?: string;
    borderWidth?: string;
    borderColor?: string;
    borderStyle?: string;
    borderRadius?: string;
    padding?: string;
    paddingX?: string;
    paddingY?: string;
    boxShadow?: string;
    gap?: string;
    groupBackgroundColor?: string;
    groupBorderWidth?: string;
    groupBorderColor?: string;
    groupBorderRadius?: string;
    groupPadding?: string;
    labelColor?: string;
    labelFontSize?: string;
    labelFontWeight?: string;
    labelFontFamily?: string;
    helperTextColor?: string;
    helperTextFontSize?: string;
    errorMessageColor?: string;
    focusRingColor?: string;
    focusRingWidth?: string;
    focusRingOffset?: string;
    focusBorderColor?: string;
    focusBackgroundColor?: string;
    focusBoxShadow?: string;
    renderLabel?: (required?: boolean) => React.ReactNode;
    renderOption?: (option: RadioOptionProps, isSelected: boolean, isDisabled?: boolean) => React.ReactNode;
    successColor?: string;
    warningColor?: string;
    errorColor?: string;
    children?: React.ReactNode;
}
export interface RadioOptionProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {
    value: string;
    label?: React.ReactNode;
    description?: React.ReactNode;
    disabled?: boolean;
    icon?: React.ReactNode;
    checkedIcon?: React.ReactNode;
    optionBackgroundColor?: string;
    optionBorderColor?: string;
    optionBorderWidth?: string;
    optionBorderRadius?: string;
    optionPadding?: string;
    radioSize?: string;
    radioBackgroundColor?: string;
    radioBorderColor?: string;
    radioBorderWidth?: string;
    radioCheckedColor?: string;
    radioBoxShadow?: string;
    labelColor?: string;
    labelFontSize?: string;
    labelFontWeight?: string;
    descriptionColor?: string;
    descriptionFontSize?: string;
    focusRingColor?: string;
    focusRingWidth?: string;
    focusBackgroundColor?: string;
    hoverBackgroundColor?: string;
    hoverBorderColor?: string;
    children?: React.ReactNode;
}
export interface RadioGroupLabelProps {
    className?: string;
    style?: React.CSSProperties;
    required?: boolean;
    children: React.ReactNode;
}
export interface RadioGroupHelperTextProps {
    className?: string;
    style?: React.CSSProperties;
    id?: string;
    children: React.ReactNode;
}
export declare const useRadioGroupContext: () => RadioGroupContextValue;
export declare const RadioGroupLabel: React.ForwardRefExoticComponent<RadioGroupLabelProps & React.RefAttributes<HTMLLabelElement>>;
export declare const RadioGroupHelperText: React.ForwardRefExoticComponent<RadioGroupHelperTextProps & React.RefAttributes<HTMLDivElement>>;
export declare const RadioOption: React.ForwardRefExoticComponent<RadioOptionProps & React.RefAttributes<HTMLInputElement>>;
interface RadioGroupComponent extends React.ForwardRefExoticComponent<RadioGroupProps & React.RefAttributes<HTMLDivElement>> {
    Option: typeof RadioOption;
    Label: typeof RadioGroupLabel;
    HelperText: typeof RadioGroupHelperText;
}
declare const RadioGroup: RadioGroupComponent;
export { RadioGroup };
export default RadioGroup;
