import { Readable } from 'node:stream';
import { IntegrityGetReportDto, IntegrityReportResponseDto, IntegrityReportSummaryResponseDto } from "../dtos/integrity.dto";
import { IntegrityReport, JobStatus } from "../enum";
import { ArgOf } from "../repositories/event.repository";
import { BaseService } from "./base.service";
import { IIntegrityDeleteReportsJob, IIntegrityDeleteReportTypeJob, IIntegrityJob, IIntegrityMissingFilesJob, IIntegrityPathWithChecksumJob, IIntegrityPathWithReportJob, IIntegrityUntrackedFilesJob } from "../types";
import { ImmichFileResponse } from "../utils/file";
export declare class IntegrityService extends BaseService {
    private integrityLock;
    onConfigInit({ newConfig: { integrityChecks: { untrackedFiles, missingFiles, checksumFiles }, }, }: ArgOf<'ConfigInit'>): Promise<void>;
    onConfigUpdate({ newConfig: { integrityChecks: { untrackedFiles, missingFiles, checksumFiles }, }, }: ArgOf<'ConfigUpdate'>): void;
    getIntegrityReportSummary(): Promise<IntegrityReportSummaryResponseDto>;
    getIntegrityReport(dto: IntegrityGetReportDto): Promise<IntegrityReportResponseDto>;
    getIntegrityReportCsv(type: IntegrityReport): Readable;
    getIntegrityReportFile(id: string): Promise<ImmichFileResponse>;
    deleteIntegrityReport(userId: string, id: string): Promise<void>;
    private queueRefreshAllUntrackedFiles;
    handleUntrackedFilesQueueAll({ refreshOnly }?: IIntegrityJob): Promise<JobStatus>;
    handleUntrackedFiles({ type, paths }: IIntegrityUntrackedFilesJob): Promise<JobStatus>;
    handleUntrackedRefresh({ items }: IIntegrityPathWithReportJob): Promise<JobStatus>;
    private queueRefreshAllMissingFiles;
    handleMissingFilesQueueAll({ refreshOnly }?: IIntegrityJob): Promise<JobStatus>;
    handleMissingFiles({ items }: IIntegrityMissingFilesJob): Promise<JobStatus>;
    handleMissingRefresh({ items: paths }: IIntegrityPathWithReportJob): Promise<JobStatus>;
    private queueRefreshAllChecksumFiles;
    private checkAssetChecksum;
    handleChecksumFiles({ refreshOnly }?: IIntegrityJob): Promise<JobStatus>;
    handleChecksumRefresh({ items: paths }: IIntegrityPathWithChecksumJob): Promise<JobStatus>;
    handleDeleteAllIntegrityReports({ type }: IIntegrityDeleteReportTypeJob): Promise<JobStatus>;
    handleDeleteIntegrityReports({ reports }: IIntegrityDeleteReportsJob): Promise<JobStatus>;
}
