import { AssetResponseDto, SanitizedAssetResponseDto } from "../dtos/asset-response.dto";
import { AssetBulkDeleteDto, AssetBulkUpdateDto, AssetCopyDto, AssetJobsDto, AssetMetadataBulkDeleteDto, AssetMetadataBulkResponseDto, AssetMetadataBulkUpsertDto, AssetMetadataResponseDto, AssetMetadataUpsertDto, AssetStatsDto, UpdateAssetDto } from "../dtos/asset.dto";
import { AuthDto } from "../dtos/auth.dto";
import { AssetEditsCreateDto, AssetEditsResponseDto } from "../dtos/editing.dto";
import { AssetOcrResponseDto } from "../dtos/ocr.dto";
import { JobName, JobStatus } from "../enum";
import { BaseService } from "./base.service";
import { JobOf } from "../types";
export declare class AssetService extends BaseService {
    getStatistics(auth: AuthDto, dto: AssetStatsDto): Promise<import("src/dtos/asset.dto").AssetStatsResponseDto>;
    get(auth: AuthDto, id: string): Promise<AssetResponseDto | SanitizedAssetResponseDto>;
    update(auth: AuthDto, id: string, dto: UpdateAssetDto): Promise<AssetResponseDto>;
    updateAll(auth: AuthDto, dto: AssetBulkUpdateDto): Promise<void>;
    copy(auth: AuthDto, { sourceId, targetId, albums, sidecar, sharedLinks, stack, favorite, }: AssetCopyDto): Promise<void>;
    private copyStack;
    private copySidecar;
    handleAssetDeletionCheck(): Promise<JobStatus>;
    handleAssetDeletion(job: JobOf<JobName.AssetDelete>): Promise<JobStatus>;
    deleteAll(auth: AuthDto, dto: AssetBulkDeleteDto): Promise<void>;
    getMetadata(auth: AuthDto, id: string): Promise<AssetMetadataResponseDto[]>;
    getOcr(auth: AuthDto, id: string): Promise<AssetOcrResponseDto[]>;
    upsertBulkMetadata(auth: AuthDto, dto: AssetMetadataBulkUpsertDto): Promise<AssetMetadataBulkResponseDto[]>;
    upsertMetadata(auth: AuthDto, id: string, dto: AssetMetadataUpsertDto): Promise<AssetMetadataResponseDto[]>;
    getMetadataByKey(auth: AuthDto, id: string, key: string): Promise<AssetMetadataResponseDto>;
    deleteMetadataByKey(auth: AuthDto, id: string, key: string): Promise<void>;
    deleteBulkMetadata(auth: AuthDto, dto: AssetMetadataBulkDeleteDto): Promise<void>;
    run(auth: AuthDto, dto: AssetJobsDto): Promise<void>;
    private findOrFail;
    private updateExif;
    getAssetEdits(auth: AuthDto, id: string): Promise<AssetEditsResponseDto>;
    editAsset(auth: AuthDto, id: string, dto: AssetEditsCreateDto): Promise<AssetEditsResponseDto>;
    removeAssetEdits(auth: AuthDto, id: string): Promise<void>;
}
