import { z } from 'zod';
/**
 * Environment validation schema
 */
export declare const EnvironmentSchema: z.ZodEnum<["development", "staging", "production", "test"]>;
/**
 * Restart policy schema
 */
export declare const RestartPolicySchema: z.ZodObject<{
    enabled: z.ZodDefault<z.ZodBoolean>;
    maxAttempts: z.ZodDefault<z.ZodNumber>;
    delay: z.ZodDefault<z.ZodNumber>;
    backoffMultiplier: z.ZodDefault<z.ZodNumber>;
    maxDelay: z.ZodDefault<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
    delay?: number;
    enabled?: boolean;
    maxAttempts?: number;
    backoffMultiplier?: number;
    maxDelay?: number;
}, {
    delay?: number;
    enabled?: boolean;
    maxAttempts?: number;
    backoffMultiplier?: number;
    maxDelay?: number;
}>;
/**
 * Service configuration schema
 */
export declare const ServiceConfigItemSchema: z.ZodObject<{
    name: z.ZodString;
    port: z.ZodNumber;
    healthEndpoint: z.ZodString;
    startCommand: z.ZodString;
    workingDirectory: z.ZodOptional<z.ZodString>;
    dependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    restartPolicy: z.ZodOptional<z.ZodObject<{
        enabled: z.ZodDefault<z.ZodBoolean>;
        maxAttempts: z.ZodDefault<z.ZodNumber>;
        delay: z.ZodDefault<z.ZodNumber>;
        backoffMultiplier: z.ZodDefault<z.ZodNumber>;
        maxDelay: z.ZodDefault<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        delay?: number;
        enabled?: boolean;
        maxAttempts?: number;
        backoffMultiplier?: number;
        maxDelay?: number;
    }, {
        delay?: number;
        enabled?: boolean;
        maxAttempts?: number;
        backoffMultiplier?: number;
        maxDelay?: number;
    }>>;
    timeout: z.ZodDefault<z.ZodNumber>;
    healthCheckInterval: z.ZodDefault<z.ZodNumber>;
    gracefulShutdownTimeout: z.ZodDefault<z.ZodNumber>;
    env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, "strip", z.ZodTypeAny, {
    name?: string;
    port?: number;
    dependencies?: string[];
    timeout?: number;
    healthEndpoint?: string;
    startCommand?: string;
    workingDirectory?: string;
    restartPolicy?: {
        delay?: number;
        enabled?: boolean;
        maxAttempts?: number;
        backoffMultiplier?: number;
        maxDelay?: number;
    };
    healthCheckInterval?: number;
    gracefulShutdownTimeout?: number;
    env?: Record<string, string>;
}, {
    name?: string;
    port?: number;
    dependencies?: string[];
    timeout?: number;
    healthEndpoint?: string;
    startCommand?: string;
    workingDirectory?: string;
    restartPolicy?: {
        delay?: number;
        enabled?: boolean;
        maxAttempts?: number;
        backoffMultiplier?: number;
        maxDelay?: number;
    };
    healthCheckInterval?: number;
    gracefulShutdownTimeout?: number;
    env?: Record<string, string>;
}>;
/**
 * Manager configuration schema
 */
export declare const ManagerConfigSchema: z.ZodObject<{
    environment: z.ZodDefault<z.ZodEnum<["development", "staging", "production", "test"]>>;
    logLevel: z.ZodDefault<z.ZodEnum<["error", "warn", "info", "debug", "trace"]>>;
    maxConcurrentServices: z.ZodDefault<z.ZodNumber>;
    globalTimeout: z.ZodDefault<z.ZodNumber>;
    healthCheckInterval: z.ZodDefault<z.ZodNumber>;
    enableMetrics: z.ZodDefault<z.ZodBoolean>;
    enableAutoRestart: z.ZodDefault<z.ZodBoolean>;
    services: z.ZodDefault<z.ZodArray<z.ZodObject<{
        name: z.ZodString;
        port: z.ZodNumber;
        healthEndpoint: z.ZodString;
        startCommand: z.ZodString;
        workingDirectory: z.ZodOptional<z.ZodString>;
        dependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        restartPolicy: z.ZodOptional<z.ZodObject<{
            enabled: z.ZodDefault<z.ZodBoolean>;
            maxAttempts: z.ZodDefault<z.ZodNumber>;
            delay: z.ZodDefault<z.ZodNumber>;
            backoffMultiplier: z.ZodDefault<z.ZodNumber>;
            maxDelay: z.ZodDefault<z.ZodNumber>;
        }, "strip", z.ZodTypeAny, {
            delay?: number;
            enabled?: boolean;
            maxAttempts?: number;
            backoffMultiplier?: number;
            maxDelay?: number;
        }, {
            delay?: number;
            enabled?: boolean;
            maxAttempts?: number;
            backoffMultiplier?: number;
            maxDelay?: number;
        }>>;
        timeout: z.ZodDefault<z.ZodNumber>;
        healthCheckInterval: z.ZodDefault<z.ZodNumber>;
        gracefulShutdownTimeout: z.ZodDefault<z.ZodNumber>;
        env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    }, "strip", z.ZodTypeAny, {
        name?: string;
        port?: number;
        dependencies?: string[];
        timeout?: number;
        healthEndpoint?: string;
        startCommand?: string;
        workingDirectory?: string;
        restartPolicy?: {
            delay?: number;
            enabled?: boolean;
            maxAttempts?: number;
            backoffMultiplier?: number;
            maxDelay?: number;
        };
        healthCheckInterval?: number;
        gracefulShutdownTimeout?: number;
        env?: Record<string, string>;
    }, {
        name?: string;
        port?: number;
        dependencies?: string[];
        timeout?: number;
        healthEndpoint?: string;
        startCommand?: string;
        workingDirectory?: string;
        restartPolicy?: {
            delay?: number;
            enabled?: boolean;
            maxAttempts?: number;
            backoffMultiplier?: number;
            maxDelay?: number;
        };
        healthCheckInterval?: number;
        gracefulShutdownTimeout?: number;
        env?: Record<string, string>;
    }>, "many">>;
}, "strip", z.ZodTypeAny, {
    healthCheckInterval?: number;
    environment?: "production" | "development" | "staging" | "test";
    logLevel?: "error" | "warn" | "info" | "debug" | "trace";
    maxConcurrentServices?: number;
    globalTimeout?: number;
    enableMetrics?: boolean;
    enableAutoRestart?: boolean;
    services?: {
        name?: string;
        port?: number;
        dependencies?: string[];
        timeout?: number;
        healthEndpoint?: string;
        startCommand?: string;
        workingDirectory?: string;
        restartPolicy?: {
            delay?: number;
            enabled?: boolean;
            maxAttempts?: number;
            backoffMultiplier?: number;
            maxDelay?: number;
        };
        healthCheckInterval?: number;
        gracefulShutdownTimeout?: number;
        env?: Record<string, string>;
    }[];
}, {
    healthCheckInterval?: number;
    environment?: "production" | "development" | "staging" | "test";
    logLevel?: "error" | "warn" | "info" | "debug" | "trace";
    maxConcurrentServices?: number;
    globalTimeout?: number;
    enableMetrics?: boolean;
    enableAutoRestart?: boolean;
    services?: {
        name?: string;
        port?: number;
        dependencies?: string[];
        timeout?: number;
        healthEndpoint?: string;
        startCommand?: string;
        workingDirectory?: string;
        restartPolicy?: {
            delay?: number;
            enabled?: boolean;
            maxAttempts?: number;
            backoffMultiplier?: number;
            maxDelay?: number;
        };
        healthCheckInterval?: number;
        gracefulShutdownTimeout?: number;
        env?: Record<string, string>;
    }[];
}>;
/**
 * CLI configuration schema
 */
export declare const CLIConfigSchema: z.ZodObject<{
    interactive: z.ZodDefault<z.ZodBoolean>;
    watch: z.ZodDefault<z.ZodBoolean>;
    verbose: z.ZodDefault<z.ZodBoolean>;
    colors: z.ZodDefault<z.ZodBoolean>;
    updateInterval: z.ZodDefault<z.ZodNumber>;
    maxLogLines: z.ZodDefault<z.ZodNumber>;
    theme: z.ZodDefault<z.ZodEnum<["default", "minimal", "compact"]>>;
}, "strip", z.ZodTypeAny, {
    interactive?: boolean;
    watch?: boolean;
    verbose?: boolean;
    colors?: boolean;
    updateInterval?: number;
    maxLogLines?: number;
    theme?: "default" | "minimal" | "compact";
}, {
    interactive?: boolean;
    watch?: boolean;
    verbose?: boolean;
    colors?: boolean;
    updateInterval?: number;
    maxLogLines?: number;
    theme?: "default" | "minimal" | "compact";
}>;
export type Environment = z.infer<typeof EnvironmentSchema>;
export type ServiceConfigItem = z.infer<typeof ServiceConfigItemSchema>;
export type ManagerConfig = z.infer<typeof ManagerConfigSchema>;
export type CLIConfig = z.infer<typeof CLIConfigSchema>;
export type RestartPolicy = z.infer<typeof RestartPolicySchema>;
/**
 * Default service configurations for ClipWhisperer
 */
export declare const DefaultServiceConfigs: ServiceConfigItem[];
/**
 * Simple configuration manager for service orchestration
 */
export declare class ServiceConfig {
    private managerConfig;
    constructor(config?: Partial<ManagerConfig>);
    getEnvironment(): Environment;
    getServices(): ServiceConfigItem[];
    getService(serviceName: string): ServiceConfigItem | undefined;
    getManagerConfig(): ManagerConfig;
    isDevelopment(): boolean;
    isProduction(): boolean;
    isTest(): boolean;
    addService(service: ServiceConfigItem): void;
    removeService(serviceName: string): boolean;
    validateDependencies(): {
        valid: boolean;
        errors: string[];
    };
}
