/**
 * Reads property index shards lazily with LRU caching.
 *
 * Loads `props_XX.cbor` shards on demand via IndexStoragePort.readBlob.
 *
 * @module domain/services/index/PropertyIndexReader
 */
import type IndexStoragePort from '../../../ports/IndexStoragePort.ts';
import type CodecPort from '../../../ports/CodecPort.ts';
import type IndexStorePort from '../../../ports/IndexStorePort.ts';
import { type PropValue } from '../../types/PropValue.ts';
type IndexedPropertyBag = {
    [key: string]: PropValue;
};
export default class PropertyIndexReader {
    private readonly _storage;
    private readonly _codec;
    private readonly _indexStore;
    private _shardOids;
    private readonly _cache;
    constructor(options?: {
        storage?: IndexStoragePort;
        codec?: CodecPort;
        indexStore?: IndexStorePort;
        maxCachedShards?: number;
    });
    /**
     * Configures OID mappings for lazy loading.
     */
    setup(shardOids: Record<string, string>): void;
    /**
     * Returns all properties for a node, or null if not found.
     */
    getNodeProps(nodeId: string): Promise<IndexedPropertyBag | null>;
    /**
     * Returns a single property value, or undefined.
     */
    getProperty(nodeId: string, key: string): Promise<PropValue | undefined>;
    private _loadShard;
    private _resolveOid;
    private _fetchAndDecode;
    private _parseShard;
}
export {};
