import { Page, Locator } from '@playwright/test';
import { BasePage } from '../BasePage/BasePage';
import type { FormFieldsLocators, FormFieldsData, FormFieldsValues } from '../common/FormFields.types';
import { Role } from '../../utils/test-role-utils';
import type { RowActionsConfiguration } from '../common/RowActions.types';
import { CardBlockFormService, CardBlockRowActionsService, BlockFormFieldsValues } from './services';
import type { BlockCardConfiguration, NavigationBlockConfiguration, BlockWithFormConfiguration } from './BaseCard.types';
import type { BlockModalWindowConfiguration } from './BaseCard.types';
import { ContextType } from '../common/Context.types';
import { TableRowService } from '../shared/table/TableRowService';
export type { ContextType };
export declare abstract class BaseCard extends BasePage {
    protected page: Page;
    abstract BlockTitles: Record<string, Locator>;
    abstract BlockBodies: Record<string, Locator>;
    protected readonly tableRowService: TableRowService;
    protected cardBlockFormService: CardBlockFormService;
    protected cardBlockRowActionsService: CardBlockRowActionsService;
    constructor(page: Page);
    /**
     * Создаёт сервис действий над строками в блоках карточки.
     * Зависимости (конфиг, локаторы, низкоуровневые методы BasePage) передаются через deps.
     */
    private createCardBlockRowActionsService;
    private createCardBlockFormService;
    /**
     * Возвращает aria-label таблицы блока по blockKey (для getByLabel).
     * @param blockKey - ключ блока
     */
    protected getBlockTableLabel(blockKey: string): string;
    /**
     * Возвращает aria-label таблицы блока по blockKey.
     * Переопределить в наследнике карточки (делегировать в *Page.config.ts).
     * @param blockKey - ключ блока
     */
    protected resolveBlockTableLabel(_blockKey: string): string | undefined;
    /**
     * Валидирует входные параметры для методов работы с блоками
     * @param blockKey - ключ блока
     * @param role - роль пользователя
     * @throws Error если параметры невалидны
     */
    private validateBlockParams;
    /**
     * Валидирует параметр tableLabel
     * @param tableLabel - метка таблицы
     * @throws Error если параметр невалиден
     */
    private validateTableLabel;
    /**
     * Метод для получения конфигурации элементов блока карточки в зависимости от роли и контекста
     * !Для такого блока характерно наличие фильтров и таблицы в теле
     * Должен быть реализован в наследниках с учетом специфики каждого блока
     * @param blockKey - ключ блока (например, 'PersonalData', 'OrganizationData')
     * @param role - роль пользователя
     * @param context - контекст (Multi/Single) - опционально, используется для блоков, зависящих от количества организаций
     */
    protected getBlockConfiguration(_blockKey: string, _role: Role, _context?: ContextType): BlockCardConfiguration | null;
    /**
     * Метод для получения конфигураций инлайн-форм блока в зависимости от роли.
     * По умолчанию возвращает пустой массив.
     * @param blockKey - ключ блока (например, 'PersonalData', 'OrganizationData')
     * @param role - роль пользователя
     */
    protected getBlockWithFormConfigurations(_blockKey: string, _role: Role): BlockWithFormConfiguration[];
    /**
     * Находит конфигурацию инлайн-формы блока по ключу.
     * @param blockKey - ключ блока
     * @param inlineFormKey - ключ инлайн-формы (из конфигурации блока)
     */
    protected findBlockInlineFormConfig(blockKey: string, inlineFormKey: string): BlockWithFormConfiguration;
    /**
    * Метод для получения конфигурации элементов блока в зависимости от роли и контекста
    * Должен быть реализован в наследниках с учетом специфики каждого блока
    * @param blockKey - ключ блока (например, 'PersonalData', 'OrganizationData')
    * @param role - роль пользователя
    */
    protected getNavigationBlockConfiguration(_blockKey: string, _role: Role): NavigationBlockConfiguration | null;
    /**
    * Метод для получения конфигурации модальных окон блока в зависимости от роли
    * По умолчанию возвращает пустой массив
    * @param blockKey - ключ блока
    * @param role - роль пользователя
    * @returns Массив конфигураций модальных окон (может быть пустым, если модальных окон нет)
    */
    protected getBlockModalWindowConfigurations(_blockKey: string, _role: Role): BlockModalWindowConfiguration[];
    /**
    * Метод для получения конфигурации действий строки блока в зависимости от роли
    * Должен быть переопределен в наследниках, если блок имеет действия строки
    * По умолчанию возвращает null (действия строки отсутствуют)
    * @param blockKey - ключ блока
    * @param role - роль пользователя
    * @returns Конфигурация действий строки или null, если действия не настроены
    */
    protected getBlockRowActionsConfiguration(_blockKey: string, _role: Role): RowActionsConfiguration | null;
    /**
     * Возвращает Record testId → ключ для кнопок действий строки блока.
     * Переопределите в наследнике и верните объект для нужного blockKey, чтобы использовать стандартную реализацию getBlockRowActionButtons.
     * По умолчанию возвращает null.
     * @param blockKey - ключ блока
     */
    protected getBlockRowActionTestIds(_blockKey: string): Record<string, string> | null;
    /**
     * Получает Record локаторов кнопок действий строки блока для конкретной строки.
     * Стандартная реализация строит локаторы по getBlockRowActionTestIds(blockKey) (getByTestId). Можно переопределить в наследниках при другой разметке.
     * @param blockKey - ключ блока
     * @param rowLocator - локатор строки, для которой нужно получить кнопки
     * @returns Record с локаторами кнопок действий строки или null
     */
    protected getBlockRowActionButtons(blockKey: string, rowLocator: Locator): Record<string, Locator> | null;
    /**
     * Метод для получения Record локаторов пунктов меню действий строки блока
     * Должен быть переопределен в наследниках, если блок использует меню действий
     * По умолчанию возвращает null
     * @param blockKey - ключ блока
     * @returns Record с локаторами пунктов меню или null
     */
    protected getBlockRowActionMenuItems(_blockKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record кнопок блока
     * @param blockKey - ключ блока
     */
    protected getBlockButtons(_blockKey: string): Record<string, Locator> | null;
    /**
     * Возвращает Record элементов навигации блока.
     * Переопределите в наследнике карточки с блоком навигации.
     * @param blockKey - ключ блока навигации
     */
    protected getNavigationElements(_blockKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record фильтров блока
     * @param blockKey - ключ блока
     */
    protected getBlockTextFilters(_blockKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record combobox фильтров блока
     * @param blockKey - ключ блока
     */
    protected getBlockComboboxFilters(_blockKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record DaData фильтров блока
     * @param blockKey - ключ блока
     */
    protected getBlockDaDataFilters(_blockKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record полей ввода блока
     * @param blockKey - ключ блока
     * @param _inlineFormKey - ключ инлайн-формы
     */
    protected getBlockTextFields(_blockKey: string, _inlineFormKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record combobox полей блока
     * Должен быть переопределен в наследниках, если блок имеет combobox поля
     * По умолчанию возвращает null
     * @param blockKey - ключ блока
     * @param _inlineFormKey - ключ инлайн-формы
     */
    protected getBlockComboboxFields(_blockKey: string, _inlineFormKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record multiCombobox полей блока
     * Должен быть переопределен в наследниках, если блок имеет multiCombobox поля
     * По умолчанию возвращает null
     * @param blockKey - ключ блока
     * @param _inlineFormKey - ключ инлайн-формы
     */
    protected getBlockMultiComboboxFields(_blockKey: string, _inlineFormKey: string): Record<string, Locator> | null;
    /**
    * Метод для получения Record полей multiCombobox модального окна
    * Должен быть переопределен в наследниках, если модальное окно имеет поля multiCombobox
    * По умолчанию возвращает null
    * @param blockKey - ключ блока
    * @param _modalWindowKey - ключ модального окна
    */
    protected getBlockModalWindowMultiComboboxFields(_blockKey: string, _modalWindowKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record полей для загрузки файлов блока
     * Должен быть переопределен в наследниках, если блок имеет поля для загрузки файлов
     * По умолчанию возвращает null
     * @param blockKey - ключ блока
     * @param _inlineFormKey - ключ инлайн-формы
     */
    protected getBlockFileFields(_blockKey: string, _inlineFormKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record чекбоксов блока
     * Должен быть переопределен в наследниках, если блок имеет чекбоксы
     * По умолчанию возвращает null
     * @param blockKey - ключ блока
     * @param _inlineFormKey - ключ инлайн-формы
     */
    protected getBlockCheckboxes(_blockKey: string, _inlineFormKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record toggle кнопок блока (switch)
     * Должен быть переопределен в наследниках, если блок имеет toggle кнопки
     * По умолчанию возвращает null
     * @param blockKey - ключ блока
     * @param _inlineFormKey - ключ инлайн-формы
     */
    protected getBlockToggleButtons(_blockKey: string, _inlineFormKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record DaData полей блока
     * Должен быть переопределен в наследниках, если блок имеет DaData поля
     * По умолчанию возвращает null
     * @param blockKey - ключ блока
     * @param _inlineFormKey - ключ инлайн-формы
     */
    protected getBlockDaDataFields(_blockKey: string, _inlineFormKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record radio кнопок блока
     * Должен быть переопределен в наследниках, если блок имеет radio кнопки
     * По умолчанию возвращает null
     * @param blockKey - ключ блока
     * @param _inlineFormKey - ключ инлайн-формы
     */
    protected getBlockRadioButtons(_blockKey: string, _inlineFormKey: string): Record<string, Locator> | null;
    /**
     * Находит конфигурацию модального окна блока по ключу.
     * @param blockKey - ключ блока
     * @param modalWindowKey - опциональный ключ модального окна
     * @returns найденная конфигурация
     */
    protected findBlockModalWindowConfig(blockKey: string, modalWindowKey: string): BlockModalWindowConfiguration;
    /**
     * Метод для получения Record кнопок модального окна блока
     * Должен быть переопределен в наследниках, если блок имеет модальные окна
     * По умолчанию возвращает null
     * @param blockKey - ключ блока
     * @param modalWindowKey - ключ модального окна
     */
    protected getBlockModalWindowButtons(_blockKey: string, _modalWindowKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record полей для загрузки файлов модального окна блока
     * Должен быть переопределен в наследниках, если блок имеет модальные окна
     * По умолчанию возвращает null
     * @param _blockKey - ключ блока
     * @param _modalWindowKey - ключ модального окна
     */
    protected getBlockModalWindowFileFields(_blockKey: string, _modalWindowKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record полей ввода модального окна блока
     * Должен быть переопределен в наследниках, если блок имеет модальные окна
     * По умолчанию возвращает null
     * @param _blockKey - ключ блока
     * @param _modalWindowKey - ключ модального окна
     */
    protected getBlockModalWindowTextFields(_blockKey: string, _modalWindowKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record DaData полей модального окна блока
     * Должен быть переопределен в наследниках, если блок имеет модальные окна с DaData полями
     * По умолчанию возвращает null
     * @param _blockKey - ключ блока
     * @param _modalWindowKey - ключ модального окна
     */
    protected getBlockModalWindowDaDataFields(_blockKey: string, _modalWindowKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record radiobutton модального окна блока
     * Должен быть переопределен в наследниках, если модальное окно имеет вариативное содержание
     * По умолчанию возвращает null
     * @param _blockKey - ключ блока
     * @param _modalWindowKey - ключ модального окна
     */
    protected getBlockModalWindowRadioButtons(_blockKey: string, _modalWindowKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record чекбоксов модального окна блока
     * Должен быть переопределен в наследниках, если модальное окно имеет чекбоксы
     * По умолчанию возвращает null
     * @param _blockKey - ключ блока
     * @param _modalWindowKey - ключ модального окна
     */
    protected getBlockModalWindowCheckboxes(_blockKey: string, _modalWindowKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record слайдеров модального окна блока
     * Должен быть переопределен в наследниках, если модальное окно имеет кнопки-слайдеры
     * По умолчанию возвращает null
     * @param _blockKey - ключ блока
     * @param _modalWindowKey - ключ модального окна
     */
    protected getBlockModalWindowSliders(_blockKey: string, _modalWindowKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record кнопок toggle модального окна блока
     * Должен быть переопределен в наследниках, если модальное окно имеет кнопки toogle
     * По умолчанию возвращает null
     * @param _blockKey - ключ блока
     * @param _modalWindowKey - ключ модального окна
     */
    protected getBlockModalWindowToggleButtons(_blockKey: string, _modalWindowKey: string): Record<string, Locator> | null;
    /**
     * Метод для получения Record combobox полей модального окна блока
     * Должен быть переопределен в наследниках, если модальное окно имеет combobox поля
     * По умолчанию возвращает null
     * @param _blockKey - ключ блока
     * @param _modalWindowKey - ключ модального окна
     */
    protected getBlockModalWindowComboboxFields(_blockKey: string, _modalWindowKey: string): Record<string, Locator> | null;
    /**
    * Получает ключ тела блока из ключа блока
    * Должен быть переопределен в наследниках для маппинга blockKey -> blockBodyKey
    * @param blockKey - ключ блока
    * @returns ключ тела блока
    */
    protected getBlockBodyKey(blockKey: string): string;
    /**
    * Собирает все локаторы полей формы инлайн-блока (не в модальном окне)
    *
    * @param blockKey - ключ блока
    * @returns объект локаторов для formHelper.fillFormFields, содержащий все типы полей блока
    *
    * @example
    * ```typescript
    * const locators = card.getBlockFormWithFieldsLocators('userBlock', 'PersonalData');
    * await formHelper.fillFormFields(userData, locators, 'блок пользователя');
    * ```
    */
    protected getBlockModalWindowFormLocators(blockKey: string, modalWindowKey: string): FormFieldsLocators;
    protected getBlockFormWithFieldsLocators(blockKey: string, inlineFormKey: string): FormFieldsLocators;
    goToBlock(blockKey: string): Promise<void>;
    /**
    * Метод для проверки видимости конкретного блока с его заголовком на странице
    */
    checkBlockIsVisible(titleKey: string, blockName: string): Promise<void>;
    /**
     * Проверяет видимость кнопок блока в зависимости от роли и контекста.
     */
    checkBlockButtons(blockKey: string, context?: ContextType): Promise<void>;
    /**
     * Проверяет кликабельность всех элементов навигации на странице.
     */
    checkAllNavigationsElementsIsClickable(blockKey: string): Promise<void>;
    /**
     * Проверяет видимость полей-фильтров блока (text / combobox / daData) в зависимости от роли и контекста.
     * Локаторы берутся из {@link getBlockTextFilters},
     * {@link getBlockComboboxFilters}, {@link getBlockDaDataFilters}.
     * Если в конфигурации нет фильтров или нет локаторов — проверка пропускается (warn).
     * @param blockKey — ключ блока карточки
     * @param context — опциональный контекст блока (например Single/Multi)
     * @throws {Error} Если конфигурация блока отсутствует
     */
    checkBlockFilters(blockKey: string, context?: ContextType): Promise<void>;
    /**
     * Проверяет все элементы блока (кнопки, поля) в зависимости от роли и контекста.
     */
    checkAllBlockElements(blockKey: string, context?: ContextType): Promise<void>;
    /**
    * Открывает модальное окно блока по кнопке-триггеру
    *
    * @param blockKey - ключ блока, содержащего кнопку открытия модального окна
    * @param modalWindowKey - ключ конфигурации модального окна
    * @throws {Error} Если кнопка не найдена, модальное окно не открылось или обнаружена ошибка валидации
    */
    openBlockModalWindow(blockKey: string, modalWindowKey: string): Promise<void>;
    /**
     * Проверяет наличие необходимых колонок в таблице блока по их названиям
     * @param tableLabel - метка таблицы для getByLabel (например, 'Сертификаты пользователя')
     * @param columnNames - массив названий колонок для проверки (например, ['Организация', 'Серийный номер'])
     */
    verifyRequiredColumnsInBlock(tableLabel: string, columnNames: readonly string[]): Promise<void>;
    /**
     * Находит строку в таблице блока по ключевому полю
     * @param rowKey - ключевое поле строки (уникальный идентификатор строки в таблице)
     * @param rowData - объект с данными строки, где ключ - название колонки, значение - ожидаемое значение ячейки
     *                  Например: { 'Организация': 'ООО "Компания"', 'Серийный номер': '1234567890' }
     * @param tableLabel - метка таблицы для getByLabel (например, 'Сертификаты пользователя')
     * @param isNewlyAdded - если true, проверяет только что добавленную строку (первую после заголовка)
     *                      если false, ищет строку по всей таблице; при нескольких совпадениях возвращается последняя
     * @returns Locator строки или null, если строка не найдена
     */
    findTableRowInBlock(rowKey: string, keyValue: string, tableLabel: string, isNewlyAdded: boolean): Promise<Locator>;
    /**
    * Кликает по ссылке в найденной строке таблицы блока
    * @param key - объект с ключом и значением для поиска строки
    * @param itemToClick - кликабельный текст в строке таблицы
    * @param tableLabel - метка таблицы для getByLabel (например, 'Сертификаты пользователя')
    * @param isNewlyAdded - если true, ищет среди только что добавленных строк (первая после заголовка)
    * @throws {Error} Если строка не найдена или в строке нет ссылок для клика
    */
    clickInBlockTableRow(key: {
        rowKey: string;
        keyValue: string;
    }, itemToClick: string, tableLabel: string, isNewlyAdded: boolean): Promise<void>;
    forEachRow(tableLabel: string, callback: (row: Locator, rowIndex: number) => Promise<void>): Promise<void>;
    /**
     * Ищет строку в таблице блока без выброса ошибки (для проверки отсутствия строки)
     * @param rowKey - ключевое поле строки
     * @param rowData - объект с данными строки
     * @param tableLabel - метка таблицы для getByLabel
     * @returns Locator строки или null, если строка не найдена
     */
    findTableRowInBlockSilent(rowKey: string, keyValue: string, tableLabel: string): Promise<Locator | null>;
    /**
     * Проверяет строку в таблице блока
     * @param rowKey - ключевое поле строки (уникальный идентификатор строки в таблице)
     * @param rowData - объект с данными строки, где ключ - название колонки, значение - ожидаемое значение ячейки
     * @param tableLabel - метка таблицы для getByLabel (например, 'Сертификаты пользователя')
     * @param isNewlyAdded - если true, проверяет только что добавленную строку
     * @param onRowFound - Колбэк, который вызывается после нахождения строки (вызывается даже при ошибках проверки). Применим для очистки мусора в случае падения теста
     */
    verifyTableRowInBlock(rowKey: string, rowData: Record<string, string>, tableLabel: string, isNewlyAdded: boolean, onRowFound?: (row: Locator) => void): Promise<void>;
    /**
     * Заполняет поля инлайн-формы блока.
     * @param blockKey - ключ блока
     * @param inlineFormKey - ключ инлайн-формы
     * @param formFields - объект с полями и данными для заполнения
     */
    fillInlineBlockForm(blockKey: string, inlineFormKey: string, formFields: FormFieldsData): Promise<void>;
    /**
     * Открывает модальное окно блока, заполняет форму и сохраняет.
     * @param blockKey — ключ блока
     * @param modalWindowKey — ключ конфигурации модального окна
     * @param formFields — данные для заполнения полей формы
     * @throws {Error} Если не удается открыть модалку, заполнить форму или сохранить
     */
    fillBlockModalForm(blockKey: string, modalWindowKey: string, formFields: FormFieldsData): Promise<void>;
    /**
     * Заполняет поля уже открытой модальной формы блока (без open/save).
     */
    fillOpenBlockModalFormFields(blockKey: string, modalWindowKey: string, formFields: FormFieldsData): Promise<void>;
    /**
    * Переключает состояние редактирования блока
    *
    * @param blockKey - Ключ блока
    * @param targetState - Целевое состояние: 'editable' (редактирование) или 'notEditable' (просмотр)
    * @param buttonKeys - Кастомные названия кнопок
    * @param logContext - Контекст для логирования
    *
    * @throws {Error} Если не найдены необходимые кнопки
    * @throws {Error} Если не удалось переключить состояние
    *
    * @example
    * // Переключение в режим редактирования
    * await switchBlockEditableState('userBlock', 'editable');
    *
    * @example
    * // Выход из режима редактирования
    * await switchBlockEditableState('userBlock', 'notEditable');
    */
    switchBlockEditableState(blockKey: string, targetState: 'editable' | 'notEditable', buttonKeys?: {
        Edit?: string;
        Save?: string;
        Cancel?: string;
    }, logContext?: string): Promise<void>;
    /**
    * Проверяет состояние полей формы в блоке (доступны для редактирования или нет)
    *
    * @param blockConfig - Конфигурация блока с описанием полей
    * @param blockFormLocators - Локаторы полей формы блока
    * @param mode - Режим проверки:
    *   - 'editable' - поля должны быть доступны для редактирования
    *   - 'notEditable' - поля должны быть только для чтения (недоступны для редактирования)
    *
    * @example
    * // Проверка, что поля в режиме просмотра (только чтение)
    * await checkFormFieldsState(blockConfig, blockFormLocators, 'notEditable');
    *
    * @example
    * // Проверка, что поля доступны для редактирования
    * await checkFormFieldsState(blockConfig, blockFormLocators, 'editable');
    *
    * @remarks
    * Метод проверяет все типы полей, указанные в конфигурации:
    * textFields, comboboxFields, fileFields, radioButtons, checkboxes,
    * toggleButtons, daDataFields, multiComboboxFields
    */
    checkFormFieldsState(blockConfig: BlockWithFormConfiguration, blockFormLocators: FormFieldsLocators, mode: 'editable' | 'notEditable'): Promise<void>;
    /**
    * Проверяет значения полей формы в инлайн-блоке
    *
    * @param blockKey - Ключ блока
    * @param inlineFormKey - Ключ инлайн-формы (из конфигурации блока)
    * @param expectedFieldsValues - Объект с ожидаемыми значениями полей
    * @param expectedFieldsValues.textFields - Текстовые поля (key: значение)
    * @param expectedFieldsValues.comboboxFields - Выпадающие списки (key: значение)
    * @param expectedFieldsValues.fileFields - Поля загрузки файлов (key: имя файла)
    * @param expectedFieldsValues.radioButtons - Массив ключей выбранных радио-кнопок
    * @param expectedFieldsValues.checkboxes - Чекбоксы (key: true/false)
    * @param expectedFieldsValues.toggleButtons - Toggle-кнопки (key: true/false/'Yes'/'No')
    * @param expectedFieldsValues.daDataFields - DaData поля (key: значение)
    * @param expectedFieldsValues.multiComboboxFields - Мульти-выпадающие списки (key: массив значений)
    * @param logContext - Контекст для логирования
    *
    * @example
    * // Проверка текстовых полей и чекбоксов
    * await checkInlineBlockFormValues('userBlock', 'PersonalData', {
    *   textFields: { 'name': 'Иван', 'email': 'ivan@mail.ru' },
    *   checkboxes: { 'agree': true }
    * });
    */
    checkInlineBlockFormValues(blockKey: string, inlineFormKey: string, expectedFieldsValues: BlockFormFieldsValues, logContext?: string): Promise<void>;
    /**
     * Универсальный метод для выполнения действия со строкой в блоке.
     * @param blockKey - ключ блока
     * @param rowLocator - локатор строки в блоке
     * @param actionKey - ключ действия (например, 'MenuItemEdit' или 'ButtonEdit')
     */
    clickRowAction(blockKey: string, rowLocator: Locator, actionKey: string): Promise<void>;
    /**
     * Проверяет видимость кнопок действий строки в блоке.
     * @param blockKey - ключ блока
     * @param rowLocator - локатор строки в блоке
     */
    checkGridRowActions(blockKey: string, rowLocator: Locator): Promise<void>;
    /**
     * Открывает строку на редактирование в блоке.
     * @param blockKey - ключ блока
     * @param rowLocator - локатор строки в блоке
     * @returns true если модальное окно успешно открыто
     */
    editRow(blockKey: string, rowLocator: Locator): Promise<boolean>;
    /**
     * Открывает строку на просмотр (readonly) в блоке.
     * @param blockKey - ключ блока
     * @param rowLocator - локатор строки в блоке
     * @returns true если модальное окно успешно открыто
     */
    viewRow(blockKey: string, rowLocator: Locator): Promise<boolean>;
    /**
     * Удаляет строку в блоке (с подтверждением, если требуется).
     * @param blockKey - ключ блока
     * @param rowLocator - локатор строки в блоке
     * @param confirmDelete - нужно ли подтверждение удаления (по умолчанию true)
     * @returns true если удаление успешно
     */
    deleteRow(blockKey: string, rowLocator: Locator, confirmDelete?: boolean): Promise<boolean>;
    /**
     * Удаляет строку в блоке и проверяет, что она исчезла.
     * @param blockKey - ключ блока
     * @param rowKey - ключевое поле строки для поиска
     * @param rowData - данные строки для поиска и проверки отсутствия
     * @param confirmDelete - нужно ли подтверждение удаления (по умолчанию true)
     */
    deleteRowAndVerify(blockKey: string, rowKey: string, rowData: Record<string, string>, confirmDelete?: boolean): Promise<void>;
    /**
     * Редактирует строку в блоке с заполнением формы, сохранением и проверкой результата.
     * @param blockKey - ключ блока
     * @param modalWindowKey - ключ модального окна (из конфигурации блока)
     * @param rowLocator - локатор строки в блоке
     * @param expectedRowData - ожидаемые данные после сохранения (для проверки)
     * @param formFields - Объект с полями для заполнения
     * @param onRowVerified - Колбэк, который вызывается после нахождения строки (вызывается даже при ошибках проверки). Применим для очистки мусора в случае падения теста
     */
    editRowAndVerify(blockKey: string, modalWindowKey: string, rowLocator: Locator, expectedRowData: Record<string, string>, formFields: FormFieldsData, onRowVerified?: (row: Locator) => void): Promise<void>;
    /**
     * Просматривает строку в блоке и проверяет данные.
     * @param blockKey - ключ блока
     * @param modalWindowKey - ключ модального окна
     * @param rowLocator - локатор строки в блоке
     * @param expectedValues - ожидаемые значения полей
     */
    viewRowAndVerify(blockKey: string, modalWindowKey: string, rowLocator: Locator, expectedValues: FormFieldsValues): Promise<void>;
    /**
     * Реализация метода активации/деактивации для карточек.
     */
    protected toggleActivationForCard(blockKey: string, rowLocator: Locator, action: 'activate' | 'deactivate', actionType?: 'menu' | 'button', requireConfirmation?: boolean): Promise<void>;
    deleteTrashInBlockAfterFail(blockKey: string, rowLocator: Locator, confirmDelete: boolean): Promise<void>;
}
