import type { BackendType } from './adapters/backend/types.js';
export declare function getWebExternalHost(): string;
export declare function getDashboardExternalHost(): string;
export declare const config: {
    lark: {
        appId: string;
        appSecret: string;
    };
    session: {
        dataDir: string;
    };
    send: {
        /** @ hard-gate: every model-initiated `botmux send` reply must explicitly
         *  choose --mention / --mention-back / --no-mention. Set
         *  BOTMUX_REQUIRE_MENTION_DECISION=false to disable (kill-switch if the
         *  gate misfires in production). */
        requireMentionDecision: boolean;
    };
    daemon: {
        cliId: import("./adapters/cli/types.js").CliId;
        cliPathOverride: string | undefined;
        backendType: BackendType;
        /** Auto-recovery throttle: on restart every surviving persistent-backend
         *  session is eagerly re-forked to re-attach its pane. With dozens of
         *  sessions per daemon (and many daemons on one box) firing them all at
         *  once spikes CPU/IO, so the re-fork is staggered: spawn `batchSize`
         *  workers, wait `delayMs`, repeat. Tune via BOTMUX_RECOVERY_FORK_BATCH /
         *  BOTMUX_RECOVERY_FORK_DELAY_MS. */
        recoveryForkBatchSize: number;
        recoveryForkDelayMs: number;
        workingDir: string;
        workingDirs: string[];
        allowedUsers: string[];
    };
    web: {
        host: string;
        workerHost: string;
        readonly externalHost: string;
        proxyBasePort: number;
        externalPort: number;
    };
    dashboard: {
        host: string;
        port: number;
        readonly externalHost: string;
        ipcBasePort: number;
        /** Public read-only mode (default ON): GET/HEAD surfaces — sessions,
         *  schedules, SSE — are reachable WITHOUT a token, so a stale dashboard
         *  link degrades to read-only browsing instead of a dead "link expired"
         *  wall. Write actions (POST/PATCH/DELETE) and the raw PTY log always
         *  require the rotated token. Opt out with
         *  BOTMUX_DASHBOARD_PUBLIC_READONLY=false.
         *
         *  NOTE: this env value is only the DEFAULT. Once the toggle is changed on
         *  the dashboard Settings page, `~/.botmux/config.json` holds the value and
         *  permanently takes precedence over this env var（UI 接管后改 env 不再生效；
         *  要回到 env 控制需删掉 config.json 里的 dashboard.publicReadOnly）. */
        publicReadOnly: boolean;
    };
    screenAnalyzer: {
        enabled: boolean;
        baseUrl: string;
        apiKey: string;
        model: string;
        /** Snapshot polling interval in ms */
        intervalMs: number;
        /** Consecutive unchanged snapshots required before calling AI */
        stableCount: number;
        /** Max characters to send from snapshot */
        snapshotMaxChars: number;
        /** Extra headers for the API request (JSON string, e.g. '{"X-Custom":"value"}') */
        extraHeaders: Record<string, string>;
        /** Extra body params for the API request (JSON string, e.g. '{"thinking":{"type":"disabled"}}') */
        extraBody: Record<string, unknown>;
    };
};
export type Config = typeof config;
//# sourceMappingURL=config.d.ts.map