/**
 * Standardized tool result types for consistent error handling
 */
export type ToolResultStatus = 'success' | 'error' | 'validation_error' | 'permission_denied' | 'not_found';
export interface ToolResult<T = any> {
    readonly status: ToolResultStatus;
    readonly data?: T;
    readonly error?: {
        readonly code: string;
        readonly message: string;
        readonly details?: any;
    };
    readonly metadata?: {
        readonly executionTimeMs?: number;
        readonly toolName?: string;
        readonly [key: string]: any;
    };
}
export declare const ToolErrorCodes: {
    readonly INVALID_INPUT: "INVALID_INPUT";
    readonly MISSING_REQUIRED_FIELD: "MISSING_REQUIRED_FIELD";
    readonly INVALID_FORMAT: "INVALID_FORMAT";
    readonly PERMISSION_DENIED: "PERMISSION_DENIED";
    readonly INSUFFICIENT_PERMISSIONS: "INSUFFICIENT_PERMISSIONS";
    readonly NOT_FOUND: "NOT_FOUND";
    readonly RESOURCE_UNAVAILABLE: "RESOURCE_UNAVAILABLE";
    readonly EXECUTION_FAILED: "EXECUTION_FAILED";
    readonly TIMEOUT: "TIMEOUT";
    readonly EXTERNAL_SERVICE_ERROR: "EXTERNAL_SERVICE_ERROR";
    readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
};
export type ToolErrorCode = typeof ToolErrorCodes[keyof typeof ToolErrorCodes];
/**
 * Helper functions for creating standardized tool results
 */
export declare class ToolResponse {
    static success<T>(data: T, metadata?: ToolResult['metadata']): ToolResult<T>;
    static error(code: ToolErrorCode, message: string, details?: any, metadata?: ToolResult['metadata']): ToolResult;
    static validationError(message: string, details?: any, metadata?: ToolResult['metadata']): ToolResult;
    static permissionDenied(message: string, requiredPermissions?: string[], metadata?: ToolResult['metadata']): ToolResult;
    static notFound(resource: string, identifier?: string, metadata?: ToolResult['metadata']): ToolResult;
}
/**
 * Tool execution wrapper that provides standardized error handling
 */
export declare function withErrorHandling<TArgs, TResult, TContext>(toolName: string, executor: (args: TArgs, context: TContext) => Promise<TResult> | TResult): (args: TArgs, context: TContext) => Promise<ToolResult<TResult>>;
/**
 * Permission checking helper
 */
export declare function requirePermissions<TContext extends {
    permissions?: string[];
}>(requiredPermissions: string[]): (context: TContext) => ToolResult | null;
/**
 * Convert ToolResult to string for backward compatibility with existing tools
 */
export declare function toolResultToString(result: ToolResult): string;
//# sourceMappingURL=tool-results.d.ts.map