import type { DocumentationType, NoteTag, RiskLevel, Difficulty, SpecStatus } from './common/index.js';
import type { SpecDiagram } from './spec/index.js';
import type { Spec } from './spec/core.js';
import type { RiskRegister } from './risk.js';
import type { Decision } from './decisions.js';
import type { ProjectKnowledge } from './project/core.js';
import type { MetricsHistory } from './project/config-metrics.js';
import type { ScorecardItem, ProposalMermaidDiagram, VerdictData, ProposalPhase } from './proposal.js';
/** Metadata about a context note used for doc-health analysis. */
export interface NoteInfo {
    key: string;
    specId?: string;
    tags?: NoteTag[];
    createdAt: string;
}
/** Metadata about a spec used for doc-health analysis. */
export interface SpecInfo {
    id: string;
    status: string;
    updatedAt?: string;
}
export interface GeneratedDocument {
    type: DocumentationType;
    title: string;
    path: string;
    content: string;
    audience: string;
    sections: DocSection[];
    diagrams: SpecDiagram[];
    relatedSpecs: string[];
}
export interface DocSection {
    title: string;
    level: number;
    content: string;
    screenshots?: string[];
}
export interface GenerateDocsResult {
    documents: GeneratedDocument[];
    message: string;
}
export interface GenerateDocsInput {
    projectId: string;
    specId?: string;
    types: DocumentationType[];
    /** Single documentation type for routing — shorthand for types: [docType] */
    docType?: DocumentationType;
    audience?: 'end-user' | 'developer' | 'stakeholder' | 'ops';
    format?: 'markdown' | 'html' | 'pdf-ready';
    language?: string;
}
/** All supported documentation types (alias for DocumentationType). */
export type DocType = DocumentationType;
/** Target audience for a generated document. */
export type DocAudience = 'end-user' | 'developer' | 'devops' | 'team-lead' | 'new-member';
/** Template metadata describing the structure and tone for a documentation type. */
export interface DocTemplate {
    docType: DocumentationType;
    audience: DocAudience;
    sections: string[];
    tone: 'technical' | 'non-technical' | 'operational' | 'collaborative';
    mermaidSupported: boolean;
}
export interface ExecutiveSummarySpecEntry {
    id: string;
    title: string;
    status: SpecStatus;
    difficulty: Difficulty;
    risk: RiskLevel;
    devHours: number;
    reviewHours: number;
    totalCostUsd: number;
    tags: string[];
    actualDevHours?: number;
    actualTotalCostUsd?: number;
    completedAt?: string;
}
export interface AggregatedEstimation {
    totalDevHours: number;
    totalReviewHours: number;
    totalHumanCostUsd: number;
    totalApiCostUsd: number;
    totalCostUsd: number;
    specCount: number;
}
export interface RiskProfile {
    low: number;
    medium: number;
    high: number;
    critical: number;
    highlights: string[];
}
export interface ArchitectureSnapshot {
    language: string;
    framework: string;
    database: string;
    layers: string[];
}
export interface ExecutiveSummaryData {
    projectName: string;
    generatedAt: string;
    architecture: ArchitectureSnapshot;
    specs: ExecutiveSummarySpecEntry[];
    estimation: AggregatedEstimation;
    riskProfile: RiskProfile;
}
/** An embedded Mermaid diagram within a generated document. */
export interface MermaidDiagram {
    type: 'flowchart' | 'sequence' | 'er' | 'class' | 'state' | 'graph';
    content: string;
    title: string;
}
export type PerSpecReportType = 'per-spec-executive' | 'per-spec-technical';
export interface PerSpecImpactAnalysis {
    affectedModules: string[];
    affectedFiles: string[];
    breakingChanges: boolean;
    rollbackPlan: string;
}
export interface PerSpecActuals {
    devHours: number;
    reviewHours: number;
    totalCostUsd: number;
    completedAt: string;
    notes: string;
}
export interface PerSpecLivingSpec {
    completionPercent: number;
    driftDetected: boolean;
    changedFileCount: number;
}
export interface PerSpecAcceptanceCriterion {
    criterion: string;
    status: 'met' | 'pending' | 'drift';
}
export interface PerSpecRiskDimension {
    dimension: string;
    level: string;
    detail: string;
}
export interface PerSpecReportData {
    specId: string;
    title: string;
    status: string;
    difficulty: string;
    risk: string;
    devHours: number;
    reviewHours: number;
    totalCostUsd: number;
    tags: string[];
    dependencies: string[];
    blockedBy: string[];
    scope: string;
    target: string;
    gitBranch: string;
    diagrams: SpecDiagram[];
    affectedFiles: string[];
    architecturalDecisions: string[];
    generatedAt: string;
    impactAnalysis?: PerSpecImpactAnalysis;
    actuals?: PerSpecActuals;
    livingSpec?: PerSpecLivingSpec;
    acceptanceCriteria?: PerSpecAcceptanceCriterion[];
    riskBreakdown?: PerSpecRiskDimension[];
    estimationReasoning?: string;
    similarSpecs?: string[];
}
export interface ProgressSection {
    title: string;
    content: string;
}
export interface NavItem {
    path: string;
    title: string;
    icon?: string;
}
export interface GenerateDocsSiteInput {
    projectPath: string;
    title?: string;
}
export interface DocsSiteConfig {
    projectPath: string;
    outputDir: string;
    title?: string;
}
export interface DocSpecSummary {
    id: string;
    title: string;
    slug: string;
    status: string;
    category: string;
    type: string;
    criteriaTotal: number;
    criteriaDone: number;
    tags: string[];
    specPath: string;
}
export interface ToolEntry {
    name: string;
    description: string;
    phase: string;
    tier: 'free' | 'pro';
}
export interface ProjectMetrics {
    totalSpecs: number;
    specsByStatus: Record<string, number>;
    totalTools: number;
    toolsByPhase: Record<string, number>;
    locByLayer: Record<string, number>;
    testCount: number;
}
export interface SitePage {
    path: string;
    title: string;
    html: string;
}
export interface DocsSiteResult {
    pagesGenerated: number;
    outputDir: string;
    pages: string[];
}
export interface ProposalConfig {
    title?: string;
    subtitle?: string;
    client?: string;
    author?: string;
    logo?: string;
    currency?: string;
    hourlyRate?: number;
    phases?: ProposalPhase[];
    includeSections?: string[];
    excludeSections?: string[];
    theme?: 'dark' | 'light' | 'corporate' | 'startup';
    language?: 'en' | 'es' | 'pt';
    outputPath?: string;
    confidential?: boolean;
    expiresAt?: string;
    ganttStartDate?: string;
    paymentTerms?: string;
}
export interface ProposalData {
    config: ProposalConfig;
    projectName: string;
    projectPath: string;
    specs: Spec[];
    risks?: RiskRegister[];
    decisions?: Decision[];
    knowledge?: ProjectKnowledge;
    metrics?: MetricsHistory;
    scorecard?: ScorecardItem[];
    mermaidDiagrams?: ProposalMermaidDiagram[];
    verdict?: VerdictData;
}
/** Internal: npm registry package metadata shape. */
export interface NpmPackageMetadata {
    homepage?: string;
    docs?: string;
    repository?: {
        url?: string;
    } | string;
}
/** Internal: PyPI package info shape. */
export interface PypiPackageInfo {
    project_urls?: Record<string, string | undefined>;
    home_page?: string;
}
/** Internal: PyPI API response wrapper. */
export interface PypiApiResponse {
    info?: PypiPackageInfo;
}
/** Internal: crates.io API response shape. */
export interface CratesApiResponse {
    crate?: {
        documentation?: string;
        homepage?: string;
    };
}
/** A docs URL discovered from package registry metadata (npm/pypi/crates.io). */
export interface DiscoveredDocsEntry {
    tech: string;
    docsUrl: string;
    source: 'npm' | 'pypi' | 'crates' | 'pub' | 'heuristic';
    discoveredAt: string;
    verified: boolean;
}
/** Result of a batch health check on all docs-registry entries. */
export interface DocsRegistryHealth {
    healthy: string[];
    broken: string[];
    slow: string[];
}
/** Input for validate_docs_registry tool. */
export interface ValidateDocsRegistryInput {
    projectPath: string;
}
/** Input for discover_docs_url tool. */
export interface DiscoverDocsUrlInput {
    tech: string;
}
/** A single issue found during doc compliance check. */
export interface DocComplianceIssue {
    tech: string;
    issueType: 'anti-pattern' | 'missing-best-practice' | 'outdated-approach';
    description: string;
    source: string;
    severity: 'high' | 'medium' | 'low';
}
/** Result of a doc compliance check on a spec. */
export interface DocComplianceReport {
    specId: string;
    specTitle: string;
    checkedAt: string;
    techs: string[];
    issues: DocComplianceIssue[];
    bestPracticesCovered: string[];
    complianceScore: number;
    summary: string;
}
/** Input for the doc_compliance_report tool. */
export interface DocComplianceInput {
    projectPath: string;
    specId: string;
}
export type EnterpriseComplianceFramework = 'soc2-type2' | 'gdpr' | 'hipaa' | 'iso27001' | 'pci-dss';
export interface ControlCoverage {
    controlId: string;
    controlName: string;
    status: 'passing' | 'partial' | 'missing';
    coveringSpecIds: string[];
    requiredCriteria: string[];
}
export interface ComplianceGapResult {
    framework: EnterpriseComplianceFramework;
    score: number;
    totalControls: number;
    passing: number;
    partial: number;
    missing: number;
    coverage: ControlCoverage[];
    recommendations: string[];
}
export interface ComplianceEvidencePackage {
    framework: EnterpriseComplianceFramework;
    projectId: string;
    generatedAt: string;
    summary: {
        totalSpecs: number;
        doneSpecs: number;
        approvalEvents: number;
        complianceScore: number;
    };
    controlMatrix: {
        controlId: string;
        controlName: string;
        status: string;
        specIds: string[];
        evidence: string;
    }[];
    changeManagementEvidence: {
        timestamp: string;
        specId: string;
        actor: string;
        action: string;
    }[];
    gaps: string[];
}
export type { BreadcrumbItem, PageCard, PortalNavItem, PerSpecHtmlOptions } from './portal.js';
export type { GanttRow, ThemeVars, ProposalLang, TranslationKey, KpiItem, ProposalTheme, SectionId, GenerateProposalArgs, ScorecardItem, ProposalMermaidDiagram, VerdictData, } from './proposal.js';
export type ReleaseNotesAudience = 'developer' | 'user' | 'stakeholder';
export type ReleaseNotesFormat = 'markdown' | 'html' | 'plain';
export interface ReleaseNotesConfig {
    defaultAudience: ReleaseNotesAudience;
    defaultFormat: ReleaseNotesFormat;
    includeBreakingChanges: boolean;
    groupByTag: boolean;
    configuredAt: string;
}
export interface ReleaseNotesEntry {
    specId: string;
    title: string;
    summary: string;
    tags: string[];
    priority: string;
    completedAt: string;
    isBreakingChange: boolean;
}
export interface ReleaseNotesResult {
    version?: string;
    dateRange: {
        from: string;
        to: string;
    };
    audience: ReleaseNotesAudience;
    format: ReleaseNotesFormat;
    entries: ReleaseNotesEntry[];
    markdown: string;
    generatedAt: string;
}
export interface GenerateReleaseNotesInput {
    projectPath: string;
    fromDate?: string;
    toDate?: string;
    version?: string;
    audience?: ReleaseNotesAudience;
    format?: ReleaseNotesFormat;
    maxEntries?: number;
}
export interface PreviewReleaseNotesInput {
    projectPath: string;
    fromDate?: string;
    toDate?: string;
    maxEntries?: number;
}
export interface ConfigureReleaseNotesInput {
    projectPath: string;
    defaultAudience?: ReleaseNotesAudience;
    defaultFormat?: ReleaseNotesFormat;
    includeBreakingChanges?: boolean;
    groupByTag?: boolean;
}
//# sourceMappingURL=docs.d.ts.map