/**
 * Graph type definitions — single source of truth.
 *
 * Both codragraph (CLI) and codragraph-web import from this package.
 * Do NOT add Node.js-specific or browser-specific imports here.
 */
import { SupportedLanguages } from '../languages.js';
export type NodeLabel = 'Project' | 'Package' | 'Module' | 'Folder' | 'File' | 'Class' | 'Function' | 'Method' | 'Variable' | 'Interface' | 'Enum' | 'Decorator' | 'Import' | 'Type' | 'CodeElement' | 'Community' | 'Process' | 'FeatureCluster' | 'Struct' | 'Macro' | 'Typedef' | 'Union' | 'Namespace' | 'Trait' | 'Impl' | 'TypeAlias' | 'Const' | 'Static' | 'Property' | 'Record' | 'Delegate' | 'Annotation' | 'Constructor' | 'Template' | 'Section' | 'Route' | 'Tool';
export type NodeProperties = {
    name: string;
    filePath: string;
    startLine?: number;
    endLine?: number;
    language?: SupportedLanguages | string;
    isExported?: boolean;
    astFrameworkMultiplier?: number;
    astFrameworkReason?: string;
    heuristicLabel?: string;
    cohesion?: number;
    symbolCount?: number;
    keywords?: string[];
    description?: string;
    enrichedBy?: 'heuristic' | 'llm';
    processType?: 'intra_community' | 'cross_community';
    stepCount?: number;
    communities?: string[];
    entryPointId?: string;
    terminalId?: string;
    entryPointScore?: number;
    entryPointReason?: string;
    parameterCount?: number;
    level?: number;
    returnType?: string;
    declaredType?: string;
    visibility?: string;
    isStatic?: boolean;
    isReadonly?: boolean;
    isAbstract?: boolean;
    isFinal?: boolean;
    isVirtual?: boolean;
    isOverride?: boolean;
    isAsync?: boolean;
    isPartial?: boolean;
    annotations?: string[];
    responseKeys?: string[];
    errorKeys?: string[];
    middleware?: string[];
    slug?: string;
    featureKind?: string;
    summary?: string;
    repo?: string;
    service?: string;
    signals?: string[];
    memberCount?: number;
    entryPointIds?: string[];
    routes?: string[];
    tools?: string[];
    testCoverageHints?: string[];
    lastIndexedCommit?: string;
    confidence?: number;
    source?: string;
    [key: string]: unknown;
};
export type RelationshipType = 'CONTAINS' | 'CALLS' | 'INHERITS' | 'METHOD_OVERRIDES' | 'METHOD_IMPLEMENTS' | 'IMPORTS' | 'USES' | 'DEFINES' | 'DECORATES' | 'IMPLEMENTS' | 'EXTENDS' | 'HAS_METHOD' | 'HAS_PROPERTY' | 'ACCESSES' | 'MEMBER_OF' | 'STEP_IN_PROCESS' | 'HANDLES_ROUTE' | 'FETCHES' | 'HANDLES_TOOL' | 'ENTRY_POINT_OF' | 'WRAPS' | 'QUERIES' | 'FEATURE_MEMBER_OF' | 'FEATURE_DEPENDS_ON';
export interface GraphNode {
    id: string;
    label: NodeLabel;
    properties: NodeProperties;
}
export interface GraphRelationship {
    id: string;
    sourceId: string;
    targetId: string;
    type: RelationshipType;
    confidence: number;
    reason: string;
    step?: number;
    /**
     * Per-signal evidence trace for edges emitted by the scope-based
     * resolution pipeline (RFC #909 Ring 2 PKG #925). Populated by
     * `emit-references.ts` when draining `ReferenceIndex` into the graph
     * so downstream query / audit tools can inspect *why* a given edge
     * was emitted with its confidence value.
     *
     * Optional and additive — every existing edge emitter ignores this
     * field, and every existing query continues to work whether or not
     * an edge carries it.
     */
    evidence?: readonly {
        readonly kind: string;
        readonly weight: number;
        readonly note?: string;
    }[];
}
//# sourceMappingURL=types.d.ts.map