/**
 * Image Generation Utility for Living Docs
 *
 * Uses Pollinations.ai (FREE, no API key) to generate professional images
 * for documentation, features, and visual assets.
 *
 * Supports two documentation contexts:
 * - PUBLIC: Marketing-grade, polished, aspirational visuals
 * - INTERNAL: Functional, clean, diagram-focused visuals
 *
 * @module utils/image-generator
 */
/**
 * SpecWeave brand colors for consistent styling
 */
export declare const BRAND_COLORS: {
    primary: string;
    primaryDark: string;
    primaryLight: string;
    primaryDarkest: string;
    neutral: string;
    neutralLight: string;
    success: string;
    warning: string;
    info: string;
};
/**
 * Documentation context - determines styling approach
 */
export type DocContext = 'public' | 'internal';
/**
 * Section types for context-aware image generation
 */
export type DocSection = 'feature' | 'architecture' | 'strategy' | 'operations' | 'governance' | 'api' | 'overview' | 'tutorial' | 'reference';
/**
 * Context for intelligent image generation
 */
export interface ImageContext {
    /** Public (marketing-grade) vs Internal (functional) docs */
    docContext: DocContext;
    /** Section type for appropriate styling */
    section: DocSection;
    /** Main topic/concept for the image */
    topic: string;
    /** Additional keywords for better prompts */
    keywords?: string[];
    /** Company/project name for branding */
    brandName?: string;
    /** Custom color override */
    primaryColor?: string;
}
/**
 * Image generation options
 */
export interface ImageGenerationOptions {
    /** Image width in pixels (256-2048) */
    width?: number;
    /** Image height in pixels (256-2048) */
    height?: number;
    /** AI model to use */
    model?: 'flux' | 'flux-realism' | 'flux-anime' | 'flux-3d' | 'flux-cablyai' | 'turbo';
    /** Seed for reproducible results */
    seed?: number;
    /** Remove watermark */
    nologo?: boolean;
    /** Output directory (relative to project root) */
    outputDir?: string;
    /** Filename (without extension) */
    filename?: string;
    /** Skip if file already exists */
    skipIfExists?: boolean;
}
/**
 * Preset configurations for common doc assets
 */
export declare const IMAGE_PRESETS: {
    featureHero: {
        width: number;
        height: number;
        model: "flux";
        nologo: boolean;
        seed: number;
    };
    sectionHeader: {
        width: number;
        height: number;
        model: "flux";
        nologo: boolean;
        seed: number;
    };
    icon: {
        width: number;
        height: number;
        model: "flux";
        nologo: boolean;
        seed: number;
    };
    socialCard: {
        width: number;
        height: number;
        model: "flux";
        nologo: boolean;
        seed: number;
    };
    emptyState: {
        width: number;
        height: number;
        model: "flux-anime";
        nologo: boolean;
        seed: number;
    };
};
/**
 * Enterprise style presets - PUBLIC vs INTERNAL
 *
 * PUBLIC: Marketing-grade, polished, aspirational
 * - Rich gradients, glowing effects, dark backgrounds
 * - Dramatic lighting, cinematic feel
 * - Brand colors prominent
 *
 * INTERNAL: Functional, clean, diagram-focused
 * - Clean white/light backgrounds
 * - Minimal decoration, clear lines
 * - Diagram-like, technical accuracy
 */
export declare const ENTERPRISE_STYLES: {
    public: {
        base: string;
        background: string;
        lighting: string;
        colors: string;
        quality: string;
        model: "flux";
    };
    internal: {
        base: string;
        background: string;
        lighting: string;
        colors: string;
        quality: string;
        model: "flux";
    };
};
/**
 * Section-specific style modifiers
 */
export declare const SECTION_STYLES: Record<DocSection, {
    public: string;
    internal: string;
}>;
/**
 * Prompt templates for different asset types (LEGACY - use buildContextAwarePrompt for new code)
 */
export declare const PROMPT_TEMPLATES: {
    /** Feature illustration - abstract representation of the feature concept */
    feature: (featureName: string, keywords?: string[]) => string;
    /** Living docs network visualization */
    livingDocs: () => string;
    /** Agent/automation system */
    agents: () => string;
    /** Workflow/process visualization */
    workflow: () => string;
    /** Section header - abstract theme visualization */
    sectionHeader: (theme: string) => string;
    /** Empty state illustration */
    emptyState: (context: string) => string;
    /** Generic feature card */
    featureCard: (concept: string) => string;
};
/**
 * Build a context-aware prompt for enterprise documentation
 *
 * Generates appropriate prompts based on:
 * - Public vs Internal documentation context
 * - Section type (architecture, strategy, operations, etc.)
 * - Topic and keywords
 *
 * @param context - Image generation context
 * @returns Optimized prompt string
 */
export declare function buildContextAwarePrompt(context: ImageContext): string;
/**
 * Get recommended preset for a section type
 */
