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 CodeFormatDependencies, type CodeFormatPracticeProviderName, type CodeFormatProviderPractice } from "./dependencies.js";
import { codeFormatDescriptor, executeCodeFormat as executeCodeFormatCore, planCodeFormat, type CodeFormatOutput, type CodeFormatProvider, type CodeFormatRequest, type CodeFormatResult } from "./core.js";
export * from "./core.js";
export type CodeFormatBestPracticeRequest = CodeFormatRequest & {
    executor?: BaseToolExecutorPort;
    preferredProvider?: CodeFormatPracticeProviderName;
};
export type CodeFormatHandlerInput = Omit<CodeFormatBestPracticeRequest, "executor">;
export type CodeFormatPracticeSelection = {
    providerName: CodeFormatPracticeProviderName;
    practice: CodeFormatProviderPractice;
    provider?: CodeFormatProvider;
};
export declare const codeFormatProviderPractices: readonly [{
    readonly providerName: "anthropic";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Claude Code edit-after-format practice";
        readonly path: "/home/proview/Desktop/three/claude_code_2_1_88/tools";
    };
    readonly directCliSupport: false;
    readonly sideEffectPolicy: "runtime-governed";
    readonly notes: readonly ["Formatting should be represented as edit intent, not an untracked shell formatter run.", "Praxis asks runtime/LSP for preview edits and owns final write semantics."];
    readonly createProvider: ({ provider, executor }: CodeFormatDependencies) => CodeFormatProvider | undefined;
}, {
    readonly providerName: "openai";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Codex formatter/apply_patch boundary practice";
        readonly path: "/home/proview/Desktop/three/codex";
    };
    readonly directCliSupport: false;
    readonly sideEffectPolicy: "runtime-governed";
    readonly notes: readonly ["Formatter output should be applied through governed filesystem support.", "Praxis uses structured LSP preview edits instead of shelling out."];
    readonly createProvider: ({ provider, executor }: CodeFormatDependencies) => CodeFormatProvider | undefined;
}, {
    readonly providerName: "deepmind";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Gemini CLI formatting/edit 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 ["Formatter execution remains a runtime responsibility; storage owns the tool contract.", "Praxis keeps provider output as edits/formatted content and performs guarded write through runtime filesystem."];
    readonly createProvider: ({ provider, executor }: CodeFormatDependencies) => CodeFormatProvider | undefined;
}];
export declare const codeFormatBestPracticeDescriptor: {
    readonly toolId: "code.format";
    readonly bestPractice: "storage-owned-code-format-with-runtime-lsp-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 selectCodeFormatPractice(dependencies?: CodeFormatDependencies & {
    preferredProvider?: CodeFormatPracticeProviderName;
}): CodeFormatPracticeSelection;
export declare function executeCodeFormat(request?: CodeFormatBestPracticeRequest): ReturnType<typeof executeCodeFormatCore>;
export declare const codeFormatBaseToolDefinition: import("../../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolDefinition.js").BaseToolDefinition<CodeFormatHandlerInput, CodeFormatOutput>;
export declare const codeFormatHandler: BaseToolHandler<CodeFormatHandlerInput, CodeFormatOutput>;
export type { CodeFormatResult };
export { codeFormatDescriptor, planCodeFormat };
