import type { Position } from '../../utils';
import type { MenuItem } from './types';
/**
 * This class is a singleton that represents the state of the context menu.
 *
 * It autohides based on the hovered state and filters items based on a query.
 */
export declare class ContextMenuState {
    #private;
    triggerFirstItem(): void;
    triggerItem(i: number): void;
    /** Returns the singleton instance. */
    static get instance(): ContextMenuState;
    target: HTMLElement | undefined;
    /** Position of the menu, in client coordinates. */
    pos: Position;
    minHeight: number | undefined;
    minWidth: number | undefined;
    get visible(): boolean;
    set visible(v: boolean);
    /** Delay before hiding menu in miliseconds. */
    hidingDelay: number;
    /** Visibility of the searchbar. */
    searchbar: boolean;
    onHide: (() => void) | undefined;
    /** Items of the menu. */
    items: MenuItem[];
    /** Is menu fully expanded */
    expanded: boolean;
    get query(): string;
    set query(q: string);
    sort: boolean;
    /** Filtered items. */
    filteredItems: MenuItem[];
    get focused(): boolean;
    set focused(f: boolean);
    get autohide(): boolean;
    set autohide(v: boolean);
    private updateAutohide;
    /** Sets hovered state and manages autohide. */
    set hovered(v: boolean);
    /** Returns hovered state. */
    get hovered(): boolean;
    private constructor();
}
export declare const contextMenu: ContextMenuState;
export type ShowContextMenu = (params: {
    expand?: boolean;
    pos: Position;
    /** Whether to sort the items. Default to false. */
    sort?: boolean;
    items: Partial<MenuItem>[];
    searchbar?: boolean;
    onHide?: () => void;
    autoHide?: boolean;
    target?: HTMLElement;
}) => void;
/**
 * Shows the context menu with the given items at the given position.
 *
 * Helper function to use the context menu singleton.
 */
export declare const showContextMenu: ShowContextMenu;
