import { z } from 'zod';
/**
 * 🛡️ WOARU Schema Validation - KI-freundliche Regelwelt
 *
 * Zod Schema Definitions für alle WOARU Konfigurationsdateien
 * Teil der "KI-freundlichen Regelwelt" - strikte Typen für AI-Assistenten
 */
/**
 * 🔧 Tools Database Package Configuration Schema
 */
export declare const ToolPackageSchema: z.ZodObject<{
    description: z.ZodString;
    packages: z.ZodArray<z.ZodString>;
    configs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
    configFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
    metadata: z.ZodOptional<z.ZodObject<{
        priority: z.ZodOptional<z.ZodNumber>;
        compatibility: z.ZodOptional<z.ZodArray<z.ZodString>>;
        lastUpdated: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
}, z.core.$strip>;
/**
 * 🏗️ Framework Configuration Schema
 */
export declare const FrameworkSchema: z.ZodObject<{
    name: z.ZodString;
    detectionFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
    detectionPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
    recommendedTools: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
    specificPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
    metadata: z.ZodOptional<z.ZodObject<{
        version: z.ZodOptional<z.ZodString>;
        popularity: z.ZodOptional<z.ZodNumber>;
        maintainedStatus: z.ZodOptional<z.ZodEnum<{
            active: "active";
            maintenance: "maintenance";
            deprecated: "deprecated";
        }>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
/**
 * 📊 Tools Database Metadata Schema
 */
export declare const ToolsDatabaseMetadataSchema: z.ZodObject<{
    updateFrequency: z.ZodEnum<{
        daily: "daily";
        weekly: "weekly";
        monthly: "monthly";
    }>;
    sources: z.ZodOptional<z.ZodArray<z.ZodObject<{
        name: z.ZodString;
        url: z.ZodString;
        type: z.ZodEnum<{
            npm: "npm";
            github: "github";
            pypi: "pypi";
            nuget: "nuget";
            maven: "maven";
            other: "other";
        }>;
    }, z.core.$strip>>>;
    lastDataUpdate: z.ZodOptional<z.ZodString>;
    totalTools: z.ZodOptional<z.ZodNumber>;
}, z.core.$strip>;
/**
 * 🗄️ Complete Tools Database Schema
 */
export declare const ToolsDatabaseSchema: z.ZodObject<{
    version: z.ZodString;
    lastUpdated: z.ZodString;
    categories: z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{
        description: z.ZodString;
        packages: z.ZodArray<z.ZodString>;
        configs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
        configFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
        metadata: z.ZodOptional<z.ZodObject<{
            priority: z.ZodOptional<z.ZodNumber>;
            compatibility: z.ZodOptional<z.ZodArray<z.ZodString>>;
            lastUpdated: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
    }, z.core.$strip>>>;
    frameworks: z.ZodRecord<z.ZodString, z.ZodObject<{
        name: z.ZodString;
        detectionFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
        detectionPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
        recommendedTools: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
        specificPackages: z.ZodOptional<z.ZodArray<z.ZodString>>;
        metadata: z.ZodOptional<z.ZodObject<{
            version: z.ZodOptional<z.ZodString>;
            popularity: z.ZodOptional<z.ZodNumber>;
            maintainedStatus: z.ZodOptional<z.ZodEnum<{
                active: "active";
                maintenance: "maintenance";
                deprecated: "deprecated";
            }>>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    metadata: z.ZodOptional<z.ZodObject<{
        updateFrequency: z.ZodEnum<{
            daily: "daily";
            weekly: "weekly";
            monthly: "monthly";
        }>;
        sources: z.ZodOptional<z.ZodArray<z.ZodObject<{
            name: z.ZodString;
            url: z.ZodString;
            type: z.ZodEnum<{
                npm: "npm";
                github: "github";
                pypi: "pypi";
                nuget: "nuget";
                maven: "maven";
                other: "other";
            }>;
        }, z.core.$strip>>>;
        lastDataUpdate: z.ZodOptional<z.ZodString>;
        totalTools: z.ZodOptional<z.ZodNumber>;
    }, z.core.$strip>>;
}, z.core.$strip>;
/**
 * 👤 User Configuration Schema
 */
export declare const UserConfigSchema: z.ZodObject<{
    language: z.ZodOptional<z.ZodEnum<{
        de: "de";
        en: "en";
    }>>;
    preferences: z.ZodOptional<z.ZodObject<{
        theme: z.ZodOptional<z.ZodEnum<{
            dark: "dark";
            light: "light";
            auto: "auto";
        }>>;
        verbosity: z.ZodOptional<z.ZodEnum<{
            quiet: "quiet";
            normal: "normal";
            verbose: "verbose";
        }>>;
        autoUpdate: z.ZodOptional<z.ZodBoolean>;
        telemetry: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strip>>;
    lastModified: z.ZodOptional<z.ZodString>;
    version: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
/**
 * 📄 Template Configuration Schema
 */
export declare const TemplateConfigSchema: z.ZodObject<{
    name: z.ZodString;
    description: z.ZodString;
    version: z.ZodString;
    author: z.ZodOptional<z.ZodString>;
    files: z.ZodArray<z.ZodObject<{
        path: z.ZodString;
        content: z.ZodString;
        executable: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strip>>;
    variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
        description: z.ZodString;
        default: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodNumber]>, z.ZodBoolean]>>;
        required: z.ZodOptional<z.ZodBoolean>;
        type: z.ZodOptional<z.ZodEnum<{
            string: "string";
            number: "number";
            boolean: "boolean";
        }>>;
    }, z.core.$strip>>>;
    metadata: z.ZodOptional<z.ZodObject<{
        category: z.ZodOptional<z.ZodString>;
        tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
        license: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
}, z.core.$strip>;
/**
 * 🛡️ WOARU AI Configuration Schema (Zod)
 *
 * Diese Schemas validieren die Struktur der ai_config.json und stellen sicher,
 * dass alle Konfigurationen den definierten Regeln entsprechen.
 *
 * Teil der "KI-freundlichen Regelwelt" - garantiert konsistente Datenstrukturen.
 */
export declare const ProviderTypeSchema: z.ZodEnum<{
    openai: "openai";
    anthropic: "anthropic";
    google: "google";
    "custom-ollama": "custom-ollama";
    "azure-openai": "azure-openai";
}>;
export declare const LLMProviderConfigSchema: z.ZodObject<{
    id: z.ZodString;
    providerType: z.ZodEnum<{
        openai: "openai";
        anthropic: "anthropic";
        google: "google";
        "custom-ollama": "custom-ollama";
        "azure-openai": "azure-openai";
    }>;
    apiKeyEnvVar: z.ZodString;
    baseUrl: z.ZodString;
    model: z.ZodString;
    headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    bodyTemplate: z.ZodString;
    timeout: z.ZodOptional<z.ZodNumber>;
    maxTokens: z.ZodOptional<z.ZodNumber>;
    temperature: z.ZodOptional<z.ZodNumber>;
    enabled: z.ZodBoolean;
}, z.core.$strip>;
export declare const AIReviewConfigSchema: z.ZodObject<{
    providers: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        providerType: z.ZodEnum<{
            openai: "openai";
            anthropic: "anthropic";
            google: "google";
            "custom-ollama": "custom-ollama";
            "azure-openai": "azure-openai";
        }>;
        apiKeyEnvVar: z.ZodString;
        baseUrl: z.ZodString;
        model: z.ZodString;
        headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        bodyTemplate: z.ZodString;
        timeout: z.ZodOptional<z.ZodNumber>;
        maxTokens: z.ZodOptional<z.ZodNumber>;
        temperature: z.ZodOptional<z.ZodNumber>;
        enabled: z.ZodBoolean;
    }, z.core.$strip>>;
    parallelRequests: z.ZodBoolean;
    consensusMode: z.ZodBoolean;
    minConsensusCount: z.ZodNumber;
    tokenLimit: z.ZodNumber;
    costThreshold: z.ZodNumber;
}, z.core.$strip>;
export declare const ConfigMetadataSchema: z.ZodObject<{
    created: z.ZodString;
    description: z.ZodString;
    lastModified: z.ZodOptional<z.ZodString>;
    version: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export declare const AIConfigFileSchema: z.ZodObject<{
    _metadata: z.ZodObject<{
        created: z.ZodString;
        description: z.ZodString;
        lastModified: z.ZodOptional<z.ZodString>;
        version: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>;
    multi_ai_review_enabled: z.ZodBoolean;
    primary_review_provider_id: z.ZodNullable<z.ZodString>;
}, z.core.$catchall<z.ZodUnion<readonly [z.ZodObject<{
    id: z.ZodString;
    providerType: z.ZodEnum<{
        openai: "openai";
        anthropic: "anthropic";
        google: "google";
        "custom-ollama": "custom-ollama";
        "azure-openai": "azure-openai";
    }>;
    apiKeyEnvVar: z.ZodString;
    baseUrl: z.ZodString;
    model: z.ZodString;
    headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    bodyTemplate: z.ZodString;
    timeout: z.ZodOptional<z.ZodNumber>;
    maxTokens: z.ZodOptional<z.ZodNumber>;
    temperature: z.ZodOptional<z.ZodNumber>;
    enabled: z.ZodBoolean;
}, z.core.$strip>, z.ZodUnknown]>>>;
export declare const ToolConfigSchema: z.ZodObject<{
    name: z.ZodString;
    description: z.ZodString;
    category: z.ZodString;
    language: z.ZodString;
    homepage: z.ZodOptional<z.ZodString>;
    installation: z.ZodOptional<z.ZodObject<{
        npm: z.ZodOptional<z.ZodString>;
        pip: z.ZodOptional<z.ZodString>;
        cargo: z.ZodOptional<z.ZodString>;
        go: z.ZodOptional<z.ZodString>;
        manual: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
    configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    filePatterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
    commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    priority: z.ZodOptional<z.ZodNumber>;
    enabled: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strip>;
export declare const LegacyToolsDatabaseSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
    name: z.ZodString;
    description: z.ZodString;
    category: z.ZodString;
    language: z.ZodString;
    homepage: z.ZodOptional<z.ZodString>;
    installation: z.ZodOptional<z.ZodObject<{
        npm: z.ZodOptional<z.ZodString>;
        pip: z.ZodOptional<z.ZodString>;
        cargo: z.ZodOptional<z.ZodString>;
        go: z.ZodOptional<z.ZodString>;
        manual: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
    configuration: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    filePatterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
    commands: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    priority: z.ZodOptional<z.ZodNumber>;
    enabled: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strip>>;
export type LLMProviderConfig = z.infer<typeof LLMProviderConfigSchema>;
export type AIReviewConfig = z.infer<typeof AIReviewConfigSchema>;
export type ConfigMetadata = z.infer<typeof ConfigMetadataSchema>;
export type AIConfigFile = z.infer<typeof AIConfigFileSchema>;
export type ToolConfig = z.infer<typeof ToolConfigSchema>;
export type SchemaToolsDatabase = z.infer<typeof LegacyToolsDatabaseSchema>;
export type ToolPackage = z.infer<typeof ToolPackageSchema>;
export type Framework = z.infer<typeof FrameworkSchema>;
export type ToolsDatabaseMetadata = z.infer<typeof ToolsDatabaseMetadataSchema>;
export type CompleteToolsDatabase = z.infer<typeof ToolsDatabaseSchema>;
export type UserConfig = z.infer<typeof UserConfigSchema>;
export type TemplateConfig = z.infer<typeof TemplateConfigSchema>;
/**
 * 🎯 Schema Validation Utilities
 */
export declare class SchemaValidator {
    /**
     * Validiert eine AI-Konfigurationsdatei gegen das Schema
     */
    static validateAIConfig(data: unknown): {
        success: boolean;
        data?: AIConfigFile;
        errors?: string[];
    };
    /**
     * Validiert eine Tools-Datenbank gegen das Schema (Legacy)
     */
    static validateToolsDatabase(data: unknown): {
        success: boolean;
        data?: SchemaToolsDatabase;
        errors?: string[];
    };
    /**
     * 🗄️ Validiert die vollständige Tools-Datenbank (Neue Struktur)
     */
    static validateCompleteToolsDatabase(data: unknown): {
        success: boolean;
        data?: CompleteToolsDatabase;
        errors?: string[];
    };
    /**
     * 👤 Validiert User-Konfiguration
     */
    static validateUserConfig(data: unknown): {
        success: boolean;
        data?: UserConfig;
        errors?: string[];
    };
    /**
     * 📄 Validiert Template-Konfiguration
     */
    static validateTemplateConfig(data: unknown): {
        success: boolean;
        data?: TemplateConfig;
        errors?: string[];
    };
    /**
     * 🔧 Validiert einzelnes Tool-Package
     */
    static validateToolPackage(data: unknown): {
        success: boolean;
        data?: ToolPackage;
        errors?: string[];
    };
    /**
     * 🏗️ Validiert Framework-Konfiguration
     */
    static validateFramework(data: unknown): {
        success: boolean;
        data?: Framework;
        errors?: string[];
    };
    /**
     * Validiert eine einzelne Provider-Konfiguration
     */
    static validateProviderConfig(data: unknown): {
        success: boolean;
        data?: LLMProviderConfig;
        errors?: string[];
    };
}
//# sourceMappingURL=ai-config.schema.d.ts.map