import type { OpenClawConfig } from "../config/types.js"; import type { PluginInstallRecord } from "../config/types.plugins.js"; import { type PluginCandidate } from "./discovery.js"; import type { PluginManifestCommandAlias } from "./manifest-command-aliases.js"; import type { PluginBundleFormat, PluginConfigUiHint, PluginDiagnostic, PluginFormat } from "./manifest-types.js"; import { type OpenClawPackageManifest, type PluginManifestActivation, type PluginManifestConfigContracts, type PluginManifest, type PluginManifestCapabilityProviderMetadata, type PluginManifestChannelCommandDefaults, type PluginManifestChannelConfig, type PluginManifestContracts, type PluginManifestMediaUnderstandingProviderMetadata, type PluginManifestModelCatalog, type PluginManifestModelIdNormalization, type PluginManifestModelPricing, type PluginManifestModelSupport, type PluginManifestProviderEndpoint, type PluginManifestProviderRequest, type PluginManifestQaRunner, type PluginManifestSetup, type PluginManifestToolMetadata, type PluginPackageChannel, type PluginPackageInstall } from "./manifest.js"; import type { PluginKind } from "./plugin-kind.types.js"; import type { PluginOrigin } from "./plugin-origin.types.js"; import type { PluginDependencySpecMap } from "./status-dependencies.js"; export type PluginManifestContractListKey = "speechProviders" | "externalAuthProviders" | "mediaUnderstandingProviders" | "documentExtractors" | "realtimeVoiceProviders" | "realtimeTranscriptionProviders" | "imageGenerationProviders" | "videoGenerationProviders" | "musicGenerationProviders" | "memoryEmbeddingProviders" | "webContentExtractors" | "webFetchProviders" | "webSearchProviders" | "migrationProviders"; export type PluginManifestRecord = { id: string; name?: string; description?: string; version?: string; packageName?: string; packageVersion?: string; packageDescription?: string; enabledByDefault?: boolean; enabledByDefaultOnPlatforms?: string[]; autoEnableWhenConfiguredProviders?: string[]; legacyPluginIds?: string[]; format?: PluginFormat; bundleFormat?: PluginBundleFormat; bundleCapabilities?: string[]; kind?: PluginKind | PluginKind[]; channels: string[]; providers: string[]; providerDiscoverySource?: string; modelSupport?: PluginManifestModelSupport; modelCatalog?: PluginManifestModelCatalog; modelPricing?: PluginManifestModelPricing; modelIdNormalization?: PluginManifestModelIdNormalization; providerEndpoints?: PluginManifestProviderEndpoint[]; providerRequest?: PluginManifestProviderRequest; cliBackends: string[]; syntheticAuthRefs?: string[]; nonSecretAuthMarkers?: string[]; commandAliases?: PluginManifestCommandAlias[]; providerAuthEnvVars?: Record; providerAuthAliases?: Record; channelEnvVars?: Record; providerAuthChoices?: PluginManifest["providerAuthChoices"]; activation?: PluginManifestActivation; setup?: PluginManifestSetup; packageManifest?: OpenClawPackageManifest; packageDependencies?: PluginDependencySpecMap; packageOptionalDependencies?: PluginDependencySpecMap; packageChannel?: PluginPackageChannel; packageInstall?: PluginPackageInstall; trustedOfficialInstall?: boolean; qaRunners?: PluginManifestQaRunner[]; skills: string[]; settingsFiles?: string[]; hooks: string[]; origin: PluginOrigin; workspaceDir?: string; rootDir: string; source: string; setupSource?: string; startupDeferConfiguredChannelFullLoadUntilAfterListen?: boolean; manifestPath: string; schemaCacheKey?: string; configSchema?: Record; configUiHints?: Record; contracts?: PluginManifestContracts; mediaUnderstandingProviderMetadata?: Record; imageGenerationProviderMetadata?: Record; videoGenerationProviderMetadata?: Record; musicGenerationProviderMetadata?: Record; toolMetadata?: Record; configContracts?: PluginManifestConfigContracts; channelConfigs?: Record; channelCatalogMeta?: { id: string; label?: string; blurb?: string; preferOver?: readonly string[]; commands?: PluginManifestChannelCommandDefaults; }; }; export type PluginManifestRegistry = { plugins: PluginManifestRecord[]; diagnostics: PluginDiagnostic[]; }; export type BundledChannelConfigCollector = (params: { pluginDir: string; manifest: PluginManifest; packageManifest?: OpenClawPackageManifest; }) => Record | undefined; export declare function loadPluginManifestRegistry(params?: { config?: OpenClawConfig; workspaceDir?: string; env?: NodeJS.ProcessEnv; candidates?: PluginCandidate[]; diagnostics?: PluginDiagnostic[]; installRecords?: Record; bundledChannelConfigCollector?: BundledChannelConfigCollector; }): PluginManifestRegistry;