import { BinaryField, Tags } from 'exiftool-vendored'; export const IMetadataRepository = 'IMetadataRepository'; export interface GeoPoint { latitude: number; longitude: number; } export interface ReverseGeocodeResult { country: string | null; state: string | null; city: string | null; } export interface ExifDuration { Value: number; Scale?: number; } export interface ImmichTags extends Omit { ContentIdentifier?: string; MotionPhoto?: number; MotionPhotoVersion?: number; MotionPhotoPresentationTimestampUs?: number; MediaGroupUUID?: string; ImagePixelDepth?: string; FocalLength?: number; Duration?: number | ExifDuration; EmbeddedVideoType?: string; EmbeddedVideoFile?: BinaryField; MotionPhotoVideo?: BinaryField; } export interface IMetadataRepository { init(): Promise; teardown(): Promise; reverseGeocode(point: GeoPoint): Promise; readTags(path: string): Promise; writeTags(path: string, tags: Partial): Promise; extractBinaryTag(tagName: string, path: string): Promise; }