import { default as React, ReactNode, MouseEvent as ReactMouseEvent } from 'react';
import { MantineColor, MantineSize } from '@mantine/core';
export interface ArchbaseContextMenuItem {
    /** Chave única do item */
    key: string;
    /** Tipo do item */
    type?: 'item' | 'divider' | 'label';
    /** Label do item */
    label?: string;
    /** Ícone do item */
    icon?: ReactNode;
    /** Ícone à direita */
    rightSection?: ReactNode;
    /** Atalho de teclado */
    shortcut?: string;
    /** Cor do item */
    color?: MantineColor;
    /** Se está desabilitado */
    disabled?: boolean;
    /** Callback ao clicar */
    onClick?: () => void;
    /** Subitems (submenu) */
    children?: ArchbaseContextMenuItem[];
}
export interface ArchbaseContextMenuProps {
    /** Itens do menu */
    items: ArchbaseContextMenuItem[];
    /** Elemento alvo (elemento que abre o menu ao clicar com botão direito) */
    children: ReactNode;
    /** Se está desabilitado */
    disabled?: boolean;
    /** Tamanho do menu */
    size?: MantineSize;
    /** Largura do menu */
    width?: number | string;
    /** Se deve mostrar sombra */
    shadow?: MantineSize;
    /** Raio das bordas */
    radius?: MantineSize;
    /** Offset do menu */
    offset?: number;
    /** Classe CSS do menu */
    menuClassName?: string;
    /** Estilo do menu */
    menuStyle?: React.CSSProperties;
    /** Callback ao abrir */
    onOpen?: () => void;
    /** Callback ao fechar */
    onClose?: () => void;
    /** Classe CSS */
    className?: string;
    /** Estilo */
    style?: React.CSSProperties;
}
export declare const ArchbaseContextMenu: React.ForwardRefExoticComponent<ArchbaseContextMenuProps & React.RefAttributes<HTMLDivElement>>;
export interface UseArchbaseContextMenuOptions {
    items: ArchbaseContextMenuItem[];
    onOpen?: () => void;
    onClose?: () => void;
}
export interface UseArchbaseContextMenuReturn {
    opened: boolean;
    position: {
        x: number;
        y: number;
    };
    open: (event: ReactMouseEvent) => void;
    close: () => void;
    getHandlers: () => {
        onContextMenu: (event: ReactMouseEvent) => void;
    };
    Menu: React.FC<{
        children?: ReactNode;
    }>;
}
export declare function useArchbaseContextMenu(options: UseArchbaseContextMenuOptions): UseArchbaseContextMenuReturn;
