/**
 * Remark Plugin for Optional Clause Processing
 *
 * This plugin processes optional clauses in legal documents using conditional
 * syntax. It evaluates conditions based on metadata values and includes or
 * excludes content blocks accordingly.
 *
 * Features:
 * - Conditional content inclusion/exclusion
 * - Complex boolean expressions
 * - Nested conditional blocks
 * - Multiple condition operators
 * - Variable-based conditions
 *
 * @example
 * ```typescript
 * import { unified } from 'unified';
 * import remarkParse from 'remark-parse';
 * import remarkStringify from 'remark-stringify';
 * import { remarkClauses } from './clauses.js';
 *
 * const processor = unified()
 *   .use(remarkParse)
 *   .use(remarkClauses, {
 *     metadata: { jurisdiction: 'US', hasWarranty: true }
 *   })
 *   .use(remarkStringify);
 * ```
 *
 * @module
 */
import { Plugin } from 'unified';
import { Root, Text } from 'mdast';
import type { YamlValue } from '../../types/index.js';
/**
 * Options for the remark clauses plugin
 * @interface RemarkClausesOptions
 */
export interface RemarkClausesOptions {
    /** Document metadata for condition evaluation */
    metadata: Record<string, YamlValue>;
    /** Enable debug logging */
    debug?: boolean;
    /** Enable field tracking (to coordinate with template fields plugin) */
    enableFieldTracking?: boolean;
}
/**
 * Conditional block information
 */
interface ConditionalBlock {
    /** The condition expression */
    condition: string;
    /** Content to include if condition is true */
    content: string;
    /** Alternative content if condition is false */
    elseContent?: string;
    /** Start and end positions in the text */
    start: number;
    end: number;
}
/**
 * Remark plugin for processing optional clauses
 *
 * This plugin identifies and processes conditional blocks in markdown text,
 * evaluating conditions against document metadata and including or excluding
 * content based on the results.
 *
 * @param options - Configuration options for clause processing
 * @returns Remark plugin transformer function
 */
export declare const remarkClauses: Plugin<[RemarkClausesOptions], Root>;
/**
 * Process a text node for conditional blocks
 */
declare function processTextNode(node: Text, metadata: Record<string, YamlValue>, debug: boolean, enableFieldTracking: boolean): void;
/**
 * Process an HTML node for conditional blocks
 */
declare function processHtmlNode(node: {
    value: string;
}, metadata: Record<string, YamlValue>, debug: boolean, enableFieldTracking: boolean): void;
/**
 * Extract conditional blocks from text
 */
declare function extractConditionalBlocks(text: string): ConditionalBlock[];
/**
 * Evaluate a conditional block against metadata
 */
declare function evaluateConditionalBlock(block: ConditionalBlock, metadata: Record<string, YamlValue>, debug: boolean, enableFieldTracking: boolean): string;
/**
 * Sanitize condition to prevent code injection
 */
declare function sanitizeCondition(condition: string): string | null;
/**
 * Evaluate simple condition expressions
 */
declare function evaluateSimpleCondition(condition: string, metadata: Record<string, YamlValue>): boolean;
/**
 * Evaluate boolean expressions (&&, ||)
 */
declare function evaluateBooleanExpression(condition: string, metadata: Record<string, YamlValue>): boolean;
/**
 * Evaluate comparison expressions (==, !=, >, <)
 */
declare function evaluateComparisonExpression(condition: string, metadata: Record<string, YamlValue>): boolean;
/**
 * Process an array loop, iterating over each item
 */
declare function processArrayLoop(_variable: string, content: string, items: YamlValue[], metadata: Record<string, YamlValue>, debug: boolean, enableFieldTracking: boolean): string;
export { processTextNode as _processTextNode, processHtmlNode as _processHtmlNode, extractConditionalBlocks as _extractConditionalBlocks, evaluateConditionalBlock as _evaluateConditionalBlock, sanitizeCondition as _sanitizeCondition, evaluateSimpleCondition as _evaluateSimpleCondition, evaluateBooleanExpression as _evaluateBooleanExpression, evaluateComparisonExpression as _evaluateComparisonExpression, processArrayLoop as _processArrayLoop, };
//# sourceMappingURL=clauses.d.ts.map