import type { CapabilityRequest, HostedContributionDefinition, HostedPostToolUseRequest, HostedPostToolUseResponse, HostedPreToolUseRequest, HostedPreToolUseResponse, HostedSystemPromptTransformRequest, HostedSystemPromptTransformResponse, HostedToolDiscoveryRequest, HostedToolDiscoveryResponse, HostedToolCapabilitiesRequest, HostedToolInvokeRequest } from "@best-agent/protocol";
import type { AgentProfile } from "../agent/profile-registry.js";
import type { ToolDefinition } from "../tool/registry.js";
export interface InstalledSkill {
    allowedTools?: string[];
    content: string;
    contextMode?: "append" | "replace";
    description: string;
    effort?: "none" | "minimal" | "low" | "medium" | "high" | "xhigh";
    executionMode?: "inline" | "fork";
    id: string;
    model?: string;
    name: string;
    pathScope?: string[];
    source: "extension" | "plugin";
    sourceExtension?: string;
    sourcePlugin?: string;
    whenToUse?: string;
}
export interface RuntimeContributionBundle {
    agentProfiles: AgentProfile[];
    postToolUseHooks: InstalledPostToolUseHook[];
    preToolUseHooks: InstalledPreToolUseHook[];
    skills: InstalledSkill[];
    systemPromptHooks: InstalledSystemPromptHook[];
    toolDiscoveryHooks: InstalledToolDiscoveryHook[];
    tools: ToolDefinition[];
}
export interface InstalledSystemPromptHook {
    apply(request: Omit<HostedSystemPromptTransformRequest, "contributionName">): Promise<string | undefined>;
    contributionName: string;
}
export interface InstalledToolDiscoveryHook {
    apply(request: Omit<HostedToolDiscoveryRequest, "contributionName">): Promise<string[]>;
    contributionName: string;
}
export interface InstalledPreToolUseHook {
    apply(request: Omit<HostedPreToolUseRequest, "contributionName">): Promise<HostedPreToolUseResponse>;
    contributionName: string;
}
export interface InstalledPostToolUseHook {
    apply(request: Omit<HostedPostToolUseRequest, "contributionName">): Promise<HostedPostToolUseResponse>;
    contributionName: string;
}
export interface HostedToolBridge {
    postToolUse?: (request: HostedPostToolUseRequest) => Promise<HostedPostToolUseResponse>;
    preToolUse?: (request: HostedPreToolUseRequest) => Promise<HostedPreToolUseResponse>;
    transformSystemPrompt(request: HostedSystemPromptTransformRequest): Promise<HostedSystemPromptTransformResponse>;
    discoverTools(request: HostedToolDiscoveryRequest): Promise<HostedToolDiscoveryResponse>;
    getCapabilities(request: HostedToolCapabilitiesRequest): Promise<CapabilityRequest[]>;
    invoke(request: HostedToolInvokeRequest): Promise<string>;
}
export declare function createHostedContributionBundle(contributions: HostedContributionDefinition[], bridge: HostedToolBridge): RuntimeContributionBundle;
export declare function qualifyHostedToolName(contributionName: string, toolName: string): string;
export declare function qualifyHostedSkillId(contributionName: string, skillName: string): string;
//# sourceMappingURL=runtime-contribution.d.ts.map