/**
 * SQLiteデータベース管理ユーティリティ
 */
import type { Job, JobStatus } from '../types/job.js';
import type { ImageRecord, ListHistoryFilters } from '../types/history.js';
export declare class JobDatabase {
    private db;
    private statements;
    constructor(dbPath: string);
    /**
     * プリペアドステートメントを事前準備（パフォーマンス最適化）
     */
    private prepareStatements;
    /**
     * データベースの初期化（テーブル作成）
     */
    private initialize;
    /**
     * ジョブを作成
     */
    createJob(job: Job): void;
    /**
     * ジョブをIDで取得
     */
    getJob(jobId: string): Job | null;
    /**
     * ジョブステータスを更新
     */
    updateJobStatus(jobId: string, status: JobStatus, startedAt?: Date, completedAt?: Date): void;
    /**
     * ジョブ結果を更新
     */
    updateJobResult(jobId: string, result: any): void;
    /**
     * ジョブエラーを更新
     */
    updateJobError(jobId: string, error: string): void;
    /**
     * ジョブ一覧を取得
     */
    listJobs(status?: JobStatus, limit?: number): Job[];
    /**
     * 実行中のジョブを取得
     */
    getRunningJobs(): Job[];
    /**
     * データベース行をJobオブジェクトに変換
     */
    private rowToJob;
    /**
     * トランザクション内で関数を実行
     * 成功時に自動コミット、エラー時にロールバック
     */
    transaction<T>(fn: () => T): T;
    /**
     * データベース接続を閉じる
     */
    close(): void;
    /**
     * 画像履歴を作成
     */
    createImageHistory(record: Omit<ImageRecord, 'createdAt'> & {
        createdAt?: Date;
    }): void;
    /**
     * 画像履歴をUUIDで取得
     */
    getImageHistory(uuid: string): ImageRecord | null;
    /**
     * 画像履歴一覧を取得
     */
    listImageHistory(filters?: ListHistoryFilters, sortBy?: 'created_at' | 'file_size', sortOrder?: 'asc' | 'desc', limit?: number, offset?: number): ImageRecord[];
    /**
     * 画像履歴を検索（フルテキスト検索）
     */
    searchImageHistory(searchQuery: string, filters?: ListHistoryFilters, limit?: number): ImageRecord[];
    /**
     * 画像履歴を削除
     */
    deleteImageHistory(uuid: string): boolean;
    /**
     * パラメータハッシュで画像履歴を検索
     */
    findImagesByParamsHash(paramsHash: string): ImageRecord[];
    /**
     * 画像履歴のファイルパスを更新
     */
    updateImageFilePath(uuid: string, newFilePath: string): boolean;
    /**
     * データベース行をImageRecordオブジェクトに変換
     */
    private rowToImageRecord;
}
//# sourceMappingURL=database.d.ts.map