"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateTimeoutMultiplier = validateTimeoutMultiplier;
exports.applyTimeoutMultiplier = applyTimeoutMultiplier;
const TIMEOUT_CONFIG_KEYS = Object.keys({
    DEFAULT: 0,
    NAVIGATION: 0,
    ACTION: 0,
    EXPECT: 0,
    LONG_TEST: 0,
    MODAL_WINDOW_WAIT: 0,
    SIGN_WINDOW_WAIT: 0,
    PRINT_FORMS_WINDOW_WAIT: 0,
    SHORT_WAIT: 0,
    ESCAPE_WAIT: 0,
    TABLE_UPDATE: 0,
    PAGE_LOAD: 0,
    OPTION_OPEN_WAIT: 0,
    OPTION_VISIBLE_WAIT: 0,
    AUTOCOMPLETE_KEY_DELAY: 0,
    ELEMENT_STABLE_WAIT: 0,
    ROW_UPDATE: 0,
    TABLE_CELL_VERIFY_WAIT: 0,
    WAIT_FOR_RESPONSE: 0,
});
/**
 * Проверяет корректность глобального множителя таймаутов.
 * @param multiplier — множитель из configureTimeouts()
 * @throws Error если значение не является положительным числом
 */
function validateTimeoutMultiplier(multiplier) {
    if (!Number.isFinite(multiplier) || multiplier <= 0) {
        throw new Error(`[timeouts] Некорректный multiplier=${multiplier}. Ожидается положительное число.`);
    }
}
/**
 * Масштабирует все числовые поля профиля таймаутов.
 * @param config — исходный профиль после defaults и stand override
 * @param multiplier — глобальный множитель
 * @returns новый профиль с округлёнными значениями в миллисекундах
 */
function applyTimeoutMultiplier(config, multiplier) {
    validateTimeoutMultiplier(multiplier);
    if (multiplier === 1) {
        return { ...config };
    }
    return Object.fromEntries(TIMEOUT_CONFIG_KEYS.map((key) => [key, Math.round(config[key] * multiplier)]));
}
