import type { JSONDocNode, JSONNode } from '@atlaskit/editor-json-transformer';
import type { MarkType, NodeType, Mark as PMMark, Node as PMNode, Schema } from '@atlaskit/editor-prosemirror/model';
import { SelectedState } from './SelectedState';
/** Validates prosemirror nodes, and returns true only if all nodes are valid */
export declare const validateNodes: (nodes: PMNode[]) => boolean;
type PMEntities = PMNode | PMMark | null | undefined;
export declare const isType: (node: PMEntities, type: NodeType | MarkType | undefined) => boolean | null | undefined;
export declare const isParagraph: (node: PMEntities, schema: Schema) => boolean | null | undefined;
export declare const isText: (node: PMEntities, schema: Schema) => boolean | null | undefined;
export declare const isLinkMark: (node: PMEntities, schema: Schema) => boolean | null | undefined;
/**
 * Returns if the current selection from achor-head is selecting the node.
 * If the node is not selected then null is returned.
 * If the node is selected then an enum is returned that describes weather the node
 * is fully selected by a range or if the "inside" of the node has been selected or clicked.
 */
export declare const isNodeSelectedOrInRange: (anchorPosition: number, headPosition: number, nodePosition: number | undefined, nodeSize: number) => SelectedState | null;
export declare function toJSON(node: PMNode): JSONDocNode;
export declare function nodeToJSON(node: PMNode): JSONNode;
export { findChangedNodesFromTransaction } from './findChangedNodesFromTransaction';
export { validNode } from './validNode';
export { SelectedState } from './SelectedState';
export { isSupportedInParent } from './isSupportedInParent';
export { isMediaNode } from './isMediaNode';
export { isNodeBeforeMediaNode } from './isNodeBeforeMediaNode';
