/** * Locality alias remap — when a property is listed under a "parent" * municipality that the agent's free-text doesn't mention. * * Round-3 #75 cohort: * - Lake Lure (NC) listings are often MLS-cataloged under * Rutherfordton. * - Beech Mountain and Sugar Mountain (NC) properties surface under * Banner Elk. * * Hoisted from zillow-mcp's planned `resolver.ts loadLocalityAliases` * (not yet shipped there). Each cohort MCP will adopt this map once * 0.1.x publishes — the migration tracker issue lists each adopter. */ export interface LocalityKey { city: string; state: string; } export interface LocalityLookup { /** Alternate city names the cohort should retry under. */ aliases: string[]; /** Preferred resolution if the alias chain converges. */ resolved: string | null; } export declare class LocalityAliasMap { private readonly index; private constructor(); /** Default map covering the round-3 #75 cohort. */ static withDefaults(): LocalityAliasMap; /** Empty map — useful in tests / when a consumer wants to opt out. */ static empty(): LocalityAliasMap; /** * Load aliases from a JSON file. Shape: * * ```json * { "entries": [ * { "city": "Lake Lure", "state": "NC", "aliases": ["Rutherfordton"], "resolved": "Rutherfordton" } * ] } * ``` */ static fromFile(path: string): LocalityAliasMap; /** * Look up a `{city, state}`. Returns aliases (empty if unknown) and * a `resolved` parent locality when the alias chain converges. */ lookup(key: LocalityKey): LocalityLookup; }