/** * Addon fiber primitives — Cordis-style dispose/reload for federated modules * running inside a PWA host. Pure helpers so they unit-test without React * or the Module Federation runtime. */ import type { AddonAPI, Disposable, Plugin } from '@asteby/metacore-sdk'; export declare const PURGE_ADDON_MESSAGE: "PURGE_ADDON"; export interface PurgeAddonMessage { type: typeof PURGE_ADDON_MESSAGE; key: string; } /** Shape of the exposed `./register` (or `./plugin`) module. */ export interface AddonRegisterModule { register?: Plugin['register']; dispose?: Plugin['dispose']; default?: Plugin['register'] | Plugin; } export interface ResolvedPlugin { register?: Plugin['register']; dispose?: Plugin['dispose']; } /** * Accept every historical export shape: * - `{ register, dispose? }` * - `{ default: { register, dispose? } }` (definePlugin) * - `{ default: (api) => ... }` (function module) */ export declare function resolvePluginExports(mod: AddonRegisterModule | null | undefined): ResolvedPlugin; export declare function runDispose(dispose?: Disposable | null): Promise; export declare function composeDisposables(...fns: Array): Disposable; /** * True when a Cache API / SW request is a federated frontend asset of `addonKey`. * Matches both `/api/addons//frontend` and `/api/metacore/addons//frontend`. */ export declare function isAddonFrontendCacheUrl(url: string, addonKey: string): boolean; /** * Drop cached federation assets for one addon. Primary path is the page-side * Cache API (works even before the SW learns `PURGE_ADDON`). Also posts the * message so a current SW can drop its own entries. * * Never unregisters the SW and never deletes other caches — L1, not L2. */ export declare function purgeAddonFrontendCache(addonKey: string): Promise; /** Test seam: which remote URL is currently registered per federation scope. */ export declare const remoteEntryByScope: Map; export declare function shouldReregisterRemote(scope: string, url: string): boolean; export declare function markRemoteRegistered(scope: string, url: string): void; /** @internal tests */ export declare function resetRemoteRegistry(): void; /** * Safe no-op when `register()` returns void. Used by AddonLoader to treat * both historical and fiber-style plugins uniformly. */ export declare function disposableFromRegisterResult(result: void | Disposable): Disposable | undefined; /** Type-only re-export so AddonLoader does not import Plugin internals twice. */ export type { AddonAPI, Disposable }; //# sourceMappingURL=addon-fiber.d.ts.map