import type { Mark, Node as PMNode, ResolvedPos, Schema, Slice } from '@atlaskit/editor-prosemirror/model';
import type { AllSelection, EditorState, TextSelection } from '@atlaskit/editor-prosemirror/state';
type Range = {
    from: number;
    to: number;
};
export declare const canApplyAnnotationOnRange: (rangeSelection: Range, doc: PMNode, schema: Schema) => boolean;
export declare const getAnnotationIdsFromRange: (rangeSelection: Range, doc: PMNode, schema: Schema) => string[];
export declare function hasAnnotationMark(node: PMNode, state: EditorState): boolean;
export declare function containsAnyAnnotations(slice: Slice, state: EditorState): boolean;
/**
 * This returns a list of node names that are inline nodes in the range.
 */
export declare function getRangeInlineNodeNames({ doc, pos, }: {
    doc: PMNode;
    pos: {
        from: number;
        to: number;
    };
}): string[] | undefined;
/**
 * This returns a list of ancestor node names that contain the given position.
 */
export declare function getRangeAncestorNodeNames({ doc, pos, }: {
    doc: PMNode;
    pos: {
        from: number;
        to: number;
    };
}): string[] | undefined;
/**
 * This function returns a list of node types that are wrapped by an annotation mark.
 *
 * The `undefined` will be returned if `editor_inline_comments_on_inline_nodes` is off.
 *
 * @todo: Do not forget to remove `undefined` when the
 *        `editor_inline_comments_on_inline_nodes` is removed.
 */
export declare function getAnnotationInlineNodeTypes(state: {
    doc: PMNode;
    schema: Schema;
}, annotationId: string): string[] | undefined;
export declare function getAnnotationMarksForPos(pos: ResolvedPos): Mark[] | undefined;
/**
 * Checks if selection contains only empty text
 * e.g. when you select across multiple empty paragraphs
 */
export declare function isEmptyTextSelection(selection: TextSelection | AllSelection, schema: Schema): boolean;
/**
 * This is a modified version of the `isEmptyTextSelection` function (above), fixing some unexpected behavior in the renderer.
 *
 * This function does NOT consider non-inline nodes as non-empty.
 * With this change, the function continues descending into block nodes, like tables or expands. Without this change for
 * the renderer, block nodes containing empty text were not considered empty.
 */
export declare function isEmptyTextSelectionRenderer(selection: TextSelection | AllSelection, schema: Schema): boolean;
export {};
