import type { AgentDefinition, AuthMethod, CommandDefinition, CompactionStrategy, ContextProvider, CredentialResolver, DiscoveredContribution, InputBuilder, InstructionInjector, PromptBuilder, ProviderPackage, ProviderRequestPolicy, ResourceLoader, RetryPolicy, SettingsProvider, Skill, StopHook, StoreFactory, SystemPromptContribution, ToolDefinition } from "./contracts.js"; import { type ModelRegistry } from "./models.js"; import { type ProviderRegistry } from "./providers.js"; import { type DuplicateRegistrationOptions } from "./registry-options.js"; export interface ContributionRegistry { register(key: string, contribution: T): void; /** Remove a contribution; returns false when the key was not registered. */ unregister(key: string): boolean; get(key: string): T | undefined; resolve(key: string): T; list(): readonly T[]; } export interface ContributionRegistryOptions extends DuplicateRegistrationOptions { readonly label?: string; } export declare function createContributionRegistry(options?: ContributionRegistryOptions): ContributionRegistry; export interface ContributionRegistries { readonly providers: ProviderRegistry; readonly models: ModelRegistry; readonly tools: ContributionRegistry; readonly contextProviders: ContributionRegistry; readonly skills: ContributionRegistry; readonly commands: ContributionRegistry; readonly agents: ContributionRegistry; readonly inputBuilders: ContributionRegistry; readonly promptBuilders: ContributionRegistry; readonly compactionStrategies: ContributionRegistry; readonly retryPolicies: ContributionRegistry; readonly storeFactories: ContributionRegistry; readonly resourceLoaders: ContributionRegistry; readonly settingsProviders: ContributionRegistry; readonly credentialResolvers: ContributionRegistry; readonly providerPackages: ContributionRegistry; readonly authMethods: ContributionRegistry; readonly providerRequestPolicies: ContributionRegistry; readonly systemPromptContributions: ContributionRegistry; readonly instructionInjectors: ContributionRegistry; readonly stopHooks: ContributionRegistry; } export interface ContributionRegistriesOptions extends DuplicateRegistrationOptions { } export declare function createContributionRegistries(options?: ContributionRegistriesOptions): ContributionRegistries; /** Register discovered contributions into the given registries. Inert: skill * kinds register a fully realized {@link Skill}; tool/context/instructions * kinds register **descriptor-only** entries whose executable behavior is * host-owned. Performs NO `import()`. Last-write-wins per `(kind, name)` * (workspace discovery already won the merge; calling twice is idempotent). */ export declare function registerDiscoveredContributions(registries: ContributionRegistries, contributions: readonly DiscoveredContribution[]): void;