import { HTMLTemplateResult, PropertyValueMap, PropertyValues } from "lit";
import { FRoot } from "../../mixins/components/f-root/f-root";
import { FIcon } from "../f-icon/f-icon";
import { FCounter } from "../f-counter/f-counter";
import { FPopover } from "../f-popover/f-popover";
export type FButtonState = "primary" | "neutral" | "success" | "warning" | "danger" | "inherit" | "highlight" | `custom, ${string}`;
export type FButtonAction = string | (() => HTMLTemplateResult);
export type FButtonActions = FButtonAction[];
/**
 * @summary Buttons allow users to perform an action or to initiate a new function.
 */
export declare class FButton extends FRoot {
    /**
     * css loaded from scss file
     */
    static styles: import("lit").CSSResult[];
    /**
     * @attribute local state for managing custom fill.
     */
    fill: string;
    /**
     * @attribute label property defines the text label on a button. Label of a button is always uppercase.
     */
    label: string;
    /**
     * @attribute category of button
     */
    category?: "fill" | "outline" | "transparent" | "packed";
    /**
     * @attribute The medium size is the default and recommended option.
     */
    size?: "large" | "medium" | "small" | "x-small";
    /**
     * @attribute The states on buttons are to indicate various degrees of emphasis of the action.
     */
    state?: FButtonState;
    /**
     * @attribute variant of button.
     */
    variant?: "round" | "curved" | "block";
    /**
     * @attribute Icon-left enables an icon on the left of the label of a button.
     */
    iconLeft?: string;
    /**
     * @attribute Icon-right enables an icon on the right of the label of a button.
     */
    iconRight?: string;
    /**
     * @attribute Counter property enables a counter on the button.
     */
    counter?: string;
    /**
     * @attribute Loader icon replaces the content of the button .
     */
    loading?: boolean;
    /**
     * @attribute The disabled attribute can be set to keep a user from clicking on the button.
     */
    disabled?: boolean;
    /**
     * @attribute actions are used to display if single button can do multiple actions
     */
    actions?: FButtonActions;
    /**
     * @attribute to show which action is currently selected
     */
    selectedAction?: FButtonAction;
    /**
     * @attribute Set true if want to wrap content if there is no space in button
     */
    labelWrap?: boolean;
    /**
     * icon element reference
     */
    iconElement: FIcon;
    /**
     * icon element reference
     */
    buttonActionsPopover?: FPopover;
    /**
     * counter element reference
     */
    counterElement?: FCounter;
    /**
     * compute counter size based on button size
     */
    get counterSize(): "small" | "medium" | "large" | undefined;
    get iconSize(): string;
    /**
     * compute textColor when custom color of tag is defined.
     */
    get textColor(): "#202a36" | "#fcfcfd";
    /**
     * mention required fields here for generating vue types
     */
    readonly required: string[];
    /**
     * validation for all atrributes
     */
    validateProperties(): void;
    /**
     * apply inline styles to shadow-dom for custom fill.
     */
    applyStyles(): string;
    protected willUpdate(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void;
    get hasActions(): boolean | undefined;
    render(): import("lit-html").TemplateResult<1>;
    selectAction(e: PointerEvent, action: FButtonAction): void;
    handleButtonActions(event: PointerEvent): void;
    closeButtonActions(): void;
    protected updated(changedProperties: PropertyValues): void;
}
/**
 * Required for typescript
 */
declare global {
    interface HTMLElementTagNameMap {
        "f-button": FButton;
    }
}
