/**
 * HTTP Fetch Tool
 *
 * Make HTTP requests to APIs and web resources.
 * Supports GET, POST, PUT, DELETE with JSON handling.
 */
import type { ToolResult } from '../types/index.js';
type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
interface FetchParams {
    url: string;
    method?: HttpMethod;
    headers?: Record<string, string>;
    body?: unknown;
    timeout?: number;
    followRedirects?: boolean;
    parseJson?: boolean;
}
export declare class FetchTool {
    name: string;
    description: string;
    dangerLevel: 'safe' | 'low' | 'medium' | 'high';
    inputSchema: {
        type: "object";
        properties: {
            url: {
                type: string;
                description: string;
            };
            method: {
                type: string;
                enum: string[];
                description: string;
            };
            headers: {
                type: string;
                description: string;
            };
            body: {
                type: string[];
                description: string;
            };
            timeout: {
                type: string;
                description: string;
            };
            followRedirects: {
                type: string;
                description: string;
            };
            parseJson: {
                type: string;
                description: string;
            };
        };
        required: string[];
    };
    /**
     * Execute HTTP request
     */
    execute(params: FetchParams): Promise<ToolResult>;
    /**
     * Check if URL is internal/local
     */
    private isInternalUrl;
    /**
     * Convenience method for GET requests
     */
    get(url: string, headers?: Record<string, string>): Promise<ToolResult>;
    /**
     * Convenience method for POST requests
     */
    post(url: string, body: unknown, headers?: Record<string, string>): Promise<ToolResult>;
    /**
     * Convenience method for PUT requests
     */
    put(url: string, body: unknown, headers?: Record<string, string>): Promise<ToolResult>;
    /**
     * Convenience method for DELETE requests
     */
    delete(url: string, headers?: Record<string, string>): Promise<ToolResult>;
}
export declare function getFetchTool(): FetchTool;
export {};
