import { EmojiId, EmojiProvider, EmojiSearchResult } from '@atlaskit/emoji';
import { EditorState, EditorView, Schema, Plugin } from '../../prosemirror';
import ProviderFactory from '../../providerFactory';
import stateKey from './plugin-key';
export { stateKey };
export declare type StateChangeHandler = (state: EmojiState) => any;
export declare type ProviderChangeHandler = (provider?: EmojiProvider) => any;
export interface Options {
    emojiProvider: Promise<EmojiProvider>;
}
export declare class EmojiState {
    emojiProvider?: EmojiProvider;
    query?: string;
    enabled: boolean;
    queryActive: boolean;
    anchorElement?: HTMLElement;
    onSelectPrevious: () => boolean;
    onSelectNext: () => boolean;
    onSelectCurrent: () => boolean;
    private changeHandlers;
    private state;
    private view;
    private queryResult;
    constructor(state: EditorState<any>, providerFactory: ProviderFactory);
    subscribe(cb: StateChangeHandler): void;
    unsubscribe(cb: StateChangeHandler): void;
    update(state: EditorState<any>): void;
    dismiss(): boolean;
    isEnabled(): boolean;
    private findEmojiQueryMark();
    insertEmoji(emojiId?: EmojiId): void;
    handleProvider: (name: string, provider: Promise<any>) => void;
    trySelectCurrent: () => boolean;
    private getEmojisCount;
    private isEmptyQuery;
    onSearchResult: (searchResults: EmojiSearchResult) => void;
    private onProviderChange;
    setView(view: EditorView): void;
}
export declare function createPlugin(providerFactory: ProviderFactory): Plugin;
declare const plugins: (schema: Schema<any, any>, providerFactory: any) => Plugin[];
export default plugins;
