import { LitElement } from 'lit';
/**
 * `<obc-radio>` – A single radio button component for selecting one option from a set.
 *
 * Provides a standard radio input with optional label, supporting grouping via the native `name` attribute. Designed for use in forms or option groups where only one selection is allowed at a time. Renders in the light DOM to ensure correct browser-managed group behavior.
 *
 * ---
 *
 * ### Features
 * - **Native grouping:** Multiple `<obc-radio>` elements with the same `name` behave as a group, allowing only one to be selected at a time (leverages browser's native radio input mechanics).
 * - **Optional label:** Supports an inline label via the `label` property, or can be rendered without a label for custom layouts.
 * - **State options:** Supports `checked`, `disabled`, and `required` states for form integration.
 * - **Customizable value:** The `value` property sets the value submitted with the form when selected.
 * - **Accessible:** Associates the label with the input via `inputId` for improved accessibility.
 * - **No Shadow DOM:** Renders in the light DOM to ensure radios with the same `name` are grouped correctly by the browser.
 *
 * ---
 *
 * ### Usage Guidelines
 * - Use `<obc-radio>` when you need users to select one option from a list. For multiple independent selections, use a checkbox component instead.
 * - To create a group, render multiple `<obc-radio>` elements with the same `name` property. Only one can be checked at a time within the group.
 * - Always provide a unique `inputId` if you use the `label` property, to ensure the label is correctly associated with the input for accessibility.
 * - If a label is not needed, omit the `label` property to render a standalone radio input.
 * - For form submission, set the `value` property to the value you want submitted when this radio is selected.
 * - The `checked` property can be controlled for programmatic selection.
 *
 * ---
 *
 * ### Best Practices and Constraints
 * - Ensure all radios in a group share the same `name` attribute for correct group behavior.
 * - Only one radio in a group should have `checked` set to true.
 * - Use the `disabled` property to prevent user interaction when needed.
 * - Use the `required` property on at least one radio in a group if the selection is mandatory.
 * - For accessibility, always associate the label with the input using `inputId`.
 * - This component does not emit custom events; use standard form events or listen to the native input's change event if needed.
 *
 * ---
 *
 * **Example:**
 * ```html
 * <obc-radio label="Option A" name="group1" value="A" inputId="radioA"></obc-radio>
 * <obc-radio label="Option B" name="group1" value="B" inputId="radioB"></obc-radio>
 * ```
 * In this example, only one radio can be selected at a time within the "group1" group.
 * @fires change - Fired when the radio is changed.
 * @slot - No named slots; content is provided via properties.
 */
export declare class ObcRadio extends LitElement {
    /**
     * The label text displayed next to the radio button.
     * If omitted, the radio renders without a label.
     */
    label: string | undefined;
    /**
     * The name attribute for grouping radios.
     * Radios with the same name are grouped, allowing only one to be selected at a time.
     */
    name: string | undefined;
    /**
     * The value submitted with the form when this radio is selected.
     */
    value: string | undefined;
    /**
     * Whether the radio is currently selected.
     * Only one radio in a group should be checked at a time.
     */
    checked: boolean;
    /**
     * Disables the radio button, preventing user interaction.
     */
    disabled: boolean;
    /**
     * Marks the radio as required for form validation.
     * At least one radio in a group should be required if selection is mandatory.
     */
    required: boolean;
    /**
     * The id attribute for the underlying input element.
     * Should be unique within the document and used to associate the label for accessibility.
     */
    inputId: string;
    private static stylesInjected;
    private static adoptedRoots;
    disconnectedCallback(): void;
    connectedCallback(): void;
    private injectStyles;
    private injectGlobalStyles;
    private injectIntoShadowDOM;
    private adoptStylesIntoShadowRoot;
    private getCSSText;
    createRenderRoot(): this;
    onClick(): void;
    onChange(event: Event): void;
    render(): import('lit-html').TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        'obc-radio': ObcRadio;
    }
}
//# sourceMappingURL=radio.d.ts.map