/**
 * Generator types and interfaces
 */
import { Workflow, Component, Endpoint } from '../types/workflow';
import { ExecutionPlan } from '../engine/workflow-engine';
import { ExtendedWorkflow } from '../parser/extended-workflow-schema';
/**
 * Progress callback for tracking generation progress
 */
export interface ProgressCallback {
    (progress: ProgressUpdate): void;
}
/**
 * Progress update information
 */
export interface ProgressUpdate {
    stage: string;
    current: number;
    total: number;
    message?: string;
    file?: string;
}
/**
 * Generated file to be written to disk
 */
export interface GeneratedFile {
    path: string;
    content: string;
    overwrite?: boolean;
    preserve?: boolean;
}
/**
 * Generator context - information available to all generators
 * Now supports both legacy Workflow and new ExtendedWorkflow schemas
 */
export interface GeneratorContext {
    workflow: Workflow;
    executionPlan: ExecutionPlan;
    outputDirectory: string;
    options?: GeneratorOptions;
    extendedWorkflow?: ExtendedWorkflow;
}
/**
 * Options that can be passed to generators
 */
export interface GeneratorOptions {
    onProgress?: ProgressCallback;
    [key: string]: any;
}
/**
 * Result of code generation
 */
export interface GenerationResult {
    files: GeneratedFile[];
    warnings?: string[];
    errors?: string[];
    dependencies?: {
        backend?: Record<string, string>;
        frontend?: Record<string, string>;
    };
}
/**
 * Base interface for all generators
 */
export interface Generator {
    /**
     * Unique identifier for this generator
     */
    id: string;
    /**
     * Human-readable name
     */
    name: string;
    /**
     * Description of what this generator produces
     */
    description: string;
    /**
     * Generate code from workflow
     */
    generate(context: GeneratorContext): Promise<GenerationResult> | GenerationResult;
}
/**
 * Frontend-specific generator
 */
export interface FrontendGenerator extends Generator {
    /**
     * Framework this generator targets (react, vue, angular, etc.)
     */
    framework: string;
    /**
     * Generate a component
     */
    generateComponent?(component: Component, context: GeneratorContext): Promise<GeneratedFile[]> | GeneratedFile[];
}
/**
 * Backend-specific generator
 */
export interface BackendGenerator extends Generator {
    /**
     * Language this generator targets (typescript, go, python, etc.)
     */
    language: string;
    /**
     * Framework this generator targets (express, fastify, etc.)
     */
    framework?: string;
    /**
     * Generate an endpoint
     */
    generateEndpoint?(endpoint: Endpoint, context: GeneratorContext): Promise<GeneratedFile[]> | GeneratedFile[];
}
/**
 * Documentation generator
 */
export interface DocumentationGenerator extends Generator {
    /**
     * Format this generator produces (markdown, html, pdf, etc.)
     */
    format: string;
}
/**
 * Database migration generator
 */
export interface DatabaseGenerator extends Generator {
    /**
     * Database type (postgresql, mysql, mongodb, etc.)
     */
    database: string;
}
/**
 * Test generator
 */
export interface TestGenerator extends Generator {
    /**
     * Test framework (jest, mocha, pytest, etc.)
     */
    testFramework: string;
}
/**
 * CLI generator
 */
export interface CliGenerator extends Generator {
    /**
     * CLI framework (commander, yargs, oclif, etc.)
     */
    framework: string;
    /**
     * Language this generator targets (typescript, javascript, etc.)
     */
    language: string;
}
//# sourceMappingURL=types.d.ts.map