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 { executeCodeRead as executeCodeReadCore, type CodeReadOutput, type CodeReadProvider, type CodeReadRequest } from "./core.js";
import { type CodeReadDependencies, type CodeReadPracticeProviderName, type CodeReadProviderPractice } from "./dependencies.js";
export * from "./core.js";
export type CodeReadBestPracticeRequest = CodeReadRequest & {
    executor?: BaseToolExecutorPort;
    preferredProvider?: CodeReadPracticeProviderName;
};
export type CodeReadHandlerInput = Omit<CodeReadBestPracticeRequest, "executor">;
export type CodeReadPracticeSelection = {
    providerName: CodeReadPracticeProviderName;
    practice: CodeReadProviderPractice;
    provider?: CodeReadProvider;
};
export declare const codeReadProviderPractices: readonly [{
    readonly providerName: "anthropic";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Claude Code 2.1.88 Read tool practice";
        readonly path: "/home/proview/Desktop/three/claude_code_2_1_88/tools/FileReadTool";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "read-only";
    readonly notes: readonly ["Claude Code keeps file reading behind a named tool with path, offset, limit, permission, and result-shaping boundaries.", "Praxis keeps read semantics in storage core and uses runtime filesystem support only for host IO."];
    readonly createProvider: ({ provider, executor }: CodeReadDependencies) => CodeReadProvider | undefined;
}, {
    readonly providerName: "openai";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Codex Rust read_file and fs_api read boundaries";
        readonly path: "/home/proview/Desktop/three/codex_rust_0_125_0/codex-rs/core/src/tools/handlers/read_file.rs";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "read-only";
    readonly notes: readonly ["Codex contributes line-oriented read behavior, truncation, sandbox-aware filesystem boundaries, and app-server fs API separation.", "Praxis adopts the boundary by keeping path/range/result semantics in storage core and host IO behind BaseToolExecutorPort.filesystem.readText."];
    readonly createProvider: ({ provider, executor }: CodeReadDependencies) => CodeReadProvider | undefined;
}, {
    readonly providerName: "deepmind";
    readonly source: {
        readonly kind: "cli";
        readonly label: "Gemini CLI 0.39.0 read-file and read-many-files tools";
        readonly path: "/home/proview/Desktop/three/gemini_cli_0_39_0/packages/core/src/tools/read-file.ts";
    };
    readonly directCliSupport: true;
    readonly sideEffectPolicy: "read-only";
    readonly notes: readonly ["Gemini contributes start/end line reads, multi-file reading, ignore-aware file selection, and truncation guidance.", "Praxis keeps the multi-target contract in code.read storage while runtime provides the concrete text reads."];
    readonly createProvider: ({ provider, executor }: CodeReadDependencies) => CodeReadProvider | undefined;
}];
export declare const codeReadBestPracticeDescriptor: {
    readonly toolId: "code.read";
    readonly bestPractice: "storage-owned-code-read-with-runtime-filesystem-support";
    readonly sourcePriority: readonly ["cli", "agent-sdk", "api-sdk", "praxis-native"];
    readonly providerOrder: readonly ["anthropic", "openai", "deepmind"];
    readonly dependencies: ({
        dependencyId: string;
        kind: "filesystem";
        required: true;
        description: string;
    } | {
        dependencyId: string;
        kind: "permission";
        required: true;
        description: string;
    } | {
        dependencyId: string;
        kind: "runtime";
        required: true;
        description: string;
    })[];
};
export declare function selectCodeReadPractice(dependencies?: CodeReadDependencies & {
    preferredProvider?: CodeReadPracticeProviderName;
}): CodeReadPracticeSelection;
export declare function executeCodeRead(request?: CodeReadBestPracticeRequest): ReturnType<typeof executeCodeReadCore>;
export declare const codeReadBaseToolDefinition: import("../../../../../agentCore/agent_executionEngine/basic_toolLayer/baseTools/baseToolDefinition.js").BaseToolDefinition<CodeReadHandlerInput, CodeReadOutput>;
export declare const codeReadHandler: BaseToolHandler<CodeReadHandlerInput, CodeReadOutput>;
