sig
  type datetime =
      [ `EncodedInUnixTime of Exif.DateTime.t
      | `Error of string
      | `Ok of Exif.DateTime.t ]
  val parse_datetime : string -> [> Exif.Analyze.datetime ]
  val analyze_ifd :
    int * Exif.Entry.Pack.unpacked ->
    [> `DateTime of [> Exif.Analyze.datetime ]
     | `Make of string
     | `Model of string
     | `Orientation of
         [> `BottomLeft
          | `BottomRight
          | `LeftBottom
          | `LeftTop
          | `RightBottom
          | `RightTop
          | `TopLeft
          | `TopRight ]
     | `ResolutionUnit of [> `Centimeters | `Inches ]
     | `Software of Exif.Entry.Pack.unpacked
     | `Unknown of int * Exif.Entry.Pack.unpacked
     | `XResolution of int64 * int64
     | `YResolution of int64 * int64 ]
  val analyze_exif :
    int * Exif.Entry.Pack.unpacked ->
    [> `DateTimeDigitized of [> Exif.Analyze.datetime ]
     | `DateTimeOriginal of [> Exif.Analyze.datetime ]
     | `ExifVersion of string
     | `MakerNote of string
     | `SubsecTime of string
     | `SubsecTimeDigitized of string
     | `SubsecTimeOriginal of string
     | `Unknown of int * Exif.Entry.Pack.unpacked
     | `UserComment of string ]
  val analyze_gps :
    int * Exif.Entry.Pack.unpacked ->
    [> `AboveSeaLevel
     | `Altitude of int64 * int64
     | `BelowSeaLevel
     | `EastLongitude
     | `GPSDate of [> `Error of string | `Ok of Exif.Date.t ]
     | `GPSMapDatum of string
     | `GPSVersion of int * int * int * int
     | `ImgDirection of int64 * int64
     | `ImgDirectionMagnetic
     | `ImgDirectionTrue
     | `Latitude of int64 * int64
     | `Longitude of int64 * int64
     | `NorthLatitude
     | `SouthLatitude
     | `TimeStampUTC of float * float * float
     | `TimeStampUTCinSRationals of float * float * float
     | `Unknown of int * Exif.Entry.Pack.unpacked
     | `WestLongitude ]
  val ifd_0_datetime : Exif.Data.t -> [> Exif.Analyze.datetime ] option
  val exif_datetime : Exif.Data.t -> [> Exif.Analyze.datetime ] option
  val datetime : Exif.Data.t -> [> Exif.Analyze.datetime ] option
end