/**
 * Project Docs Manager
 *
 * Manages project documentation artifacts (architecture.md, requirements.md, design.md)
 * separate from the workflow-specific plan files. Handles creation, validation, and
 * path resolution for project documents. Now supports both template creation and
 * file linking via symlinks.
 */
import { TemplateManager, TemplateOptions } from './template-manager.js';
export interface ProjectDocsInfo {
    architecture: {
        path: string;
        exists: boolean;
    };
    requirements: {
        path: string;
        exists: boolean;
    };
    design: {
        path: string;
        exists: boolean;
    };
}
export interface CreateOrLinkResult {
    created: string[];
    linked: string[];
    skipped: string[];
}
export declare class ProjectDocsManager {
    templateManager: TemplateManager;
    constructor();
    /**
     * Get project docs directory path
     */
    getDocsPath(projectPath: string): string;
    /**
     * Determine the appropriate extension for a document based on source path
     */
    private getDocumentExtension;
    /**
     * Get the target filename for a document type
     */
    private getDocumentFilename;
    /**
     * Get paths for all project documents
     */
    getDocumentPaths(projectPath: string): {
        architecture: string;
        requirements: string;
        design: string;
    };
    /**
     * Get paths for all project documents with dynamic extensions based on source paths
     */
    getDocumentPathsWithExtensions(projectPath: string, sourcePaths?: Partial<{
        architecture: string;
        requirements: string;
        design: string;
    }>): Promise<{
        architecture: string;
        requirements: string;
        design: string;
    }>;
    /**
     * Check which project documents exist
     */
    getProjectDocsInfo(projectPath: string): Promise<ProjectDocsInfo>;
    /**
     * Create project documents using templates (legacy method for backward compatibility)
     */
    createProjectDocs(projectPath: string, options?: TemplateOptions): Promise<{
        created: string[];
        skipped: string[];
    }>;
    /**
     * Create or link project documents using templates and/or file paths
     */
    createOrLinkProjectDocs(projectPath: string, templateOptions?: Partial<TemplateOptions>, filePaths?: Partial<{
        architecture: string;
        requirements: string;
        design: string;
    }>): Promise<CreateOrLinkResult>;
    /**
     * Create a symlink to an existing file
     */
    createSymlink(sourcePath: string, targetPath: string): Promise<void>;
    /**
     * Remove existing document or symlink
     */
    private removeExistingDocument;
    /**
     * Create a single document from template
     */
    private createDocument;
    /**
     * Get variable substitutions for workflow instructions
     */
    getVariableSubstitutions(projectPath: string, gitBranch?: string): Record<string, string>;
    /**
     * Get variable substitutions for workflow instructions with dynamic paths
     */
    getVariableSubstitutionsWithExtensions(projectPath: string, sourcePaths?: Partial<{
        architecture: string;
        requirements: string;
        design: string;
    }>): Promise<Record<string, string>>;
    /**
     * Read a project document - returns the path for LLM to read as needed
     */
    readDocument(projectPath: string, type: 'architecture' | 'requirements' | 'design'): Promise<string>;
    /**
     * Check if all project documents exist
     */
    allDocumentsExist(projectPath: string): Promise<boolean>;
    /**
     * Check if a document is a symlink
     */
    isSymlink(projectPath: string, type: 'architecture' | 'requirements' | 'design'): Promise<boolean>;
}
