type RadioCheckedChangeReason = "root-press" | "input-change" | "imperative-action"; type RadioCheckedChangeDetails = { readonly checked: boolean; readonly event?: Event; readonly isCanceled: boolean; readonly previousChecked: boolean; readonly reason: RadioCheckedChangeReason; readonly trigger?: Element; cancel(): void; onAccepted(callback: () => void): void; }; type RadioOptions = { checked?: boolean; defaultChecked?: boolean; disabled?: boolean; form?: string; id?: string; name?: string; onCheckedChange?: (checked: boolean, details: RadioCheckedChangeDetails) => void; readOnly?: boolean; required?: boolean; value?: string; }; type RadioSetCheckedOptions = { emit?: boolean; }; type RadioSelectionOwnerCompletion = { /** * Whether the owner accepted the transition before external value reconciliation. * Legacy owners may omit this, in which case `committed` also represents acceptance. */ readonly accepted?: boolean; readonly committed: boolean; readonly current: boolean; readonly errors: readonly unknown[]; }; type RadioInstance = { readonly root: HTMLElement; destroy(): void; getChecked(): boolean; select(): void; setChecked(checked: boolean, options?: RadioSetCheckedOptions): void; setDisabled(disabled: boolean): void; setFormOptions(options: Pick): void; setReadOnly(readOnly: boolean): void; setRequired(required: boolean): void; setSelectionOwner(owner?: (details: RadioCheckedChangeDetails) => void): void; setSelectionOwnerWithCompletion(owner?: (details: RadioCheckedChangeDetails) => RadioSelectionOwnerCompletion): void; subscribe(event: "stateSync", callback: () => void): () => void; subscribe(event: "checkedChange", callback: (details: RadioCheckedChangeDetails) => void): () => void; }; declare function createRadio(root: HTMLElement, options?: RadioOptions): RadioInstance; export { type RadioCheckedChangeDetails, type RadioCheckedChangeReason, type RadioInstance, type RadioOptions, type RadioSelectionOwnerCompletion, type RadioSetCheckedOptions, createRadio };