import type { ProfileName } from '../config.js';
import { AgentSession } from './agentSession.js';
import { type ToolRuntimeObserver, type ToolSuite } from '../core/toolRuntime.js';
export interface CapabilityContext {
    profile: ProfileName;
    workspaceContext: string | null;
    workingDir: string;
    env: NodeJS.ProcessEnv;
}
export interface CapabilityContribution {
    id: string;
    description?: string;
    toolSuite?: ToolSuite;
    toolSuites?: ToolSuite[];
    metadata?: Record<string, unknown>;
    dispose?(): void | Promise<void>;
}
export interface CapabilityModule {
    id: string;
    description?: string;
    create(context: CapabilityContext): CapabilityContribution | CapabilityContribution[] | null | undefined | Promise<CapabilityContribution | CapabilityContribution[] | null | undefined>;
}
export interface CapabilityManifestEntry {
    id: string;
    moduleId: string;
    description?: string;
    metadata?: Record<string, unknown>;
}
export interface AgentHostOptions {
    profile: ProfileName;
    workspaceContext: string | null;
    workingDir: string;
    modules?: CapabilityModule[];
    toolObserver?: ToolRuntimeObserver;
    env?: NodeJS.ProcessEnv;
}
export declare class AgentHost {
    private readonly context;
    private readonly toolObserver?;
    private readonly modules;
    private readonly contributions;
    private readonly contributionOwners;
    private readonly moduleContributions;
    private session;
    private disposed;
    constructor(options: AgentHostOptions);
    get profile(): ProfileName;
    get workspaceContext(): string | null;
    get workingDir(): string;
    refreshWorkspaceContext(workspaceContext: string | null): void;
    loadModules(modules: CapabilityModule[]): Promise<void>;
    registerModule(module: CapabilityModule): Promise<void>;
    getSession(): Promise<AgentSession>;
    describeCapabilities(): CapabilityManifestEntry[];
    dispose(): Promise<void>;
    private collectToolSuites;
    private validateContribution;
    private assertMutable;
    private removeModuleContributions;
}
//# sourceMappingURL=agentHost.d.ts.map