import type { Diagnostic, EdgeTriple, NodeId } from '../graph.js'; export type CompletionDiagnosticCode = 'COMPLETION_NODE_ADDED' | 'COMPLETION_EDGE_RESOLVED' | 'COMPLETION_UNRESOLVED' | 'COMPLETION_NODE_UNKNOWN' | 'COMPLETION_VERSION_UNKNOWN' | 'COMPLETION_PEER_CONTEXT_INCOMPLETE' | 'COMPLETION_NO_CANDIDATE' | 'COMPLETION_OVERRIDE_CONSTRAINT_CONFLICT'; export interface CompletionDiagnostic extends Diagnostic { code: CompletionDiagnosticCode; } export interface RejectedCandidate { version: string; by: string; reason?: string; } export declare function completionNodeAdded(nodeId: NodeId): CompletionDiagnostic; export declare function completionEdgeResolved(triple: EdgeTriple): CompletionDiagnostic; export declare function completionUnresolved(consumer: NodeId, depName: string, depRange: string): CompletionDiagnostic; export declare function completionNodeUnknown(nodeId: NodeId): CompletionDiagnostic; export declare function completionVersionUnknown(nodeId: NodeId): CompletionDiagnostic; export declare function completionPeerContextIncomplete(nodeId: NodeId, peerName: string, peerRange: string): CompletionDiagnostic; export declare function completionNoCandidate(consumer: NodeId, depName: string, range: string, rejected: readonly RejectedCandidate[], extra?: { suggestion?: { consumer: string; version: string; range: string; }; budgetExhausted?: boolean; }): CompletionDiagnostic; export declare function completionOverrideConstraintConflict(consumer: NodeId, depName: string, forced: string, by: string, reason?: string): CompletionDiagnostic;