import type { WorkspaceGitWatcherService } from './workspace-git-watcher.service.js';
interface CreateProjectInput {
    name: string;
    description?: string;
    repoPath: string;
    mainBranch?: string;
    initEmptyRepo?: boolean;
    copyFiles?: string;
    setupScript?: string;
    quickCommands?: string;
}
interface UpdateProjectInput {
    name?: string;
    description?: string;
    mainBranch?: string;
    copyFiles?: string | null;
    setupScript?: string | null;
    quickCommands?: string | null;
}
interface PaginationParams {
    page?: number;
    limit?: number;
    includeArchived?: boolean;
}
interface PaginatedResult<T> {
    data: T[];
    total: number;
    page: number;
    limit: number;
    totalPages: number;
}
/** 各状态的任务数量统计 */
interface TaskStats {
    total: number;
    todo: number;
    inProgress: number;
    inReview: number;
    done: number;
}
interface ArchiveProjectInput {
    deleteRepo?: boolean;
}
interface RestoreProjectInput {
    repoPath?: string;
}
interface RestoreProjectResult<T> {
    project: T;
    warnings: string[];
}
export declare class ProjectService {
    private readonly workspaceGitWatcher;
    constructor(workspaceGitWatcher?: Pick<WorkspaceGitWatcherService, 'unwatchWorkspace'>);
    /**
     * 获取项目列表（支持分页）
     */
    findAll(params?: PaginationParams): Promise<PaginatedResult<any>>;
    /**
     * 根据 ID 查询项目详情，包含任务统计
     */
    findById(id: string): Promise<{
        taskStats: TaskStats;
        tasks: {
            id: string;
            createdAt: Date;
            status: string;
            description: string | null;
            priority: number;
            updatedAt: Date;
            title: string;
            position: number;
            projectId: string;
            deletedAt: Date | null;
        }[];
        id: string;
        name: string;
        createdAt: Date;
        description: string | null;
        updatedAt: Date;
        repoDeletedAt: Date | null;
        archivedAt: Date | null;
        repoPath: string;
        repoRemoteUrl: string | null;
        mainBranch: string;
        copyFiles: string | null;
        setupScript: string | null;
        quickCommands: string | null;
    }>;
    /**
     * 创建项目
     * - 校验 repoPath 是否存在且为有效的 Git 仓库
     * - 允许对空目录执行 Git 初始化
     */
    create(input: CreateProjectInput): Promise<{
        id: string;
        name: string;
        createdAt: Date;
        description: string | null;
        updatedAt: Date;
        repoDeletedAt: Date | null;
        archivedAt: Date | null;
        repoPath: string;
        repoRemoteUrl: string | null;
        mainBranch: string;
        copyFiles: string | null;
        setupScript: string | null;
        quickCommands: string | null;
    }>;
    /**
     * 更新项目
     */
    update(id: string, input: UpdateProjectInput): Promise<{
        id: string;
        name: string;
        createdAt: Date;
        description: string | null;
        updatedAt: Date;
        repoDeletedAt: Date | null;
        archivedAt: Date | null;
        repoPath: string;
        repoRemoteUrl: string | null;
        mainBranch: string;
        copyFiles: string | null;
        setupScript: string | null;
        quickCommands: string | null;
    }>;
    /**
     * 归档项目（软删除）
     */
    archive(id: string, input?: ArchiveProjectInput): Promise<{
        id: string;
        name: string;
        createdAt: Date;
        description: string | null;
        updatedAt: Date;
        repoDeletedAt: Date | null;
        archivedAt: Date | null;
        repoPath: string;
        repoRemoteUrl: string | null;
        mainBranch: string;
        copyFiles: string | null;
        setupScript: string | null;
        quickCommands: string | null;
    }>;
    restore(id: string, input?: RestoreProjectInput): Promise<RestoreProjectResult<any>>;
    /**
     * 兼容旧的 DELETE 语义：改为归档项目，不再做硬删除。
     */
    delete(id: string): Promise<boolean>;
    private unwatchWorkspaces;
}
export {};
//# sourceMappingURL=project.service.d.ts.map