/**
 * Remark Plugin for Legal Header Processing
 *
 * This plugin processes legal headers and numbering in markdown documents using
 * the remark AST. It provides automatic numbering, formatting, and section
 * management for legal document structure.
 *
 * Features:
 * - Automatic header numbering (l., ll., lll., etc.)
 * - Section references and cross-referencing
 * - Customizable numbering formats
 * - Reset and continuation options
 * - Indentation management
 *
 * @example
 * ```typescript
 * import { unified } from 'unified';
 * import remarkParse from 'remark-parse';
 * import remarkStringify from 'remark-stringify';
 * import { remarkHeaders } from './headers.js';
 *
 * const processor = unified()
 *   .use(remarkParse)
 *   .use(remarkHeaders, {
 *     metadata: { 'level-one': 'l', 'level-two': 'll' },
 *     noReset: false,
 *     noIndent: false
 *   })
 *   .use(remarkStringify);
 * ```
 *
 * @module
 */
import { Plugin } from 'unified';
import { Root, Heading } from 'mdast';
import type { YamlValue } from '../../types/index.js';
/**
 * Options for the remark headers plugin
 * @interface RemarkHeadersOptions
 */
export interface RemarkHeadersOptions {
    /** Document metadata containing header configurations */
    metadata: Record<string, YamlValue>;
    /** Disable automatic numbering reset */
    noReset?: boolean;
    /** Disable automatic indentation */
    noIndent?: boolean;
    /** Custom header patterns */
    headerPatterns?: Record<string, string>;
    /** Enable debug logging */
    debug?: boolean;
}
/**
 * Header numbering state
 */
interface HeaderState {
    levelOne: number;
    levelTwo: number;
    levelThree: number;
    levelFour: number;
    levelFive: number;
    levelSix: number;
    levelSeven: number;
    levelEight: number;
    levelNine: number;
    customLevels: Map<string, number>;
}
/**
 * Header configuration extracted from metadata
 */
interface HeaderConfig {
    levelOne: string | null;
    levelTwo: string | null;
    levelThree: string | null;
    levelFour: string | null;
    levelFive: string | null;
    levelSix: string | null;
    levelSeven: string | null;
    levelEight: string | null;
    levelNine: string | null;
    customFormats: Map<string, string>;
}
/**
 * Remark plugin for processing legal headers
 *
 * This plugin transforms markdown headers into properly numbered legal headers
 * according to legal document conventions. It supports multiple numbering
 * formats and can maintain state across the document.
 *
 * @param options - Configuration options for header processing
 * @returns Remark plugin transformer function
 */
export declare const remarkHeaders: Plugin<[RemarkHeadersOptions], Root>;
/**
 * Extract header configuration from document metadata
 */
declare function extractHeaderConfig(metadata: Record<string, YamlValue>): HeaderConfig;
/**
 * Process a single header node
 */
declare function processHeader(node: Heading, config: HeaderConfig, state: HeaderState, options: {
    noReset: boolean;
    noIndent: boolean;
    debug: boolean;
}): void;
/**
 * Get header format for a given level
 */
declare function getHeaderFormat(level: number, config: HeaderConfig): string;
/**
 * Update header numbering state based on current level
 */
declare function updateHeaderState(level: number, state: HeaderState, noReset: boolean): void;
/**
 * Format header text with numbering
 */
declare function formatHeaderText(node: Heading, format: string, number: number, state: HeaderState, options: {
    noIndent: boolean;
    debug: boolean;
}): string | null;
/**
 * Extract text content from header node
 */
declare function extractTextContent(node: Heading): string;
/**
 * Apply numbering format with actual number
 */
declare function applyNumberingFormat(format: string, number: number, level: number, state: HeaderState): string;
declare function updateHeaderNode(node: Heading, newText: string): void;
export { extractHeaderConfig as _extractHeaderConfig, processHeader as _processHeader, getHeaderFormat as _getHeaderFormat, updateHeaderState as _updateHeaderState, formatHeaderText as _formatHeaderText, extractTextContent as _extractTextContent, applyNumberingFormat as _applyNumberingFormat, updateHeaderNode as _updateHeaderNode, };
//# sourceMappingURL=headers.d.ts.map