import { type BaseModuleState, type GetResourcesRequest, type Loader, type ModuleResources } from './types'; export type ModuleResourcesGetterOptions = { /** Сигнал отмены запроса ресурсов модуля */ signal?: AbortSignal; }; export type ModuleResourcesGetter = (params: GetResourcesRequest, options?: ModuleResourcesGetterOptions) => Promise>; export type ModuleLoaderSimpleHook = (moduleId: string) => void; export type ModuleLoaderMountHook = (moduleId: string, targetNode: HTMLElement) => void; export type ModuleLoaderHook = (moduleId: string, resources: ModuleResources) => Promise | void; export type ModuleLoaderHookWithModule = (moduleId: string, resources: ModuleResources, module: ModuleExportType) => Promise | void; export type ModuleLoaderLoadingStage = 'fetch-manifest' | 'fetch-resources' | 'mount'; export type ModuleLoaderErrorHook = (moduleId: string, stage: ModuleLoaderLoadingStage, error: unknown) => void; export type LifecycleHooks = { /** хук, вызываемый в самом начале загрузки, до любых других событий */ onStart?: ModuleLoaderSimpleHook; /** хук, вызываемый перед подключением ресурсов модуля на страницу */ onBeforeResourcesMount?: ModuleLoaderHook; /** хук, вызываемый после подключения ресурсов, но до получения контента модуля */ onBeforeModuleMount?: ModuleLoaderHook; /** хук, вызываемый после того, как модуль был получен */ onAfterModuleMount?: ModuleLoaderHookWithModule; /** хук для монтируемых модулей, будет вызван перед запуском функции mount модуля */ onBeforeMountableModuleMount?: ModuleLoaderMountHook; /** хук для монтируемых модулей, будет вызван после выполнения функции mount модуля */ onAfterMountableModuleMount?: ModuleLoaderMountHook; /** хук, вызываемый перед удалением ресурсов модуля со страницы */ onBeforeModuleUnmount?: ModuleLoaderHookWithModule; /** хук, вызываем после удаления ресурсов модуля со страницы */ onAfterModuleUnmount?: ModuleLoaderHookWithModule; /** хук, вызываемый при ошибках во время загрузки или монтирования модуля */ onError?: ModuleLoaderErrorHook; }; export type CreateModuleLoaderParams = { /** id загружаемого модуля */ moduleId: string; /** id приложения-хоста */ hostAppId: string; /** функция, которая возвращает ресурсы модуля */ getModuleResources: ModuleResourcesGetter; /** Опциональная html-нода, в которую будут подключаться ресурсы модуля. По-умолчанию `document.head` */ resourcesTargetNode?: HTMLElement; /** политика кеширования ресурсов модуля. Если 'none' - ресурсы модуля будут удалены из кеша после его удаления со страницы. Если 'single-item' - в кеше будет храниться значения для текущего значения loaderParams. */ resourcesCache?: 'none' | 'single-item'; /** shareScope модуля, если отличается от default */ shareScope?: string; /** флаг, отключающий встраивание inline стилей в Safari */ disableInlineStyleSafari?: boolean; /** lifecycle хуки загрузчика. Могут использоваться для модификации поведения или сбора метрик */ hooks?: LifecycleHooks; } & LifecycleHooks; export declare function createModuleLoader({ moduleId, hostAppId, getModuleResources, resourcesTargetNode, resourcesCache, shareScope, disableInlineStyleSafari, hooks, ...deprecatedHooks }: CreateModuleLoaderParams): Loader;