import { IPaginate, IPreparedServerImageWithAlt, PaginationResult } from '../types';
import { PictureData } from '../types/picture-data';
/**
 * @description Хелпер для генерации путей к адаптивным статичным изображениям (PictureData)
 * @param basePath - Базовый путь к директории (например, '/compressed/cta')
 * @param filename - Имя файла без расширения (например, 'cta-arrow')
 * @param ext - Расширение исходного fallback-файла (по умолчанию 'jpg')
 * @return Объект PictureData со всеми нужными форматами
 */
export declare const getImageData: (basePath: string, filename: string, ext: "jpg" | "png" | "jpeg") => PictureData;
/**
 * @description Получить Intl для нужного языка
 * @param locale - Локаль
 * @param options - Опции
 */
export declare const getNumberFormatter: (locale: string, options?: Intl.NumberFormatOptions) => Intl.NumberFormat;
/**
 * @description Получить Intl даты для нужного языка
 * @param locale - Локаль
 * @param options - Опции
 */
export declare const getDateFormatter: (locale: string, options?: Intl.DateTimeFormatOptions) => Intl.DateTimeFormat;
/**
 * @description Получить значение по ключу
 * @param obj - Объект
 * @param key - Ключ
 */
export declare const getByKey: <T extends object, K extends keyof T>(obj: T, key: K | string) => T[K] | undefined;
/**
 * @description Преобразует value у инпута в поле маски телефона
 * @param eventValue - исходное значение инпута
 * @response Возвращает либо обработанную строку, либо пустую строку
 * @example
 * 79881234567 -> +79881234567
 * 89881234567 -> +79881234567
 * 19881234567 -> +19881234567
 * 8 (988) 505-42-19 -> +79885054219
 */
export declare const convertPhoneMask: (eventValue: string) => string;
/**
 * @description Получить корректный поддомен из адреса хоста
 * @param host - url хоста
 * @param SUB_DOMAIN - Объект ключ-значение со списком поддоменов
 */
export declare const getSubdomain: (host: string, SUB_DOMAIN: Record<string, string>) => string;
/**
 * @description Заменяет текст по маске {{}}
 * @param text - Исходный текст
 * @param subdomain - Значение города, которое подставится
 * @param SUBDOMAIN_NAME - Объект ключ-значение со списком поддоменов
 * @param SUBDOMAIN_MASK - Объект ключ-значение со списком масок поддоменов
 * @return Обновленная строка
 */
export declare const updateTextByTemplate: ({ text, subdomain, SUBDOMAIN_NAME, SUBDOMAIN_MASK, }: {
    text: string;
    subdomain?: string;
    SUBDOMAIN_NAME?: Record<string, {
        name: string;
        declination: string;
        region: string;
        regionDeclination: string;
    }>;
    SUBDOMAIN_MASK?: {
        CITY: string;
        CITY_DECL: string;
        CITY_REGION: string;
        CITY_REGION_DECL: string;
    };
}) => string;
/**
 * @description Заменят мета текст по маске, переданный напрямую
 * @param subdomain - Поддомен
 * @param metaData - Объект с title, descrption, keywords
 * @param host - Хост сайта
 * @param lang - Объект для локализации
 * @param isSubdomain - Нужны ли поддомены в адресе хоста
 * @param SUBDOMAIN_NAME - Объект ключ-значение со списком поддоменов
 * @param SUBDOMAIN_MASK - Объект ключ-значение со списком масок поддоменов
 * @param DEFAULT_SEO_TEXT - Объект ключ-значение со списком масок поддоменов
 * @return Объект с мета тегами
 */
export declare const prepareLocalMetaData: <T extends object>({ subdomain, metaData, host, lang, isSubdomain, SUBDOMAIN_NAME, SUBDOMAIN_MASK, DEFAULT_SEO_TEXT, }: {
    subdomain?: string;
    metaData: {
        title: string;
        description: string;
        keywords: string;
        canonical?: string;
    };
    host: string;
    lang?: {
        locale: string;
        locales: string[];
        defaultLocale: string;
        route: string;
        city?: string;
    };
    isSubdomain?: boolean;
    SUBDOMAIN_NAME?: Record<string, {
        name: string;
        declination: string;
        region: string;
        regionDeclination: string;
    }>;
    SUBDOMAIN_MASK?: {
        CITY: string;
        CITY_DECL: string;
        CITY_REGION: string;
        CITY_REGION_DECL: string;
    };
    DEFAULT_SEO_TEXT: {
        title: string;
        description: string;
        keywords: string;
    };
}) => T;
/**
 * @description Превращает строку формата /catalog/price-from__1000--price-to__5000 в { price-from: '1000', price-to: '5000' }
 * @param input - изначальная строка
 * @return Объект с парами ключ-значение
 */
