import type { CraftComponentConfig } from './craft-components';
/**
 * Compile an stx template into a Craft-optimized component tree
 */
export declare function compileTemplate(template: string, options?: { id?: string }): CompiledTemplate;
/**
 * Render a compiled template to HTML with SSR optimizations
 */
export declare function renderSSR(compiled: CompiledTemplate, context?: Record<string, unknown>, config?: SSRConfig): Promise<SSRResult>;
/**
 * Generate Craft optimization hints for a template
 */
export declare function generateCraftOptimizations(compiled: CompiledTemplate, _config?: CraftComponentConfig): CraftOptimization;
/**
 * Pre-render static parts of a template for Craft
 */
export declare function prerenderForCraft(template: string, context?: Record<string, unknown>): {
    staticHTML: string
    dynamicPlaceholders: Map<string, string>
    craftComponents: string[]
  };
/**
 * Clear template cache
 */
export declare function clearTemplateCache(): void;
/**
 * Clear render cache
 */
export declare function clearRenderCache(): void;
/**
 * Clear all caches
 */
export declare function clearAllCaches(): void;
/**
 * Get SSR cache statistics
 */
export declare function getSSRCacheStats(): {
  templateCacheSize: number
  renderCacheSize: number
  totalEntries: number
};
// ============================================================================
// Export
// ============================================================================
declare const craftSSR: {
  compileTemplate: typeof compileTemplate
  renderSSR: typeof renderSSR
  generateCraftOptimizations: typeof generateCraftOptimizations
  prerenderForCraft: typeof prerenderForCraft
  clearTemplateCache: typeof clearTemplateCache
  clearRenderCache: typeof clearRenderCache
  clearAllCaches: typeof clearAllCaches
  getSSRCacheStats: typeof getSSRCacheStats
};
/**
 * Represents a node in the Craft component tree
 */
export declare interface CraftNode {
  type: 'element' | 'text' | 'component' | 'fragment' | 'slot'
  tag?: string
  props?: Record<string, unknown>
  children?: CraftNode[]
  text?: string
  componentName?: string
  slotName?: string
  isStatic?: boolean
  hydrationKey?: string
}
/**
 * Compiled template representation
 */
export declare interface CompiledTemplate {
  id: string
  hash: string
  tree: CraftNode
  scripts: string[]
  styles: string[]
  staticParts: Map<string, string>
  dynamicParts: Map<string, string>
  dependencies: string[]
  metadata: TemplateMetadata
}
/**
 * Template metadata for optimization
 */
export declare interface TemplateMetadata {
  hasSlots: boolean
  hasDynamicContent: boolean
  hasEventHandlers: boolean
  hasAsyncContent: boolean
  componentCount: number
  maxDepth: number
  estimatedSize: number
}
/**
 * SSR configuration options
 */
export declare interface SSRConfig {
  streaming?: boolean
  prerender?: boolean
  hydrate?: boolean
  minify?: boolean
  cache?: boolean
  cacheTTL?: number
  staticAnalysis?: boolean
  target?: 'web' | 'craft' | 'both'
}
/**
 * SSR result
 */
export declare interface SSRResult {
  html: string
  styles: string
  scripts: string
  hydrationData?: Record<string, unknown>
  metadata: SSRMetadata
}
/**
 * SSR metadata
 */
export declare interface SSRMetadata {
  renderTime: number
  cacheHit: boolean
  streamChunks?: number
  totalSize: number
  componentCount: number
}
/**
 * Optimization hints for Craft
 */
export declare interface CraftOptimization {
  nativeComponents: string[]
  staticHTML: string[]
  dynamicParts: string[]
  eventHandlers: Map<string, string>
  nativeWidgets: NativeWidgetSuggestion[]
}
/**
 * Native widget suggestion
 */
export declare interface NativeWidgetSuggestion {
  htmlSelector: string
  nativeComponent: string
  confidence: number
  reason: string
}
export default craftSSR;
