import type { Node, ResolvedPos } from '@atlaskit/editor-prosemirror/model';
import type { EditorState, ReadonlyTransaction, Transaction } from '@atlaskit/editor-prosemirror/state';
type ChangedFn = (node: Node, pos: number, parent: Node | null, index: number) => boolean | void;
export declare const getStepRange: (transaction: Transaction | ReadonlyTransaction) => {
    from: number;
    to: number;
} | null;
export declare function hasDocAsParent($anchor: ResolvedPos): boolean;
/**
 * Checks if a node looks like an empty document
 */
export declare function isEmptyDocument(node: Node): boolean;
export declare function bracketTyped(state: EditorState): boolean;
export declare function nodesBetweenChanged(tr: Transaction | ReadonlyTransaction, f: ChangedFn, startPos?: number): void;
/**
 * Returns false if node contains only empty inline nodes and hardBreaks.
 */
export declare function hasVisibleContent(node: Node): boolean;
export declare const isSelectionEndOfParagraph: (state: EditorState) => boolean;
export declare function getChangedNodes(tr: ReadonlyTransaction | Transaction): {
    node: Node;
    pos: number;
}[];
export declare const isReplaceDocOperation: (transactions: readonly Transaction[], oldState: EditorState) => boolean;
/**
 * Compares two ProseMirror documents for equality, ignoring attributes
 * which don't affect the document structure.
 *
 * This is almost a copy of the .eq() PM function - tweaked to ignore attrs
 *
 * @param doc1 PMNode
 * @param doc2 PMNode
 * @param attributesToIgnore Specific array of attribute keys to ignore - defaults to ignoring all
 * @returns boolean
 */
export declare function areNodesEqualIgnoreAttrs(node1: Node, node2: Node, attributesToIgnore?: string[]): boolean;
export {};
