import type { PortableTool } from "../portable-tool.js";
export declare const READ_TOOL_NAME: "read";
export interface ReadToolParams {
    path: string;
    offset?: number;
    limit?: number;
}
export declare const READ_TOOL_SCHEMA: {
    readonly type: "object";
    readonly properties: {
        readonly path: {
            readonly type: "string";
            readonly description: "Absolute path to the file to read.";
        };
        readonly offset: {
            readonly type: "number";
            readonly description: "Line number to start reading from (1-indexed). Default: 1.";
        };
        readonly limit: {
            readonly type: "number";
            readonly description: "Maximum number of lines to read. Default/max: 2000.";
        };
    };
    readonly required: readonly ["path"];
};
export type ReadResultType = "text" | "image" | "binary_rejected";
/** Deps injected by the host runtime for file reading. */
export interface ReadToolDeps {
    /** Read file content. Return string for text, image path for images, or rejection. */
    readFile(path: string): Promise<{
        type: "text";
        text: string;
    } | {
        type: "image";
        localPath: string;
        mimeType: string;
        sizeBytes?: number;
        headerHex?: string;
    } | {
        type: "binary";
        mimeType: string;
    }>;
    /** Resolve a relative path to absolute. */
    resolvePath(input: string): string;
    /**
     * Validate read access for the given path.
     * Returns null if allowed, or an error message if blocked.
     * Blocks device paths (/dev/zero, /dev/random, etc.) and
     * paths outside the allowed workspace.
     */
    validatePath?(path: string): string | null;
}
export declare function createReadTool(deps: ReadToolDeps): PortableTool<ReadToolParams>;
