import { Locator } from '@playwright/test';
import type { Role } from '../../../utils/test-role-utils';
import type { BlockModalWindowConfiguration, BlockWithFormConfiguration } from '../BaseCard.types';
import type { FormFieldsLocators, FormFieldsData, FormFieldsValues } from '../../common/FormFields.types';
interface BlockFormDeps {
    getRole: () => Role;
    validateBlockParams: (blockKey: string, role: Role) => void;
    getBlockTableLabel: (blockKey: string) => string;
    findBlockInlineFormConfig: (blockKey: string, inlineFormKey: string) => BlockWithFormConfiguration;
    getBlockButtons: (blockKey: string) => Record<string, Locator> | null;
    findBlockModalWindowConfig: (blockKey: string, modalWindowKey: string) => BlockModalWindowConfiguration;
    getBlockModalWindowFormLocators: (blockKey: string, modalWindowKey: string) => FormFieldsLocators;
    getBlockModalWindowButtons: (blockKey: string, modalWindowKey: string) => Record<string, Locator> | null;
    performModalTerminalActionToCloseModalWindow: (button: Locator, stepName: string) => Promise<void>;
    verifyTableRowInBlock: (rowKey: string, rowData: Record<string, string>, tableLabel: string, isNewlyAdded: boolean, onRowFound?: (row: Locator) => void) => Promise<void>;
    openBlockModalWindow: (blockKey: string, modalWindowKey: string) => Promise<void>;
    formHelperFillFormFields: (data: FormFieldsData, locators: FormFieldsLocators, context: string) => Promise<void>;
    formHelperVerifyFormFieldsValues: (values: FormFieldsValues, locators: FormFieldsLocators, context: string) => Promise<void>;
    getBlockFormWithFieldsLocators: (blockKey: string, inlineFormKey: string) => FormFieldsLocators;
    executeWithErrorCheck: <T>(actionDescription: string, action: () => Promise<T>) => Promise<T>;
}
export type BlockFormFieldsValues = FormFieldsValues;
export declare class CardBlockFormService {
    private readonly deps;
    constructor(deps: BlockFormDeps);
    private createFormFlow;
    private filterFormFields;
    private getCurrentBlockState;
    private verifyBlockButtonsState;
    private fillBlockForm;
    switchBlockEditableState(blockKey: string, targetState: 'editable' | 'notEditable', buttonKeys?: {
        Edit?: string;
        Save?: string;
        Cancel?: string;
    }, logContext?: string): Promise<void>;
    checkFormFieldsState(blockConfig: BlockWithFormConfiguration, blockFormLocators: FormFieldsLocators, mode: 'editable' | 'notEditable'): Promise<void>;
    /**
     * Открывает модальное окно блока, заполняет форму и сохраняет.
     * @param blockKey — ключ блока
     * @param modalWindowKey — ключ модального окна из конфигурации блока
     * @param formFields — данные для заполнения полей формы
     */
    fillBlockModalForm(blockKey: string, modalWindowKey: string, formFields: FormFieldsData, _logContext?: string): Promise<void>;
    /**
     * Заполняет поля уже открытой модальной формы блока (без open/save).
     */
    fillOpenBlockModalFormFields(blockKey: string, modalWindowKey: string, formFields: FormFieldsData, _logContext?: string): Promise<void>;
    /**
     * Заполняет поля инлайн-формы блока по ключу конфигурации.
     * @param blockKey — ключ блока
     * @param inlineFormKey — ключ инлайн-формы
     * @param formFields — данные полей формы
     * @param logContext — контекст для логирования
     */
    fillInlineBlockForm(blockKey: string, inlineFormKey: string, formFields: FormFieldsData, logContext?: string): Promise<void>;
    /**
     * Проверяет значения полей инлайн-формы блока по ключу конфигурации.
     * @param blockKey — ключ блока
     * @param inlineFormKey — ключ инлайн-формы
     * @param expectedFieldsValues — ожидаемые значения полей
     * @param logContext — контекст для логирования
     */
    checkInlineBlockFormValues(blockKey: string, inlineFormKey: string, expectedFieldsValues: BlockFormFieldsValues, logContext?: string): Promise<void>;
}
export {};
