/**
 * Three-Pass HTML-to-Manifest Converter
 *
 * Pass 1: Extract fields from HTML (identify editable content)
 * Pass 2: Generate layout structure using the extracted fields (no styling)
 * Pass 3: Add styling via two sub-passes:
 *   - Pass 3a: LLM outputs className patches (which nodes get which classes)
 *   - Pass 3b: LLM outputs CSS rules (targeting those classes)
 *
 * This approach ensures CSS rules reference classNames that actually exist
 * in the layout by applying patches programmatically between passes.
 */
import type { HtmlToManifestInput, HtmlToManifestOutput, ConversionResult, ConverterOptions } from './types';
import { DEFAULT_MANIFEST_MODEL } from './constants';
export { DEFAULT_MANIFEST_MODEL };
interface TipTapNode {
    type: string;
    content?: TipTapNode[];
    text?: string;
    marks?: Array<{
        type: string;
    }>;
}
/**
 * Parse inline markdown (bold only) into TipTap text nodes.
 *
 * Only bold (**text**) is supported because LLM-generated rich text defaults
 * typically only use bold for emphasis. Other markdown features (italic, links,
 * headings) are not expected in field default values and would add complexity
 * without meaningful benefit.
 */
declare function parseInlineMarkdown(text: string): TipTapNode[];
/**
 * Convert a plain string (or simple markdown) to TipTap doc format.
 */
declare function stringToTipTapDoc(text: string): TipTapNode;
/**
 * Coerce a richText defaultValue to TipTap format.
 * Handles:
 * - Plain strings → TipTap doc with paragraphs
 * - Already valid TipTap docs → pass through
 * - Legacy { doc: {...} } wrapper → unwrap
 */
declare function coerceRichTextDefaultValue(value: unknown): TipTapNode | null;
export declare function convertHtmlToManifest(input: HtmlToManifestInput, options: ConverterOptions): Promise<ConversionResult>;
/**
 * Validate HTML-to-manifest output structure.
 *
 * Can be used to validate output loaded from a file or
 * generated by another tool.
 *
 * @example
 * ```typescript
 * const { valid, errors } = validateManifestOutput(jsonData);
 * if (!valid) {
 *   console.error('Invalid manifest:', errors);
 * }
 * ```
 */
export declare function validateManifestOutput(data: unknown): {
    valid: true;
    output: HtmlToManifestOutput;
} | {
    valid: false;
    errors: string[];
};
/**
 * Export internal functions for testing.
 * These are not part of the public API.
 * @internal
 */
export declare const __testing: {
    parseInlineMarkdown: typeof parseInlineMarkdown;
    stringToTipTapDoc: typeof stringToTipTapDoc;
    coerceRichTextDefaultValue: typeof coerceRichTextDefaultValue;
};
