import { Locator } from '@playwright/test';
import type { FormFieldsData, FormFieldsLocators } from '../../common/FormFields.types';
import type { BaseFieldsConfiguration } from '../../common/Fields.types';
import { type FilteredFormFieldsData } from './FormDataFilterUtils';
export interface FormFlowValidateParams {
    formFields: FormFieldsData;
    rowKey?: string;
    expectedRowData?: Record<string, string>;
}
export interface FormFlowDeps {
    findModalConfig: (modalWindowKey: string) => BaseFieldsConfiguration | undefined;
    openModal: (modalWindowKey: string) => Promise<void>;
    getModalFormLocators: (modalWindowKey: string) => FormFieldsLocators;
    getModalButtons: (modalWindowKey: string) => Record<string, Locator> | null;
    getSaveButtonKey: (modalWindowKey: string) => string;
    performSave: (button: Locator, stepName: string) => Promise<void>;
    formHelperFillFormFields: (data: FormFieldsData, locators: FormFieldsLocators, context: string) => Promise<void>;
    verifyTableRow?: (rowKey: string, expectedRowData: Record<string, string>, isFirstRow: boolean, onRowFound?: (row: Locator) => void) => Promise<void>;
    getRole?: () => string;
    logContext?: string;
}
/**
 * Общий L3-поток: фильтрация полей, открытие модалки, заполнение, сохранение.
 */
export declare class FormFlowService {
    private readonly deps;
    private readonly logContext;
    constructor(deps: FormFlowDeps, logContext?: string);
    validateParams(params: FormFlowValidateParams): void;
    filterFormFields(formFields: FormFieldsData, modalConfig: BaseFieldsConfiguration | undefined): FilteredFormFieldsData;
    openAndFillModal(modalWindowKey: string, filteredFields: FilteredFormFieldsData): Promise<void>;
    fillOpenModalFormFields(modalWindowKey: string, formFields: FormFieldsData): Promise<void>;
    fillModalForm(modalWindowKey: string, formFields: FormFieldsData): Promise<void>;
}
