/**
 * Image Generation Database Operations
 *
 * Handles caching, storage, and retrieval of generated images.
 * Ported from Python ws/image_generation.py database operations.
 */
import type { ImageProvider } from './image_generator.js';
export interface GeneratedImage {
    id: number;
    image_url: string;
    prompt: string;
    style_preset: string;
    event_type: string | null;
    event_category: string | null;
    provider: ImageProvider;
    model_version: string | null;
    generation_cost: number;
    image_width: number;
    image_height: number;
    is_active: boolean;
    quality_rating: number | null;
    tags: string[] | null;
    created_at: Date;
    updated_at: Date;
}
export interface QueueItem {
    id: number;
    prompt: string;
    style_preset: string;
    event_type: string | null;
    event_category: string | null;
    priority: number;
    status: 'pending' | 'processing' | 'completed' | 'failed';
    provider: ImageProvider;
    error_message: string | null;
    generated_image_id: number | null;
    attempts: number;
    max_attempts: number;
    created_at: Date;
    updated_at: Date;
    completed_at: Date | null;
}
export interface SaveImageOptions {
    imageUrl: string;
    prompt: string;
    provider: ImageProvider;
    eventType?: string;
    eventCategory?: string;
    stylePreset?: string;
    width?: number;
    height?: number;
    cost?: number;
    tags?: string[];
}
/**
 * Create image generation tables if they don't exist
 */
export declare function createImageTables(): Promise<void>;
/**
 * Save a generated image to the database
 */
export declare function saveGeneratedImage(options: SaveImageOptions): Promise<number | null>;
/**
 * Get a cached image from database
 */
export declare function getCachedImage(options: {
    eventType?: string;
    eventCategory?: string;
    promptKeywords?: string;
}): Promise<GeneratedImage | null>;
/**
 * Get image URL for an event (synchronous-style for use in event functions)
 */
export declare function getEventImageUrl(eventType: string, eventCategory?: string): Promise<string | null>;
/**
 * Get all images for a category
 */
export declare function getImagesByCategory(category: string): Promise<GeneratedImage[]>;
/**
 * Get image statistics
 */
export declare function getImageStats(): Promise<{
    totalImages: number;
    totalCost: number;
    byProvider: Record<string, number>;
    byCategory: Record<string, number>;
}>;
/**
 * Rate an image quality (1-5)
 */
export declare function rateImage(imageId: number, rating: number): Promise<boolean>;
/**
 * Deactivate an image
 */
export declare function deactivateImage(imageId: number): Promise<boolean>;
/**
 * Map an event to an image
 */
export declare function mapEventToImage(eventFunctionName: string, eventType: string, imageId: number, isPrimary?: boolean): Promise<boolean>;
//# sourceMappingURL=database.d.ts.map