/**
 * Shared JSDoc typedefs for the `trackChangesHelpers` namespace.
 *
 * Defined once here so each helper file can reference them via
 * `@typedef {import('./types.js').X}` without re-declaring (which
 * would trigger ambiguous `export *` re-exports at the index barrel).
 *
 * NOT exported from `index.js`. Reference these types via JSDoc
 * `import()` only; this module intentionally exports no runtime
 * symbols.
 */
export type PmNode = import('prosemirror-model').Node;
/**
 * Shared JSDoc typedefs for the `trackChangesHelpers` namespace.
 *
 * Defined once here so each helper file can reference them via
 * `@typedef {import('./types.js').X}` without re-declaring (which
 * would trigger ambiguous `export *` re-exports at the index barrel).
 *
 * NOT exported from `index.js`. Reference these types via JSDoc
 * `import()` only; this module intentionally exports no runtime
 * symbols.
 */
export type PmMark = import('prosemirror-model').Mark;
/**
 * Shared JSDoc typedefs for the `trackChangesHelpers` namespace.
 *
 * Defined once here so each helper file can reference them via
 * `@typedef {import('./types.js').X}` without re-declaring (which
 * would trigger ambiguous `export *` re-exports at the index barrel).
 *
 * NOT exported from `index.js`. Reference these types via JSDoc
 * `import()` only; this module intentionally exports no runtime
 * symbols.
 */
export type Transaction = import('prosemirror-state').Transaction;
/**
 * Shared JSDoc typedefs for the `trackChangesHelpers` namespace.
 *
 * Defined once here so each helper file can reference them via
 * `@typedef {import('./types.js').X}` without re-declaring (which
 * would trigger ambiguous `export *` re-exports at the index barrel).
 *
 * NOT exported from `index.js`. Reference these types via JSDoc
 * `import()` only; this module intentionally exports no runtime
 * symbols.
 */
export type EditorState = import('prosemirror-state').EditorState;
/**
 * Shared JSDoc typedefs for the `trackChangesHelpers` namespace.
 *
 * Defined once here so each helper file can reference them via
 * `@typedef {import('./types.js').X}` without re-declaring (which
 * would trigger ambiguous `export *` re-exports at the index barrel).
 *
 * NOT exported from `index.js`. Reference these types via JSDoc
 * `import()` only; this module intentionally exports no runtime
 * symbols.
 */
export type Attrs = Record<string, unknown>;
/**
 * Compact mark descriptor used by the tracked-changes pipeline.
 * `type` is the PM mark type name (e.g. `'bold'`); `attrs` is the
 * snapshot's attribute bag, always present (`createMarkSnapshot`
 * normalizes missing attrs to `{}`).
 */
export type MarkSnapshot = {
    type: string;
    attrs: Attrs;
};
/**
 * Helpers accept either a live ProseMirror mark or a snapshot-shaped
 * object. Code reads `.type?.name ?? .type` to handle both: PM
 * `Mark.type` is a `MarkType` object whose `.name` is the string,
 * while `MarkSnapshot.type` is the string directly. The snapshot side
 * uses the permissive `SnapshotLike` shape so helpers tolerate the
 * loose `{ type?, attrs? }` typing that flows through attribute-bag
 * channels (e.g. `formatChangeMark.attrs.before`).
 */
export type MarkLike = PmMark | SnapshotLike;
/**
 * The standard `findChildren` / `nodesBetween` result shape.
 */
export type NodePosEntry = {
    node: PmNode;
    pos: number;
};
/**
 * A live ProseMirror mark located in a `[from, to]` document range.
 * Used as `findTrackedMarkBetween`'s non-null return and as the
 * element shape of `getTrackChanges`'s result array.
 */
export type TrackedMarkRange = {
    from: number;
    to: number;
    mark: PmMark;
    node?: PmNode;
};
/**
 * Permissive snapshot shape for helper inputs that flow through
 * loosely-typed channels (e.g. `formatChangeMark.attrs.before`,
 * which carries snapshots as a plain attribute bag). Helpers that
 * accept `SnapshotLike[]` tolerate missing fields at runtime;
 * `getTypeName` returns `undefined` for entries missing `type`, and
 * attr-merge sites guard with `attrs || {}` /  `{ ...existing.attrs }`.
 * Helpers that PRODUCE snapshots still return strict `MarkSnapshot`.
 */
export type SnapshotLike = {
    type?: string;
    attrs?: Attrs;
};
//# sourceMappingURL=types.d.ts.map