import { CallToolResult, TextContent, ImageContent } from '@modelcontextprotocol/sdk/types.js';
import { ModelConfig } from '../models/registry.js';
export interface ToolContext {
    requestId: string;
    userId?: string;
    sessionId?: string;
}
export interface GenerationResult {
    content: Array<TextContent | ImageContent>;
    model: string;
    creditsUsed: number;
    processingTime: number;
    metadata?: Record<string, any>;
}
export declare abstract class BaseTool {
    protected context?: ToolContext | undefined;
    protected abstract readonly name: string;
    protected abstract readonly description: string;
    constructor(context?: ToolContext | undefined);
    abstract execute(params: any): Promise<CallToolResult>;
    protected callModel(model: ModelConfig, parameters: any, saveLocation?: string): Promise<GenerationResult>;
    protected processModelResponse(response: any, model: ModelConfig, prompt?: string, saveLocation?: string): Promise<Array<TextContent | ImageContent>>;
    protected createErrorResponse(error: unknown): CallToolResult;
    protected handleLongRunningOperation(model: ModelConfig, parameters: any): Promise<GenerationResult>;
    private pollForCompletion;
    protected mergeWithDefaults(params: any, model: ModelConfig): any;
    protected saveImageToFile(base64Data: string, mimeType: string, model: ModelConfig, _prompt?: string, saveLocationOverride?: string): Promise<string | null>;
    protected saveAudioToFile(base64Data: string, mimeType: string, model: ModelConfig, saveLocationOverride?: string): Promise<string | null>;
    protected saveVideoToFile(base64Data: string, mimeType: string, model: ModelConfig, saveLocationOverride?: string): Promise<string | null>;
}
//# sourceMappingURL=base.d.ts.map