/**
 * NeighborProvider backed by bitmap indexes.
 *
 * Two modes:
 * 1. **Commit DAG** (`indexReader`): Wraps BitmapIndexReader for parent/child
 *    relationships. Edges use label = '' (empty string sentinel).
 * 2. **Logical graph** (`logicalIndex`): Wraps CBOR-based logical bitmap index
 *    with labeled edges, per-label bitmap filtering, and alive bitmap checks.
 *
 * @module domain/services/index/BitmapNeighborProvider
 */
import NeighborProviderPort, { type Direction, type NeighborOptions, type NeighborEdge } from '../../../ports/NeighborProviderPort.ts';
import type BitmapIndexReader from './BitmapIndexReader.ts';
export interface LogicalIndex {
    getGlobalId(nodeId: string): number | undefined;
    isAlive(nodeId: string): boolean;
    getNodeId(globalId: number): string | undefined;
    getEdges(nodeId: string, direction: string, labelIds?: number[]): Array<{
        neighborId: string;
        label: string;
    }>;
    getLabelRegistry(): Map<string, number>;
}
export default class BitmapNeighborProvider extends NeighborProviderPort {
    private readonly _reader;
    private readonly _logical;
    constructor(params?: {
        indexReader?: BitmapIndexReader;
        logicalIndex?: LogicalIndex;
    });
    private _assertReady;
    getNeighbors(nodeId: string, direction: Direction, options?: NeighborOptions): Promise<NeighborEdge[]>;
    hasNode(nodeId: string): Promise<boolean>;
    get latencyClass(): 'async-local';
    private _getDagSingleDirection;
    private _dagLabelsExcluded;
    private _getDagNeighbors;
    private _getDagBothDirections;
    private _resolveLabelIds;
    private _getLogicalNeighbors;
}
