import { MutableRefObject } from 'react';
import { EventType, NetworkOperation } from '../../helpers/mfRuntimeUtils';
import { BuildWebTelemetryContext, MFType } from '../../types';
/**
 * Track one active module-swap telemetry attempt while the next MF is loading.
 * Sigue un intento activo de telemetría de intercambio de módulo mientras se carga el siguiente MF.
 */
export type ActiveSwapState = {
    /**
     * Module id that is still visible while the swap is in progress.
     * Id del módulo que sigue visible mientras el intercambio está en progreso.
     */
    fromModuleId: string;
    /**
     * High-resolution timestamp captured when the swap attempt started.
     * Marca de tiempo de alta resolución capturada cuando comenzó el intento de intercambio.
     */
    startedAt: number;
    /**
     * Module id that should replace the currently visible module.
     * Id del módulo que debe reemplazar al módulo actualmente visible.
     */
    toModuleId: string;
};
/**
 * Inputs required to manage one requested MF observable lifecycle.
 * Entradas necesarias para gestionar el ciclo de vida observable de un MF solicitado.
 */
export type UseMFLifecycleArgs = {
    /**
     * Final host URL used to fetch the requested MF manifest or bundle.
     * URL final del host usada para solicitar el manifiesto o el bundle del MF solicitado.
     */
    activeHost: string;
    /**
     * Whether the MF runtime globals should stay cached after cleanup.
     * Indica si los globales de runtime del MF deben permanecer en caché después de la limpieza.
     */
    cache: boolean;
    /**
     * Builder for the shared web telemetry context attached to loader events.
     * Constructor del contexto compartido de telemetría web adjunto a los eventos del loader.
     */
    createTelemetryContext: BuildWebTelemetryContext;
    /**
     * Whether the current host runtime is resolving MFs from localhost.
     * Indica si el runtime actual del host está resolviendo MFs desde localhost.
     */
    environmentIsLocalhost: boolean;
    /**
     * Whether localhost mode has a valid numeric debug port for a cold load.
     * Indica si el modo localhost tiene un puerto de depuración numérico válido para una carga en frío.
     */
    hasValidLocalDebugPort: boolean;
    /**
     * Ref to the MF instance that is still visible while a swap may be in flight.
     * Ref a la instancia del MF que sigue visible mientras puede haber un intercambio en curso.
     */
    mountedScriptRef: MutableRefObject<MFType>;
    /**
     * Host-owned network helper used to download the MF bundle.
     * Helper de red propiedad del host usado para descargar el bundle del MF.
     */
    networkOperation: NetworkOperation;
    /**
     * Runtime namespace used to separate globals such as render and observable keys.
     * Namespace de runtime usado para separar globales como las claves de render y observable.
     */
    prefix: string;
    /**
     * MF instance that should be loaded for the current request.
     * Instancia de MF que debe cargarse para la solicitud actual.
     */
    requestedScript: MFType;
    /**
     * Ref to the latest requested MF instance, even if it is not visible yet.
     * Ref a la última instancia de MF solicitada, incluso si todavía no es visible.
     */
    requestedScriptRef: MutableRefObject<MFType>;
    /**
     * Ref to the currently active swap telemetry attempt, if any.
     * Ref al intento de telemetría de intercambio actualmente activo, si existe.
     */
    activeSwapRef: MutableRefObject<ActiveSwapState | null>;
    /**
     * Close the current swap attempt when lifecycle loading fails.
     * Cierra el intento de intercambio actual cuando falla la carga del ciclo de vida.
     */
    emitSwapFailedTelemetry: (failureReason: 'unknown', failureDetail?: string) => void;
    /**
     * Start swap telemetry when a retry begins loading a different target module.
     * Inicia la telemetría de intercambio cuando un reintento empieza a cargar un módulo objetivo diferente.
     */
    emitSwapStartedTelemetry: (fromModuleId: string, toModuleId: string, moduleNamespace: string) => void;
};
/**
 * Public state and commands exposed by the MF observable lifecycle hook.
 * Estado público y comandos expuestos por el hook del ciclo de vida observable del MF.
 */
export type UseMFLifecycleResult = {
    /**
     * Current loader state reflected by the host loading or error overlay.
     * Estado actual del loader reflejado por la capa de carga o error del host.
     */
    statusLoader: EventType;
    /**
     * Direct state setter used by sibling hooks to surface loader terminal states.
     * Setter directo de estado usado por hooks hermanos para exponer estados terminales del loader.
     */
    setStatusLoader: (status: EventType) => void;
    /**
     * Latest byte-progress percentage or `-1` when progress is indeterminate.
     * Último porcentaje de progreso por bytes o `-1` cuando el progreso es indeterminado.
     */
    loadingProgress: number;
    /**
     * Retry the observable loader after the host surfaced an error state.
     * Reintenta el loader observable después de que el host mostró un estado de error.
     */
    tryAgainOnError: () => void;
    /**
     * Monotonic generation counter used to ignore stale observable notifications.
     * Contador monótono de generación usado para ignorar notificaciones obsoletas del observable.
     */
    loadGeneration: MutableRefObject<number>;
    /**
     * Generation that most recently reached observable completion.
     * Generación que alcanzó más recientemente la finalización observable.
     */
    completedGeneration: MutableRefObject<number | null>;
    /**
     * Generation that already executed the MF render contract.
     * Generación que ya ejecutó el contrato de render del MF.
     */
    renderedGeneration: MutableRefObject<number | null>;
};
//# sourceMappingURL=types.d.ts.map