import type { AgentManifest } from "../../agent_runtimeImplementation/runtimeAgentManifest.js";
export type ProviderToolSchemaFamily = "openaiResponses" | "openaiChatCompletions" | "anthropicMessages" | "geminiGenerateContent";
export type PraxisToolProviderKind = "baseTool" | "tap" | "mcp-static" | "dynamic";
export type ProviderToolNameMapping = {
    providerName: string;
    toolId: string;
};
export type PraxisToolDeclaration = {
    toolId: string;
    family?: string;
    group?: string;
    providerName: string;
    providerKind: PraxisToolProviderKind;
    description: string;
    inputSchema: Readonly<Record<string, unknown>>;
    metadata: Readonly<Record<string, unknown>>;
};
export type ProviderToolDeclarationBundle = {
    providerFamily: ProviderToolSchemaFamily;
    tools: readonly Readonly<Record<string, unknown>>[];
    mappings: readonly ProviderToolNameMapping[];
    declarationHash: string;
    providerPayload: Readonly<Record<string, unknown>>;
    cacheHintPlan: ProviderCacheHintPlan;
    warnings: readonly string[];
};
export type ProviderToolCallEnvelope = {
    callId: string;
    providerName: string;
    toolId: string;
    arguments: Readonly<Record<string, unknown>>;
    providerFamily?: ProviderToolSchemaFamily;
    malformedArguments?: string;
    providerRawRef?: string;
    metadata: Readonly<Record<string, unknown>>;
};
export type ProviderToolResultEnvelope = {
    callId: string;
    providerName: string;
    toolId: string;
    content: readonly ProviderToolResultContentBlock[];
    isError?: boolean;
    metadata?: Readonly<Record<string, unknown>>;
};
export type ProviderToolResultContentBlock = {
    type: "text";
    text: string;
} | {
    type: "image";
    data: string;
    mimeType: string;
} | {
    type: "resource";
    uri: string;
    text?: string;
    blob?: string;
    mimeType?: string;
};
export type ProviderCacheHintPlan = {
    providerFamily: ProviderToolSchemaFamily;
    stableToolDeclarationHash: string;
    cacheablePrefixKinds: readonly ["tools", "system", "messages"];
    providerHints: Readonly<Record<string, unknown>>;
    cacheRiskWarnings: readonly string[];
};
export type LowerPraxisToolsForProviderRequest = {
    providerFamily: ProviderToolSchemaFamily;
    manifest?: AgentManifest;
    tools?: readonly AgentManifest["harness"]["tools"][number][];
    mappings?: readonly ProviderToolNameMapping[];
    includeRuntimeDecisionTools?: boolean;
    visibleToolIds?: readonly string[];
};
export type RaiseProviderToolCallsRequest = {
    providerFamily?: ProviderToolSchemaFamily;
    raw: unknown;
    mappings?: readonly ProviderToolNameMapping[];
    providerRawRef?: string;
};
export type LowerProviderToolResultRequest = {
    providerFamily: ProviderToolSchemaFamily;
    result: ProviderToolResultEnvelope;
};
export declare function providerToolName(toolId: string): string;
export declare function createProviderToolMappings(tools: readonly AgentManifest["harness"]["tools"][number][]): readonly ProviderToolNameMapping[];
export declare function normalizeProviderInputSchema(inputSchema: unknown): Readonly<Record<string, unknown>>;
export declare function createPraxisToolDeclarations(input: {
    tools: readonly AgentManifest["harness"]["tools"][number][];
    mappings?: readonly ProviderToolNameMapping[];
}): readonly PraxisToolDeclaration[];
export declare function lowerPraxisToolsForProvider(request: LowerPraxisToolsForProviderRequest): ProviderToolDeclarationBundle;
export declare function raiseProviderToolCalls(request: RaiseProviderToolCallsRequest): readonly ProviderToolCallEnvelope[];
export declare function lowerProviderToolResult(request: LowerProviderToolResultRequest): Readonly<Record<string, unknown>>;
