import type { DecorationAttrs, DecorationSet, EditorView } from 'prosemirror-view';
export declare const KEEP_OPEN = "KEEP_OPEN";
export interface FromTo {
    from: number;
    to: number;
}
export declare type InactiveAutocompleteState = {
    active: false;
    decorations: DecorationSet;
};
export declare type ActiveAutocompleteState = {
    active: true;
    decorations: DecorationSet;
    trigger: string;
    filter: string;
    range: FromTo;
    type: Trigger | null;
};
export declare type AutocompleteState = InactiveAutocompleteState | ActiveAutocompleteState;
export declare enum ActionKind {
    'open' = "open",
    'close' = "close",
    'filter' = "filter",
    'up' = "ArrowUp",
    'down' = "ArrowDown",
    'left' = "ArrowLeft",
    'right' = "ArrowRight",
    'enter' = "enter"
}
export declare type AutocompleteAction = {
    kind: ActionKind;
    view: EditorView;
    trigger: string;
    filter?: string;
    range: FromTo;
    type: Trigger | null;
    event?: KeyboardEvent;
};
export interface OpenAutocomplete {
    action: 'add';
    trigger: string;
    filter?: string;
    type: Trigger | null;
}
export interface CloseAutocomplete {
    action: 'remove';
}
export declare type AutocompleteTrMeta = OpenAutocomplete | CloseAutocomplete;
export declare type Trigger = {
    name: string;
    trigger: string | RegExp;
    cancelOnFirstSpace?: boolean;
    allArrowKeys?: boolean;
    decorationAttrs?: DecorationAttrs;
};
export declare type Options = {
    onOpen?: (action: AutocompleteAction) => boolean;
    onClose?: (action: AutocompleteAction) => boolean;
    onFilter?: (action: AutocompleteAction) => boolean;
    onArrow?: (action: AutocompleteAction) => boolean;
    onEnter?: (action: AutocompleteAction) => boolean;
    reducer: (action: AutocompleteAction) => boolean | typeof KEEP_OPEN;
    triggers: Trigger[];
};
