import type { RuntimeBoardData, RuntimeProjectSummary, RuntimeProjectTaskCounts } from "../core/api-contract.js";
import type { TerminalSessionManager } from "../terminal/session-manager.js";
import type { RuntimeTrpcContext } from "./app-router.js";
interface DisposeWorkspaceOptions {
    stopTerminalSessions?: boolean;
}
export interface CreateProjectsApiDependencies {
    getActiveWorkspacePath: () => string | null;
    getActiveWorkspaceId: () => string | null;
    rememberWorkspace: (workspaceId: string, repoPath: string) => void;
    setActiveWorkspace: (workspaceId: string, repoPath: string) => Promise<void>;
    clearActiveWorkspace: () => void;
    resolveProjectInputPath: (inputPath: string, cwd: string) => string;
    assertPathIsDirectory: (path: string) => Promise<void>;
    hasGitRepository: (path: string) => boolean;
    summarizeProjectTaskCounts: (workspaceId: string, repoPath: string) => Promise<RuntimeProjectTaskCounts>;
    createProjectSummary: (project: {
        workspaceId: string;
        repoPath: string;
        taskCounts: RuntimeProjectTaskCounts;
    }) => RuntimeProjectSummary;
    broadcastRuntimeProjectsUpdated: (preferredCurrentProjectId: string | null) => Promise<void> | void;
    getTerminalManagerForWorkspace: (workspaceId: string) => TerminalSessionManager | null;
    disposeWorkspace: (workspaceId: string, options?: DisposeWorkspaceOptions) => {
        terminalManager: TerminalSessionManager | null;
        workspacePath: string | null;
    };
    collectProjectWorktreeTaskIdsForRemoval: (board: RuntimeBoardData) => Set<string>;
    warn: (message: string) => void;
    buildProjectsPayload: (preferredCurrentProjectId: string | null) => Promise<{
        currentProjectId: string | null;
        projects: RuntimeProjectSummary[];
    }>;
    pickDirectoryPathFromSystemDialog: () => string | null;
}
export declare function createProjectsApi(deps: CreateProjectsApiDependencies): RuntimeTrpcContext["projectsApi"];
export {};
//# sourceMappingURL=projects-api.d.ts.map