import { Insertable, Kysely } from 'kysely';
import { IntegrityReport } from "../enum";
import { DB } from "../schema";
import { IntegrityReportTable } from "../schema/tables/integrity-report.table";
export type ReportPaginationOptions = {
    cursor?: string;
    limit: number;
};
export declare class IntegrityRepository {
    private db;
    constructor(db: Kysely<DB>);
    create(dto: Insertable<IntegrityReportTable> | Insertable<IntegrityReportTable>[]): Promise<{
        id: string;
        createdAt: Date;
        type: IntegrityReport;
        path: string;
        assetId: string | null;
        fileAssetId: string | null;
    }>;
    getById(id: string): Promise<{
        id: string;
        createdAt: Date;
        type: IntegrityReport;
        path: string;
        assetId: string | null;
        fileAssetId: string | null;
    }>;
    getIntegrityReportSummary(): Promise<Record<IntegrityReport, number>>;
    getIntegrityReport(pagination: ReportPaginationOptions, type: IntegrityReport): Promise<{
        items: {
            id: string;
            createdAt: Date;
            type: IntegrityReport;
            path: string;
            assetId: string | null;
            fileAssetId: string | null;
        }[];
        nextCursor: string | undefined;
    }>;
    getAssetPathsByPaths(paths: string[]): Promise<{
        originalPath: string;
        encodedVideoPath: string | null;
    }[]>;
    getAssetFilePathsByPaths(paths: string[]): Promise<{
        path: string;
    }[]>;
    getPersonThumbnailPathsByPaths(paths: string[]): Promise<{
        thumbnailPath: string;
    }[]>;
    getAssetCount(): Promise<{
        count: number;
    }>;
    streamAllAssetPaths(): AsyncIterableIterator<{
        originalPath: string;
        encodedVideoPath: string | null;
    }>;
    streamAllAssetFilePaths(): AsyncIterableIterator<{
        path: string;
    }>;
    streamAssetPathsForMissingFiles(): AsyncIterableIterator<{
        path: string;
        reportId: string | null;
    } & ({
        assetId: string;
        fileAssetId: null;
    } | {
        assetId: null;
        fileAssetId: string;
    })>;
    streamAssetChecksums(startMarker?: Date): AsyncIterableIterator<{
        createdAt: Date;
        originalPath: string;
        checksum: Buffer<ArrayBufferLike>;
        assetId: string;
        reportId: string | null;
    } & Partial<Omit<unknown, "createdAt" | "assetId" | "originalPath" | "checksum" | "reportId">>>;
    streamIntegrityReports(type: IntegrityReport): AsyncIterableIterator<{
        id: string;
        type: IntegrityReport;
        path: string;
        assetId: string | null;
        fileAssetId: string | null;
    }>;
    streamIntegrityReportsWithAssetChecksum(type: IntegrityReport): AsyncIterableIterator<{
        path: string;
        reportId: string;
    } & Partial<Omit<{
        checksum: Buffer<ArrayBufferLike> | null;
    }, "path" | "reportId">>>;
    streamIntegrityReportsByProperty(property?: 'assetId' | 'fileAssetId', filterType?: IntegrityReport): AsyncIterableIterator<{
        id: string;
        path: string;
        assetId: string | null;
        fileAssetId: string | null;
    } & Partial<Omit<unknown, "id" | "path" | "assetId" | "fileAssetId">>>;
    deleteById(id: string): Promise<import("kysely").DeleteResult[]>;
    deleteByIds(ids: string[]): Promise<import("kysely").DeleteResult[]>;
}
