import React from "react";
import type { EventKey, EventPayload } from "@almadar/core";
import { type LucideIcon } from "lucide-react";
export type ButtonVariant = "primary" | "secondary" | "ghost" | "danger" | "success" | "warning" | "default";
export type ButtonSize = "sm" | "md" | "lg";
export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
    variant?: ButtonVariant;
    size?: ButtonSize;
    isLoading?: boolean;
    /** Left icon as ReactNode, Lucide component, or string name (e.g. "plus", "trash") */
    leftIcon?: React.ReactNode | LucideIcon | string;
    /** Right icon as ReactNode, Lucide component, or string name */
    rightIcon?: React.ReactNode | LucideIcon | string;
    /** Alias for leftIcon */
    icon?: React.ReactNode | LucideIcon | string;
    /** Alias for rightIcon */
    iconRight?: React.ReactNode | LucideIcon | string;
    /** Declarative event name — emits UI:{action} via eventBus on click */
    action?: EventKey;
    /** Payload to include with the action event */
    actionPayload?: EventPayload;
    /** Button label text (alternative to children for schema-driven rendering) */
    label?: string;
}
export declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
