/**
 * Configuration Schema Definitions
 *
 * Contains all Zod schema definitions, JSON schema definitions, type constants,
 * and inferred TypeScript types for CodeBuddy configuration files.
 */
import { z, ZodSchema } from 'zod';
export interface JSONSchema {
    type?: string | string[];
    properties?: Record<string, JSONSchema>;
    required?: string[];
    items?: JSONSchema;
    enum?: unknown[];
    minimum?: number;
    maximum?: number;
    minLength?: number;
    maxLength?: number;
    pattern?: string;
    default?: unknown;
    description?: string;
    additionalProperties?: boolean | JSONSchema;
    oneOf?: JSONSchema[];
    anyOf?: JSONSchema[];
    allOf?: JSONSchema[];
    $ref?: string;
    examples?: unknown[];
    deprecated?: boolean;
    deprecationMessage?: string;
    sensitive?: boolean;
    envVar?: string;
    since?: string;
}
export interface ValidationError {
    path: string;
    message: string;
    expected?: string;
    received?: string;
    suggestion?: string;
}
export interface ValidationResult {
    valid: boolean;
    errors: ValidationError[];
    warnings: ValidationError[];
    /** Validated and transformed data with defaults applied */
    data?: unknown;
}
/**
 * Valid AI provider options
 */
export declare const AI_PROVIDERS: readonly ["grok", "claude", "openai", "gemini", "ollama", "lmstudio", "local"];
export type AIProvider = typeof AI_PROVIDERS[number];
/**
 * Valid autonomy levels
 */
export declare const AUTONOMY_LEVELS: readonly ["suggest", "confirm", "auto", "full", "yolo"];
export type AutonomyLevel = typeof AUTONOMY_LEVELS[number];
/**
 * Valid agent modes
 */
export declare const AGENT_MODES: readonly ["plan", "code", "ask", "architect"];
export type AgentMode = typeof AGENT_MODES[number];
/**
 * Valid hook events
 */
export declare const HOOK_EVENTS: readonly ["PreToolUse", "PostToolUse", "SessionStart", "SessionEnd", "Notification"];
export type HookEvent = typeof HOOK_EVENTS[number];
/**
 * Valid theme options
 */
