import type { BlockNoteEditor } from "@blocknote/core";
export type EditorStateSnapshot<TEditor extends BlockNoteEditor<any, any, any> | null = BlockNoteEditor<any, any, any> | null> = {
    editor: TEditor;
    transactionNumber: number;
};
export type UseEditorStateOptions<TSelectorResult, TEditor extends BlockNoteEditor<any, any, any> | null = BlockNoteEditor<any, any, any> | null> = {
    /**
     * The editor instance. If not provided, will use the editor from BlockNoteContext.
     */
    editor?: TEditor;
    /**
     * A selector function to determine the value to compare for re-rendering.
     */
    selector: (context: EditorStateSnapshot<TEditor>) => TSelectorResult;
    /**
     * A custom equality function to determine if the editor should re-render.
     * @default `deepEqual` from `fast-deep-equal`
     */
    equalityFn?: (a: TSelectorResult, b: TSelectorResult | null) => boolean;
    /**
     * The event to subscribe to.
     * @default "all"
     */
    on?: "all" | "selection" | "change";
};
/**
 * This hook allows you to watch for changes on the editor instance.
 * It will allow you to select a part of the editor state and re-render the component when it changes.
 * @example
 * ```tsx
 * const { currentSelection } = useEditorState({
 *  selector: snapshot => ({ currentSelection: snapshot.editor?._tiptapEditor.state.selection }),
 * })
 * ```
 */
export declare function useEditorState<TSelectorResult>(options: UseEditorStateOptions<TSelectorResult, BlockNoteEditor<any, any, any>>): TSelectorResult;
/**
 * This hook allows you to watch for changes on the editor instance.
 * It will allow you to select a part of the editor state and re-render the component when it changes.
 * @example
 * ```tsx
 * const { currentSelection } = useEditorState({
 *  selector: snapshot => ({ currentSelection: snapshot.editor?._tiptapEditor.state.selection }),
 * })
 * ```
 */
export declare function useEditorState<TSelectorResult>(options: UseEditorStateOptions<TSelectorResult, BlockNoteEditor<any, any, any> | null>): TSelectorResult | null;
