/**
 * SyntroLauncher — Lit web component equivalent of the launcher FAB
 * from ShadowCanvasOverlay.tsx.
 *
 * Renders a floating action button that:
 *   - Toggles the canvas open/closed (fires `launcher-toggle`)
 *   - Supports drag-to-reposition (pointerdown/move/up with 5px threshold)
 *   - Shows different icons: X when open, custom image if configured, sparkles default
 *   - Pulse/glow animation when `launcherAnimate` is true and canvas is closed
 *   - Notification badge with count, ping ring, glow pulse, and bounce animation
 *   - Hover changes background color using theme config values
 *   - CSS keyframe animations built dynamically using theme colors
 *
 * Usage:
 *   <syntro-launcher
 *     .isOpen=${false}
 *     .launcherAnimate=${true}
 *     .notificationCount=${3}
 *     .position=${'right'}
 *     .launcherIcon=${null}
 *     .colorPrimary=${primaryHex}
 *     .colorPrimaryHover=${primaryHoverHex}
 *     .launcherConfig=${{ background: bgHex, backgroundHover: hoverHex }}
 *   ></syntro-launcher>
 *
 *   element.addEventListener('launcher-toggle', () => { ... });
 *
 * Decorator-free: uses `static override properties` (tsconfig has no experimentalDecorators).
 * Light DOM: uses `createRenderRoot() { return this; }` to inherit parent shadow CSS vars.
 */
import { LitElement } from 'lit';
import type { LauncherElementConfig } from '../theme/types.js';
export declare class SyntroLauncher extends LitElement {
    static properties: {
        isOpen: {
            type: BooleanConstructor;
        };
        launcherAnimate: {
            type: BooleanConstructor;
        };
        notificationCount: {
            type: NumberConstructor;
        };
        position: {
            type: StringConstructor;
        };
        launcherIcon: {
            attribute: boolean;
        };
        colorPrimary: {
            type: StringConstructor;
        };
        colorPrimaryHover: {
            type: StringConstructor;
        };
        launcherConfig: {
            attribute: boolean;
        };
        hasActiveTiles: {
            type: BooleanConstructor;
        };
        _launcherPos: {
            state: boolean;
        };
        _hovered: {
            state: boolean;
        };
    };
    isOpen: boolean;
    launcherAnimate: boolean;
    notificationCount: number;
    position: 'left' | 'right';
    launcherIcon: string | null;
    colorPrimary: string;
    colorPrimaryHover: string;
    launcherConfig: LauncherElementConfig;
    hasActiveTiles: boolean;
    _launcherPos: {
        x: number;
        y: number;
    } | null;
    _hovered: boolean;
    private _drag;
    private _styleEl;
    createRenderRoot(): this;
    connectedCallback(): void;
    updated(changed: Map<string, unknown>): void;
    disconnectedCallback(): void;
    /**
     * Inject/update a <style> element with dynamic keyframe CSS that uses
     * the current colorPrimary and colorPrimaryHover values.
     * These cannot live in `static styles` because keyframe values
     * need to be literal colors (var() is unreliable in keyframes).
     */
    private _ensureDynamicStyles;
    private _onPointerDown;
    private _onPointerMove;
    private _onPointerUp;
    private _onMouseEnter;
    private _onMouseLeave;
    render(): import("lit-html").TemplateResult<1>;
    private _renderIcon;
    private _renderBadge;
}
declare global {
    interface HTMLElementTagNameMap {
        'syntro-launcher': SyntroLauncher;
    }
}
