import type { BaseToolDefinition, BaseToolDependencyDeclaration, BaseToolHandler, BaseToolInvokeRequest, BaseToolInvokeResult, BaseToolRiskLevel, BaseToolSchemaLike } from "../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolDefinition.js";
export type McpBasePracticeProviderName = "anthropic" | "openai" | "deepmind" | "praxis-native";
export type McpBasePracticeSource = {
    kind: "cli" | "agent-sdk" | "api-sdk" | "praxis-native";
    label: string;
    path?: string;
};
export type McpBasePracticeMetadata<Name extends string = McpBasePracticeProviderName> = {
    providerName: Name;
    source: McpBasePracticeSource;
    directCliSupport: boolean;
    sideEffectPolicy?: "runtime-governed" | "runtime-owned-client" | "preview-only";
    notes?: readonly string[];
};
export type McpBasePracticeSelection<Name extends string = McpBasePracticeProviderName> = {
    providerName: Name;
    sourceLabel: string;
    sourceKind?: string;
    sourcePath?: string;
    directCliSupport: boolean;
    sideEffectPolicy?: string;
    notes?: readonly string[];
};
export type McpToolAuditEvent = {
    type: string;
    toolId: string;
    invocationId: string;
    dryRun: boolean;
    metadata?: Readonly<Record<string, unknown>>;
};
export type McpToolFailure<Code extends string = string> = {
    ok: false;
    toolId: string;
    error: {
        code: Code;
        message: string;
        boundary: string;
        publicSafe: true;
        safeForRuntimeInspection: true;
        internalDetailExposed: false;
    };
    audit: readonly McpToolAuditEvent[];
    events: readonly string[];
};
export type McpToolSuccess<Output> = {
    ok: true;
    toolId: string;
    output: Output;
    audit: readonly McpToolAuditEvent[];
    events: readonly string[];
};
export type McpToolResult<Output, Code extends string = string> = McpToolSuccess<Output> | McpToolFailure<Code>;
export type McpBaseToolDefinitionOptions<Input, Output> = {
    toolId: string;
    title: string;
    description: string;
    summary: string;
    storageGroup: string;
    riskLevel?: BaseToolRiskLevel;
    permissionHints: readonly string[];
    dependencies: readonly BaseToolDependencyDeclaration[];
    inputSchema?: BaseToolSchemaLike;
    outputSchema?: BaseToolSchemaLike;
    storagePolicy?: BaseToolDefinition["storagePolicy"];
    metadata?: Readonly<Record<string, unknown>>;
};
export declare function isJsonObject(value: unknown): value is Record<string, unknown>;
export declare function readStringArray(value: unknown): readonly string[] | undefined;
export declare function cleanStringList(value: unknown): readonly string[] | undefined;
export declare function optionalTrimmedString(value: unknown): string | undefined;
export declare function guardAccepted(guard: unknown): boolean;
export declare function mcpBaseToolSkillDocPath(toolId: string, storageGroup: string): string;
export declare function mcpBaseToolSourcePath(toolId: string, storageGroup: string): string;
export declare function mcpBaseToolStoragePracticePath(toolId: string, storageGroup: string): string;
export declare function jsonSchema(name: string, schema: unknown): BaseToolSchemaLike;
export declare function createMcpBaseToolDefinition<Input, Output>(options: McpBaseToolDefinitionOptions<Input, Output>): BaseToolDefinition<Input, Output>;
export declare function buildMcpPracticeAuditMetadata(selection: McpBasePracticeSelection): Readonly<Record<string, unknown>>;
export declare function adaptMcpToolResultToInvokeResult<Output, Code extends string = string>(result: McpToolResult<Output, Code>): BaseToolInvokeResult<Output>;
export declare function createMcpCoreHandler<Input, Output, Code extends string = string>(definition: BaseToolDefinition<Input, Output>, invokeCore: (request: BaseToolInvokeRequest<Input>) => Promise<McpToolResult<Output, Code>>): BaseToolHandler<Input, Output>;
export declare function injectRuntimeInvocationMetadata(metadata: Readonly<Record<string, unknown>> | undefined, auditMetadata: Readonly<Record<string, unknown>> | undefined, request: Pick<BaseToolInvokeRequest, "runtimeId" | "sessionId" | "toolCallId">): Readonly<Record<string, unknown>>;
