/**
 * 기본 도구 클래스
 * 모든 MCP 도구의 기본 구조를 제공
 */
import type { ToolDefinition, ToolContext, ToolResult } from './types.js';
import type { z } from 'zod';
export declare abstract class BaseTool {
    protected name: string;
    protected description: string;
    protected inputSchema: z.ZodTypeAny | Record<string, unknown>;
    constructor(name: string, description: string, inputSchema: z.ZodTypeAny | Record<string, unknown>);
    /**
     * 도구 정의 반환
     */
    getDefinition(): ToolDefinition;
    /**
     * 도구 실행 (추상 메서드)
     */
    abstract handle(params: unknown, context: ToolContext): Promise<ToolResult>;
    /**
     * 성공 결과 생성
     */
    protected createSuccessResult(data: unknown): ToolResult;
    /**
     * 에러 결과 생성
     * ToolResult 인터페이스를 준수하면서 기존 ToolError 형식도 지원
     */
    protected createErrorResult(error: string, message?: string, details?: string): ToolResult & {
        error: string;
        message?: string;
        details?: string;
    };
    /**
     * 안전한 JSON 파싱
     */
    protected safeJsonParse(jsonString: string, fallback?: unknown): unknown;
    /**
     * 안전한 문자열 검증
     */
    protected validateString(value: any, fieldName: string, maxLength?: number): string;
    /**
     * 안전한 숫자 검증
     */
    protected validateNumber(value: any, fieldName: string, min?: number, max?: number): number;
    /**
     * 안전한 배열 검증
     */
    protected validateArray(value: unknown, fieldName: string, maxLength?: number): unknown[];
    /**
     * 에러 로깅
     */
    protected logError(error: Error, context: string, additionalData?: Record<string, unknown>): void;
    /**
     * 경고 로깅
     */
    protected logWarning(message: string, additionalData?: Record<string, unknown>): void;
    /**
     * 정보 로깅
     */
    protected logInfo(message: string, additionalData?: Record<string, unknown>): void;
    /**
     * 데이터베이스 연결 확인
     */
    protected validateDatabase(context: ToolContext): void;
    /**
     * 서비스 확인 (타입 가드)
     */
    protected validateService<T>(service: T | undefined, serviceName: string): asserts service is T;
    /**
     * 실패 감지 훅 (Phase 2)
     * Tool 실행 중 에러 발생 시 FailureDetector를 통해 실패 이벤트를 감지하고 큐에 추가
     */
    protected handleFailure(error: Error, params: unknown, context: ToolContext, executionTimeMs?: number): Promise<void>;
}
//# sourceMappingURL=base-tool.d.ts.map