import type { UniqueIdentifier } from "@dnd-kit/core";
import { type Theme } from "@emotion/react";
import type { ChangeEventHandler, HTMLAttributes, MouseEventHandler } from "react";
import type { TabContextType } from "../Tab";
export declare const INPUT_WRAPPER_TEST_ID = "tab-button-input-wrapper";
export type TabButtonMenuAction = (context: TabContextType, value: UniqueIdentifier | null) => void;
export interface TabButtonMenuItem {
    label: string;
    action: TabButtonMenuAction;
}
export interface TabButtonProps extends HTMLAttributes<HTMLDivElement> {
    label: string;
    value: UniqueIdentifier | null;
    showMenu?: boolean;
    menuItems?: TabButtonMenuItem[];
    onRename?: ChangeEventHandler<HTMLInputElement>;
    onFinishRenaming?: () => void;
    isRenaming?: boolean;
    onInputDoubleClick?: MouseEventHandler<HTMLSpanElement>;
    disabled?: boolean;
}
export interface RenameableTabButtonProps extends Omit<TabButtonProps, "onRename" | "onFinishRenaming" | "isRenaming"> {
    onRename: (newLabel: string) => void;
    renameMenuLabel?: string;
    renameMenuIndex?: number;
    canRename?: boolean;
    value: UniqueIdentifier;
}
export declare const RenameableTabButtonStyled: import("@emotion/styled").StyledComponent<TabButtonProps & import("react").RefAttributes<HTMLInputElement> & {
    theme?: Theme | undefined;
} & {
    isRenaming: boolean;
    isSelected: boolean;
    canRename: boolean;
}, {}, {}>;
export declare function RenameableTabButton({ label: labelProp, menuItems: originalMenuItems, onRename, renameMenuLabel, renameMenuIndex, canRename, ...props }: RenameableTabButtonProps): import("react/jsx-runtime").JSX.Element;
export declare const TabButton: ((props: TabButtonProps & import("react").RefAttributes<HTMLInputElement>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>> | null) & {
    Root: import("@emotion/styled").StyledComponent<{
        theme?: Theme | undefined;
        as?: import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> | undefined;
    } & import("./TabButton.styled").TabButtonProps, import("react").DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
    Renameable: typeof RenameableTabButton;
};
