import { z } from "zod/v4";
export declare const LlmProtocol: z.ZodEnum<{
    openai: "openai";
    claude: "claude";
}>;
export type LlmProtocol = z.infer<typeof LlmProtocol>;
export declare const BrowserConnectionMode: z.ZodEnum<{
    "remote-debug": "remote-debug";
    "extension-relay": "extension-relay";
}>;
export type BrowserConnectionMode = z.infer<typeof BrowserConnectionMode>;
export declare const ProxyConfig: z.ZodObject<{
    protocol: z.ZodEnum<{
        socks5: "socks5";
        socks4: "socks4";
        http: "http";
        https: "https";
    }>;
    host: z.ZodString;
    port: z.ZodNumber;
    username: z.ZodOptional<z.ZodString>;
    password: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export type ProxyConfig = z.infer<typeof ProxyConfig>;
/** Validate an IANA timezone name via Intl. Returns true for valid zones (e.g. "UTC", "Asia/Shanghai"). */
export declare function isValidTimezone(tz: string): boolean;
/** Build a proxy URL string from structured config */
export declare function proxyConfigToUrl(proxy: ProxyConfig): string;
export declare const DipclawConfig: z.ZodObject<{
    name: z.ZodString;
    workspace: z.ZodString;
    llm: z.ZodObject<{
        protocol: z.ZodEnum<{
            openai: "openai";
            claude: "claude";
        }>;
        baseUrl: z.ZodString;
        apiKey: z.ZodString;
        model: z.ZodString;
        maxTokens: z.ZodOptional<z.ZodNumber>;
        imageGeneration: z.ZodOptional<z.ZodObject<{
            apiKey: z.ZodString;
            model: z.ZodString;
            size: z.ZodDefault<z.ZodString>;
            timeoutMs: z.ZodDefault<z.ZodNumber>;
        }, z.core.$strip>>;
    }, z.core.$strip>;
    telegram: z.ZodOptional<z.ZodObject<{
        botToken: z.ZodString;
        allowedUsers: z.ZodArray<z.ZodNumber>;
    }, z.core.$strip>>;
    maxIterations: z.ZodDefault<z.ZodNumber>;
    debug: z.ZodDefault<z.ZodBoolean>;
    tui: z.ZodDefault<z.ZodBoolean>;
    scheduler: z.ZodOptional<z.ZodObject<{
        timezone: z.ZodOptional<z.ZodString>;
        taskTimeoutMs: z.ZodDefault<z.ZodNumber>;
        chromeMaxRuntimeMs: z.ZodDefault<z.ZodNumber>;
        chromeRestartCheckIntervalMs: z.ZodDefault<z.ZodNumber>;
        chromeRestartMinLeadMs: z.ZodDefault<z.ZodNumber>;
        chromeIdleCloseMs: z.ZodDefault<z.ZodNumber>;
        chromeIdleCloseMinLeadMs: z.ZodDefault<z.ZodNumber>;
        chromeIdleCloseCheckIntervalMs: z.ZodDefault<z.ZodNumber>;
    }, z.core.$strip>>;
    browser: z.ZodDefault<z.ZodObject<{
        connectionMode: z.ZodDefault<z.ZodEnum<{
            "remote-debug": "remote-debug";
            "extension-relay": "extension-relay";
        }>>;
        headless: z.ZodDefault<z.ZodBoolean>;
        backend: z.ZodDefault<z.ZodEnum<{
            chrome: "chrome";
            cloakbrowser: "cloakbrowser";
        }>>;
        fingerprintKey: z.ZodOptional<z.ZodString>;
        allowEvaluateFallbacks: z.ZodDefault<z.ZodBoolean>;
        proxy: z.ZodOptional<z.ZodObject<{
            protocol: z.ZodEnum<{
                socks5: "socks5";
                socks4: "socks4";
                http: "http";
                https: "https";
            }>;
            host: z.ZodString;
            port: z.ZodNumber;
            username: z.ZodOptional<z.ZodString>;
            password: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
        viewport: z.ZodOptional<z.ZodObject<{
            width: z.ZodNumber;
            height: z.ZodNumber;
        }, z.core.$strip>>;
        timezone: z.ZodOptional<z.ZodString>;
        actionDelay: z.ZodOptional<z.ZodObject<{
            min: z.ZodDefault<z.ZodNumber>;
            max: z.ZodDefault<z.ZodNumber>;
        }, z.core.$strip>>;
        relay: z.ZodOptional<z.ZodObject<{
            connectTimeoutMs: z.ZodDefault<z.ZodNumber>;
            autoApprove: z.ZodDefault<z.ZodBoolean>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    org: z.ZodOptional<z.ZodObject<{
        root: z.ZodString;
        department: z.ZodDefault<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
        role: z.ZodDefault<z.ZodEnum<{
            boss: "boss";
            worker: "worker";
        }>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export type DipclawConfig = z.infer<typeof DipclawConfig>;
