import type { EventEmitter } from '../../stencil-public-runtime';
import type { RadioChangeDetail, RadioSize } from './mud-radio.types';
/**
* Radio — single-select form input atom.
*
* Pattern B (atom-interactive, form-associated): renders its own
* `` inside shadow DOM and paints the visual circle
* with CSS. Form participation works via `formAssociated` +
* `ElementInternals.setFormValue`. The component is the standalone radio
* primitive; `mud-radio-group` groups radios into one Tab stop with
* arrow-key selection and gives them one `name`.
*
* @element mud-radio
*
* @slot label - Rich label content, replaces the `label` prop when present.
* @slot supporting-text - Rich supporting text, replaces the `supportingText` prop when present.
*/
export declare class MudRadio {
/**
* Visual size rung.
* @default 'md'
*/
size: RadioSize;
/**
* Whether the radio is currently selected.
* @default false
*/
checked: boolean;
/**
* Disables interactivity. The internal control receives `aria-disabled` and
* the native `disabled` attribute.
* @default false
*/
disabled: boolean;
/**
* Maps to Figma's "Error" state — border and selected dot turn red.
* Sets `aria-invalid` on the internal control.
* @default false
*/
invalid: boolean;
/**
* Marks the field as mandatory. Sets `aria-required` on the internal control.
* @default false
*/
required: boolean;
/**
* Renders the control read-only. It remains focusable but cannot be toggled.
* @default false
*/
readonly: boolean;
/** Form-control `name`. Used during form submission and for grouping radios. */
name?: string;
/** Value submitted with the form when this radio is checked. */
value?: string;
/**
* Visible label text, which also names the input. The `label` slot replaces it
* for rich content. For an accessible name with no visible text, set the native
* `aria-label` attribute instead.
*/
label?: string;
/**
* Visible supporting text below the label, wired to the input through
* `aria-describedby`. The `supporting-text` slot replaces it for rich content.
*/
supportingText?: string;
/**
* Plain-text error message shown under the label and supporting text when
* `invalid` is set (Figma radio-label Error, 585:35232). Linked to the
* internal control through `aria-describedby`.
*/
errorText?: string;
/** ID of the element labelling the radio. Used when label content lives outside the component. */
ariaLabelledby?: string;
private hasLabelSlot;
private hasSupportingTextSlot;
private isFocused;
private fieldsetDisabled;
private resolvedAriaLabel?;
private resolvedAriaLabelledby?;
host: HTMLMudRadioElement;
internals: ElementInternals;
/** Fires whenever the checked state changes. `detail.checked` is the new state. */
mudChange: EventEmitter;
/** Fires when the internal control gains focus. The native `FocusEvent` is forwarded as-is. */
mudFocus: EventEmitter;
/** Fires when the internal control loses focus. The native `FocusEvent` is forwarded as-is. */
mudBlur: EventEmitter;
private readonly instanceId;
private readonly inputId;
private readonly labelId;
private readonly supportingId;
private readonly errorId;
private initialChecked;
private stopAriaLabel?;
validateSize(next: RadioSize): void;
handleCheckedChange(next: boolean): void;
handleValueChange(): void;
syncAriaLabelledby(next?: string): void;
connectedCallback(): void;
disconnectedCallback(): void;
componentWillLoad(): void;
/** Mirrors `disabled` from an ancestor `