/** * Owns Capability providers and resolves versioned requirements transactionally. * * @module */ import { type CapabilityRequirement, type CapabilityToken } from './capability-token.js'; import { type Disposable } from './disposable.js'; import { type PluginErrorSink, type PluginWarningSink } from './reporting.js'; import type { PluginPermission } from './plugin-types.js'; export interface CapabilityRegistryOptions { readonly warningSink?: PluginWarningSink; readonly errorSink?: PluginErrorSink; } export interface CapabilityProviderInfo { readonly capabilityId: string; readonly version: string; readonly providerPluginId: string; readonly requiredPermission: PluginPermission | undefined; readonly complete: boolean; } export declare class CapabilityRegistry implements Disposable { private readonly options; private readonly providers; private disposed; constructor(options?: CapabilityRegistryOptions); provide(token: CapabilityToken, implementation: TPort, providerPluginId: string, requiredPermission?: PluginPermission): Disposable; require(requirement: CapabilityRequirement, consumerPluginId: string): TPort; optional(requirement: CapabilityRequirement, consumerPluginId: string): TPort | null; getProviderInfo(tokenOrId: CapabilityToken | string): CapabilityProviderInfo | null; has(tokenOrId: CapabilityToken | string): boolean; dispose(): void; private resolve; private describeProviders; private assertActive; }