export interface Props {
    projectId: number;
    searchers: Searcher[];
    /**
     * Список выбранных значений
     *	 *
     * - при `onlySearcher = false`:
     * 	- при `forFrequency = false`: массив `regionIndex`
     * 	- при `forFrequency = true`: массив `regionKey`
     * - при `onlySearcher = true` массив `searcherKey`
     *
     * Обратите внимание, всегда является массивом, даже если не предпогается получить несколько значений
     *
     * Если не нужно работать с массивом можно указать `modelValue = []` и использовать `modelValueSingle`
     */
    modelValue: number[];
    /**
     * Выбранное значение
     *
     * Шорткат к `modelValue[0]`, если не нужно работать с массивом (для случаев без сравнений)
     *
     * Нельзя добавить динамически
     */
    modelValueSingle?: number;
    /**
     * Добавить режим сравнения
     *
     * В режиме сравнения выбранные значения длиной массива > 1 сохраняются с привязкой к projectId
     *
     * Чтобы изменить сохраненное значение в режиме сравнения необходимо указать modelValue с длиной массива > 1
     *
     * Выбор регионов для сравнения требуется настраивать отдельно, см. emit `compareRegions`
     */
    addCompare?: boolean;
    /**
     * Режим выбора регионов для работы с частотой
     */
    forFrequency?: boolean;
    /**
     * Добавить элемент `Автовыбор` с ключем `-2`, который в API заменяется на нужный ключ в зависимости от контекста
     *
     * Обратите внимание, что значение `-2` также используется для ключа ПС и индекса Региона не настроенных в проекте
     */
    autoRegion?: boolean;
    /**
     * В этом режиме в regionIndex будет сохраняться searcherKey
     */
    onlySearcher?: boolean;
    /**
     * См. addChanger в TopSelect
     */
    addChanger?: boolean;
    /**
     * Добавить значок ПС
     */
    addSearcherIcon?: boolean;
    /**
     * Добавить значок региона
     */
    addRegionIcon?: boolean;
}
/**
 * @todo: Вынести в topvisor-openapi
 */
export interface Searcher {
    /**
     * Состояние включения поисковой системы
     */
    enabled?: 0 | 1;
    /**
     * Id поисковой системы
     */
    id?: number;
    /**
     * Ключ поисковой системы
     */
    key: number;
    /**
     * Название поисковой системы
     */
    name: string;
    /**
     * Порядок поисковой систеимы
     */
    ord?: number;
    /**
     * Id проекта
     */
    project_id?: number;
    /**
     * Регионы поисковой системы
     */
    regions: Region[];
    /**
     * Ключ поисковой системы
     */
    searcher?: number;
}
/**
 * Индексирвоанные поисковики с быстрым доступом к ПС и их регионам по словарю
 */
export type SearcherByKey = Map<Searcher['key'], SearcherIndexed>;
/**
 * Индексирвоанный поисковик с быстрым доступом к регоинам по словарю
 */
export type SearcherIndexed = Searcher & {
    regionByIndex: Map<Region['index'], Region>;
};
/**
 * @todo: Вынести в topvisor-openapi
 */
export interface Region {
    /**
     * Название области
     */
    areaName?: string;
    /**
     * Код страны
     */
    countryCode?: string;
    /**
     * Глубина поиска
     */
    depth?: number;
    /**
     * Id устройства
     * 0 - ПК
     * 1 - Планшет
     * 2 - Смартфон
     */
    device?: 0 | 1 | 2;
    /**
     * Домен верхнего уровня
     */
    domain?: string;
    /**
     * Состояние включения региона
     */
    enabled?: 0 | 1;
    /**
     * Необходим для поддержания сортировки
     */
    id?: number;
    /**
     * Уникальный идентификатор настройки региона (ПС + регион + настройки региона)
     */
    index: number;
    /**
     * Ключ региона
     */
    key: number;
    /**
     * Код языка
     */
    lang?: string;
    /**
     * Название региона
     */
    name: string;
    /**
     * Id родительского региона
     */
    parentId?: number;
    /**
     * Ключ поисковой системы
     */
    searcher_key?: Searcher['key'];
    /**
     * Тип
     */
    type?: string;
}
