import * as React from "react";
import { type TIconType } from "../adpIcon";
import type { Placement } from "@floating-ui/react";
export declare const colors: readonly ["primary", "secondary", "success", "warning", "error"];
export declare const variants: readonly ["filled", "outline", "shade", "text"];
export declare enum ESizes {
    XS = "xs",
    SM = "sm",
    MD = "md",
    LG = "lg",
    XL = "xl"
}
export type TColor = (typeof colors)[number];
export type TVariant = (typeof variants)[number];
export type TSize = `${ESizes}`;
/**
 * Button component from Astral UI
 */
export interface IButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "css"> {
    /**
     * Size of the button.
     * @default md
     */
    size?: TSize;
    /**
     * Color of the button.
     * @default primary
     */
    color?: TColor;
    /**
     * Variant of the button.
     * @default filled
     */
    variant?: TVariant;
    /**
     * Shows loading animation instead of the button content
     */
    loading?: boolean;
    /**
     * Icon to be displayed before the button's content.
     * @description
     * This prop accepts either an IconType (string) or a ReactNode.
     * - If an IconType is provided, it will render an ADPIcon component.
     * - If a ReactNode is provided, it will be rendered as-is.
     */
    prefixIcon?: TIconType | React.ReactNode;
    /**
     * Icon to be displayed after the button's content.
     * @description
     * This prop accepts either an IconType (string) or a ReactNode.
     * - If an IconType is provided, it will render an ADPIcon component.
     * - If a ReactNode is provided, it will be rendered as-is.
     */
    suffixIcon?: TIconType | React.ReactNode;
    /**
     * Tooltip to be displayed on hover of the button.
     * @description
     * This prop accepts a ReactNode, if this is passed then the button will render
     *  tooltip on hover of the button.
     * This tooltip is only on hover and not on click.
     */
    tooltip?: React.ReactNode;
    /**
     * Placement of the tooltip
     * @default "bottom-end"
     */
    tooltipPlacement?: Placement;
}
export declare const ButtonSizeToSpinnerMap: Record<TSize, "xxs" | "xs" | "sm" | "md" | "lg" | "xl">;
/**
 * Button component with multiple variants, colors, and sizes.
 *
 * @example
 * ```tsx
 * <Button variant="filled" color="primary" size="md">
 *   Click me
 * </Button>
 * ```
 */
export declare const Button: React.ForwardRefExoticComponent<IButtonProps & React.RefAttributes<HTMLButtonElement>>;
