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 CodeDeleteDependencies, type CodeDeletePracticeProviderName, type CodeDeleteProviderPractice } from "./dependencies.js";
import { codeDeleteDescriptor, executeCodeDelete as executeCodeDeleteCore, planCodeDelete, type CodeDeleteOutput, type CodeDeleteProvider, type CodeDeleteRequest, type CodeDeleteResult } from "./core.js";
export * from "./core.js";
export type CodeDeleteBestPracticeRequest = CodeDeleteRequest & {
    executor?: BaseToolExecutorPort;
    preferredProvider?: CodeDeletePracticeProviderName;
};
export type CodeDeleteHandlerInput = Omit<CodeDeleteBestPracticeRequest, "executor">;
export type CodeDeletePracticeSelection = {
    providerName: CodeDeletePracticeProviderName;
    practice: CodeDeleteProviderPractice;
    provider?: CodeDeleteProvider;
};
export declare const codeDeleteProviderPractices: readonly [{
    readonly providerName: "anthropic";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Claude Code file edit/delete permission practice";
        readonly path: "/home/proview/Desktop/three/claude_code_2_1_88/tools";
    };
    readonly directCliSupport: false;
    readonly sideEffectPolicy: "runtime-governed";
    readonly notes: readonly ["Deletion is high-risk and must be scoped, approved, and auditable.", "Runtime supplies delete/text IO; storage owns file/directory/range semantics."];
    readonly createProvider: ({ provider, executor }: CodeDeleteDependencies) => CodeDeleteProvider | undefined;
}, {
    readonly providerName: "openai";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Codex patch/delete-file practice";
        readonly path: "/home/proview/Desktop/three/codex";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "runtime-governed";
    readonly notes: readonly ["Delete intent should be represented as a governed edit action instead of shell rm.", "Praxis makes range deletion a storage-owned text transform."];
    readonly createProvider: ({ provider, executor }: CodeDeleteDependencies) => CodeDeleteProvider | undefined;
}, {
    readonly providerName: "deepmind";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Gemini CLI edit/delete practice";
        readonly path: "/home/proview/Desktop/three/gemini_cli_0_39_0/packages/core/src/tools";
    };
    readonly directCliSupport: false;
    readonly sideEffectPolicy: "runtime-governed";
    readonly notes: readonly ["Deletion support should be explicit and approval-gated.", "Praxis delegates host deletion to runtime after storage validation."];
    readonly createProvider: ({ provider, executor }: CodeDeleteDependencies) => CodeDeleteProvider | undefined;
}];
export declare const codeDeleteBestPracticeDescriptor: {
    readonly toolId: "code.delete";
    readonly bestPractice: "storage-owned-code-delete-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 selectCodeDeletePractice(dependencies?: CodeDeleteDependencies & {
    preferredProvider?: CodeDeletePracticeProviderName;
}): CodeDeletePracticeSelection;
export declare function executeCodeDelete(request?: CodeDeleteBestPracticeRequest): ReturnType<typeof executeCodeDeleteCore>;
export declare const codeDeleteBaseToolDefinition: import("../../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolDefinition.js").BaseToolDefinition<CodeDeleteHandlerInput, CodeDeleteOutput>;
export declare const codeDeleteHandler: BaseToolHandler<CodeDeleteHandlerInput, CodeDeleteOutput>;
export type { CodeDeleteResult };
export { codeDeleteDescriptor, planCodeDelete };