export declare function getPresetForSection(section: DocSection): typeof IMAGE_PRESETS.featureHero;
/**
 * Build Pollinations.ai URL for image generation
 */
export declare function buildPollinationsUrl(prompt: string, options?: ImageGenerationOptions): string;
/**
 * Generate a cache key for an image based on prompt and options
 */
export declare function generateCacheKey(prompt: string, options?: ImageGenerationOptions): string;
/**
 * Generate an image and save it to the specified location
 *
 * @param prompt - The image generation prompt
 * @param options - Generation options
 * @returns Path to the generated image, or null if skipped/failed
 */
export declare function generateImage(prompt: string, options?: ImageGenerationOptions): Promise<string | null>;
/**
 * Generate a feature illustration
 *
 * @param featureName - Name of the feature
 * @param featureId - Feature ID (e.g., "FS-001")
 * @param outputDir - Output directory for images
 * @param keywords - Optional keywords to include in prompt
 */
export declare function generateFeatureImage(featureName: string, featureId: string, outputDir: string, keywords?: string[]): Promise<string | null>;
/**
 * Generate a section header image
 *
 * @param theme - Theme/topic of the section
 * @param sectionId - Section identifier for filename
 * @param outputDir - Output directory for images
 */
export declare function generateSectionHeaderImage(theme: string, sectionId: string, outputDir: string): Promise<string | null>;
/**
 * Generate images for a living docs feature folder
 *
 * @param featurePath - Path to the feature folder (e.g., .specweave/docs/internal/specs/FS-001)
 * @param featureName - Display name of the feature
 * @param featureId - Feature ID
 * @returns Object with paths to generated images
 */
export declare function generateLivingDocsImages(featurePath: string, featureName: string, featureId: string): Promise<{
    featureImage?: string;
    success: boolean;
}>;
/**
 * Get the relative path from a markdown file to an image
 *
 * @param markdownPath - Path to the markdown file
 * @param imagePath - Path to the image file
 * @returns Relative path for markdown embedding
 */
export declare function getRelativeImagePath(markdownPath: string, imagePath: string): string;
/**
 * Generate markdown image reference
 *
 * @param altText - Alt text for the image
 * @param imagePath - Path to the image (relative or absolute)
 * @returns Markdown image syntax
 */
export declare function markdownImage(altText: string, imagePath: string): string;
/**
 * Generate an enterprise-grade documentation image
 *
 * This is the main entry point for context-aware image generation.
 * It automatically applies appropriate styling based on whether the
 * documentation is public (marketing) or internal (functional).
 *
 * @param context - Image generation context (topic, section, docContext)
 * @param outputDir - Directory to save the image
 * @param filename - Optional filename (auto-generated if not provided)
 * @returns Path to generated image, or null if failed
 *
 * @example
 * // Public feature illustration
 * await generateEnterpriseImage({
 *   docContext: 'public',
 *   section: 'feature',
 *   topic: 'User Authentication',
 *   keywords: ['OAuth', 'SSO', 'security']
 * }, './docs/assets');
 *
 * @example
 * // Internal architecture diagram
 * await generateEnterpriseImage({
 *   docContext: 'internal',
 *   section: 'architecture',
 *   topic: 'Microservices Architecture',
 *   keywords: ['API gateway', 'services', 'database']
 * }, './.specweave/docs/internal/assets');
 */
export declare function generateEnterpriseImage(context: ImageContext, outputDir: string, filename?: string): Promise<string | null>;
/**
 * Generate a complete set of images for a documentation section
 *
 * Creates hero image and optionally section header for a documentation folder.
 *
 * @param sectionPath - Path to the documentation section folder
 * @param sectionName - Display name of the section
 * @param sectionType - Type of section (architecture, strategy, etc.)
 * @param docContext - Public or internal documentation
 * @param keywords - Keywords extracted from content
 */
export declare function generateSectionImages(sectionPath: string, sectionName: string, sectionType: DocSection, docContext: DocContext, keywords?: string[]): Promise<{
    heroImage?: string;
    headerImage?: string;
    success: boolean;
}>;
/**
 * Generate images for living docs feature folder (enhanced version)
 *
 * @param featurePath - Path to the feature folder
 * @param featureName - Display name of the feature
 * @param featureId - Feature ID (e.g., "FS-001")
 * @param docContext - Public or internal documentation (default: internal)
 * @returns Object with paths to generated images
 */
export declare function generateLivingDocsImagesEnhanced(featurePath: string, featureName: string, featureId: string, docContext?: DocContext): Promise<{
    featureImage?: string;
    headerImage?: string;
    success: boolean;
}>;
/**
 * Analyze content and extract relevant keywords for image generation
 *
 * @param content - Markdown or text content to analyze
 * @returns Array of relevant keywords
 */
export declare function extractKeywordsFromContent(content: string): string[];
//# sourceMappingURL=image-generator.d.ts.map