import type { Logger } from "pino";
import type { AgentClient, AgentCreateConfigUnattendedInput, AgentMode, AgentModelDefinition, AgentProvider, AgentSession, ListModelsOptions, ListModesOptions, ResolveAgentCreateConfigInput, ResolveAgentCreateConfigResult } from "./agent-sdk-types.js";
import type { WorkspaceGitService } from "../workspace-git-service.js";
import type { AgentProviderRuntimeSettingsMap, ProviderOverride } from "./provider-launch-config.js";
import { AGENT_PROVIDER_DEFINITIONS, getAgentProviderDefinition, type AgentProviderDefinition } from "@kong-link/protocol/provider-manifest";
export type { AgentProviderDefinition };
export { AGENT_PROVIDER_DEFINITIONS, getAgentProviderDefinition };
export interface ProviderDefinition extends AgentProviderDefinition {
    enabled: boolean;
    /**
     * The id of another *registered* provider this one extends (e.g. a Z.AI
     * profile that extends "claude"). null for built-in providers and for
     * generic ACP providers (which only extend the literal "acp" sentinel).
     */
    derivedFromProviderId: string | null;
    createClient: (logger: Logger) => AgentClient;
    resolveCreateConfig: (input: ResolveAgentCreateConfigInput) => ResolveAgentCreateConfigResult;
    isCreateConfigUnattended: (input: AgentCreateConfigUnattendedInput) => boolean;
    fetchModels: (options: ListModelsOptions) => Promise<AgentModelDefinition[]>;
    fetchModes: (options: ListModesOptions) => Promise<AgentMode[]>;
}
export { IMPORTABLE_PROVIDERS } from "@kong-link/protocol/importable-providers";
export interface BuildProviderRegistryOptions {
    runtimeSettings?: AgentProviderRuntimeSettingsMap;
    providerOverrides?: Record<string, ProviderOverride>;
    workspaceGitService?: Pick<WorkspaceGitService, "resolveRepoRoot">;
    isDev?: boolean;
}
export declare function wrapSessionProvider(provider: AgentProvider, inner: AgentSession): AgentSession;
export declare function buildProviderRegistry(logger: Logger, options?: BuildProviderRegistryOptions): Record<AgentProvider, ProviderDefinition>;
export declare function getProviderIds(registry: Record<AgentProvider, ProviderDefinition>): AgentProvider[];
export declare const PROVIDER_REGISTRY: Record<AgentProvider, ProviderDefinition>;
export declare function createAllClients(logger: Logger, options?: BuildProviderRegistryOptions): Record<AgentProvider, AgentClient>;
export declare function createClientsFromRegistry(registry: Record<AgentProvider, ProviderDefinition>, logger: Logger): Record<AgentProvider, AgentClient>;
export declare function shutdownProviders(logger: Logger, options?: BuildProviderRegistryOptions): Promise<void>;
export declare function shutdownAgentClients(clients: Iterable<AgentClient>, logger: Logger): Promise<void>;
//# sourceMappingURL=provider-registry.d.ts.map