import { BinaryField, Tags } from 'exiftool-vendored'; export const IMetadataRepository = 'IMetadataRepository'; 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 | string | ExifDuration; EmbeddedVideoType?: string; EmbeddedVideoFile?: BinaryField; MotionPhotoVideo?: BinaryField; // Type is wrong, can also be number. Description?: string | number; ImageDescription?: string | number; } export interface IMetadataRepository { teardown(): Promise; readTags(path: string): Promise; writeTags(path: string, tags: Partial): Promise; extractBinaryTag(tagName: string, path: string): Promise; getCountries(userId: string): Promise>; getStates(userId: string, country?: string): Promise>; getCities(userId: string, country?: string, state?: string): Promise>; getCameraMakes(userId: string, model?: string): Promise>; getCameraModels(userId: string, make?: string): Promise>; }