import type { RuntimeCommandRunResponse, RuntimeWorkspaceStateResponse } from "../core/api-contract.js";
import type { TerminalSessionManager } from "../terminal/session-manager.js";
import type { RuntimeStateHub } from "./runtime-state-hub.js";
import type { WorkspaceRegistry } from "./workspace-registry.js";
interface DisposeTrackedWorkspaceResult {
    terminalManager: TerminalSessionManager | null;
    workspacePath: string | null;
}
export interface CreateRuntimeServerDependencies {
    workspaceRegistry: WorkspaceRegistry;
    runtimeStateHub: RuntimeStateHub;
    warn: (message: string) => void;
    ensureTerminalManagerForWorkspace: (workspaceId: string, repoPath: string) => Promise<TerminalSessionManager>;
    resolveInteractiveShellCommand: () => {
        binary: string;
        args: string[];
    };
    runCommand: (command: string, cwd: string) => Promise<RuntimeCommandRunResponse>;
    resolveProjectInputPath: (inputPath: string, basePath: string) => string;
    assertPathIsDirectory: (targetPath: string) => Promise<void>;
    hasGitRepository: (path: string) => boolean;
    disposeWorkspace: (workspaceId: string, options?: {
        stopTerminalSessions?: boolean;
    }) => DisposeTrackedWorkspaceResult;
    collectProjectWorktreeTaskIdsForRemoval: (board: RuntimeWorkspaceStateResponse["board"]) => Set<string>;
    pickDirectoryPathFromSystemDialog: () => string | null;
}
export interface RuntimeServer {
    url: string;
    close: () => Promise<void>;
}
export declare function createRuntimeServer(deps: CreateRuntimeServerDependencies): Promise<RuntimeServer>;
export {};
//# sourceMappingURL=runtime-server.d.ts.map