import type { IConfigSnapshotRepository } from '../../application/ports/outbound/IConfigSnapshotRepository.js'; import { ConfigSnapshot } from '../../domain/entities/ConfigSnapshot.js'; import type { ConfigSnapshotDatabase } from './ConfigSnapshotDatabase.js'; /** * SqliteConfigSnapshotRepository * Implements IConfigSnapshotRepository using SQLite database storage. * Stores snapshot metadata in config_snapshots table and file metadata * in a separate config_snapshot_files table with CASCADE delete. */ export declare class SqliteConfigSnapshotRepository implements IConfigSnapshotRepository { private readonly db; constructor(database: ConfigSnapshotDatabase); /** * Save a config snapshot with its files in a transaction */ save(snapshot: ConfigSnapshot): Promise; /** * Find a config snapshot by ID, including its files */ findById(id: string): Promise; /** * Find all config snapshots with pagination (across all servers) * Ordered by created_at DESC (newest first) */ findAll(limit?: number, offset?: number): Promise; /** * Find config snapshots by server name with pagination * Ordered by created_at DESC (newest first) */ findByServer(serverName: string, limit?: number, offset?: number): Promise; /** * Count config snapshots for a server */ countByServer(serverName: string): Promise; /** * Delete a config snapshot by ID * Files are automatically deleted via CASCADE */ delete(id: string): Promise; /** * Delete all config snapshots for a server * Files are automatically deleted via CASCADE */ deleteByServer(serverName: string): Promise; /** * Find config snapshots by schedule ID, ordered by created_at DESC */ findByScheduleId(scheduleId: string): Promise; /** * Count config snapshots for a schedule */ countByScheduleId(scheduleId: string): Promise; /** * Load files for a snapshot row and convert to entity */ private loadFiles; /** * Convert database rows to ConfigSnapshot entity */ private toEntity; } //# sourceMappingURL=SqliteConfigSnapshotRepository.d.ts.map