import type { BaseToolExecutorPort } from "../../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolExecutorPort.js";
import type { BaseToolHandler } from "../../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolDefinition.js";
import { type CodeOverwriteDependencies, type CodeOverwritePracticeProviderName, type CodeOverwriteProviderPractice } from "./dependencies.js";
import { codeOverwriteDescriptor, executeCodeOverwrite as executeCodeOverwriteCore, planCodeOverwrite, type CodeOverwriteOutput, type CodeOverwriteProvider, type CodeOverwriteRequest, type CodeOverwriteResult } from "./core.js";
export * from "./core.js";
export type CodeOverwriteBestPracticeRequest = CodeOverwriteRequest & {
    executor?: BaseToolExecutorPort;
    preferredProvider?: CodeOverwritePracticeProviderName;
};
export type CodeOverwriteHandlerInput = Omit<CodeOverwriteBestPracticeRequest, "executor">;
export type CodeOverwritePracticeSelection = {
    providerName: CodeOverwritePracticeProviderName;
    practice: CodeOverwriteProviderPractice;
    provider?: CodeOverwriteProvider;
};
export declare const codeOverwriteProviderPractices: readonly [{
    readonly providerName: "anthropic";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Claude Code Write tool practice";
        readonly path: "/home/proview/Desktop/three/claude_code_2_1_88/tools";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "runtime-governed";
    readonly notes: readonly ["Whole-file writes require explicit content, scope, and approval boundaries.", "Runtime supplies text IO; storage owns size and hash checks."];
    readonly createProvider: ({ provider, executor }: CodeOverwriteDependencies) => CodeOverwriteProvider | undefined;
}, {
    readonly providerName: "openai";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Codex fs_api/app-server filesystem boundary practice";
        readonly path: "/home/proview/Desktop/three/codex";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "runtime-governed";
    readonly notes: readonly ["Host writes should be runtime-owned, not hidden inside shell commands.", "Praxis avoids shell redirection and keeps output envelopes stable."];
    readonly createProvider: ({ provider, executor }: CodeOverwriteDependencies) => CodeOverwriteProvider | undefined;
}, {
    readonly providerName: "deepmind";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Gemini CLI write-file practice";
        readonly path: "/home/proview/Desktop/three/gemini_cli_0_39_0/packages/core/src/tools";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "runtime-governed";
    readonly notes: readonly ["Write-file practice supports explicit content and path-scope contracts.", "Praxis keeps overwrite approval and byte limits in storage core."];
    readonly createProvider: ({ provider, executor }: CodeOverwriteDependencies) => CodeOverwriteProvider | undefined;
}];
export declare const codeOverwriteBestPracticeDescriptor: {
    readonly toolId: "code.overwrite";
    readonly bestPractice: "storage-owned-code-overwrite-with-runtime-filesystem-support";
    readonly sourcePriority: readonly ["cli", "agent-sdk", "api-sdk", "praxis-native"];
    readonly providerOrder: readonly ["anthropic", "openai", "deepmind"];
    readonly dependencies: readonly import("../../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolDefinition.js").BaseToolDependencyDeclaration[];
};
export declare function selectCodeOverwritePractice(dependencies?: CodeOverwriteDependencies & {
    preferredProvider?: CodeOverwritePracticeProviderName;
}): CodeOverwritePracticeSelection;
export declare function executeCodeOverwrite(request?: CodeOverwriteBestPracticeRequest): ReturnType<typeof executeCodeOverwriteCore>;
export declare const codeOverwriteBaseToolDefinition: import("../../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolDefinition.js").BaseToolDefinition<CodeOverwriteHandlerInput, CodeOverwriteOutput>;
export declare const codeOverwriteHandler: BaseToolHandler<CodeOverwriteHandlerInput, CodeOverwriteOutput>;
export type { CodeOverwriteResult };
export { codeOverwriteDescriptor, planCodeOverwrite };
