import { Task, TaskPriority, TaskStatus, TaskNote, TaskTemplate, CodebaseAnalysisSummary } from '../core/types.js';
import { LLMManager } from '../llm/llmManager.js';
import { ContextManager } from '../core/contextManager.js';
export declare class TaskManager {
    private tasks;
    private tasksFilePath;
    private workspaceRoot;
    private llmManager;
    private contextManager;
    private config;
    private initialized;
    constructor(llmManager: LLMManager, contextManager: ContextManager, tasksFilePath?: string);
    private getEnvInt;
    private getEnvPriority;
    initialize(projectName: string, projectDescription: string, filePath: string): Promise<void>;
    private createDefaultTasksTemplate;
    private createEnhancedInitialTasksWithLLM;
    private parseTasksFromLLMInit;
    private stringToPriority;
    createTask(title: string, description: string, userInput?: string, parentId?: string): Promise<string>;
    private mapTaskPriorityToContextPriority;
    createSubtask(parentId: string, title: string, description: string, userInput?: string): Promise<string | undefined>;
    getSubtasks(taskId: string): Task[];
    getSubtaskHierarchy(taskId: string): any;
    areAllSubtasksComplete(taskId: string): boolean;
    calculateTaskProgress(taskId: string): number;
    updateParentTaskStatus(taskId: string): void;
    private enhanceTaskWithLLM;
    private setDefaultTaskMetadata;
    getTask(id: string): Task | undefined;
    updateTask(id: string, updates: Partial<Omit<Task, "id" | "createdAt" | "updatedAt">>): Task | undefined;
    addTaskNote(taskId: string, content: string, author: string, type: "progress" | "comment" | "blocker" | "solution"): TaskNote | undefined;
    deleteTask(id: string): boolean;
    getTasks(options?: {
        status?: TaskStatus | TaskStatus[];
        priority?: TaskPriority | TaskPriority[];
        tags?: string[];
        sortBy?: "priority" | "dueDate" | "createdAt" | "updatedAt" | "complexity";
        sortDirection?: "asc" | "desc";
    }): Task[];
    getNextTask(): Task | undefined;
    getTasksNeedingAttention(): Task[];
    private sortTasksByPriority;
    private extractJsonFromText;
    parsePRD(content: string): Promise<string[]>;
    loadTasks(): void;
    saveTasks(): void;
    private tasksToMarkdown;
    exportTasksToMarkdown(): string;
    private parseMdToTasks;
    private determineStatusFromMarkdown;
    private getPriorityEmoji;
    getTasksFilePath(): string;
    getTaskCount(): number;
    getWorkspaceRoot(): string;
    reloadTasks(): boolean;
    getStructuredCodebaseAnalysis(projectName?: string, projectDescription?: string): Promise<CodebaseAnalysisSummary | null>;
    private determineProjectType;
    private identifyKeyEntryPoints;
    analyzeCodebase(): Promise<string>;
    private performDetailedFileAnalyses;
    private extractSymbolsFromFile;
    private _buildDependencyGraph;
    private _getCodebaseContextString;
    private extractFunctionSignature;
    private getNodeComment;
    private getTaskTemplatesDir;
    listTaskTemplates(): Promise<string[]>;
    getTaskTemplate(templateName: string): Promise<TaskTemplate | undefined>;
    private _applyTemplateVariables;
    private createTaskFromTemplateDefinition;
    createTaskFromTemplate(templateName: string, variables: Record<string, string>, parentId?: string): Promise<string | undefined>;
    generateDiffForChange(filePath: string, changeDescription: string, selection?: {
        startLine: number;
        endLine: number;
    }): Promise<string>;
    isInitialized(): boolean;
    setTasksFilePath(filePath: string): void;
    private normalizePath;
    generateImplementationSteps(taskId: string): Promise<string>;
    expandTask(taskId: string, expansionPrompt?: string): Promise<string>;
    suggestTaskImprovements(taskId: string): Promise<string>;
    mcpInitializeTasks(projectName: string, projectDescription: string, absoluteFilePath: string): Promise<string>;
    mcpCreateTask(title: string, description: string, additionalContext?: string): Promise<string>;
    getTaskDependencyTree(taskId: string): {
        task: Task;
        dependencies: Task[];
    } | undefined;
}
