import { EditorCommand } from "./EditorCommand";
import { EditorMenuBar } from "./EditorMenuBar";
import { ToolbarProperties } from "./ToolbarProperties";
import { Tag } from "../Tags";
import { PromotedTagOptions } from "../PromotedTagOptions";
export interface HashTagCommand extends EditorCommand {
}
export interface EditorHashTagMenuBar extends EditorMenuBar<HashTagCommand> {
}
export interface HashTagToolbarProperties extends ToolbarProperties<HashTagCommand> {
    menuHandler: (menubar: IHashTagMenuBarDefinition) => void;
    selectTag: (tag: Tag) => void;
    promotedTagOptions?: PromotedTagOptions;
}
export interface HashTagEditorExtensionConfiguration {
    items: (query: string, virtualNode: any) => Promise<Tag[]>;
    onEnter: ({ items, query, range, command, virtualNode }: {
        items: any;
        query: any;
        range: any;
        command: any;
        virtualNode: any;
    }) => any;
    onChange: ({ items, query, range, virtualNode }: {
        items: any;
        query: any;
        range: any;
        virtualNode: any;
    }) => any;
    onExit: () => any;
    onKeyDown: ({ event }: {
        event: any;
    }) => any;
    onFilter: (items: any, query: any) => any;
    onRemoveTag: (tag: Tag) => void;
    onSelectTag: (tag: Tag) => void;
}
export interface HashTagMenuBar {
    items: Array<Tag>;
    showLoading: boolean;
    showMenu: boolean;
    offsetX: number;
    offsetY: number;
    index: number;
    searchKeyword: string;
}
export interface IHashTagMenuBarDefinition {
    SetItems: (items: Array<Tag>) => this;
    SetLoading: (loading: boolean) => this;
    SetShowMenu: (show: boolean) => this;
    SetOffsetX: (offsetX: number) => this;
    SetOffsetY: (offsetY: number) => this;
    SetIndex: (idx: number) => this;
    GetMenu(): HashTagMenuBar;
    SetSearchKeyword: (searchKeyword: string) => this;
}
