import type { Node } from 'prosemirror-model';
import type { SerializerNodeToken, SerializerState } from "../types/serializer.js";
export type SerializerProcessNode = (state: SerializerState, node: Node, parent: Node, index: number, callback?: SerializerNodeToken) => void;
export interface SerializerNodeProcessor {
    processNode?: SerializerProcessNode[];
}
export interface MarkdownSerializerDynamicModifierConfig {
    [nodeType: string]: SerializerNodeProcessor;
}
/**
 * Class MarkdownSerializerDynamicModifier
 *
 * Provides a mechanism for dynamic modification of node serialization during conversion of ProseMirror nodes
 * to a markdown-like format. It allows sequential processing of nodes by applying a series of custom handlers:
 *
 *    - `processNode`: An array of handlers that process nodes sequentially, each modifying the output.
 *
 * Example:
 * ```ts
 * const serializerModifier = new MarkdownSerializerDynamicModifier({
 *     paragraph: {
 *         processNode: [
 *             (state, node, parent, index, callback) => {
 *                 // Custom modifications can be performed here.
 *                 callback(state, node, parent, index);
 *             },
 *         ],
 *     },
 * });
 * ```
 *
 * This class extends the functionality of a MarkdownSerializer for scenarios such as:
 * - Customizing the serialization output.
 * - Logging or modifying node content during serialization.
 */
export declare class MarkdownSerializerDynamicModifier {
    private nodeProcessors;
    constructor(config: MarkdownSerializerDynamicModifierConfig);
    processNode(state: SerializerState, node: Node, parent: Node, index: number, callback: SerializerNodeToken): void;
}
