import { FederationHost } from '../core'; import { Module } from '../module'; import { SnapshotHandler } from '../plugins/snapshot/SnapshotHandler'; import { SharedHandler } from '../shared'; import { RemoteHandler } from '../remote'; type CoreLifeCycle = FederationHost['hooks']['lifecycle']; type CoreLifeCyclePartial = Partial<{ [k in keyof CoreLifeCycle]: Parameters[0]; }>; type SnapshotLifeCycle = SnapshotHandler['hooks']['lifecycle']; type SnapshotLifeCycleCyclePartial = Partial<{ [k in keyof SnapshotLifeCycle]: Parameters[0]; }>; type ModuleLifeCycle = Module['host']['loaderHook']['lifecycle']; type ModuleLifeCycleCyclePartial = Partial<{ [k in keyof ModuleLifeCycle]: Parameters[0]; }>; type ModuleBridgeLifeCycle = Module['host']['bridgeHook']['lifecycle']; type ModuleBridgeLifeCycleCyclePartial = Partial<{ [k in keyof ModuleBridgeLifeCycle]: Parameters< ModuleBridgeLifeCycle[k]['on'] >[0]; }>; type SharedLifeCycle = SharedHandler['hooks']['lifecycle']; type SharedLifeCycleCyclePartial = Partial<{ [k in keyof SharedLifeCycle]: Parameters[0]; }>; type RemoteLifeCycle = RemoteHandler['hooks']['lifecycle']; type RemoteLifeCycleCyclePartial = Partial<{ [k in keyof RemoteLifeCycle]: Parameters[0]; }>; export type FederationRuntimePlugin = CoreLifeCyclePartial & SnapshotLifeCycleCyclePartial & SharedLifeCycleCyclePartial & RemoteLifeCycleCyclePartial & ModuleLifeCycleCyclePartial & ModuleBridgeLifeCycleCyclePartial & { name: string; version?: string; };