/**
 * TyCheckbox Web Component
 * PORTED FROM: clj/ty/components/input.cljs (checkbox type)
 *
 * Standalone checkbox component with:
 * - Label, error messages, semantic styling
 * - Boolean checked state
 * - Form value customization
 * - Keyboard accessibility (Space/Enter)
 * - Size variants (xs, sm, md, lg, xl)
 * - Semantic flavors (primary, secondary, success, danger, warning, neutral)
 */
import type { Flavor, Size } from '../types/common.js';
import { TyComponent } from '../base/ty-component.js';
import type { PropertyChange } from '../utils/property-manager.js';
/**
 * Component internal state (for typing TyComponent)
 */
interface CheckboxState {
    checked: boolean;
    listenersSetup: boolean;
}
/**
 * TyCheckbox Element Interface
 */
export interface TyCheckboxElement extends HTMLElement {
    checked: boolean;
    value: string;
    name: string;
    disabled: boolean;
    required: boolean;
    error: string;
    size: Size;
    flavor: Flavor;
    form: HTMLFormElement | null;
}
/**
 * Ty Checkbox Component
 *
 * @example
 * ```html
 * <!-- Basic checkbox -->
 * <ty-checkbox>Subscribe to newsletter</ty-checkbox>
 *
 * <!-- Pre-checked with custom value -->
 * <ty-checkbox
 *   checked
 *   value="accepted"
 *   required>
 *   Accept terms
 * </ty-checkbox>
 *
 * <!-- With error state -->
 * <ty-checkbox
 *   required
 *   error="You must agree to continue"
 *   flavor="danger">
 *   Agree to terms
 * </ty-checkbox>
 *
 * <!-- Different sizes -->
 * <ty-checkbox size="sm">Small</ty-checkbox>
 * <ty-checkbox size="lg">Large</ty-checkbox>
 *
 * <!-- Semantic flavors -->
 * <ty-checkbox flavor="primary" checked>Primary</ty-checkbox>
 * <ty-checkbox flavor="success" checked>Success</ty-checkbox>
 *
 * <!-- Rich content (with icon) -->
 * <ty-checkbox checked>
 *   <ty-icon name="star"></ty-icon>
 *   Premium feature
 * </ty-checkbox>
 * ```
 */
export declare class TyCheckbox extends TyComponent<CheckboxState> implements TyCheckboxElement {
    static formAssociated: boolean;
    protected static properties: {
        checked: {
            type: "boolean";
            visual: boolean;
            formValue: boolean;
            emitChange: boolean;
            default: boolean;
        };
        value: {
            type: "string";
            default: string;
        };
        name: {
            type: "string";
            default: string;
        };
        disabled: {
            type: "boolean";
            visual: boolean;
            default: boolean;
        };
        required: {
            type: "boolean";
            visual: boolean;
            default: boolean;
        };
        error: {
            type: "string";
            visual: boolean;
            default: string;
        };
        size: {
            type: "string";
            visual: boolean;
            default: string;
            validate: (v: any) => boolean;
            coerce: (v: any) => any;
        };
        flavor: {
            type: "string";
            visual: boolean;
            default: string;
            validate: (v: any) => boolean;
            coerce: (v: any) => any;
        };
    };
    private _listenersSetup;
    private _clickHandler;
    private _keydownHandler;
    private _focusHandler;
    private _blurHandler;
    constructor();
    /**
     * Called when component connects to DOM
     * TyComponent already handled pre-connection property capture
     */
    protected onConnect(): void;
    /**
     * Called when component disconnects from DOM
     */
    protected onDisconnect(): void;
    /**
     * Handle property changes - called BEFORE render
     */
    protected onPropertiesChanged(changes: PropertyChange[]): void;
    /**
     * Override form value to return value when checked, null when unchecked
     */
    protected getFormValue(): FormDataEntryValue | null;
    /**
     * Build CSS class list for checkbox container
     */
    private buildClassList;
    /**
     * Handle checkbox click event - standards compliant approach
     */
    private handleCheckboxClick;
    /**
     * Handle checkbox keyboard events - space/enter to toggle
     */
    private handleCheckboxKeydown;
    /**
     * Remove event listeners for cleanup
     */
    private removeEventListeners;
    /**
     * Setup event listeners for checkbox functionality
     * IMPORTANT: Only called ONCE, not on every render
     */
    private setupEventListeners;
    /**
     * Render the checkbox component
     */
    protected render(): void;
    get checked(): boolean;
    set checked(value: boolean);
    get value(): string;
    set value(val: string);
    get name(): string;
    set name(val: string);
    get disabled(): boolean;
    set disabled(value: boolean);
    get required(): boolean;
    set required(value: boolean);
    get error(): string;
    set error(val: string);
    get size(): Size;
    set size(value: Size);
    get flavor(): Flavor;
    set flavor(value: Flavor);
    get form(): HTMLFormElement | null;
}
export {};
//# sourceMappingURL=checkbox.d.ts.map