import { ComponentProps, HTMLAttributes } from 'react';
import { LucideIcon } from '@fileverse/ui';

export interface TabItemProps {
    tabId: string;
    name: string;
    emoji: string;
    commentCount?: number;
    onNameChange: (name: string, emoji?: string) => void;
    onEmojiChange: (emoji: string) => void;
    onClick: () => void;
    isActive: boolean;
    isEditing?: boolean;
    setIsEditing?: React.Dispatch<React.SetStateAction<boolean>>;
    onDuplicate?: (id: string) => void;
    dragHandleProps?: HTMLAttributes<HTMLDivElement>;
    hideContentMenu?: boolean;
    showOutline?: boolean;
    handleShowOutline?: (value: boolean) => void;
    canMoveUp?: boolean;
    canMoveDown?: boolean;
    onMoveUp?: () => void;
    onMoveDown?: () => void;
    isPreviewMode: boolean;
    isVersionHistoryMode?: boolean;
    onCopyLink?: () => void;
    onDelete?: () => void;
    isConnected?: boolean;
}
interface SortableTabItemProps extends Omit<TabItemProps, 'dragHandleProps' | 'isEditing' | 'setIsEditing'> {
    id: string;
}
interface TabContextMenuItem {
    id: string;
    label: string;
    icon: ComponentProps<typeof LucideIcon>['name'];
    onSelect?: () => void;
    visible?: boolean;
    closeOnSelect?: boolean;
    textClassName?: string;
    iconStroke?: string;
    tooltipText?: string;
    disabled?: boolean;
}
interface TabContextMenuProps {
    sections: TabContextMenuItem[][];
    popoverSide?: 'top' | 'bottom';
    popoverClassName?: string;
}
export declare const SortableTabItem: (props: SortableTabItemProps) => import("react/jsx-runtime").JSX.Element;
export declare const TabItem: ({ isEditing, setIsEditing, tabId, name, emoji, commentCount, onNameChange, onEmojiChange, onClick, isActive, onDuplicate, dragHandleProps, hideContentMenu, showOutline, handleShowOutline, canMoveUp, canMoveDown, onMoveUp, onMoveDown, isPreviewMode, isVersionHistoryMode, onCopyLink, onDelete, isConnected, }: TabItemProps) => import("react/jsx-runtime").JSX.Element;
export declare const TabDragPreview: ({ name, emoji, }: {
    name: string;
    emoji: string;
}) => import("react/jsx-runtime").JSX.Element;
export declare const TabContextMenuAction: ({ item, }: {
    item: TabContextMenuItem;
}) => import("react/jsx-runtime").JSX.Element;
export declare const TabContextMenu: ({ sections, popoverSide, popoverClassName, }: TabContextMenuProps) => import("react/jsx-runtime").JSX.Element;
export {};
