import type { BackendFederationExpectedIdentity } from './identity.js'; import type { BackendFederationEntryExports } from './types.js'; export type BackendFederationEdgeLoadEntryPlugin = { name: string; loadEntry: (args: { remoteInfo: BackendFederationEdgeRemote; }) => BackendFederationEntryExports | undefined | Promise; }; export type BackendFederationEdgeLoadEntryPluginOptions = { /** * Resolve the fork-owned edge entry contract, not a raw Module Federation * container. The edge runtime calls its optional `init` once per remote with * `{ hostName }`, then caches each loaded expose. */ resolveEntry: (remote: BackendFederationEdgeRemote) => BackendFederationEntryExports | undefined | Promise; }; export type BackendFederationEdgeRemote = { entry: `${'binding' | 'service' | 'static'}:${string}`; entryGlobalName?: string; expose?: string; name: string; shareScope?: string | string[]; type?: 'commonjs-module' | 'module' | string; verification?: never; }; type BackendFederationEdgeRuntimeBaseOptions = { entryPolicy?: never; hostName: string; plugins?: BackendFederationEdgeLoadEntryPlugin[]; remote?: BackendFederationEdgeRemote; remotes?: BackendFederationEdgeRemote[]; }; export type BackendFederationEdgeRuntimeOptions = BackendFederationEdgeRuntimeBaseOptions & { expected: BackendFederationExpectedIdentity; }; export type BackendFederationEdgeRuntime = { loadRemote(request: string): Promise; }; export declare function createBackendFederationLoadEntryPlugin(options: BackendFederationEdgeLoadEntryPluginOptions): BackendFederationEdgeLoadEntryPlugin; export declare function createBackendFederationRuntime(options: BackendFederationEdgeRuntimeOptions): BackendFederationEdgeRuntime; export {};