export type ProjectGraphNodeType = string;
export type ProjectGraphEdgeType = string;
export type ProjectGraphConfidence = 'high' | 'medium' | 'low';
export type ProjectGraphEdgeClassification = 'extracted' | 'inferred' | 'ambiguous';
export interface ProjectGraphPolicy {
    version: 1;
    graphVersion: string;
    enabled: boolean;
    artifactPaths: {
        directory: string;
        graph: string;
        sourceHashes: string;
    };
    nodeTypes: string[];
    edgeTypes: string[];
    classifications: ProjectGraphEdgeClassification[];
    confidenceLabels: ProjectGraphConfidence[];
    freshness: {
        staleAfterMinutes: number;
    };
    query: {
        maxNodes: number;
        maxEdges: number;
        maxListItems: number;
    };
    redaction: {
        maxSnippetChars: number;
        redactPatterns: string[];
    };
    toolNamePatterns: string[];
}
export interface ProjectGraphEvidencePointer {
    path: string;
    selector?: string;
    hash?: string;
}
export interface ProjectGraphNode {
    id: string;
    type: ProjectGraphNodeType;
    label: string;
    source: string;
    evidence: ProjectGraphEvidencePointer[];
    metadata?: Record<string, string | number | boolean | string[] | null>;
    updatedAt: string;
}
export interface ProjectGraphEdge {
    id: string;
    from: string;
    to: string;
    type: ProjectGraphEdgeType;
    source: string;
    confidence: ProjectGraphConfidence;
    evidence: ProjectGraphEvidencePointer;
    classification: ProjectGraphEdgeClassification;
    updatedAt: string;
}
export interface ProjectKnowledgeGraph {
    version: 1;
    graphVersion: string;
    projectId: string;
    projectPath?: string;
    generatedAt: string;
    sourceHash: string;
    sourceHashes: Record<string, string>;
    metadata: {
        nodeCount: number;
        edgeCount: number;
        sourceCount: number;
        reprocessedSourceCount: number;
        skippedSourceCount: number;
    };
    nodes: ProjectGraphNode[];
    edges: ProjectGraphEdge[];
}
export interface ProjectGraphSource {
    id: string;
    kind: string;
    path: string;
    content: string;
    hash: string;
}
export interface ProjectGraphExtractionResult {
    nodes: ProjectGraphNode[];
    edges: ProjectGraphEdge[];
}
export interface ProjectGraphBuildResult {
    graph: ProjectKnowledgeGraph;
    graphPath: string;
    cachePath: string;
    reprocessedSources: string[];
    skippedSources: string[];
    usedCache: boolean;
}
export interface ProjectGraphFreshness {
    exists: boolean;
    stale: boolean;
    reason: 'missing' | 'fresh' | 'expired' | 'source_changed' | 'corrupt';
    graphPath: string;
    generatedAt?: string;
    changedSources: string[];
}
export interface ProjectGraphSlice {
    graphVersion: string;
    generatedAt: string;
    freshness: ProjectGraphFreshness;
    nodes: ProjectGraphNode[];
    edges: ProjectGraphEdge[];
    summary: {
        specs: number;
        criteria: number;
        files: number;
        tests: number;
        decisions: number;
        risks: number;
        tools: number;
        releases: number;
    };
    tokenSavings: {
        compactNodes: number;
        compactEdges: number;
        estimatedRawContextAvoided: number;
    };
}
export interface ProjectGraphQueryInput {
    projectId?: string;
    projectPath: string;
    specId?: string;
    filePath?: string;
    nodeId?: string;
    maxNodes?: number;
    maxEdges?: number;
}
export interface GraphCoverageReport {
    freshness?: ProjectGraphFreshness;
    gaps: string[];
    compactNodes: number;
    compactEdges: number;
}
//# sourceMappingURL=project-knowledge-graph.d.ts.map