import { MutableRefObject } from 'react';
import { ModuleLoadFailureReason } from '../../../../../../../out-tsc/libs/observability/mf/index.d.ts';
import { EventType } from '../../helpers/mfRuntimeUtils';
import { BuildWebTelemetryContext, MFType } from '../../types';
/**
 * Track one active module-swap telemetry attempt while the next MF is pending.
 * Sigue un intento activo de telemetría de intercambio de módulo mientras el siguiente MF está pendiente.
 */
export type ActiveSwapState = {
    /**
     * Module id that remains visible until the requested MF takes over.
     * Id del módulo que permanece visible hasta que el MF solicitado toma el control.
     */
    fromModuleId: string;
    /**
     * High-resolution timestamp captured when the current swap attempt started.
     * Marca de tiempo de alta resolución capturada cuando comenzó el intento actual de intercambio.
     */
    startedAt: number;
    /**
     * Module id that should replace the currently visible MF.
     * Id del módulo que debe reemplazar al MF actualmente visible.
     */
    toModuleId: string;
};
/**
 * Inputs required to centralize MFLoader telemetry ownership.
 * Entradas necesarias para centralizar la propiedad de la telemetría de MFLoader.
 */
export type UseMFTelemetryArgs = {
    /**
     * Whether runtime globals should remain cached after host-dispose cleanup.
     * Indica si los globales de runtime deben permanecer en caché después de la limpieza al desmontar el host.
     */
    cache: boolean;
    /**
     * Runtime namespace used to separate MF globals and telemetry context.
     * Namespace de runtime usado para separar los globales del MF y el contexto de telemetría.
     */
    prefix: string;
    /**
     * Bridge ref to the latest visible MF instance ref owned by the swap hook.
     * Ref puente a la ref de la última instancia visible del MF propiedad del hook de intercambio.
     */
    mountedScriptRefBridge: MutableRefObject<MutableRefObject<MFType> | null>;
    /**
     * Bridge ref to the latest requested MF instance ref owned by the swap hook.
     * Ref puente a la ref de la última instancia solicitada del MF propiedad del hook de intercambio.
     */
    requestedScriptRefBridge: MutableRefObject<MutableRefObject<MFType> | null>;
    /**
     * Bridge ref to the lifecycle setter used to surface loader error states.
     * Ref puente al setter del ciclo de vida usado para exponer estados de error del loader.
     */
    setStatusLoaderRef: MutableRefObject<((status: EventType) => void) | null>;
    /**
     * Ref to the latest lifecycle status so telemetry can react to terminal errors.
     * Ref al estado más reciente del ciclo de vida para que la telemetría pueda reaccionar a errores terminales.
     */
    statusLoaderRef: MutableRefObject<EventType>;
};
/**
 * Public telemetry commands and refs shared with sibling MFLoader hooks.
 * Comandos y refs públicos de telemetría compartidos con hooks hermanos de MFLoader.
 */
export type UseMFTelemetryResult = {
    /**
     * Ref to the currently active swap telemetry attempt, if one exists.
     * Ref al intento de telemetría de intercambio actualmente activo, si existe.
     */
    activeSwapRef: MutableRefObject<ActiveSwapState | null>;
    /**
     * Builder for the shared web telemetry context used by MF loader events.
     * Constructor del contexto compartido de telemetría web usado por los eventos del loader del MF.
     */
    createTelemetryContext: BuildWebTelemetryContext;
    /**
     * Close one pending module-load attempt when the runtime abandons it.
     * Cierra un intento pendiente de carga de módulo cuando el runtime lo abandona.
     */
    emitAbandonedLoadTelemetry: (instance: MFType, failureReason: ModuleLoadFailureReason) => void;
    /**
     * Start telemetry for a new swap from the visible MF to the requested MF.
     * Inicia la telemetría de un nuevo intercambio desde el MF visible hacia el MF solicitado.
     */
    emitSwapStartedTelemetry: (fromModuleId: string, toModuleId: string, moduleNamespace: string) => void;
    /**
     * Close the current swap telemetry attempt when the requested MF never takes over.
     * Cierra el intento actual de telemetría de intercambio cuando el MF solicitado nunca toma el control.
     */
    emitSwapFailedTelemetry: (failureReason: ModuleLoadFailureReason, failureDetail?: string) => void;
    /**
     * Surface runtime errors through the shared MFLoader error path.
     * Expone errores de runtime mediante la ruta compartida de error de MFLoader.
     */
    reportLoaderError: (message: string, error?: unknown) => void;
};
//# sourceMappingURL=types.d.ts.map