/**
 * FloatingActionButton Molecule Component
 *
 * A floating action button that can expand into multiple actions vertically.
 * Uses Button atom.
 *
 * Props mirror Button's `action`/`actionPayload` convention so a schema can
 * declare `{ type: "floating-action-button", action: "INIT", icon: "plus" }`
 * and have the FAB emit `UI:INIT` via the event bus on click — same shape
 * any other clickable surface uses.
 */
import React from "react";
import type { LucideIcon } from "lucide-react";
import type { EventKey, EventPayload } from "@almadar/core";
export interface FloatingAction {
    /**
     * Action ID
     */
    id: string;
    /**
     * Action label
     */
    label: string;
    /**
     * Action icon
     */
    icon: LucideIcon;
    /**
     * Action click handler
     */
    onClick?: () => void;
    /** Event name to emit when clicked (for trait state machine integration) */
    event?: string;
    /**
     * Action variant
     */
    variant?: "primary" | "secondary" | "success" | "danger" | "warning";
}
export interface FloatingActionButtonProps {
    /**
     * Declarative event name. When set, clicking the FAB emits `UI:{action}`
     * via the event bus and (if also provided) calls `onClick`. Mirrors the
     * Button atom's `action` prop so schemas can write
     * `{ type: "floating-action-button", action: "INIT" }` uniformly.
     */
    action?: EventKey;
    /**
     * Payload to include with the dispatched action event.
     */
    actionPayload?: EventPayload;
    /**
     * Multiple actions. When provided, the button expands to show all of them.
     */
    actions?: FloatingAction[];
    /**
     * Icon name (resolves to a Lucide icon by PascalCase / kebab-case lookup).
     */
    icon?: string;
    /**
     * Optional direct click handler. Runs after the action emit when both are
     * present.
     */
    onClick?: () => void;
    /**
     * Visual variant.
     */
    variant?: "primary" | "secondary" | "success" | "danger" | "warning";
    /**
     * Optional label shown via `aria-label` (visually hidden in single-action
     * mode; rendered as a tooltip beside expanded actions in multi-action mode).
     */
    label?: string;
    /**
     * Button position
     * @default 'bottom-right'
     */
    position?: "bottom-right" | "bottom-left" | "bottom-center" | "top-right" | "top-left" | "top-center" | string;
    /**
     * Additional CSS classes
     */
    className?: string;
}
export declare const FloatingActionButton: React.FC<FloatingActionButtonProps>;
