import { LitElement } from 'lit';
import '../icon/Icon.js';
declare const Switch_base: (new (...args: any[]) => import("../../util/EventEmitterMixin.js").EventEmitterMixinInterface) & (new (...args: any[]) => import("../../util/ReadyMixin.js").ReadyMixinInterface) & typeof LitElement;
/**
 * A toggle switch component for binary on/off states.
 *
 * Uses a hidden checkbox internally for accessibility, styled via the
 * `btu-switch` Tailwind plugin classes.
 *
 * @element btu-switch
 *
 * @fires {CustomEvent} btu-switch-ready - Fired after the toggle is first rendered and initialized
 * @fires {CustomEvent<{ checked: boolean }>} btu-switch-change - Fired when the user toggles the switch
 * @fires {CustomEvent} btu-switch-focus - Fired when the component gains focus
 *
 * @cssprop --switch-color-track-on - Background color when the toggle is checked (default: var(--btu-theme-primary-700))
 * @cssprop --switch-color-track-off - Background color when the toggle is unchecked (default: var(--btu-theme-gray-300))
 * @cssprop --switch-color-knob - Color of the sliding circular handle (default: var(--btu-theme-white))
 * @cssprop --switch-label-spacing - Distance between the switch and the text label (default: 0.75rem)
 * @cssprop --switch-track-width - Track width (default: sm 1.75rem, md 2.25rem, lg 2.75rem)
 * @cssprop --switch-track-height - Track height (default: sm 1rem, md 1.25rem, lg 1.5rem)
 * @cssprop --switch-knob-size - Knob diameter (default: sm 0.75rem, md 1rem, lg 1.25rem)
 * @cssprop --switch-knob-padding - Space between knob and track edges (default: 0.125rem)
 * @cssprop --switch-track-icon-size - Size of the track icons (default: sm 0.5rem, md 0.625rem, lg 0.75rem)
 */
export default class Switch extends Switch_base {
    /**
     * Controls the physical dimensions of the switch and the associated label typography.
     * @attr
     */
    size: 'sm' | 'md' | 'lg';
    /**
     * The primary text displayed next to the toggle.
     * @attr
     */
    label: string | undefined;
    /**
     * Optional helper text or secondary information displayed below the label.
     * @attr
     */
    description: string | undefined;
    /**
     * The current state of the switch (on/off).
     * @attr
     */
    checked: boolean;
    /**
     * If true, the toggle is non-interactive and visually muted.
     * @attr
     */
    disabled: boolean;
    /**
     * Name of the control for form participation.
     * @attr
     */
    name: string | undefined;
    /**
     * Determines if the label appears to the left or right of the switch.
     * @attr label-position
     */
    labelPosition: 'start' | 'end';
    /**
     * Lucide icon name shown on the track when the switch is checked (on).
     * @attr on-icon
     */
    onIcon: string | undefined;
    /**
     * Lucide icon name shown on the track when the switch is unchecked (off).
     * @attr off-icon
     */
    offIcon: string | undefined;
    /** @internal */
    private _userInitiated;
    /** @internal */
    private initialClasses;
    /** @internal */
    private _initialClassesCaptured;
    /** @internal */
    private _descId;
    connectedCallback(): void;
    createRenderRoot(): this;
    willUpdate(changedProperties: Map<string | number | symbol, unknown>): void;
    firstUpdated(changedProperties: Map<string | number | symbol, unknown>): void;
    updated(changedProperties: Map<string | number | symbol, unknown>): void;
    private _onInputChange;
    private _onFocus;
    private _toggleInput;
    render(): import("lit-html").TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        'btu-switch': Switch;
    }
}
export {};
//# sourceMappingURL=Switch.d.ts.map