/**
 * Enhanced Remark plugin for Legal Markdown cross-references using custom AST nodes
 *
 * This plugin creates custom 'reference' AST nodes for |key| patterns, enabling:
 * - Single-pass AST processing for better performance
 * - More extensible architecture with custom node types
 * - Support for additional attributes (type, format) on references
 * - Independent from complex regex patterns
 * - Better integration with other remark plugins
 *
 * Architecture:
 * 1. Parse phase: Convert |key| patterns into custom 'reference' nodes
 * 2. Collection phase: Extract definitions from headers in single pass
 * 3. Resolution phase: Resolve all reference nodes in single pass
 * 4. Cleanup phase: Remove definition markers from headers
 *
 * @example
 * ```typescript
 * import { unified } from 'unified';
 * import remarkParse from 'remark-parse';
 * import { remarkCrossReferencesAST } from './cross-references-ast';
 *
 * const processor = unified()
 *   .use(remarkParse)
 *   .use(remarkCrossReferencesAST, { metadata: frontmatterData });
 *
 * const result = await processor.process(content);
 * ```
 *
 * @module
 */
import type { Plugin } from 'unified';
import type { Root, Node } from 'mdast';
/**
 * Custom AST node type for cross-references
 */
interface ReferenceNode extends Node {
    type: 'reference';
    /** The reference key */
    key: string;
    /** Reference type: 'definition' for |key| in headers, 'usage' for |key| in content */
    referenceType: 'definition' | 'usage';
    /** Optional reference format/style */
    format?: string;
    /** Optional reference category */
    category?: string;
    /** Resolved value (set during processing) */
    resolvedValue?: string;
    /** Whether this reference has been resolved */
    resolved?: boolean;
    /** Original text that was replaced */
    originalText: string;
}
/**
 * Cross-reference definition extracted from headers
 */
interface CrossReferenceDefinition {
    key: string;
    level: number;
    sectionNumber: string;
    sectionText: string;
    headerText: string;
    position?: {
        line: number;
        column: number;
    };
}
/**
 * Plugin options for enhanced cross-reference processing
 */
interface CrossReferenceASTOptions {
    /** Document metadata containing level formats and other data */
    metadata: Record<string, any>;
    /** Enable debug logging */
    debug?: boolean;
    /** Enable field tracking with highlighting during AST processing */
    enableFieldTracking?: boolean;
}
/**
 * Enhanced remark plugin for processing cross-references using custom AST nodes
 */
export declare const remarkCrossReferencesAST: Plugin<[CrossReferenceASTOptions], Root>;
export default remarkCrossReferencesAST;
export type { CrossReferenceASTOptions, CrossReferenceDefinition, ReferenceNode };
//# sourceMappingURL=cross-references-ast.d.ts.map