import { EventEmitter } from "events";
import { Tool, ToolMetadata, ToolContext, ToolResult } from "@/types/interfaces/tool";
import { ToolConfig } from "@/types/schemas/tool-config";
export declare abstract class BaseTool extends EventEmitter implements Tool {
    protected config: ToolConfig;
    protected metadata: ToolMetadata;
    constructor(config: ToolConfig);
    get name(): string;
    get description(): string;
    get input(): ToolConfig['input'];
    abstract execute(input: any, context?: ToolContext): Promise<ToolResult>;
    protected validateConfig(config: ToolConfig): void;
    protected createContext(): ToolContext;
    protected executeWithRetry(fn: () => Promise<any>, maxRetries?: number): Promise<any>;
    private delay;
}
