import { LitElement, PropertyValues } from 'lit';
import '../../icons/icon-check-mixed.js';
import '../../icons/icon-check-google.js';
/**
 * Represents the possible states of the checkbox.
 * - `unchecked`: The checkbox is not selected.
 * - `checked`: The checkbox is selected.
 * - `mixed`: The checkbox is in an indeterminate state (typically used for
 *   parent checkboxes when some, but not all, child checkboxes are selected).
 */
export declare enum CheckboxStatus {
    unchecked = "unchecked",
    checked = "checked",
    mixed = "mixed"
}
/**
 * Represents the visual interaction state of the checkbox.
 * - `enabled`: Default interactive state.
 * - `loading`: Shows loading spinner and locks interaction.
 */
export declare enum CheckboxState {
    enabled = "enabled",
    loading = "loading"
}
/**
 * The payload for `change` and `disabled` events emitted by `<obc-checkbox>`.
 * - `status`: The current checkbox status.
 * - `disabled`: Whether the checkbox is currently disabled.
 */
export type ObcCheckboxChangeEvent = CustomEvent<{
    status: CheckboxStatus;
    disabled: boolean;
}>;
/**
 * ### Overview
 * `<obc-checkbox>` is a selectable input for binary and mixed states.
 * It supports `checked`, `unchecked`, and `mixed` (indeterminate) status
 * and is intended for forms, lists, and settings.
 *
 * Keywords: checkbox, check box, tickbox, tri-state, indeterminate, select all.
 *
 * ### Features
 * - **Three‑state support:** Allows `checked`, `unchecked`, and `mixed` (indeterminate) status for parent/child
 *   selection scenarios.
 * - **Visual state support:** `state` allows `enabled` and `loading` visual behavior.
 * - **Disabled state:** Can be set to non‑interactive, visually indicating its disabled status.
 * - **Accessible:** Implements proper ARIA role and keyboard interaction (Space **or** Enter toggles state).
 * - **Touch target:** Uses a minimum 48x48 interactive area.
 * - **Icon display:** Uses `<obi-check-google>` for checked and `<obi-check-mixed>` for mixed states.
 * - **Loading display:** Uses an indeterminate spinner when `state="loading"`.
 *
 * ### Variants
 * - **Unchecked** (default): Empty checkbox.
 * - **Checked:** Filled checkbox with a check‑mark icon.
 * - **Mixed:** Partially filled checkbox with a mixed icon.
 * - **Loading:** Spinner is shown and interaction is locked.
 *
 * ### Usage Guidelines
 * - Use `obc-checkbox` for independent binary choices or when representing a group selection with a mixed state.
 * - For mutually exclusive choices, use a radio group instead.
 * - The **mixed** state should be applied by application logic; users should not toggle into or out of it directly.
 * - Use the `disabled` property to prevent interaction and visually indicate the option is unavailable.
 * - Use `state="loading"` for transient async state while preserving layout.
 * - If there is no visible external label, provide an `aria-label` or `aria-labelledby`.
 *
 * ### Properties and Attributes
 * - `status` (`checked` | `unchecked` | `mixed`) · *default:* `unchecked` – Controls the checkbox status.
 * - `state` (`enabled` | `loading`) · *default:* `enabled` – Controls the checkbox visual state.
 * - `disabled` (`boolean`) · Disables interaction and applies disabled styling.
 * - `aria-label` (`string`) · Accessible name for screen readers.
 * - `aria-labelledby` (`string`) · ID reference to an external visible label.
 * - `aria-describedby` (`string`) · ID reference(s) for supplementary description.
 *
 * ### Events
 * - `change` – Fired when the checkbox status changes.
 *   **detail:** `{ status, disabled }`
 * - `disabled` – Fired when the `disabled` property changes.
 *   **detail:** `{ status, disabled }`
 *
 * ### Example
 * ```html
 * <obc-checkbox
 *   status="mixed"
 *   state="enabled"
 *   aria-label="Select all items"
 * ></obc-checkbox>
 * ```
 *
 * @slot - No named slots.
 * @fires change {ObcCheckboxChangeEvent} – Emitted when the status changes.
 * @fires disabled {ObcCheckboxChangeEvent} – Emitted when the disabled state changes.
 */
export declare class ObcCheckbox extends LitElement {
    /**
     * Controls the checkbox status: `checked`, `unchecked`, or `mixed` (indeterminate).
     *
     * Defaults to `unchecked`.
     */
    status: CheckboxStatus;
    /**
     * Controls the visual state: `enabled` or `loading`.
     *
     * Defaults to `enabled`.
     */
    state: CheckboxState;
    /**
     * Disables the checkbox and prevents user interaction.
     *
     * When `true`, the checkbox is visually styled as disabled and does not respond to user input.
     * Interaction is also locked when `state === loading`.
     */
    disabled: boolean;
    /** Internal: controls hover effects on the checkbox. Used by wrapper components such as `obc-checkbox-item`. */
    hasHoverEffects: boolean;
    private checkboxControl?;
    private get _isInteractionLocked();
    protected updated(changed: PropertyValues<this>): void;
    private toggleStatus;
    private handleKeydown;
    private get _computedAriaChecked();
    focus(options?: FocusOptions): void;
    private syncFocusVisibleAttribute;
    private handleControlFocus;
    private handleControlBlur;
    render(): import('lit-html').TemplateResult<1>;
    static styles: import('lit').CSSResult[];
}
declare global {
    interface HTMLElementTagNameMap {
        'obc-checkbox': ObcCheckbox;
    }
}
//# sourceMappingURL=checkbox.d.ts.map