import type { Direction } from '../../../ports/NeighborProviderPort.ts';
import type ReadIdentity from './ReadIdentity.ts';
export type TraversalOpticStrategy = 'breadth-first';
export type TraversalOpticCompleteness = 'complete' | 'frontier-open' | 'goal-found' | 'goal-not-found-within-boundary';
export type TraversalOpticFrontierEntry = {
    readonly nodeId: string;
    readonly depth: number;
    readonly edgeCursor: string | null;
};
export type TraversalOpticEdge = {
    readonly fromNodeId: string;
    readonly toNodeId: string;
    readonly label: string;
    readonly depth: number;
    readonly expansionDirection: Exclude<Direction, 'both'>;
};
export declare class TraversalOpticCursor {
    readonly frontier: readonly TraversalOpticFrontierEntry[];
    readonly visitedNodeIds: readonly string[];
    constructor(options: {
        readonly frontier: readonly TraversalOpticFrontierEntry[];
        readonly visitedNodeIds: readonly string[];
    });
}
export default class TraversalOpticReadResult {
    readonly startNodeId: string;
    readonly strategy: TraversalOpticStrategy;
    readonly direction: Direction;
    readonly maxDepth: number;
    readonly maxNodes: number;
    readonly maxEdges: number;
    readonly goalNodeId: string | null;
    readonly edges: readonly TraversalOpticEdge[];
    readonly visitedNodeIds: readonly string[];
    readonly frontier: readonly TraversalOpticFrontierEntry[];
    readonly completeness: TraversalOpticCompleteness;
    readonly cursor: TraversalOpticCursor | null;
    readonly readIdentities: readonly ReadIdentity[];
    constructor(options: {
        readonly startNodeId: string;
        readonly strategy: TraversalOpticStrategy;
        readonly direction: Direction;
        readonly maxDepth: number;
        readonly maxNodes: number;
        readonly maxEdges: number;
        readonly goalNodeId: string | null;
        readonly edges: readonly TraversalOpticEdge[];
        readonly visitedNodeIds: readonly string[];
        readonly frontier: readonly TraversalOpticFrontierEntry[];
        readonly completeness: TraversalOpticCompleteness;
        readonly cursor: TraversalOpticCursor | null;
        readonly readIdentities: readonly ReadIdentity[];
    });
}
