export interface ResolvedLocation { latitude: number; longitude: number; timezone: string | null; displayName: string; placeId: string | null; } /** * Whether the query itself already pins the top hit — "dallas texas", * "san francisco, ca", "paris, france", "london uk" — so rival cities of * the same short name are not actually ambiguous. * * Single source of truth for the ambiguity qualifier: both * `resolveLocationOrThrow` and the `location_search` tool call this. The * two call sites read differently-named fields (raw `region`/`country_code` * vs mapped `region`/`countryCode`), so this takes plain strings. */ export declare function isQualifiedForTopHit(query: string, region: unknown, countryCode: unknown): boolean; /** * Resolve a place name to lat/lon/tz. Throws if ambiguous or unresolvable. * * Ambiguity is detected the same way `location_search` reports it — a * count of *rivals* for the top short_name, unless the query itself * qualifies the place (e.g. "portland uk", "dallas texas", "dallas, tx"). */ export declare function resolveLocationOrThrow(location: string): Promise; /** * Convenience wrapper: fills in missing lat/lon (and optionally timezone) * from `location` when the caller left them unset. Returns the effective * coordinates + a display-safe location string. Coords passed in win — * this only fires when both are unset. If only one of lat/lon is set, * throws (partial input is a user error). */ export declare function coordsFromArgsOrLocation(args: { latitude?: unknown; longitude?: unknown; timezone?: unknown; location?: unknown; }): Promise<{ latitude: number | undefined; longitude: number | undefined; timezone: string | undefined; location: string | undefined; resolvedFromLocation: boolean; }>;