export declare const parseStringToKeyValue: <T extends object>(input: string) => T;
/**
 * @description Конвентирует цвет из enum в строку
 * @param color1 - цвет 1
 * @param color2 - цвет 2
 * @param notFoundText - текст при отсутствии цвета
 * @param COLORS_NAMES - Объект ключ-значение со списком названий цветов
 * @return Строка с названием цветов
 */
export declare const prepareColor: ({ color1, color2, notFoundText, COLORS_NAMES, }: {
    color1: string;
    color2?: string | null;
    notFoundText: string;
    COLORS_NAMES: Record<string, string>;
}) => string;
/**
 * @description Подготавливает серверную пагинацию для клиента
 * @param pagination - Серверная пагинация
 * @param baseUrl - Url страницы
 * @param initialParams - Параметры url
 */
export declare const generatePaginationArray: (pagination: IPaginate | null, baseUrl: string, initialParams: Record<string, string>) => PaginationResult;
/**
 * @description Превращение массива в объект ключ-значение
 * @param arr - Массив
 */
export declare const arrayToKeyValueObject: <T extends string>(arr: T[]) => Record<T, T>;
/**
 * @description Подготовка номера страницы, полученной из query параметров
 * @param page - Номер страницы
 */
export declare const preparePageParam: (page: string | number | undefined) => number;
/**
 * @description Проверка html на пустоту
 * @param html - Html разметка редактора
 */
export declare const isNotEmptyHtml: (html: string | null | undefined) => boolean;
/**
 * @description Подстановка города в путь ссылки
 * @param city - Город
 * @param href - Ссылка
 */
export declare const createCityLink: (city: string, href: string) => string;
/**
 * @description Получить текстовое поле по локали
 * @param locale - Локаль. Пример ru
 * @param field - Пример text1
 * @param data - Объект с полями. К примеру text1RU и text1EN
 * @result - Текст поля
 */
export declare const getLocaleField: ({ locale, field, data, }: {
    locale: string;
    field: string;
    data?: object | null;
}) => string;
/**
 * @description Проверка user agent на бота
 * @param userAgent - user agent
 * @result - boolean
 */
export declare const isBotUserAgent: (userAgent: string) => boolean;
/**
 * Генерирует приятный цвет для заглушек фотографий карточек
 * @param seed - Необязательное число или строка для предсказуемой генерации цвета
 * @returns Цвет в формате HEX (#RRGGBB)
 */
export declare const generatePlaceholderColor: (seed?: number | string) => string;
/**
 * Конвертирует цвет из формата HSL в HEX
 * @param h - Оттенок (0-360)
 * @param s - Насыщенность (0-100)
 * @param l - Яркость (0-100)
 * @returns Цвет в формате HEX (#RRGGBB)
 */
export declare const hslToHex: (h: number, s: number, l: number) => string;
/**
 * Преобразует UUID в короткий ID
 * @param {string} uuid - UUID v4 строка (с дефисами или без)
 * @param {number} length - нужная длина (по умолчанию 18)
 * @returns {string} короткий ID без дефисов
 */
export declare const uuidToStringId: (uuid: string, length?: number) => string;
/**
 * Преобразует UUID в числовой ID
 * @param {string} uuid - UUID v4 строка (с дефисами или без)
 * @param {number} maxDigits - максимальное количество цифр в результате (по умолчанию 18)
 * @returns {string} числовой ID в виде строки
 */
export declare const uuidToNumericId: (uuid: string, maxDigits?: number) => string;
/**
 * @description Экранирует XML-специальные символы в строке.
 * @param str - Строка
 */
export declare const escapeXml: (str: string) => string;
/**
 * @description Генерирует XML-фид для яндекс товаров.
 * @param shopName - Название магазина
 * @param shopCompany - Компания
 * @param delivery - Доставка
 * @param categoriesData - Категории
 * @param offersData - Товары
 * @param host - Хост
 * @response Готовый xml фид товаров
 */
export declare const generateYandexFeedXML: ({ shopName, shopCompany, delivery, categoriesData, offersData, host, }: {
    shopName: string;
    shopCompany: string;
    host: string;
    delivery: boolean;
    categoriesData: {
        id: string | number;
        name: string;
        parentId?: string | number;
    }[];
    offersData: {
        id: string | number;
        categoryId: string | number;
        name: string;
        vendor: string;
        vendorCode?: string | null;
        description: string;
        href: string;
        images: IPreparedServerImageWithAlt[];
        price: number;
        pickup: boolean;
        params?: {
            name: string;
            value: string;
        }[];
    }[];
}) => string;
