import { Insertable, Kysely, Selectable, ShallowDehydrateObject, Updateable, UpdateResult } from 'kysely';
import { LockableProperty, Stack } from "../database";
import { AuthDto } from "../dtos/auth.dto";
import { AssetFileType, AssetOrder, AssetOrderBy, AssetStatus, AssetType, AssetVisibility, CalendarHeatmapType } from "../enum";
import { DB } from "../schema";
import { AssetAudioTable, AssetKeyframeTable, AssetVideoTable } from "../schema/tables/asset-av.table";
import { AssetExifTable } from "../schema/tables/asset-exif.table";
import { AssetFileTable } from "../schema/tables/asset-file.table";
import { AssetJobStatusTable } from "../schema/tables/asset-job-status.table";
import { AssetMetadataTable } from "../schema/tables/asset-metadata.table";
import { AssetTable } from "../schema/tables/asset.table";
export type AssetStats = Record<AssetType, number>;
export interface BoundingBox {
    west: number;
    south: number;
    east: number;
    north: number;
}
interface AssetStatsOptions {
    isFavorite?: boolean;
    isTrashed?: boolean;
    visibility?: AssetVisibility;
}
interface LivePhotoSearchOptions {
    ownerId: string;
    libraryId?: string | null;
    livePhotoCID: string;
    otherAssetId: string;
    type: AssetType;
}
interface AssetBuilderOptions {
    isFavorite?: boolean;
    isTrashed?: boolean;
    isDuplicate?: boolean;
    albumId?: string;
    tagId?: string;
    personId?: string;
    userIds?: string[];
    withStacked?: boolean;
    exifInfo?: boolean;
    status?: AssetStatus;
    assetType?: AssetType;
    visibility?: AssetVisibility;
    withCoordinates?: boolean;
    bbox?: BoundingBox;
}
export interface TimeBucketOptions extends AssetBuilderOptions {
    order?: AssetOrder;
    orderBy?: AssetOrderBy;
}
export interface TimeBucketItem {
    timeBucket: string;
    count: number;
}
export interface YearMonthDay {
    day: number;
    month: number;
    year: number;
}
interface AssetExploreFieldOptions {
    maxFields: number;
    minAssetsPerField: number;
}
interface AssetGetByChecksumOptions {
    ownerId: string;
    checksum: Buffer;
    libraryId?: string;
}
interface GetByIdsRelations {
    exifInfo?: boolean;
    faces?: {
        person?: boolean;
        withDeleted?: boolean;
    };
    files?: boolean;
    library?: boolean;
    owner?: boolean;
    smartSearch?: boolean;
    stack?: {
        assets?: boolean;
    };
    tags?: boolean;
    edits?: boolean;
}
type UpsertExifOptions = {
    exif: Insertable<AssetExifTable>;
    audio?: Insertable<AssetAudioTable>;
    video?: Insertable<AssetVideoTable>;
    keyframes?: Insertable<AssetKeyframeTable>;
    lockedPropertiesBehavior: 'override' | 'append' | 'skip';
};
export declare class AssetRepository {
    private db;
    constructor(db: Kysely<DB>);
    upsertExif({ exif, audio, video, keyframes, lockedPropertiesBehavior }: UpsertExifOptions): Promise<void>;
    updateAllExif(ids: string[], options: Updateable<AssetExifTable>): Promise<void>;
    updateDateTimeOriginal(ids: string[], delta?: number, timeZone?: string): Promise<{
        assetId: string;
        dateTimeOriginal: Date | null;
        timeZone: string | null;
    }[]>;
    unlockProperties(assetId: string, properties: LockableProperty[]): Promise<UpdateResult[]>;
    upsertJobStatus(...jobStatus: Insertable<AssetJobStatusTable>[]): Promise<void>;
    getMetadata(assetId: string): Promise<{
        key: string;
        value: Record<string, unknown>;
        updatedAt: Date;
    }[]>;
    upsertMetadata(id: string, items: Array<{
        key: string;
        value: Record<string, unknown>;
    }>): never[] | Promise<{
        key: string;
        value: Record<string, unknown>;
        updatedAt: Date;
    }[]>;
    upsertBulkMetadata(items: Insertable<AssetMetadataTable>[]): Promise<{
        key: string;
        value: Record<string, unknown>;
        assetId: string;
        updatedAt: Date;
    }[]>;
    getMetadataByKey(assetId: string, key: string): Promise<{
        key: string;
        value: Record<string, unknown>;
        updatedAt: Date;
    } | undefined>;
    deleteMetadataByKey(id: string, key: string): Promise<void>;
    deleteBulkMetadata(items: Array<{
        assetId: string;
        key: string;
    }>): Promise<void>;
    create(asset: Insertable<AssetTable>): Promise<{
        id: string;
        createdAt: Date;
        type: AssetType;
        duration: number | null;
        updatedAt: Date;
        deletedAt: Date | null;
        status: AssetStatus;
        updateId: string;
        ownerId: string;
        width: number | null;
        height: number | null;
        originalPath: string;
        fileCreatedAt: Date;
        fileModifiedAt: Date;
        isFavorite: boolean;
        checksum: Buffer<ArrayBufferLike>;
        checksumAlgorithm: import("src/enum").ChecksumAlgorithm;
        livePhotoVideoId: string | null;
        originalFileName: string;
        thumbhash: Buffer<ArrayBufferLike> | null;
        isOffline: boolean;
        libraryId: string | null;
        isExternal: boolean;
        localDateTime: Date;
        stackId: string | null;
        duplicateId: string | null;
        visibility: AssetVisibility;
        isEdited: boolean;
    }>;
    createAll(assets: Insertable<AssetTable>[]): Promise<string[]>;
    getByDayOfYear(ownerIds: string[], { year, day, month }: YearMonthDay): Promise<{
        year: number;
        assets: {
            id: string;
            localDateTime: string;
        }[];
    }[]>;
    getByIds(ids: string[]): Promise<{
        id: string;
        createdAt: Date;
        type: AssetType;
        duration: number | null;
        updatedAt: Date;
        deletedAt: Date | null;
        status: AssetStatus;
        updateId: string;
        ownerId: string;
        width: number | null;
        height: number | null;
        originalPath: string;
        fileCreatedAt: Date;
        fileModifiedAt: Date;
        isFavorite: boolean;
        checksum: Buffer<ArrayBufferLike>;
        checksumAlgorithm: import("src/enum").ChecksumAlgorithm;
        livePhotoVideoId: string | null;
        originalFileName: string;
        thumbhash: Buffer<ArrayBufferLike> | null;
        isOffline: boolean;
        libraryId: string | null;
        isExternal: boolean;
        localDateTime: Date;
        stackId: string | null;
        duplicateId: string | null;
        visibility: AssetVisibility;
        isEdited: boolean;
    }[]>;
    getByIdsWithAllRelationsButStacks(ids: string[]): Promise<{
        id: string;
        createdAt: Date;
        type: AssetType;
        duration: number | null;
        updatedAt: Date;
        deletedAt: Date | null;
        status: AssetStatus;
        updateId: string;
        ownerId: string;
        width: number | null;
        height: number | null;
        originalPath: string;
        fileCreatedAt: Date;
        fileModifiedAt: Date;
        isFavorite: boolean;
        checksum: Buffer<ArrayBufferLike>;
        checksumAlgorithm: import("src/enum").ChecksumAlgorithm;
        livePhotoVideoId: string | null;
        originalFileName: string;
        thumbhash: Buffer<ArrayBufferLike> | null;
        isOffline: boolean;
        libraryId: string | null;
        isExternal: boolean;
        localDateTime: Date;
        stackId: string | null;
        duplicateId: string | null;
        visibility: AssetVisibility;
        isEdited: boolean;
        faces: {
            id: string;
            assetId: string;
            updatedAt: string;
            deletedAt: string | null;
            updateId: string;
            personId: string | null;
            imageWidth: number;
            imageHeight: number;
            boundingBoxX1: number;
            boundingBoxY1: number;
            boundingBoxX2: number;
            boundingBoxY2: number;
            sourceType: import("src/enum").SourceType;
            isVisible: boolean;
            person: ShallowDehydrateObject<import("src/database").Person>;
        }[];
        tags: {
            id: string;
            value: string;
            createdAt: string;
            updatedAt: string;
            color: string | null;
            parentId: string | null;
        }[];
        exifInfo: ShallowDehydrateObject<{
            description: string;
            colorspace: string | null;
            assetId: string;
            state: string | null;
            updatedAt: Date;
            updateId: string;
            make: string | null;
            model: string | null;
            exifImageWidth: number | null;
            exifImageHeight: number | null;
            fileSizeInByte: number | null;
            orientation: string | null;
            dateTimeOriginal: Date | null;
            modifyDate: Date | null;
            lensModel: string | null;
            fNumber: number | null;
            focalLength: number | null;
            iso: number | null;
            latitude: number | null;
            longitude: number | null;
            city: string | null;
            country: string | null;
            fps: number | null;
            exposureTime: string | null;
            livePhotoCID: string | null;
            timeZone: string | null;
            projectionType: string | null;
            profileDescription: string | null;
            bitsPerSample: number | null;
            autoStackId: string | null;
            rating: number | null;
            tags: string[] | null;
            lockedProperties: ("description" | "dateTimeOriginal" | "latitude" | "longitude" | "timeZone" | "rating" | "tags")[] | null;
        }> | null;
    }[]>;
    deleteAll(ownerId: string): Promise<void>;
    getByLibraryIdAndOriginalPath(libraryId: string, originalPath: string): Promise<{
        id: string;
        createdAt: Date;
        type: AssetType;
        duration: number | null;
        updatedAt: Date;
        deletedAt: Date | null;
        status: AssetStatus;
        updateId: string;
        ownerId: string;
        width: number | null;
        height: number | null;
        originalPath: string;
        fileCreatedAt: Date;
        fileModifiedAt: Date;
        isFavorite: boolean;
        checksum: Buffer<ArrayBufferLike>;
        checksumAlgorithm: import("src/enum").ChecksumAlgorithm;
        livePhotoVideoId: string | null;
        originalFileName: string;
        thumbhash: Buffer<ArrayBufferLike> | null;
        isOffline: boolean;
        libraryId: string | null;
        isExternal: boolean;
        localDateTime: Date;
        stackId: string | null;
        duplicateId: string | null;
        visibility: AssetVisibility;
        isEdited: boolean;
    } | undefined>;
    getLivePhotoCount(motionId: string): Promise<number>;
    getFileSamples(): Promise<{
        path: string;
        assetId: string;
    }[]>;
    getForCopy(id: string): Promise<{
        id: string;
        originalPath: string;
        isFavorite: boolean;
        stackId: string | null;
        files: {
            id: string;
            type: AssetFileType;
            path: string;
            isEdited: boolean;
        }[];
    } | undefined>;
    getById(id: string, { exifInfo, faces, files, library, owner, smartSearch, stack, tags, edits }?: GetByIdsRelations): Promise<{
        id: string;
        createdAt: Date;
        type: AssetType;
        duration: number | null;
        updatedAt: Date;
        deletedAt: Date | null;
        status: AssetStatus;
        updateId: string;
        ownerId: string;
        width: number | null;
        height: number | null;
        originalPath: string;
        fileCreatedAt: Date;
        fileModifiedAt: Date;
        isFavorite: boolean;
        checksum: Buffer<ArrayBufferLike>;
        checksumAlgorithm: import("src/enum").ChecksumAlgorithm;
        livePhotoVideoId: string | null;
        originalFileName: string;
        thumbhash: Buffer<ArrayBufferLike> | null;
        isOffline: boolean;
        libraryId: string | null;
        isExternal: boolean;
        localDateTime: Date;
        stackId: string | null;
        duplicateId: string | null;
        visibility: AssetVisibility;
        isEdited: boolean;
        exifInfo?: ShallowDehydrateObject<{
            description: string;
            colorspace: string | null;
            assetId: string;
            state: string | null;
            updatedAt: Date;
            updateId: string;
            make: string | null;
            model: string | null;
            exifImageWidth: number | null;
            exifImageHeight: number | null;
            fileSizeInByte: number | null;
            orientation: string | null;
            dateTimeOriginal: Date | null;
            modifyDate: Date | null;
            lensModel: string | null;
            fNumber: number | null;
            focalLength: number | null;
            iso: number | null;
            latitude: number | null;
            longitude: number | null;
            city: string | null;
            country: string | null;
            fps: number | null;
            exposureTime: string | null;
            livePhotoCID: string | null;
            timeZone: string | null;
            projectionType: string | null;
            profileDescription: string | null;
            bitsPerSample: number | null;
            autoStackId: string | null;
            rating: number | null;
            tags: string[] | null;
            lockedProperties: ("description" | "dateTimeOriginal" | "latitude" | "longitude" | "timeZone" | "rating" | "tags")[] | null;
        }> | null | undefined;
        faces?: {
            id: string;
            assetId: string;
            updatedAt: string;
            deletedAt: string | null;
            updateId: string;
            personId: string | null;
            imageWidth: number;
            imageHeight: number;
            boundingBoxX1: number;
            boundingBoxY1: number;
            boundingBoxX2: number;
            boundingBoxY2: number;
            sourceType: import("src/enum").SourceType;
            isVisible: boolean;
        }[] | undefined;
        library?: {
            id: string;
            createdAt: string;
            name: string;
            updatedAt: string;
            deletedAt: string | null;
            updateId: string;
            ownerId: string;
            importPaths: string[];
            exclusionPatterns: string[];
            refreshedAt: string | null;
        } | null | undefined;
        owner?: {
            id: string;
            email: string;
            name: string;
            profileImagePath: string;
            avatarColor: import("kysely").ExtractColumnType<DB, "asset" | "user", "avatarColor">;
            profileChangedAt: string;
        } | null | undefined;
        smartSearch?: {
            assetId: string | null;
            embedding: string | null;
        } | null | undefined;
        stack?: Stack | null | undefined;
        files?: {
            id: string;
            type: AssetFileType;
            path: string;
            isEdited: boolean;
        }[] | undefined;
        tags?: {
            id: string;
            value: string;
            createdAt: string;
            updatedAt: string;
            color: string | null;
            parentId: string | null;
        }[] | undefined;
        edits?: ({
            action: import("../dtos/editing.dto").AssetEditAction.Crop;
            parameters: {
                x: number;
                y: number;
                width: number;
                height: number;
            };
        } | {
            action: import("../dtos/editing.dto").AssetEditAction.Rotate;
            parameters: {
                angle: number;
            };
        } | {
            action: import("../dtos/editing.dto").AssetEditAction.Mirror;
            parameters: {
                axis: "horizontal" | "vertical";
            };
        })[] | undefined;
    } | undefined>;
    updateAll(ids: string[], options: Updateable<AssetTable>): Promise<void>;
    updateByLibraryId(libraryId: string, options: Updateable<AssetTable>): Promise<void>;
    update(asset: Updateable<AssetTable> & {
        id: string;
    }): Promise<{
        id: string;
        createdAt: Date;
        type: AssetType;
        duration: number | null;
        updatedAt: Date;
        deletedAt: Date | null;
        status: AssetStatus;
        updateId: string;
        ownerId: string;
        width: number | null;
        height: number | null;
        originalPath: string;
        fileCreatedAt: Date;
        fileModifiedAt: Date;
        isFavorite: boolean;
        checksum: Buffer<ArrayBufferLike>;
        checksumAlgorithm: import("src/enum").ChecksumAlgorithm;
        livePhotoVideoId: string | null;
        originalFileName: string;
        thumbhash: Buffer<ArrayBufferLike> | null;
        isOffline: boolean;
        libraryId: string | null;
        isExternal: boolean;
        localDateTime: Date;
        stackId: string | null;
        duplicateId: string | null;
        visibility: AssetVisibility;
        isEdited: boolean;
        exifInfo?: ShallowDehydrateObject<{
            description: string;
            colorspace: string | null;
            assetId: string;
            state: string | null;
            updatedAt: Date;
            updateId: string;
            make: string | null;
            model: string | null;
            exifImageWidth: number | null;
            exifImageHeight: number | null;
            fileSizeInByte: number | null;
            orientation: string | null;
            dateTimeOriginal: Date | null;
            modifyDate: Date | null;
            lensModel: string | null;
            fNumber: number | null;
            focalLength: number | null;
            iso: number | null;
            latitude: number | null;
            longitude: number | null;
            city: string | null;
            country: string | null;
            fps: number | null;
            exposureTime: string | null;
            livePhotoCID: string | null;
            timeZone: string | null;
            projectionType: string | null;
            profileDescription: string | null;
            bitsPerSample: number | null;
            autoStackId: string | null;
            rating: number | null;
            tags: string[] | null;
            lockedProperties: ("description" | "dateTimeOriginal" | "latitude" | "longitude" | "timeZone" | "rating" | "tags")[] | null;
        }> | null | undefined;
        faces?: {
            id: string;
            assetId: string;
            updatedAt: string;
            deletedAt: string | null;
            updateId: string;
            personId: string | null;
            imageWidth: number;
            imageHeight: number;
            boundingBoxX1: number;
            boundingBoxY1: number;
            boundingBoxX2: number;
            boundingBoxY2: number;
            sourceType: import("src/enum").SourceType;
            isVisible: boolean;
        }[] | undefined;
        library?: {
            id: string;
            createdAt: string;
            name: string;
            updatedAt: string;
            deletedAt: string | null;
            updateId: string;
            ownerId: string;
            importPaths: string[];
            exclusionPatterns: string[];
            refreshedAt: string | null;
        } | null | undefined;
        owner?: {
            id: string;
            email: string;
            name: string;
            profileImagePath: string;
            avatarColor: import("kysely").ExtractColumnType<DB, "asset" | "user", "avatarColor">;
            profileChangedAt: string;
        } | null | undefined;
        smartSearch?: {
            assetId: string | null;
            embedding: string | null;
        } | null | undefined;
        stack?: Stack | null | undefined;
        files?: {
            id: string;
            type: AssetFileType;
            path: string;
            isEdited: boolean;
        }[] | undefined;
        tags?: {
            id: string;
            value: string;
            createdAt: string;
            updatedAt: string;
            color: string | null;
            parentId: string | null;
        }[] | undefined;
        edits?: ({
            action: import("../dtos/editing.dto").AssetEditAction.Crop;
            parameters: {
                x: number;
                y: number;
                width: number;
                height: number;
            };
        } | {
            action: import("../dtos/editing.dto").AssetEditAction.Rotate;
            parameters: {
                angle: number;
            };
        } | {
            action: import("../dtos/editing.dto").AssetEditAction.Mirror;
            parameters: {
                axis: "horizontal" | "vertical";
            };
        })[] | undefined;
    } | {
        id: string;
        createdAt: Date;
        type: AssetType;
        duration: number | null;
        updatedAt: Date;
        deletedAt: Date | null;
        status: AssetStatus;
        updateId: string;
        ownerId: string;
        width: number | null;
        height: number | null;
        originalPath: string;
        fileCreatedAt: Date;
        fileModifiedAt: Date;
        isFavorite: boolean;
        checksum: Buffer<ArrayBufferLike>;
        checksumAlgorithm: import("src/enum").ChecksumAlgorithm;
        livePhotoVideoId: string | null;
        originalFileName: string;
        thumbhash: Buffer<ArrayBufferLike> | null;
        isOffline: boolean;
        libraryId: string | null;
        isExternal: boolean;
        localDateTime: Date;
        stackId: string | null;
        duplicateId: string | null;
        visibility: AssetVisibility;
        isEdited: boolean;
        exifInfo: ShallowDehydrateObject<{
            description: string;
            colorspace: string | null;
            assetId: string;
            state: string | null;
            updatedAt: Date;
            updateId: string;
            make: string | null;
            model: string | null;
            exifImageWidth: number | null;
            exifImageHeight: number | null;
            fileSizeInByte: number | null;
            orientation: string | null;
            dateTimeOriginal: Date | null;
            modifyDate: Date | null;
            lensModel: string | null;
            fNumber: number | null;
            focalLength: number | null;
            iso: number | null;
            latitude: number | null;
            longitude: number | null;
            city: string | null;
            country: string | null;
            fps: number | null;
            exposureTime: string | null;
            livePhotoCID: string | null;
            timeZone: string | null;
            projectionType: string | null;
            profileDescription: string | null;
            bitsPerSample: number | null;
            autoStackId: string | null;
            rating: number | null;
            tags: string[] | null;
            lockedProperties: ("description" | "dateTimeOriginal" | "latitude" | "longitude" | "timeZone" | "rating" | "tags")[] | null;
        }> | null;
        faces: {
            id: string;
            assetId: string;
            updatedAt: string;
            deletedAt: string | null;
            updateId: string;
            personId: string | null;
            imageWidth: number;
            imageHeight: number;
            boundingBoxX1: number;
            boundingBoxY1: number;
            boundingBoxX2: number;
            boundingBoxY2: number;
            sourceType: import("src/enum").SourceType;
            isVisible: boolean;
            person: ShallowDehydrateObject<import("src/database").Person>;
        }[];
        edits: ({
            action: import("../dtos/editing.dto").AssetEditAction.Crop;
            parameters: {
                x: number;
                y: number;
                width: number;
                height: number;
            };
        } | {
            action: import("../dtos/editing.dto").AssetEditAction.Rotate;
            parameters: {
                angle: number;
            };
        } | {
            action: import("../dtos/editing.dto").AssetEditAction.Mirror;
            parameters: {
                axis: "horizontal" | "vertical";
            };
        })[];
    } | undefined>;
    remove(asset: {
        id: string;
    }): Promise<void>;
    getByChecksum({ ownerId, libraryId, checksum }: AssetGetByChecksumOptions): Promise<{
        id: string;
        createdAt: Date;
        type: AssetType;
        duration: number | null;
        updatedAt: Date;
        deletedAt: Date | null;
        status: AssetStatus;
        updateId: string;
        ownerId: string;
        width: number | null;
        height: number | null;
        originalPath: string;
        fileCreatedAt: Date;
        fileModifiedAt: Date;
        isFavorite: boolean;
        checksum: Buffer<ArrayBufferLike>;
        checksumAlgorithm: import("src/enum").ChecksumAlgorithm;
        livePhotoVideoId: string | null;
        originalFileName: string;
        thumbhash: Buffer<ArrayBufferLike> | null;
        isOffline: boolean;
        libraryId: string | null;
        isExternal: boolean;
        localDateTime: Date;
        stackId: string | null;
        duplicateId: string | null;
        visibility: AssetVisibility;
        isEdited: boolean;
    } | undefined>;
    getByChecksums(userId: string, checksums: Buffer[]): Promise<{
        id: string;
        deletedAt: Date | null;
        checksum: Buffer<ArrayBufferLike>;
    }[]>;
    getUploadAssetIdByChecksum(ownerId: string, checksum: Buffer): Promise<string | undefined>;
    findLivePhotoMatch(options: LivePhotoSearchOptions): Promise<{
        id: string;
        ownerId: string;
    } | undefined>;
    getStatistics(ownerId: string, { visibility, isFavorite, isTrashed }: AssetStatsOptions): Promise<AssetStats>;
    getCalendarHeatmap(ownerId: string, dto: {
        from: Date;
        to: Date;
        type: CalendarHeatmapType;
    }): Promise<{
        date: Date;
        count: number;
    }[]>;
    getTimeBuckets(options: TimeBucketOptions): Promise<TimeBucketItem[]>;
    getTimeBucket(timeBucket: string, options: TimeBucketOptions, auth: AuthDto): Promise<{
        assets: string;
    }>;
    getAssetIdByCity(ownerId: string, { minAssetsPerField, maxFields }: AssetExploreFieldOptions): Promise<{
        fieldName: string;
        items: {
            value: string;
            data: string;
        }[];
    }>;
    getRecentlyCreatedAssetIds(ownerId: string, maxAssets: number): Promise<{
        fieldName: string;
        items: {
            data: string;
            value: Date;
        }[];
    }>;
    upsertFile(file: Pick<Insertable<AssetFileTable>, 'assetId' | 'path' | 'type' | 'isEdited' | 'isProgressive' | 'isTransparent'>): Promise<void>;
    upsertFiles(files: Pick<Insertable<AssetFileTable>, 'assetId' | 'path' | 'type' | 'isEdited' | 'isProgressive' | 'isTransparent'>[]): Promise<void>;
    deleteFile({ assetId, type, edited, }: {
        assetId: string;
        type: AssetFileType;
        edited?: boolean;
    }): Promise<void>;
    deleteFiles(files: Pick<Selectable<AssetFileTable>, 'id'>[]): Promise<void>;
    detectOfflineExternalAssets(libraryId: string, importPaths: string[], exclusionPatterns: string[]): Promise<UpdateResult>;
    filterNewExternalAssetPaths(libraryId: string, paths: string[]): Promise<string[]>;
    getLibraryAssetCount(libraryId: string): Promise<number>;
    private buildGetForOriginal;
    getForOriginal(id: string, isEdited: boolean): Promise<{
        id: string;
        originalFileName: string;
        editedPath?: string | null | undefined;
        originalPath: string;
    }>;
    getForOriginals(ids: string[], isEdited: boolean): Promise<{
        id: string;
        originalFileName: string;
        editedPath?: string | null | undefined;
        originalPath: string;
    }[]>;
    getForThumbnail(id: string, type: AssetFileType, isEdited: boolean): Promise<{
        originalPath: string;
        originalFileName: string;
        path: string | null;
    }>;
    getForVideo(id: string): Promise<{
        originalPath: string;
        encodedVideoPath: string | null;
    } | undefined>;
    getForOcr(id: string): Promise<{
        edits: ({
            action: import("../dtos/editing.dto").AssetEditAction.Crop;
            parameters: {
                x: number;
                y: number;
                width: number;
                height: number;
            };
        } | {
            action: import("../dtos/editing.dto").AssetEditAction.Rotate;
            parameters: {
                angle: number;
            };
        } | {
            action: import("../dtos/editing.dto").AssetEditAction.Mirror;
            parameters: {
                axis: "horizontal" | "vertical";
            };
        })[];
        exifImageWidth: number | null;
        exifImageHeight: number | null;
        orientation: string | null;
    } | undefined>;
    getForEdit(id: string): Promise<{
        type: AssetType;
        originalPath: string;
        livePhotoVideoId: string | null;
        originalFileName: string;
        exifImageWidth: number | null;
        exifImageHeight: number | null;
        orientation: string | null;
        projectionType: string | null;
    } | undefined>;
    getForMetadataExtractionTags(id: string): Promise<{
        tags: string[] | null;
    } | undefined>;
    getForFaces(id: string): Promise<{
        exifImageWidth: number | null;
        exifImageHeight: number | null;
        orientation: string | null;
        edits: ({
            action: import("../dtos/editing.dto").AssetEditAction.Crop;
            parameters: {
                x: number;
                y: number;
                width: number;
                height: number;
            };
        } | {
            action: import("../dtos/editing.dto").AssetEditAction.Rotate;
            parameters: {
                angle: number;
            };
        } | {
            action: import("../dtos/editing.dto").AssetEditAction.Mirror;
            parameters: {
                axis: "horizontal" | "vertical";
            };
        })[];
    }>;
    getForUpdateTags(id: string): Promise<{
        tags: {
            value: string;
        }[];
    }>;
}
export {};
