/**
 * LLM Knowledge Base for HTML-to-Manifest Conversion
 *
 * Contains reference material for the LLM including:
 * - Allowed node types and their usage
 * - Transform functions and their purposes
 * - Field type inference rules
 * - Styling decision tree
 * - Block boundary heuristics
 */
/**
 * Documentation for each allowed node type.
 */
export declare const NODE_TYPE_DOCS: Record<string, string>;
/**
 * Generate node types documentation string for the system prompt.
 *
 * Lists all allowed node types grouped by category with descriptions.
 *
 * @returns Formatted markdown documentation for node types
 */
export declare function getNodeTypesReference(): string;
/**
 * Documentation for commonly used transforms.
 */
export declare const TRANSFORM_DOCS: Record<string, string>;
/**
 * Generate transforms documentation string for the system prompt.
 *
 * Lists allowed transform IDs with descriptions and example usage.
 *
 * @returns Formatted markdown documentation for transforms
 */
export declare function getTransformsReference(): string;
export declare const FIELD_TYPE_INFERENCE = "\n## Field Type Inference Rules\n\nWhen extracting editable content from HTML, choose field types as follows:\n\n1. **text** (single-line string):\n   - Short headings, labels, button text (<100 chars, no block elements)\n   - Example: <h1>Welcome</h1> \u2192 field type: text\n\n2. **richText** (formatted content):\n   - Paragraphs, descriptions, content with <p>, <ul>, <em>, <strong>\n   - Example: <p>Our <strong>mission</strong> is...</p> \u2192 field type: richText\n\n3. **media** (images/videos):\n   - <img>, <video>, <picture> elements with src attributes\n   - Example: <img src=\"hero.jpg\"> \u2192 field type: media\n\n4. **link** (navigation/buttons):\n   - <a> elements with href, or buttons that navigate\n   - defaultValue should be an object containing both href and label\n   - Example: <a href=\"/contact\">Contact</a> \u2192 field type: link, defaultValue: { href: \"/contact\", label: \"Contact\" }\n\n5. **repeater** (repeated content):\n   - 3+ similar sibling elements (cards, testimonials, features)\n   - Example: Multiple <div class=\"card\">...</div> \u2192 repeater with schema\n\n6. **group** (related fields):\n   - Logically related fields (e.g., author name + avatar)\n   - Use to organize complex content\n\n7. **boolean** (toggles):\n   - Show/hide states (isVisible, showButton)\n\n8. **select** (predefined options):\n   - When content appears to be one of N options\n   - Define options array with value/label\n";
export declare const STYLING_DECISION_TREE = "\n## Styling Decision Tree\n\nWhen converting styles from HTML/Tailwind to the manifest, follow this priority:\n\n1. **Theme Token Match** (highest priority):\n   Does a theme token exist for this exact style?\n   \u2192 YES: Use token reference in props (e.g., background: 'primary')\n\n   Common token mappings:\n   - bg-blue-600 \u2192 background: 'primary' (if primary is blue)\n   - text-gray-900 \u2192 color: 'foreground'\n   - rounded-lg \u2192 uses theme.corners setting\n\n2. **Close Token Match**:\n   Is the style close to an existing token?\n   \u2192 YES: Use the token (minor variations are acceptable)\n\n3. **Site-wide Addition** (themePatch):\n   Is this a one-off value that should apply site-wide?\n   \u2192 YES: Add to themePatch array\n\n   Example: New accent color for the whole site\n   { \"op\": \"add\", \"path\": \"/palette/colors/-\", \"value\": { \"name\": \"coral\", \"hex\": \"#ff6b6b\" } }\n\n4. **Block-specific CSS** (customCssRules):\n   Is this specific to this block only?\n   \u2192 YES: Add to customCssRules\n\n   Example: Custom animation for hero section\n   1) Add a className to a node you want to target:\n      { \"type\": \"text\", \"props\": { \"className\": \"hero-title\" }, \"children\": null, \"$bind\": { \"from\": \"content.title\", \"fallback\": null, \"transforms\": null }, \"$repeat\": null, \"$when\": null }\n\n   2) Scope CSS to the block and target that class:\n      {\n        \"id\": \"hero-pulse\",\n        \"selector\": \"[data-block=\"custom.hero\"] .hero-title\",\n        \"declarations\": [{ \"property\": \"animation\", \"value\": \"pulse 2s infinite\" }]\n      }\n\n5. **Field Parameterization**:\n   Can the style be controlled by the user?\n   \u2192 YES: Add a field and use $bind with transform\n\n6. **Inline Styles** (last resort):\n   None of the above?\n   \u2192 Use inline styles in node props\n\n   Example: props: { style: { marginTop: '2rem' } }\n";
export declare const BLOCK_BOUNDARY_HEURISTICS = "\n## Block Boundary Heuristics\n\nWhen converting a page with multiple sections, decide whether to create one block or multiple:\n\n### SPLIT into separate blocks when:\n- **Visual separation**: Full-width background color changes\n- **Semantic sections**: <section>, <header>, <footer> tags\n- **Reusable patterns**: Testimonials, pricing cards, feature grids\n- **Different purposes**: Hero vs features vs CTA\n- **Major spacing**: py-16+ or 4rem+ vertical padding between sections\n\n### KEEP as single block when:\n- **Tightly coupled**: Heading with its immediate description\n- **Small content**: <5 editable elements total\n- **No clear boundaries**: Content flows together naturally\n- **Context dependency**: Splitting would lose important context\n\n### Block ID Naming:\n- Use descriptive names: custom.hero, custom.features-grid, custom.testimonials\n- Keep lowercase with hyphens: custom.pricing-cards (not custom.pricingCards)\n";
export declare const BINDING_SYNTAX = "\n## Binding Syntax\n\n**CRITICAL: $bind connects layout nodes to field data. Without it, nodes display nothing.**\n\nConnect layout nodes to field content using $bind:\n\n### Basic Binding\n```json\n{\n  \"type\": \"text\",\n  \"props\": { \"as\": \"h1\" },\n  \"$bind\": { \"from\": \"content.headline\" }\n}\n```\n\n### Binding with Fallback\n```json\n{\n  \"$bind\": {\n    \"from\": \"content.subtitle\",\n    \"fallback\": \"Default subtitle text\"\n  }\n}\n```\n\n### Binding with Transform\n```json\n{\n  \"$bind\": {\n    \"from\": \"content.title\",\n    \"transforms\": [{ \"id\": \"string.uppercase\" }]\n  }\n}\n```\n\n### Binding in Props\n```json\n{\n  \"type\": \"text\",\n  \"props\": {\n    \"as\": \"h1\",\n    \"className\": {\n      \"$bind\": {\n        \"from\": \"content.alignment\",\n        \"fallback\": null,\n        \"transforms\": [{ \"id\": \"ui.headingClassFromAlignment\" }]\n      }\n    }\n  },\n  \"children\": null,\n  \"$bind\": { \"from\": \"content.headline\", \"fallback\": null, \"transforms\": null },\n  \"$repeat\": null,\n  \"$when\": null\n}\n```\n\n### Repeating Content\n```json\n{\n  \"type\": \"grid\",\n  \"props\": null,\n  \"$repeat\": {\n    \"collection\": { \"from\": \"content.features\" },\n    \"itemName\": \"feature\"\n  },\n  \"children\": [\n    {\n      \"type\": \"text\",\n      \"props\": null,\n      \"children\": null,\n      \"$bind\": { \"from\": \"feature.title\", \"fallback\": null, \"transforms\": null },\n      \"$repeat\": null,\n      \"$when\": null\n    }\n  ],\n  \"$bind\": null,\n  \"$when\": null\n}\n```\n";
/**
 * Get the complete knowledge base for the system prompt.
 *
 * Combines all reference documentation including node types, transforms,
 * field inference rules, styling decision tree, and binding syntax.
 *
 * @returns Complete knowledge base as a formatted markdown string
 */
export declare function getKnowledgeBase(): string;
