import { BosConfig } from "../../types.mjs";
import { IntegrityRegistry } from "../deploy/integrity.mjs";
import { createInstance } from "@module-federation/enhanced/runtime";
//#region src/services/federation/service.d.ts
type FederationInstance = ReturnType<typeof createInstance>;
declare function patchManifestFetchForSsrPublicPath(mf: FederationInstance): void;
declare function installIntegrityFetchHook(mf: FederationInstance, registry: IntegrityRegistry, options?: {
  cacheDir?: string;
}): void;
declare function getFederationInstance(): FederationInstance;
declare function registerRemote(opts: {
  name: string;
  entry: string;
  type?: "manifest" | "script";
}): Promise<void>;
declare function loadRemoteModule<T>(specifier: string, options?: {
  loadFactory?: boolean;
  from?: "build" | "runtime";
}): Promise<T>;
declare function ensureNodeRuntimePlugin(): Promise<void>;
interface FederationCompatRemote {
  role: string;
  url: string;
  reachable: boolean;
  pluginVersion: string | null;
  ok: boolean;
  reason?: string;
}
interface FederationCompatReport {
  ok: boolean;
  hostVersion: string | null;
  hostReachable: boolean;
  hostReason?: string;
  remotes: FederationCompatRemote[];
}
declare function satisfiesConstraint(version: string, constraint: string): boolean;
interface UiCompositionSlot {
  slot: string;
  url: string;
  reachable: boolean;
  ok: boolean;
  reason?: string;
}
interface UiCompositionReport {
  ok: boolean;
  slots: UiCompositionSlot[];
}
/**
 * The UI composition compat check (#546) — mf check's mirror of the host's
 * boot guard. The core UI remote is the composition's shared-singleton
 * provider; plugin UI remotes are consumers. Any singleton named by two or
 * more UI manifests at different versions fails the composition at
 * `mf.loadRemote` with the federation runtime's cryptic negotiation error —
 * this names the slots and versions instead. Server remotes (api/auth) are
 * intentionally out of scope: the host-side `checkFederationCompat` covers
 * them against the host's own core map.
 */
declare function checkUiCompositionCompat(bosConfig: BosConfig | null, opts?: {
  timeoutMs?: number;
}): Promise<UiCompositionReport>;
declare function checkFederationCompat(bosConfig: BosConfig | null, opts?: {
  timeoutMs?: number;
}): Promise<FederationCompatReport>;
declare function loadBosConfigForMfCheck(configPath: string): BosConfig;
//#endregion
export { FederationCompatRemote, FederationCompatReport, UiCompositionReport, UiCompositionSlot, checkFederationCompat, checkUiCompositionCompat, ensureNodeRuntimePlugin, getFederationInstance, installIntegrityFetchHook, loadBosConfigForMfCheck, loadRemoteModule, patchManifestFetchForSsrPublicPath, registerRemote, satisfiesConstraint };
//# sourceMappingURL=service.d.mts.map