import { type ChangeEvent } from "react";
import { type IAccessibilityConfigBase } from "../../typings/accessibility.js";
/**
 * @internal
 */
export interface IUiRadioProps {
    /** Whether this radio is selected. */
    checked: boolean;
    /** Fires when the user toggles the radio. */
    onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
    /**
     * `name` attribute shared by a group of mutually exclusive radios —
     * required by HTML radios.
     */
    name?: string;
    /** Value sent with the change event — the picked option's identifier. */
    value?: string;
    disabled?: boolean;
    accessibilityConfig?: IAccessibilityConfigBase;
    tabIndex?: number;
    /** Optional inline label rendered next to the radio circle. */
    label?: string;
    /**
     * Id set on the native input. When omitted a stable id is generated.
     * Pass an explicit id when an ancestor renders its own
     * `<label htmlFor={id}>` (e.g. `UiRadioRow`) so the two stay associated.
     */
    id?: string;
    dataTestId?: string;
}
/**
 * Standalone radio control — renders a native `<input type="radio">` for
 * accessibility and a custom 14px circle for the visual. The input is overlaid
 * on the circle, so clicking the circle toggles it. Renders no wrapping
 * `<label>`: an optional inline label is a sibling associated via `htmlFor`,
 * which lets `UiRadioRow` supply its own label without nesting.
 *
 * @internal
 */
export declare function UiRadio({ checked, onChange, name, value, disabled, accessibilityConfig, tabIndex, label, id, dataTestId }: IUiRadioProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=UiRadio.d.ts.map