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 CodeModifyDependencies, type CodeModifyPracticeProviderName, type CodeModifyProviderPractice } from "./dependencies.js";
import { codeModifyDescriptor, executeCodeModify as executeCodeModifyCore, planCodeModify, type CodeModifyOutput, type CodeModifyProvider, type CodeModifyRequest, type CodeModifyResult } from "./core.js";
export * from "./core.js";
export type CodeModifyBestPracticeRequest = CodeModifyRequest & {
    executor?: BaseToolExecutorPort;
    preferredProvider?: CodeModifyPracticeProviderName;
};
export type CodeModifyHandlerInput = Omit<CodeModifyBestPracticeRequest, "executor">;
export type CodeModifyPracticeSelection = {
    providerName: CodeModifyPracticeProviderName;
    practice: CodeModifyProviderPractice;
    provider?: CodeModifyProvider;
};
export declare const codeModifyProviderPractices: readonly [{
    readonly providerName: "anthropic";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Claude Code Edit tool practice";
        readonly path: "/home/proview/Desktop/three/claude_code_2_1_88/tools";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "runtime-governed";
    readonly notes: readonly ["Bounded text replacement should be explicit and permissioned.", "Provider reads/writes raw text only; storage owns first/all replacement semantics."];
    readonly createProvider: ({ provider, executor }: CodeModifyDependencies) => CodeModifyProvider | undefined;
}, {
    readonly providerName: "openai";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Codex apply_patch practice";
        readonly path: "/home/proview/Desktop/three/codex";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "runtime-governed";
    readonly notes: readonly ["Patch intent should be represented as structured tool arguments instead of shell text rewrites.", "Praxis converts bounded replacement to final content before runtime write."];
    readonly createProvider: ({ provider, executor }: CodeModifyDependencies) => CodeModifyProvider | undefined;
}, {
    readonly providerName: "deepmind";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Gemini CLI edit 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 ["Edit practice evidence supports scoped, reviewable text changes.", "Praxis storage owns match-count and max-replacement bounds."];
    readonly createProvider: ({ provider, executor }: CodeModifyDependencies) => CodeModifyProvider | undefined;
}];
export declare const codeModifyBestPracticeDescriptor: {
    readonly toolId: "code.modify";
    readonly bestPractice: "storage-owned-bounded-code-modify-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 selectCodeModifyPractice(dependencies?: CodeModifyDependencies & {
    preferredProvider?: CodeModifyPracticeProviderName;
}): CodeModifyPracticeSelection;
export declare function executeCodeModify(request?: CodeModifyBestPracticeRequest): ReturnType<typeof executeCodeModifyCore>;
export declare const codeModifyBaseToolDefinition: import("../../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolDefinition.js").BaseToolDefinition<CodeModifyHandlerInput, CodeModifyOutput>;
export declare const codeModifyHandler: BaseToolHandler<CodeModifyHandlerInput, CodeModifyOutput>;
export type { CodeModifyResult };
export { codeModifyDescriptor, planCodeModify };
