/** * Стандартизированный справочник стран (ISO 3166-1 alpha-2) с русскими названиями. * Источник: общедоступный справочник. Не зависит от данных в БД vps-tracker. */ interface CountryRef { /** ISO 3166-1 alpha-2 код */ code: string; /** Русское название */ name: string; /** Английское название */ nameEn: string; } declare const COUNTRIES: readonly CountryRef[]; declare const COUNTRY_BY_CODE: Record; declare const COUNTRY_BY_NAME_RU: Record; /** * Стандартизированный справочник городов по странам. * Используется в фильтрах VPS и форме редактирования. * Не зависит от данных в БД vps-tracker — общедоступный статичный справочник. */ interface CityRef { /** ISO 3166-1 alpha-2 код страны */ countryCode: string; /** Русское название города */ name: string; /** Английское название города */ nameEn: string; } /** * Топ-города по странам (включая города с крупными дата-центрами). * Список намеренно ограничен — расширяется по мере необходимости. */ declare const CITIES: readonly CityRef[]; declare const CITY_BY_NAME_RU: Record; /** Найти город в справочнике по русскому названию. */ declare function resolveCityRef(cityName: string): CityRef | undefined; /** Страна из справочника для города (если есть привязка). */ declare function resolveCountryForCity(cityName: string): CountryRef | undefined; interface CityLocationRow { city?: string | null; country?: string | null; } /** Проверить, относится ли город к выбранной стране (справочник или данные VPS). */ declare function cityMatchesCountry(cityName: string, countryName: string, rows?: readonly CityLocationRow[]): boolean; /** Опции городов: из VPS и опционально справочника, опционально по стране. */ declare function buildCityOptions(rows: readonly CityLocationRow[] | undefined, countryName?: string, options?: { includeCatalog?: boolean; }): { value: string; label: string; }[]; /** Страна для города: справочник, иначе первая запись VPS с таким городом. */ declare function resolveCountryForCityFromRows(cityName: string, rows: readonly CityLocationRow[] | undefined): string | undefined; interface CityOption extends CityRef { country: CountryRef; } /** Список городов с привязкой к стране. */ declare function listCities(countryCode?: string): CityOption[]; /** Список стран, у которых есть города в справочнике. */ declare function countriesWithCities(): CountryRef[]; /** * Канонические коды {loc} для hostname (из naming seed / docs). * Ключ — русское имя города (lower case). */ declare const CANONICAL_LOC_CODES: Record; /** Детерминированный уникальный loc-код для города (hostname {loc}). */ declare function locCodeForCity(city: Pick, usedCodes: ReadonlySet): string; /** Все города каталога с выделенными loc-кодами (без коллизий). */ declare function catalogCitiesWithLocCodes(): Array; export { CANONICAL_LOC_CODES, CITIES, CITY_BY_NAME_RU, COUNTRIES, COUNTRY_BY_CODE, COUNTRY_BY_NAME_RU, type CityLocationRow, type CityOption, type CityRef, type CountryRef, buildCityOptions, catalogCitiesWithLocCodes, cityMatchesCountry, countriesWithCities, listCities, locCodeForCity, resolveCityRef, resolveCountryForCity, resolveCountryForCityFromRows };