import type { Locator } from '@playwright/test';
import type { BasePageObjectConfiguration } from '../../common/Configuration.types';
import type { VisibilityChecker } from './VisibilityChecker';
/**
 * Описание одной группы фильтров для проверки видимости.
 */
export interface FilterVisibilityGroup {
    /** Человекочитаемое имя группы для логов и stepTitle */
    label: string;
    /** Ключи видимых фильтров из конфигурации */
    visibleKeys?: string[];
    /** Ключи скрытых фильтров из конфигурации */
    hiddenKeys?: string[];
    /** Локаторы группы; null/undefined — группа пропускается с предупреждением */
    locators: Record<string, Locator> | null | undefined;
}
/**
 * Карты локаторов фильтров по типам (text / combobox / daData).
 */
export interface FilterLocatorMaps {
    text: Record<string, Locator> | null | undefined;
    combobox: Record<string, Locator> | null | undefined;
    daData: Record<string, Locator> | null | undefined;
}
/**
 * Утилиты проверки видимости фильтров (text / combobox / daData) по конфигурации.
 */
export declare class FilterVisibilityUtils {
    /**
     * Проверяет, задана ли хотя бы одна группа фильтров в конфигурации.
     * @param config — конфигурация страницы/блока с полями *Filters
     */
    static hasAnyConfiguredFilters(config: BasePageObjectConfiguration): boolean;
    /**
     * Собирает группы фильтров из конфигурации и соответствующих локаторов.
     * Группа включается, если в конфиге заданы visible и/или hidden ключи этого типа.
     * @param config — конфигурация с text/combobox/daData фильтрами
     * @param locators — карты локаторов по типам фильтров
     */
    static buildGroups(config: BasePageObjectConfiguration, locators: FilterLocatorMaps): FilterVisibilityGroup[];
    /**
     * Проверяет видимость всех заданных групп фильтров.
     * Группы без локаторов пропускаются с предупреждением.
     * @param visibilityChecker — общий checker видимости
     * @param groups — группы фильтров к проверке
     * @param options.logContext — контекст для логов
     * @param options.stepTitlePrefix — префикс названия test.step
     * @returns число фактически запущенных проверок групп
     */
    static checkGroups(visibilityChecker: VisibilityChecker, groups: FilterVisibilityGroup[], options: {
        logContext: string;
        stepTitlePrefix: string;
    }): Promise<number>;
}
