/**
 * Local Project Store — persists project metadata to ~/.qlogicagent/projects.json.
 *
 * This is the Agent-side (runtime authority) project registry.
 * Hub maintains a mirror copy via EventBus → HubSubscriber → hub.persistProject.
 *
 * Direction A: Agent is the source of truth for project state.
 */
import type { ProjectInfo, ProjectType } from "../../protocol/methods.js";
export declare function createProject(params: {
    name: string;
    workspaceDir: string;
    type?: ProjectType;
    groupId?: string;
    skipAutoSwitch?: boolean;
}): ProjectInfo;
export declare function listProjects(): ProjectInfo[];
/**
 * True when another project (active OR archived) still references this workspaceDir. Solo/Product
 * plan projects deliberately share their host project's workspaceDir — the run executes inside the
 * user's real workspace, isolated per-agent via git worktrees — so deleting one plan project must
 * never rmSync the shared directory: that would wipe the host project and every sibling plan. Pass
 * excludeProjectId to ignore a project that's still in the store at check time.
 */
export declare function isWorkspaceDirShared(workspaceDir: string, excludeProjectId?: string): boolean;
export declare function getActiveProject(): ProjectInfo | null;
export declare function getDefaultProject(): ProjectInfo | null;
export declare function getProjectById(projectId: string): ProjectInfo | null;
export declare function updateProject(projectId: string, patch: Partial<Pick<ProjectInfo, "planStatus" | "planAgents" | "planWinnerId" | "leaderSessionId" | "primaryWorkflowId">>): boolean;
export declare function switchProject(projectId: string): ProjectInfo | null;
export declare function deleteProject(projectId: string): {
    deleted: boolean;
    switchedTo?: ProjectInfo;
};
export declare function getOrCreateDefaultProject(defaultWorkspaceDir: string): ProjectInfo;
export declare function renameProject(projectId: string, newName: string): ProjectInfo | null;
export declare function updateProjectWorkspaceDir(projectId: string, newDir: string): boolean;
export declare function archiveProject(projectId: string): {
    archived: boolean;
    switchedTo?: ProjectInfo;
};
export declare function unarchiveProject(projectId: string): ProjectInfo | null;
export declare function findByGroupId(groupId: string): ProjectInfo | null;
export declare function archiveByGroupId(groupId: string): {
    archived: boolean;
    projectId?: string;
    switchedTo?: ProjectInfo;
};
