import type { Logger } from "pino";
export type ListenTarget = {
    type: "tcp";
    host: string;
    port: number;
} | {
    type: "socket";
    path: string;
} | {
    type: "pipe";
    path: string;
};
export declare function parseListenString(listen: string): ListenTarget;
import type { OpenAiSpeechProviderConfig } from "./speech/providers/openai/config.js";
import type { LocalSpeechProviderConfig } from "./speech/providers/local/config.js";
import type { RequestedSpeechProviders } from "./speech/speech-types.js";
import { AgentManager } from "./agent/agent-manager.js";
import { AgentStorage } from "./agent/agent-storage.js";
import type { TerminalManager } from "../terminal/terminal-manager.js";
import type { PushNotificationSender } from "./push/notifications.js";
import type { AgentClient, AgentProvider } from "./agent/agent-sdk-types.js";
import type { AgentProviderRuntimeSettingsMap, ProviderOverride } from "./agent/provider-launch-config.js";
import type { PersistedConfig } from "./persisted-config.js";
import { type ServiceProxySubsystem } from "./service-proxy.js";
import { WorkspaceScriptRuntimeStore } from "./workspace-script-runtime-store.js";
import { type HostnamesConfig } from "./hostnames.js";
import { type DaemonAuthConfig } from "./auth.js";
export type PaseoOpenAIConfig = OpenAiSpeechProviderConfig;
export type PaseoLocalSpeechConfig = LocalSpeechProviderConfig;
export interface PaseoSpeechSttLanguages {
    dictation: string;
    voice: string;
}
export interface PaseoSpeechConfig {
    providers: RequestedSpeechProviders;
    sttLanguages?: PaseoSpeechSttLanguages;
    local?: PaseoLocalSpeechConfig;
}
export type DaemonLifecycleIntent = {
    type: "shutdown";
    clientId: string;
    requestId: string;
} | {
    type: "restart";
    clientId: string;
    requestId: string;
    reason?: string;
};
export interface PaseoDaemonConfig {
    listen: string;
    paseoHome: string;
    worktreesRoot?: string;
    corsAllowedOrigins: string[];
    allowedHosts?: HostnamesConfig;
    hostnames?: HostnamesConfig;
    mcpEnabled?: boolean;
    mcpInjectIntoAgents?: boolean;
    autoArchiveAfterMerge?: boolean;
    appendSystemPrompt?: string;
    staticDir: string;
    webAppDir?: string;
    mcpDebug: boolean;
    isDev?: boolean;
    agentClients: Partial<Record<AgentProvider, AgentClient>>;
    agentStoragePath: string;
    relayEnabled?: boolean;
    relayEndpoint?: string;
    relayPublicEndpoint?: string;
    relayUseTls?: boolean;
    relayPublicUseTls?: boolean;
    serviceProxy?: {
        publicBaseUrl: string | null;
        standaloneListen: string | null;
    };
    appBaseUrl?: string;
    auth?: DaemonAuthConfig;
    openai?: PaseoOpenAIConfig;
    speech?: PaseoSpeechConfig;
    voiceLlmProvider?: AgentProvider | null;
    voiceLlmProviderExplicit?: boolean;
    voiceLlmModel?: string | null;
    dictationFinalTimeoutMs?: number;
    downloadTokenTtlMs?: number;
    agentProviderSettings?: AgentProviderRuntimeSettingsMap;
    metadataGeneration?: {
        providers?: Array<{
            provider: string;
            model?: string;
            thinkingOptionId?: string;
        }>;
    };
    providerOverrides?: Record<string, ProviderOverride>;
    log?: PersistedConfig["log"];
    onLifecycleIntent?: (intent: DaemonLifecycleIntent) => void;
    pushNotificationSender?: PushNotificationSender;
}
export interface PaseoDaemon {
    config: PaseoDaemonConfig;
    agentManager: AgentManager;
    agentStorage: AgentStorage;
    terminalManager: TerminalManager;
    serviceProxy: ServiceProxySubsystem;
    scriptRuntimeStore: WorkspaceScriptRuntimeStore;
    start(): Promise<void>;
    stop(): Promise<void>;
    getListenTarget(): ListenTarget | null;
}
export declare function createPaseoDaemon(config: PaseoDaemonConfig, rootLogger: Logger): Promise<PaseoDaemon>;
//# sourceMappingURL=bootstrap.d.ts.map