import type { Config } from '../types/config.js'; import type { Plugin, PluginConfigFieldLifecycle, PluginConfigFieldMetadata } from '../types/plugin.js'; export interface ResolvePluginConfigInput { name: string; aliases?: readonly string[] | undefined; defaults?: Readonly> | undefined; config?: Partial> | undefined; /** Highest-precedence host override, primarily for embedding APIs. */ explicitOptions?: Readonly> | undefined; } export type PluginConfigSource = 'legacy-plugin-map' | 'plugin-entry' | 'extension' | 'explicit-options'; export interface ResolvedPluginConfig { options: Record; configured: boolean; sources: PluginConfigSource[]; } export interface PluginConfigChange { key: string; lifecycle: PluginConfigFieldLifecycle; secret: boolean; previous: unknown; next: unknown; } /** * Resolve one plugin namespace with a single shallow precedence rule: * defaults < legacy plugin map < ordered plugin entries < aliases/canonical * extension namespaces < explicit host options. Canonical extension names * beat aliases, making migrations deterministic regardless of object order. */ export declare function resolvePluginConfig(input: ResolvePluginConfigInput): ResolvedPluginConfig; export declare function resolvePluginManifestConfig(plugin: Pick, config?: ResolvePluginConfigInput['config'], explicitOptions?: Readonly>): ResolvedPluginConfig; /** Unknown fields are immutable by default so a new option cannot silently hot-reload. */ export declare function diffPluginConfig(previous: Readonly>, next: Readonly>, fields: Readonly>): PluginConfigChange[]; export declare function redactPluginConfig(options: Readonly>, fields: Readonly>): Record; /** Validate an opted-in metadata map against the manifest's schema/default keys. */ export declare function validatePluginConfigMetadata(plugin: Pick): string[]; //# sourceMappingURL=config.d.ts.map