/**
 * Domain-Specific Prompt Engine
 * Phase 5, Checkpoint E1 - Intelligent prompts for seeding and template generation
 */
import { SchemaInfo } from '../core/schema-adapter';
export interface PromptContext {
    schema?: SchemaInfo;
    table?: string;
    columns?: Array<{
        name: string;
        type: string;
        nullable?: boolean;
    }>;
    relationships?: Array<{
        from: string;
        to: string;
        type: string;
    }>;
    existingData?: Record<string, any>[];
    constraints?: Array<{
        field: string;
        rule: string;
        value?: any;
    }>;
    style?: 'realistic' | 'creative' | 'business' | 'technical' | 'casual';
    language?: string;
    culture?: string;
    domain?: string;
}
export interface GenerationRequest {
    type: 'seed_data' | 'template_content' | 'schema_suggestion' | 'field_names' | 'relationships';
    context: PromptContext;
    count?: number;
    format?: 'json' | 'sql' | 'typescript' | 'text';
    requirements?: string[];
    examples?: any[];
}
export interface PromptTemplate {
    id: string;
    name: string;
    description: string;
    type: GenerationRequest['type'];
    systemPrompt: string;
    userPromptTemplate: string;
    outputFormat: 'json' | 'text';
    examples?: Array<{
        input: any;
        output: any;
    }>;
    validation?: {
        required_fields?: string[];
        data_types?: Record<string, string>;
        constraints?: Array<{
            field: string;
            rule: string;
        }>;
    };
}
export declare class DomainPromptEngine {
    private promptTemplates;
    private domainKnowledge;
    constructor();
    /**
     * Generate a contextual prompt for AI generation
     */
    generatePrompt(request: GenerationRequest): {
        system: string;
        user: string;
        schema?: any;
    };
    /**
     * Generate seed data prompts
     */
    generateSeedDataPrompt(context: PromptContext, count?: number): {
        system: string;
        user: string;
        schema?: any;
    };
    /**
     * Generate template content prompts
     */
    generateTemplatePrompt(context: PromptContext, templateType: string): {
        system: string;
        user: string;
    };
    /**
     * Generate schema improvement suggestions
     */
    generateSchemaAnalysisPrompt(schema: SchemaInfo): {
        system: string;
        user: string;
    };
    /**
     * Add custom prompt template
     */
    addPromptTemplate(template: PromptTemplate): void;
    /**
     * Get available templates
     */
    getAvailableTemplates(): PromptTemplate[];
    /**
     * Add domain knowledge
     */
    addDomainKnowledge(domain: string, knowledge: any): void;
    /**
     * Private: Initialize built-in prompt templates
     */
    private initializeBuiltInTemplates;
    /**
     * Private: Initialize domain knowledge
     */
    private initializeDomainKnowledge;
    /**
     * Private: Get template for request type
     */
    private getTemplateForRequest;
    /**
     * Private: Build system prompt with context
     */
    private buildSystemPrompt;
    /**
     * Private: Build user prompt from template
     */
    private buildUserPrompt;
    /**
     * Private: Generate output schema for structured responses
     */
    private generateOutputSchema;
    /**
     * Private: Generate schema for table columns
     */
    private generateColumnSchema;
    /**
     * Private: Process simple Handlebars-like template syntax
     */
    private processHandlebarsLike;
}
export declare const promptEngine: DomainPromptEngine;
//# sourceMappingURL=prompt-engine.d.ts.map