import type { BaseToolDefinition, BaseToolDependencyDeclaration, BaseToolHandler, BaseToolInvokeRequest, BaseToolInvokeResult, BaseToolRiskLevel, BaseToolSchemaLike } from "../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolDefinition.js";
export type CodeBasePracticeProviderName = "anthropic" | "openai" | "deepmind" | "praxis-native";
export type CodeBasePracticeSource = {
    kind: "cli" | "agent-sdk" | "api-sdk" | "praxis-native";
    label: string;
    path?: string;
};
export type CodeBasePracticeMetadata<Name extends string = CodeBasePracticeProviderName> = {
    providerName: Name;
    source: CodeBasePracticeSource;
    directCliSupport: boolean;
    sideEffectPolicy?: "read-only" | "runtime-governed" | "preview-only";
    notes?: readonly string[];
};
export type CodeBasePracticeSelection<Name extends string = CodeBasePracticeProviderName> = {
    providerName: Name;
    sourceLabel: string;
    sourceKind?: string;
    sourcePath?: string;
    directCliSupport: boolean;
    sideEffectPolicy?: string;
    notes?: readonly string[];
};
export type CodeToolAuditEvent = {
    type: string;
    toolId: string;
    invocationId: string;
    dryRun: boolean;
    metadata?: Readonly<Record<string, unknown>>;
};
export type CodeToolFailure<Code extends string = string> = {
    ok: false;
    toolId: string;
    error: {
        code: Code;
        message: string;
        boundary: string;
        safeForRuntimeInspection: true;
        internalDetailExposed: false;
    };
    audit: readonly CodeToolAuditEvent[];
    events: readonly string[];
};
export type CodeToolSuccess<Output> = {
    ok: true;
    toolId: string;
    output: Output;
    audit: readonly CodeToolAuditEvent[];
    events: readonly string[];
};
export type CodeToolResult<Output, Code extends string = string> = CodeToolSuccess<Output> | CodeToolFailure<Code>;
export type CodeBaseToolDefinitionOptions<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 codeBaseToolSkillDocPath(toolId: string, storageGroup: string): string;
export declare function codeBaseToolSourcePath(toolId: string, storageGroup: string): string;
export declare function codeBaseToolStoragePracticePath(toolId: string, storageGroup: string): string;
export declare function jsonSchema(name: string, schema: unknown): BaseToolSchemaLike;
export declare function createCodeBaseToolDefinition<Input, Output>(options: CodeBaseToolDefinitionOptions<Input, Output>): BaseToolDefinition<Input, Output>;
export declare function buildCodeBasePracticeAuditMetadata(selection: CodeBasePracticeSelection): Readonly<Record<string, unknown>>;
export declare function adaptCodeToolResultToInvokeResult<Output, Code extends string = string>(result: CodeToolResult<Output, Code>): BaseToolInvokeResult<Output>;
export declare function createCodeBaseCoreHandler<Input, Output, Code extends string = string>(definition: BaseToolDefinition<Input, Output>, invokeCore: (request: BaseToolInvokeRequest<Input>) => Promise<CodeToolResult<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>>;
