import type { ProactiveSignalPublisher } from '../proactive/events/publisher.js'; import { ProjectStore } from './project-store.js'; import type { CreateProjectInput, Project, ProjectHealth, ProjectListQuery, ProjectListResult, ProjectMilestone, ProjectUpdate, ProjectWithDetails, SidebarProjectListQuery, UpdateProjectInput } from './types.js'; import { type WorkspaceProjectMatch } from './workspace-project.js'; export type ProjectSuggestion = { projectId: string; projectName: string; score: number; reason: string; }; export declare class ProjectService { private readonly store; private readonly signals?; constructor(store?: ProjectStore, signals?: ProactiveSignalPublisher); private listAllProjects; create(input: CreateProjectInput): Project; get(id: string): Project | null; getBySlug(slug: string): Project | null; list(query?: ProjectListQuery): ProjectListResult; listWithSidebarSessions(query?: SidebarProjectListQuery): ProjectListResult; findByWorkspaceRoot(workspaceRoot: string, options?: { excludeProjectId?: string; }): Project | null; resolveForWorkspacePath(workspacePath: string): { project: Project; reason: 'exact' | 'contained'; } | null; resolveOrCreateForWorkspacePath(input: { workspacePath: string; agentId?: string; defaultAgentId?: string; autoCreate?: boolean; }): WorkspaceProjectMatch | null; update(id: string, input: UpdateProjectInput): Project; pin(id: string): Project; unpin(id: string): Project; delete(id: string): void; getWithDetails(id: string): ProjectWithDetails | null; listMilestones(projectId: string): ProjectMilestone[]; createMilestone(projectId: string, input: Parameters[1]): ProjectMilestone; updateMilestone(projectId: string, milestoneId: string, input: Parameters[2]): ProjectMilestone; deleteMilestone(projectId: string, milestoneId: string): boolean; listUpdates(projectId: string, limit?: number): ProjectUpdate[]; createUpdate(projectId: string, input: { health: ProjectHealth; summary: string; progress?: string[]; risks?: string[]; nextSteps?: string[]; actor: Record; }): ProjectUpdate; attachSession(sessionKey: string, projectId: string): void; detachSession(sessionKey: string): void; listSessionKeys(projectId: string, limit?: number, offset?: number): string[]; suggestProjectsForSession(sessionKey: string): ProjectSuggestion[]; }