import { z } from 'zod';
import { ExecutionEngineConfig } from '../core/execution-engine.js';
import type { SSHAdapterOptions, DockerAdapterOptions, KubernetesAdapterOptions } from '../core/command.js';
declare const HostConfigSchema: z.ZodObject<{
    host: z.ZodString;
    username: z.ZodOptional<z.ZodString>;
    password: z.ZodOptional<z.ZodString>;
    privateKey: z.ZodOptional<z.ZodString>;
    privateKeyPath: z.ZodOptional<z.ZodString>;
    port: z.ZodOptional<z.ZodNumber>;
    readyTimeout: z.ZodOptional<z.ZodNumber>;
    keepaliveInterval: z.ZodOptional<z.ZodNumber>;
    env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, z.core.$strip>;
declare const ContainerConfigSchema: z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    image: z.ZodOptional<z.ZodString>;
    container: z.ZodOptional<z.ZodString>;
    env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, z.core.$strip>;
declare const PodConfigSchema: z.ZodObject<{
    name: z.ZodString;
    namespace: z.ZodOptional<z.ZodString>;
    container: z.ZodOptional<z.ZodString>;
    context: z.ZodOptional<z.ZodString>;
    kubeconfig: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
declare const ProfileSchema: z.ZodObject<{
    extends: z.ZodOptional<z.ZodString>;
    defaults: z.ZodOptional<z.ZodObject<{
        timeout: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
        shell: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodBoolean]>>;
        cwd: z.ZodOptional<z.ZodString>;
        env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        encoding: z.ZodOptional<z.ZodString>;
        throwOnNonZeroExit: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strip>>;
    hosts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
        host: z.ZodString;
        username: z.ZodOptional<z.ZodString>;
        password: z.ZodOptional<z.ZodString>;
        privateKey: z.ZodOptional<z.ZodString>;
        privateKeyPath: z.ZodOptional<z.ZodString>;
        port: z.ZodOptional<z.ZodNumber>;
        readyTimeout: z.ZodOptional<z.ZodNumber>;
        keepaliveInterval: z.ZodOptional<z.ZodNumber>;
        env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    }, z.core.$strip>>>;
    containers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
        name: z.ZodOptional<z.ZodString>;
        image: z.ZodOptional<z.ZodString>;
        container: z.ZodOptional<z.ZodString>;
        env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    }, z.core.$strip>>>;
    pods: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
        name: z.ZodString;
        namespace: z.ZodOptional<z.ZodString>;
        container: z.ZodOptional<z.ZodString>;
        context: z.ZodOptional<z.ZodString>;
        kubeconfig: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>>;
}, z.core.$strip>;
declare const UnifiedConfigSchema: z.ZodObject<{
    name: z.ZodOptional<z.ZodString>;
    description: z.ZodOptional<z.ZodString>;
    version: z.ZodOptional<z.ZodString>;
    defaults: z.ZodOptional<z.ZodObject<{
        timeout: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
        shell: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodBoolean]>>;
        cwd: z.ZodOptional<z.ZodString>;
        env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        encoding: z.ZodOptional<z.ZodString>;
        throwOnNonZeroExit: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strip>>;
    hosts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
        host: z.ZodString;
        username: z.ZodOptional<z.ZodString>;
        password: z.ZodOptional<z.ZodString>;
        privateKey: z.ZodOptional<z.ZodString>;
        privateKeyPath: z.ZodOptional<z.ZodString>;
        port: z.ZodOptional<z.ZodNumber>;
        readyTimeout: z.ZodOptional<z.ZodNumber>;
        keepaliveInterval: z.ZodOptional<z.ZodNumber>;
        env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    }, z.core.$strip>>>;
    containers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
        name: z.ZodOptional<z.ZodString>;
        image: z.ZodOptional<z.ZodString>;
        container: z.ZodOptional<z.ZodString>;
        env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    }, z.core.$strip>>>;
    pods: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
        name: z.ZodString;
        namespace: z.ZodOptional<z.ZodString>;
        container: z.ZodOptional<z.ZodString>;
        context: z.ZodOptional<z.ZodString>;
        kubeconfig: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>>;
    aliases: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    profiles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
        extends: z.ZodOptional<z.ZodString>;
        defaults: z.ZodOptional<z.ZodObject<{
            timeout: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>;
            shell: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodBoolean]>>;
            cwd: z.ZodOptional<z.ZodString>;
            env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
            encoding: z.ZodOptional<z.ZodString>;
            throwOnNonZeroExit: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
        hosts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
            host: z.ZodString;
            username: z.ZodOptional<z.ZodString>;
            password: z.ZodOptional<z.ZodString>;
            privateKey: z.ZodOptional<z.ZodString>;
            privateKeyPath: z.ZodOptional<z.ZodString>;
            port: z.ZodOptional<z.ZodNumber>;
            readyTimeout: z.ZodOptional<z.ZodNumber>;
            keepaliveInterval: z.ZodOptional<z.ZodNumber>;
            env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        }, z.core.$strip>>>;
        containers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
            name: z.ZodOptional<z.ZodString>;
            image: z.ZodOptional<z.ZodString>;
            container: z.ZodOptional<z.ZodString>;
            env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        }, z.core.$strip>>>;
        pods: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
            name: z.ZodString;
            namespace: z.ZodOptional<z.ZodString>;
            container: z.ZodOptional<z.ZodString>;
            context: z.ZodOptional<z.ZodString>;
            kubeconfig: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>>;
    }, z.core.$strip>>>;
    plugins: z.ZodOptional<z.ZodArray<z.ZodString>>;
}, z.core.$strip>;
export type UnifiedConfig = z.infer<typeof UnifiedConfigSchema>;
export type HostConfig = z.infer<typeof HostConfigSchema>;
export type ContainerConfig = z.infer<typeof ContainerConfigSchema>;
export type PodConfig = z.infer<typeof PodConfigSchema>;
export type ProfileConfig = z.infer<typeof ProfileSchema>;
export declare class UnifiedConfigLoader {
    private static instance;
    private config;
    private loadedPaths;
    private activeProfile?;
    private readonly searchPaths;
    private constructor();
    static getInstance(): UnifiedConfigLoader;
    load(additionalPaths?: string[]): Promise<UnifiedConfig>;
    save(config: UnifiedConfig, filePath?: string): Promise<void>;
    get(): UnifiedConfig;
    getValue(path: string): any;
    setValue(path: string, value: any): void;
    applyProfile(profileName: string): void;
    getActiveProfile(): string | undefined;
    getHost(name: string): HostConfig | undefined;
    getContainer(name: string): ContainerConfig | undefined;
    getPod(name: string): PodConfig | undefined;
    resolveAlias(alias: string): string | undefined;
    listHosts(): string[];
    listContainers(): string[];
    listPods(): string[];
    listProfiles(): string[];
    toEngineConfig(): ExecutionEngineConfig;
    hostToSSHOptions(name: string): Promise<Partial<SSHAdapterOptions>>;
    containerToDockerOptions(name: string): Partial<DockerAdapterOptions>;
    podToK8sOptions(name: string): Partial<KubernetesAdapterOptions>;
    getLoadedPaths(): string[];
    exists(): Promise<boolean>;
    private readPrivateKey;
    private applyEnvironmentOverrides;
    private mergeConfigs;
    private mergeDefaults;
    private parseTimeout;
}
export declare const unifiedConfig: UnifiedConfigLoader;
export {};
