export type StoryPoints = 1 | 2 | 3 | 5 | 8 | 13 | 21; export type Confidence = 'high' | 'medium' | 'low'; export type TaskCategory = 'frontend' | 'backend' | 'api' | 'database' | 'devops' | 'testing' | 'documentation' | 'design' | 'other'; export interface TaskEstimate { id: string; title: string; description: string; category: TaskCategory; storyPoints: StoryPoints; estimatedHours: { min: number; max: number; }; confidence: Confidence; dependencies?: string[]; tags?: string[]; } export interface CapacityPlan { id: string; title: string; createdAt: string; tasks: TaskEstimate[]; totals: { storyPoints: number; estimatedHours: { min: number; max: number; }; taskCount: number; }; teamVelocity?: { pointsPerWeek: number; hoursPerPoint: number; confidence: Confidence; }; timeline?: { estimatedWeeks: { min: number; max: number; }; estimatedEndDate?: { min: string; max: string; }; }; } export interface CalibrationData { lastUpdated: string; dataPoints: number; hoursPerStoryPoint: number; categoryMultipliers: Partial>; confidenceLevel: Confidence; optInContribution: boolean; } export interface CompletedTask { taskId: string; category: TaskCategory; estimatedPoints: StoryPoints; actualHours: number; completedAt: string; tags?: string[]; } declare const BASELINE_HOURS: Record; export interface ForecastError { error: string; message: string; hint?: string; } export interface DecomposeInput { projectId?: string; title: string; description: string; context?: string; } export interface DecomposeOutput { planId: string; title: string; tasks: TaskEstimate[]; totals: { storyPoints: number; estimatedHours: { min: number; max: number; }; taskCount: number; }; prompt: string; } /** * Generate a structured decomposition prompt for Claude. * Returns the prompt - actual LLM call happens at tool layer. */ export declare function generateDecomposePrompt(input: DecomposeInput): Promise<{ prompt: string; calibration: CalibrationData | null; } | ForecastError>; /** * Parse the YAML response from Claude into TaskEstimate objects. */ export declare function parseDecomposeResponse(projectId: string | undefined, title: string, yamlResponse: string): Promise; export interface CreatePlanInput { projectId?: string; title: string; tasks: TaskEstimate[]; teamSize?: number; hoursPerWeek?: number; startDate?: string; } export interface CreatePlanOutput { plan: CapacityPlan; savedTo: string; } export declare function createCapacityPlan(input: CreatePlanInput): Promise; export interface RecordCompletedInput { projectId?: string; taskId?: string; category: TaskCategory; estimatedPoints: StoryPoints; actualHours: number; tags?: string[]; } export interface RecordCompletedOutput { recorded: boolean; newCalibration: { dataPoints: number; hoursPerStoryPoint: number; confidence: Confidence; }; } export declare function recordCompletedTask(input: RecordCompletedInput): Promise; export interface GetCalibrationInput { projectId?: string; } export interface GetCalibrationOutput { hasCalibration: boolean; calibration: CalibrationData | null; baseline: typeof BASELINE_HOURS; recommendations: string[]; } export declare function getCalibration(input: GetCalibrationInput): Promise; export declare function isForecastError(result: unknown): result is ForecastError; export {}; //# sourceMappingURL=forecast.d.ts.map