import type { ModuleFederationManifestOptions, ModuleFederationOptions } from './ensure_runtime_plugin.js';
/** The established single-container snapshot shape. */
export interface ViteLegacyModuleFederationConfig {
    name: string;
    filename: string;
    exposes?: Record<string, string>;
    remotes?: Record<string, string>;
    shared?: Record<string, unknown>;
    runtimePlugins?: string[];
    manifest?: boolean | ModuleFederationManifestOptions;
}
/** Serializable dashboard metadata for one independently addressable Vite container. */
export interface ViteModuleFederationBuildMetadata {
    name?: string;
    remote?: string;
    mf_manifest?: string;
    library_type?: string;
    exposes?: ModuleFederationOptions['exposes'];
    shared?: ModuleFederationOptions['shared'];
}
export interface ViteModuleFederationPublicationMetadata {
    mfConfig?: ViteLegacyModuleFederationConfig;
    mfConfigs?: ModuleFederationOptions[];
    federation?: ViteModuleFederationBuildMetadata[];
}
/**
 * A Vite MF container is publicly identified by its `name` and emitted entry `filename`.
 * Two configs that share either identity describe the same container.
 */
export declare function getConfigIdentities(config: ModuleFederationOptions): string[];
/**
 * Snapshot metadata must include every configured Vite container. Exact duplicate plugin
 * wrappers are harmless, while divergent configs with one public identity are ambiguous
 * and must fail before a snapshot chooses one arbitrarily.
 */
export declare function mergeViteModuleFederationConfigs(configLists: readonly (readonly ModuleFederationOptions[] | undefined)[]): ModuleFederationOptions[];
export declare function createViteModuleFederationPublicationMetadata(configs: readonly ModuleFederationOptions[]): ViteModuleFederationPublicationMetadata;
//# sourceMappingURL=federation-metadata.d.ts.map