import { RadioGroup as RadioGroupPrimitive } from 'radix-ui';
import { ComponentProps, ReactNode } from 'react';
export interface RadioGroupProps<T extends string> extends Omit<ComponentProps<typeof RadioGroupPrimitive.Root>, "value" | "onValueChange" | "defaultValue" | "onChange"> {
    /**
     * Array of options to be displayed in the radio group.
     */
    options: Array<{
        label: ReactNode;
        value: T;
    }>;
    /**
     * The currently selected value.
     */
    value?: T;
    /**
     * Callback fired when the value changes.
     *
     * onChange name is used to keep compatibility with {@link Field} component.
     */
    onChange?: (value: T) => void;
    /**
     * Default value to be selected initially for uncontrolled usage.
     */
    defaultValue?: T;
    /**
     * Direction of the radio group.
     *
     * - `row`: Arranges radio buttons horizontally in a row with wrapping if necessary
     * - `column`: Arranges radio buttons vertically in a column
     *
     * @default "column"
     */
    direction?: "row" | "column";
    className?: string;
}
/**
 * A component that composes a complete radio group with labeled options.
 *
 * This component renders a list of radio buttons with labels, arranged horizontally or vertically, with appropriate spacing and wrapping behavior.
 * It's recommended to use this component instead of the primitive {@link Radio} component, unless you need complex custom behavior.
 *
 * @template T The type of the value (string usually, but supports enum)
 *
 * @example
 * ```tsx
 * // Basic usage with string values
 * <RadioGroup
 *   options={[
 *     { label: "Option 1", value: "option1" },
 *     { label: "Option 2", value: "option2" }
 *   ]}
 *   onChange={(value) => console.log(value)}
 * />
 * ```
 *
 * @example
 * ```tsx
 * // With controlled value
 * const [value, setValue] = useState("option1");
 * <RadioGroup
 *   options={[
 *     { label: "Option 1", value: "option1" },
 *     { label: "Option 2", value: "option2" }
 *   ]}
 *   value={value}
 *   onChange={setValue}
 * />
 * ```
 *
 * @example
 * ```tsx
 * // Horizontal layout
 * <RadioGroup
 *   direction="row"
 *   options={[
 *     { label: "Option 1", value: "option1" },
 *     { label: "Option 2", value: "option2" }
 *   ]}
 *   onChange={handleChange}
 * />
 * ```
 */
export declare const RadioGroup: <T extends string>({ options, onChange, className, direction, ...props }: RadioGroupProps<T>) => import("react").JSX.Element;