export declare const THEMES: readonly ["dark", "light", "auto", "default", "neon", "pastel", "matrix", "ocean", "sunset", "minimal", "high-contrast"];
export type Theme = typeof THEMES[number];
export declare const SettingsSchema: z.ZodObject<{
    model: z.ZodDefault<z.ZodString>;
    maxRounds: z.ZodDefault<z.ZodNumber>;
    autonomyLevel: z.ZodDefault<z.ZodEnum<["suggest", "confirm", "auto", "full", "yolo"]>>;
    enableRAG: z.ZodDefault<z.ZodBoolean>;
    parallelTools: z.ZodDefault<z.ZodBoolean>;
    temperature: z.ZodDefault<z.ZodNumber>;
    maxTokens: z.ZodOptional<z.ZodNumber>;
    agentMode: z.ZodOptional<z.ZodEnum<["plan", "code", "ask", "architect"]>>;
    contextWindow: z.ZodOptional<z.ZodNumber>;
    enableCheckpoints: z.ZodDefault<z.ZodBoolean>;
    enableTelemetry: z.ZodDefault<z.ZodBoolean>;
}, "strict", z.ZodTypeAny, {
    model: string;
    temperature: number;
    maxRounds: number;
    autonomyLevel: "suggest" | "auto" | "confirm" | "full" | "yolo";
    enableRAG: boolean;
    parallelTools: boolean;
    enableCheckpoints: boolean;
    enableTelemetry: boolean;
    agentMode?: "code" | "plan" | "ask" | "architect" | undefined;
    maxTokens?: number | undefined;
    contextWindow?: number | undefined;
}, {
    model?: string | undefined;
    temperature?: number | undefined;
    agentMode?: "code" | "plan" | "ask" | "architect" | undefined;
    maxRounds?: number | undefined;
    autonomyLevel?: "suggest" | "auto" | "confirm" | "full" | "yolo" | undefined;
    enableRAG?: boolean | undefined;
    parallelTools?: boolean | undefined;
    maxTokens?: number | undefined;
    contextWindow?: number | undefined;
    enableCheckpoints?: boolean | undefined;
    enableTelemetry?: boolean | undefined;
}>;
export type Settings = z.infer<typeof SettingsSchema>;
export declare const UserSettingsSchema: z.ZodObject<{
    apiKey: z.ZodOptional<z.ZodString>;
    baseURL: z.ZodOptional<z.ZodString>;
    defaultModel: z.ZodDefault<z.ZodString>;
    models: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
    provider: z.ZodDefault<z.ZodEnum<["grok", "claude", "openai", "gemini", "ollama", "lmstudio", "local"]>>;
    model: z.ZodOptional<z.ZodString>;
    theme: z.ZodDefault<z.ZodEnum<["dark", "light", "auto", "default", "neon", "pastel", "matrix", "ocean", "sunset", "minimal", "high-contrast"]>>;
    editor: z.ZodOptional<z.ZodString>;
    shell: z.ZodOptional<z.ZodString>;
    language: z.ZodDefault<z.ZodString>;
}, "strict", z.ZodTypeAny, {
    provider: "lmstudio" | "ollama" | "local" | "grok" | "claude" | "openai" | "gemini";
    defaultModel: string;
    models: string[];
    theme: "default" | "auto" | "dark" | "light" | "neon" | "pastel" | "matrix" | "ocean" | "sunset" | "minimal" | "high-contrast";
    language: string;
    model?: string | undefined;
    apiKey?: string | undefined;
    baseURL?: string | undefined;
    editor?: string | undefined;
    shell?: string | undefined;
}, {
    provider?: "lmstudio" | "ollama" | "local" | "grok" | "claude" | "openai" | "gemini" | undefined;
    model?: string | undefined;
    apiKey?: string | undefined;
    baseURL?: string | undefined;
    defaultModel?: string | undefined;
    models?: string[] | undefined;
    theme?: "default" | "auto" | "dark" | "light" | "neon" | "pastel" | "matrix" | "ocean" | "sunset" | "minimal" | "high-contrast" | undefined;
    editor?: string | undefined;
    shell?: string | undefined;
    language?: string | undefined;
}>;
export type UserSettings = z.infer<typeof UserSettingsSchema>;
export declare const HookSchema: z.ZodObject<{
    event: z.ZodEnum<["PreToolUse", "PostToolUse", "SessionStart", "SessionEnd", "Notification"]>;
    pattern: z.ZodOptional<z.ZodString>;
    command: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    timeout: z.ZodDefault<z.ZodNumber>;
    continueOnError: z.ZodDefault<z.ZodBoolean>;
    enabled: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
    timeout: number;
    event: "PreToolUse" | "PostToolUse" | "SessionStart" | "SessionEnd" | "Notification";
    command: string;
    continueOnError: boolean;
    enabled: boolean;
    pattern?: string | undefined;
    description?: string | undefined;
}, {
    event: "PreToolUse" | "PostToolUse" | "SessionStart" | "SessionEnd" | "Notification";
    command: string;
    timeout?: number | undefined;
    pattern?: string | undefined;
    description?: string | undefined;
    continueOnError?: boolean | undefined;
    enabled?: boolean | undefined;
}>;
export declare const HooksConfigSchema: z.ZodObject<{
    hooks: z.ZodDefault<z.ZodArray<z.ZodObject<{
        event: z.ZodEnum<["PreToolUse", "PostToolUse", "SessionStart", "SessionEnd", "Notification"]>;
        pattern: z.ZodOptional<z.ZodString>;
        command: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        timeout: z.ZodDefault<z.ZodNumber>;
        continueOnError: z.ZodDefault<z.ZodBoolean>;
        enabled: z.ZodDefault<z.ZodBoolean>;
    }, "strip", z.ZodTypeAny, {
        timeout: number;
        event: "PreToolUse" | "PostToolUse" | "SessionStart" | "SessionEnd" | "Notification";
        command: string;
        continueOnError: boolean;
        enabled: boolean;
        pattern?: string | undefined;
        description?: string | undefined;
    }, {
        event: "PreToolUse" | "PostToolUse" | "SessionStart" | "SessionEnd" | "Notification";
        command: string;
        timeout?: number | undefined;
        pattern?: string | undefined;
        description?: string | undefined;
        continueOnError?: boolean | undefined;
        enabled?: boolean | undefined;
    }>, "many">>;
}, "strict", z.ZodTypeAny, {
    hooks: {
        timeout: number;
        event: "PreToolUse" | "PostToolUse" | "SessionStart" | "SessionEnd" | "Notification";
        command: string;
        continueOnError: boolean;
        enabled: boolean;
        pattern?: string | undefined;
        description?: string | undefined;
    }[];
}, {
    hooks?: {
        event: "PreToolUse" | "PostToolUse" | "SessionStart" | "SessionEnd" | "Notification";
        command: string;
        timeout?: number | undefined;
        pattern?: string | undefined;
        description?: string | undefined;
        continueOnError?: boolean | undefined;
        enabled?: boolean | undefined;
    }[] | undefined;
}>;
export type HookConfig = z.infer<typeof HookSchema>;
export type HooksConfig = z.infer<typeof HooksConfigSchema>;
export declare const MCPServerSchema: z.ZodObject<{
    command: z.ZodString;
    args: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
    env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
    enabled: z.ZodDefault<z.ZodBoolean>;
    alwaysAllow: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
    autoStart: z.ZodDefault<z.ZodBoolean>;
    timeout: z.ZodDefault<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
    timeout: number;
    args: string[];
    env: Record<string, string>;
    command: string;
    enabled: boolean;
    alwaysAllow: string[];
    autoStart: boolean;
}, {
    command: string;
    timeout?: number | undefined;
    args?: string[] | undefined;
    env?: Record<string, string> | undefined;
    enabled?: boolean | undefined;
    alwaysAllow?: string[] | undefined;
    autoStart?: boolean | undefined;
}>;
export declare const MCPConfigSchema: z.ZodObject<{
    servers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
        command: z.ZodString;
        args: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
        env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
        enabled: z.ZodDefault<z.ZodBoolean>;
        alwaysAllow: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
        autoStart: z.ZodDefault<z.ZodBoolean>;
        timeout: z.ZodDefault<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        timeout: number;
        args: string[];
        env: Record<string, string>;
        command: string;
        enabled: boolean;
        alwaysAllow: string[];
        autoStart: boolean;
    }, {
        command: string;
        timeout?: number | undefined;
        args?: string[] | undefined;
        env?: Record<string, string> | undefined;
        enabled?: boolean | undefined;
        alwaysAllow?: string[] | undefined;
        autoStart?: boolean | undefined;
    }>>>;
    defaultTimeout: z.ZodDefault<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
    servers: Record<string, {
        timeout: number;
        args: string[];
        env: Record<string, string>;
        command: string;
        enabled: boolean;
        alwaysAllow: string[];
        autoStart: boolean;
    }>;
    defaultTimeout: number;
}, {
    servers?: Record<string, {
        command: string;
        timeout?: number | undefined;
        args?: string[] | undefined;
        env?: Record<string, string> | undefined;
        enabled?: boolean | undefined;
        alwaysAllow?: string[] | undefined;
        autoStart?: boolean | undefined;
    }> | undefined;
    defaultTimeout?: number | undefined;
}>;
export type MCPServerConfig = z.infer<typeof MCPServerSchema>;
export type MCPConfig = z.infer<typeof MCPConfigSchema>;
export declare const YoloConfigSchema: z.ZodObject<{
    enabled: z.ZodDefault<z.ZodBoolean>;
    allowList: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
    denyList: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
    maxAutoEdits: z.ZodDefault<z.ZodNumber>;
    maxAutoCommands: z.ZodDefault<z.ZodNumber>;
    safeMode: z.ZodDefault<z.ZodBoolean>;
    allowFileCreation: z.ZodDefault<z.ZodBoolean>;
    allowFileDeletion: z.ZodDefault<z.ZodBoolean>;
    allowGitOperations: z.ZodDefault<z.ZodBoolean>;
    maxCostPerSession: z.ZodDefault<z.ZodNumber>;
}, "strict", z.ZodTypeAny, {
    enabled: boolean;
    allowList: string[];
    denyList: string[];
    maxAutoEdits: number;
    maxAutoCommands: number;
    safeMode: boolean;
    allowFileCreation: boolean;
    allowFileDeletion: boolean;
    allowGitOperations: boolean;
    maxCostPerSession: number;
}, {
    enabled?: boolean | undefined;
    allowList?: string[] | undefined;
    denyList?: string[] | undefined;
    maxAutoEdits?: number | undefined;
    maxAutoCommands?: number | undefined;
    safeMode?: boolean | undefined;
    allowFileCreation?: boolean | undefined;
    allowFileDeletion?: boolean | undefined;
    allowGitOperations?: boolean | undefined;
    maxCostPerSession?: number | undefined;
}>;
export type YoloConfig = z.infer<typeof YoloConfigSchema>;
export declare const EnvVarsSchema: z.ZodObject<{
    GROK_API_KEY: z.ZodOptional<z.ZodString>;
    MORPH_API_KEY: z.ZodOptional<z.ZodString>;
    GROK_BASE_URL: z.ZodOptional<z.ZodString>;
    GROK_MODEL: z.ZodOptional<z.ZodString>;
    YOLO_MODE: z.ZodOptional<z.ZodEffects<z.ZodEnum<["true", "false", "1", "0"]>, boolean, "0" | "true" | "1" | "false">>;
    MAX_COST: z.ZodOptional<z.ZodPipeline<z.ZodEffects<z.ZodString, number, string>, z.ZodNumber>>;
    DEBUG: z.ZodOptional<z.ZodEffects<z.ZodEnum<["true", "false", "1", "0"]>, boolean, "0" | "true" | "1" | "false">>;
    LOG_LEVEL: z.ZodOptional<z.ZodEnum<["debug", "info", "warn", "error"]>>;
    CODEBUDDY_CONFIG_DIR: z.ZodOptional<z.ZodString>;
    NO_COLOR: z.ZodOptional<z.ZodString>;
    FORCE_COLOR: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    DEBUG?: boolean | undefined;
    LOG_LEVEL?: "debug" | "info" | "warn" | "error" | undefined;
    NO_COLOR?: string | undefined;
    GROK_BASE_URL?: string | undefined;
    GROK_API_KEY?: string | undefined;
    MORPH_API_KEY?: string | undefined;
    GROK_MODEL?: string | undefined;
    YOLO_MODE?: boolean | undefined;
    MAX_COST?: number | undefined;
    CODEBUDDY_CONFIG_DIR?: string | undefined;
    FORCE_COLOR?: string | undefined;
}, {
    DEBUG?: "0" | "true" | "1" | "false" | undefined;
    LOG_LEVEL?: "debug" | "info" | "warn" | "error" | undefined;
    NO_COLOR?: string | undefined;
    GROK_BASE_URL?: string | undefined;
    GROK_API_KEY?: string | undefined;
    MORPH_API_KEY?: string | undefined;
    GROK_MODEL?: string | undefined;
    YOLO_MODE?: "0" | "true" | "1" | "false" | undefined;
    MAX_COST?: string | undefined;
    CODEBUDDY_CONFIG_DIR?: string | undefined;
    FORCE_COLOR?: string | undefined;
}>;
export type EnvVars = z.infer<typeof EnvVarsSchema>;
/**
 * Map of schema names to their Zod schemas
 */
export declare const ZOD_SCHEMAS: Record<string, ZodSchema>;
export declare const SCHEMAS: Record<string, JSONSchema>;
