import type { CodeEdge, CodeNode } from '../types.js';
import type { LiveEntity, LiveEntityIndex } from './resolve.js';
export type EntityEdgeEndpoint = {
    status: 'unresolved';
} | {
    status: 'ignored';
    nodeId: string;
} | {
    status: 'unreachable';
    nodeId?: string;
} | {
    status: 'reachable';
    nodeId: string;
    entity: LiveEntity;
};
/**
 * Classify the opposite endpoint of one entity-graph edge.
 *
 * This is the single endpoint-accounting rule behind impact's W1.4
 * `unreachableEdges` count and context's reference-closure verdict. A resolved
 * edge is reachable only when both the code-node map and the live-entity join
 * contain its opposite endpoint; neither consumer gets to weaken that rule.
 */
export declare function classifyEntityEdgeEndpoint(edge: CodeEdge, direction: 'out' | 'in', nodes: ReadonlyMap<string, CodeNode>, live: Pick<LiveEntityIndex, 'byNodeId'>, ignoreNodeId?: string): EntityEdgeEndpoint;
