import type { ImageProvider, ImageGenerationRequest, ImageGenerationResult, ImageDescriptionResult, ImageTaggingResult, ProviderError } from '../types/index.js'; /** * Abstract base class for image providers */ export declare abstract class BaseImageProvider implements ImageProvider { abstract name: string; protected timeout: number; protected retryAttempts: number; protected retryDelay: number; constructor(timeout?: number); /** * Generate image using the provider */ abstract generateImage(request: ImageGenerationRequest): Promise; /** * Describe image content (optional) */ describeImage?(imageUrl: string): Promise; /** * Tag image content (optional) */ tagImage?(imageUrl: string): Promise; /** * Check if provider is available and configured */ abstract isAvailable(): Promise; /** * Validate image generation request */ protected validateRequest(request: ImageGenerationRequest): void; /** * Create provider-specific error */ protected createError(code: string, message: string, details?: any): ProviderError; /** * Execute with retry logic */ protected executeWithRetry(operation: () => Promise, operationName: string): Promise; /** * Check if error is a client error (shouldn't retry) */ protected isClientError(error: any): boolean; /** * Create timeout promise */ private createTimeoutPromise; /** * Delay utility */ private delay; /** * Sanitize prompt (remove potentially harmful content) */ protected sanitizePrompt(prompt: string): string; /** * Get supported formats for this provider */ getSupportedFormats(): string[]; /** * Get supported dimensions for this provider */ getSupportedDimensions(): { width: number; height: number; }[]; /** * Get maximum image count supported */ getMaxImageCount(): number; /** * Check if provider supports feature */ supportsFeature(feature: 'generation' | 'description' | 'tagging' | 'transparency' | 'logo'): boolean; /** * Get provider information */ getInfo(): { name: string; supportedFormats: string[]; supportedDimensions: { width: number; height: number; }[]; maxImageCount: number; features: string[]; }; } //# sourceMappingURL=baseProvider.d.ts.map