/** Compact on-disk shape for a postcode entry. Short keys minimise JSON size. */
export interface CompactEntry {
    s: string;
    w: string;
    g: string;
    p: string;
}
export interface Manifest {
    version: string;
    generatedAt: string;
    shardCount: number;
    totalPostcodes: number;
    totalSourceRows?: number;
    shards: string[];
}
/**
 * Lazily loads per-suffix postcode shards from disk and caches them in memory.
 * One instance per validator; safe to share across threads (read-only).
 */
export declare class ShardLoader {
    private readonly dataDir;
    private readonly cache;
    private manifestCache;
    constructor(dataDir?: string);
    /** Returns the map of postcodes for the given two-letter suffix. */
    loadShard(suffix: string): Record<string, CompactEntry>;
    /** Returns the dataset manifest, cached after first read. */
    getManifest(): Manifest | null;
    /** Drops all cached shards. Useful in long-running processes under memory pressure. */
    clearCache(): void;
}
//# sourceMappingURL=shardLoader.d.ts.map