import { KnowledgeStore } from '../store.js'; import type { RuntimeEventBus } from '../../runtime/events/index.js'; import type { ProjectPlanningAnswerInput, ProjectPlanningAnswerResult, ProjectPlanningDecisionRecordInput, ProjectPlanningDecisionResult, ProjectPlanningDecisionsResult, ProjectPlanningEvaluateInput, ProjectPlanningEvaluation, ProjectPlanningLanguageResult, ProjectPlanningLanguageUpsertInput, ProjectPlanningSpaceInput, ProjectPlanningStateResult, ProjectPlanningStateUpsertInput, ProjectPlanningStatus, ProjectWorkPlanClearCompletedInput, ProjectWorkPlanMutationResult, ProjectWorkPlanSnapshot, ProjectWorkPlanTaskCreateInput, ProjectWorkPlanTaskDeleteInput, ProjectWorkPlanTaskGetInput, ProjectWorkPlanTaskListInput, ProjectWorkPlanTaskReorderInput, ProjectWorkPlanTaskResult, ProjectWorkPlanTaskStatusInput, ProjectWorkPlanTaskUpdateInput } from './types.js'; export interface ProjectPlanningServiceOptions { readonly defaultProjectId?: string | undefined; readonly runtimeBus?: RuntimeEventBus | null | undefined; } export declare class ProjectPlanningService { private readonly store; private readonly defaultProjectId; private runtimeBus; constructor(store: KnowledgeStore, options?: ProjectPlanningServiceOptions); attachRuntimeBus(runtimeBus: RuntimeEventBus | null | undefined): void; status(input?: ProjectPlanningSpaceInput): Promise; getState(input?: ProjectPlanningSpaceInput & { readonly planningId?: string | undefined; }): Promise; upsertState(input: ProjectPlanningStateUpsertInput): Promise; evaluate(input?: ProjectPlanningEvaluateInput): Promise; /** * Record a user answer to an open planning question. The target question is * identified by `questionId` (preferred) or a zero-based `questionIndex` into * the current `openQuestions`. On success the question is moved to * `answeredQuestions` with the answer text and `answeredAt`, the state is * persisted, and readiness is re-evaluated (the open-question gap clears). * * Never throws: a missing state, empty answer, missing selector, or unknown * question all return `answered: false` with an honest `reason` and the * current (unmodified) readiness, so a caller can report exactly what * happened rather than guessing. */ answerQuestion(input: ProjectPlanningAnswerInput): Promise; listDecisions(input?: ProjectPlanningSpaceInput): Promise; recordDecision(input: ProjectPlanningDecisionRecordInput): Promise; getLanguage(input?: ProjectPlanningSpaceInput): Promise; upsertLanguage(input: ProjectPlanningLanguageUpsertInput): Promise; getWorkPlanSnapshot(input?: ProjectWorkPlanTaskListInput): Promise; getWorkPlanTask(input: ProjectWorkPlanTaskGetInput): Promise; createWorkPlanTask(input: ProjectWorkPlanTaskCreateInput): Promise; updateWorkPlanTask(input: ProjectWorkPlanTaskUpdateInput): Promise; setWorkPlanTaskStatus(input: ProjectWorkPlanTaskStatusInput): Promise; reorderWorkPlanTasks(input: ProjectWorkPlanTaskReorderInput): Promise; deleteWorkPlanTask(input: ProjectWorkPlanTaskDeleteInput): Promise; clearCompletedWorkPlanTasks(input?: ProjectWorkPlanClearCompletedInput): Promise; private resolveSpace; private sourcesForSpace; private getArtifactSource; private getWorkPlanArtifact; private saveWorkPlanArtifact; private syncPlanningStateTasksToWorkPlan; private upsertArtifactSource; private emitWorkPlanTaskCreated; private emitWorkPlanTaskUpdated; private emitWorkPlanTaskStatusChanged; private emitWorkPlanTaskDeleted; private emitWorkPlanSnapshotInvalidated; } //# sourceMappingURL=service.d.ts.map