import { RadioProps, RadioGroupProps as MuiRadioGroupProps, TypographyProps } from '@mui/material';
type BaseRadioProps<T> = {
    /**
     * Value of the radio button
     * @required
     */
    value: T;
    /**
     * Label of the radio button
     * @required
     */
    label: string;
    /**
     * Optional, additional label that appears below `label` and provides additional
     * context, if necessary.
     */
    sublabel?: string;
};
/**
 * *Interface used exclusively for creating radio buttons within RadioGroup*
 *
 * Radio is an interface that defines the structure and layout of a single radio button and accompanying label.
 * An array of this interface (`Radio<T>[]`) is used in the `<RadioGroup>` component as the `radios` prop to
 * define and create the radio buttons.
 */
export type Radio<T> = BaseRadioProps<T> & Omit<RadioProps, 'checked' | 'id' | 'required' | 'value'>;
type BaseRadioGroupProps<T> = {
    /**
     * Name and ID of the component. It should match a key in initialValues.
     * @required
     */
    name: string;
    /**
     * Label for the radio group.
     * @recommended
     * @default props.name
     */
    label?: string;
    /**
     * Radio buttons for the radio group.
     * @recommended
     */
    radios?: Radio<T>[];
    /**
     * Disables all radio buttons.
     * @default false
     */
    disabled?: boolean;
    /**
     * If true, the label above the radio buttons is disabled.
     */
    disableLabel?: boolean;
    /**
     * If true, the label of the the radio group will not be displayed in an error state if there are errors present.
     */
    disableRedLabelOnError?: boolean;
    /**
     * If true, causes the label to enter a focused state.
     */
    focused?: boolean;
    /**
     * If true, the radio buttons take up the entire width of its parent container.
     */
    fullWidth?: boolean;
    /**
     * Location of the label with respect to the radio button.
     * @default 'end'
     */
    labelPlacement?: 'top' | 'start' | 'bottom' | 'end';
    /**
     * Vertical alignment of the label with respect to the radio buttons. This is mainly for longer labels, or radio buttons with sublabels.
     * Only applied when `labelPlacement` is 'start' or 'end'.
     *
     * Center: Verticaly aligns the radio button with the center of the label (& sublabel)
     *
     * Top: Vertically aligns the radio button with the first line of the label
     *
     * Defaults to 'top' when labelPlacement is 'start' | 'end. Otherwise, defaults to 'center'.
     * @default 'top'
     */
    labelAlignment?: 'center' | 'top';
    /**
     * Margin for the FormControl
     */
    margin?: 'dense' | 'none' | 'normal';
    /**
     * If true, an asterisk will be displayed next to the label
     * Most browsers will automatically validate this, but it's recommended to also
     * have ( NOT Formik) also validate as well so that `Error` displays for consistency.
     * @default false
     */
    required?: boolean;
    /**
     * Forces one single color on all of the radio buttons.
     */
    sameButtonColor?: 'primary' | 'secondary' | 'default';
    /**
     * If `true`, the component becomes readonly.
     * @default false
     */
    readOnly?: boolean;
    /**
     * OnChange handler, called when the user changes their selection
     */
    onChange?: (val: T) => void;
    /**
     * Props from MUI-Bueno's Typography component.
     * Used to customize the label when the static label option is selected or the field is readOnly.
     */
    staticLabelProps?: TypographyProps;
};
export type RadioGroupProps<T> = BaseRadioGroupProps<T> & Omit<MuiRadioGroupProps, 'onChange' | 'name'>;
/**
 * RadioGroup produces a group of radio buttons that's defined as an array of Radio<T>.
 *
 * This component is ideal for limited options. For more than 4 options, use an Autocomplete or Select instead.
 */
export declare const RadioGroup: <T extends string | number | boolean | object>(props: RadioGroupProps<T>) => import("react/jsx-runtime").JSX.Element;
export {};
