/**
 * Tool Execution Safety System
 * Provides isolation, timeouts, and retry mechanisms for tool execution
 */
export interface ExecutionOptions {
    timeout?: number;
    maxRetries?: number;
    retryDelay?: number;
    circuitBreakerThreshold?: number;
}
export interface ExecutionResult<T = any> {
    success: boolean;
    result?: T;
    error?: Error;
    executionTime: number;
    retryCount: number;
    circuitBreakerTriggered: boolean;
}
export declare class ToolExecutionSafetyWrapper {
    private static instance;
    private circuitBreakers;
    private executionMetrics;
    static getInstance(): ToolExecutionSafetyWrapper;
    /**
     * Execute a tool with safety wrapper including timeouts, retries, and circuit breaker
     */
    executeTool<T>(toolName: string, handler: () => Promise<T>, options?: ExecutionOptions): Promise<ExecutionResult<T>>;
    /**
     * Create timeout promise that rejects after specified time
     */
    private createTimeoutPromise;
    /**
     * Check if error is critical (shouldn't retry)
     */
    private isCriticalError;
    /**
     * Get or create circuit breaker for tool
     */
    private getCircuitBreaker;
    /**
     * Record successful execution
     */
    private recordSuccess;
    /**
     * Record failed execution
     */
    private recordFailure;
    /**
     * Get or create execution metrics for tool
     */
    private getOrCreateMetrics;
    /**
     * Get execution statistics for monitoring
     */
    getExecutionStats(): ExecutionStats;
    /**
     * Reset circuit breaker for a tool
     */
    resetCircuitBreaker(toolName: string): void;
    /**
     * Sleep utility for retry delays
     */
    private sleep;
}
/**
 * Execution metrics interface
 */
interface ExecutionMetrics {
    toolName: string;
    successCount: number;
    failureCount: number;
    lastExecutionTime: number;
    lastError: string | null;
}
/**
 * Execution statistics interface
 */
interface ExecutionStats {
    tools: {
        [key: string]: ExecutionMetrics;
    };
    totalTools: number;
    circuitBreakersOpen: number;
}
export {};
//# sourceMappingURL=tool-execution-safety.d.ts.map