import { components as componentsTagId } from 'topvisor-openapi/src/ts/Tags_2/Types/TagId';
type TagId = componentsTagId['schemas']['Tags_2.Types.TagId'];
type TagIdExclude = `-${TagId}`;
type DataWithModifierOperator<Model> = {
    [K in keyof Model]: Model[K] | Model[K][] | Set<Model[K]> | string;
};
/**
 * Модификатор оператора сравнения
 *
 * Используется посредством добавления к строковому значению поля для упрощения синтаксиса указания фильтров
 *
 * @example Поиск вхождения `Иван` в поле `name`
 * genFilters({
 *     id: 12345, // без модификатора опертора
 *     name: '%:' + 'Иван', // с модификатором опертора
 * });
 */
type ModifierOperator = '>=' | '<=' | '!=' | '>' | '<' | '%' | '!%' | '^' | '~' | '!~' | 'null' | '!null';
type ValueWithModifierOperator = `${ModifierOperator}:${string | number}`;
/**
 * Сгенерировать массив с фильтрами API
 *
 * Ключи - `filedName`, значения - `[ModifierOperator:]fieldValue` / `fieldValues`
 *
 * Значения `undefined` будут пропускаться
 *
 * Додерживает типы:
 *
 * - string, number, boolean - строгое равенство `EQUALS`, если не указан `modifierOperator`
 * - Array - вхождение `IN`
 * - Set<string | number> - вхождение `IN`
 *
 * @see ModifierOperator
 */
export declare const genFilters: <Model extends Api.Ext.Schemas["Model"]>(dataWithModifierOperator: DataWithModifierOperator<Model>) => Api.Field.Filter<Model>[];
/**
 * Сгенерировать и добавить API фильтр из списка тегов
 */
export declare const pushFilterTagsIds: <Model extends Api.Ext.Schemas["Model"] = any, FieldName extends Api.Field.Name<Model> = Api.Field.Name<Model>>(name: FieldName, filters: Api.Field.Filter<Model, FieldName>[], tagsIds: Array<TagId | TagIdExclude>) => void;
/**
 * Сгенерировать API фильтр из простого значения
 */
export declare const genFilterPrimitive: <Model extends Api.Ext.Schemas["Model"] = any, FieldName extends Api.Field.Name<Model> = Api.Field.Name<Model>>(name: FieldName, valueWithModifierOperator: number | string | boolean | ValueWithModifierOperator) => Api.Field.Filter<Model, Api.Field.Name<Model>>;
/**
 * Сгенерировать API фильтр IN
 */
export declare const genFilterIn: <Model extends Api.Ext.Schemas["Model"] = any, FieldName extends Api.Field.Name<Model> = Api.Field.Name<Model>>(name: FieldName, valuesOrSet: Model[FieldName][] | Set<Model[FieldName]>) => Api.Field.Filter<Model, FieldName>;
export {};
