"""
Type stubs for piexif EXIF tag definitions.
"""

from typing import Final

class TYPES:
    """EXIF data type identifiers."""

    Byte: Final[int] = ...
    Ascii: Final[int] = ...
    Short: Final[int] = ...
    Long: Final[int] = ...
    Rational: Final[int] = ...
    SByte: Final[int] = ...
    Undefined: Final[int] = ...
    SShort: Final[int] = ...
    SLong: Final[int] = ...
    SRational: Final[int] = ...
    Float: Final[int] = ...
    DFloat: Final[int] = ...

TAGS: dict[str, dict[int, dict[str, str | int]]]

class ImageIFD:
    """Exif tag number reference - 0th IFD"""

    ProcessingSoftware: Final[int] = ...
    NewSubfileType: Final[int] = ...
    SubfileType: Final[int] = ...
    ImageWidth: Final[int] = ...
    ImageLength: Final[int] = ...
    BitsPerSample: Final[int] = ...
    Compression: Final[int] = ...
    PhotometricInterpretation: Final[int] = ...
    Threshholding: Final[int] = ...
    CellWidth: Final[int] = ...
    CellLength: Final[int] = ...
    FillOrder: Final[int] = ...
    DocumentName: Final[int] = ...
    ImageDescription: Final[int] = ...
    Make: Final[int] = ...
    Model: Final[int] = ...
    StripOffsets: Final[int] = ...
    Orientation: Final[int] = ...
    SamplesPerPixel: Final[int] = ...
    RowsPerStrip: Final[int] = ...
    StripByteCounts: Final[int] = ...
    XResolution: Final[int] = ...
    YResolution: Final[int] = ...
    PlanarConfiguration: Final[int] = ...
    GrayResponseUnit: Final[int] = ...
    GrayResponseCurve: Final[int] = ...
    T4Options: Final[int] = ...
    T6Options: Final[int] = ...
    ResolutionUnit: Final[int] = ...
    TransferFunction: Final[int] = ...
    Software: Final[int] = ...
    DateTime: Final[int] = ...
    Artist: Final[int] = ...
    HostComputer: Final[int] = ...
    Predictor: Final[int] = ...
    WhitePoint: Final[int] = ...
    PrimaryChromaticities: Final[int] = ...
    ColorMap: Final[int] = ...
    HalftoneHints: Final[int] = ...
    TileWidth: Final[int] = ...
    TileLength: Final[int] = ...
    TileOffsets: Final[int] = ...
    TileByteCounts: Final[int] = ...
    SubIFDs: Final[int] = ...
    InkSet: Final[int] = ...
    InkNames: Final[int] = ...
    NumberOfInks: Final[int] = ...
    DotRange: Final[int] = ...
    TargetPrinter: Final[int] = ...
    ExtraSamples: Final[int] = ...
    SampleFormat: Final[int] = ...
    SMinSampleValue: Final[int] = ...
    SMaxSampleValue: Final[int] = ...
    TransferRange: Final[int] = ...
    ClipPath: Final[int] = ...
    XClipPathUnits: Final[int] = ...
    YClipPathUnits: Final[int] = ...
    Indexed: Final[int] = ...
    JPEGTables: Final[int] = ...
    OPIProxy: Final[int] = ...
    JPEGProc: Final[int] = ...
    JPEGInterchangeFormat: Final[int] = ...
    JPEGInterchangeFormatLength: Final[int] = ...
    JPEGRestartInterval: Final[int] = ...
    JPEGLosslessPredictors: Final[int] = ...
    JPEGPointTransforms: Final[int] = ...
    JPEGQTables: Final[int] = ...
    JPEGDCTables: Final[int] = ...
    JPEGACTables: Final[int] = ...
    YCbCrCoefficients: Final[int] = ...
    YCbCrSubSampling: Final[int] = ...
    YCbCrPositioning: Final[int] = ...
    ReferenceBlackWhite: Final[int] = ...
    XMLPacket: Final[int] = ...
    Rating: Final[int] = ...
    RatingPercent: Final[int] = ...
    ImageID: Final[int] = ...
    CFARepeatPatternDim: Final[int] = ...
    CFAPattern: Final[int] = ...
    BatteryLevel: Final[int] = ...
    Copyright: Final[int] = ...
    ExposureTime: Final[int] = ...
    ImageResources: Final[int] = ...
    ExifTag: Final[int] = ...
    InterColorProfile: Final[int] = ...
    GPSTag: Final[int] = ...
    Interlace: Final[int] = ...
    TimeZoneOffset: Final[int] = ...
    SelfTimerMode: Final[int] = ...
    FlashEnergy: Final[int] = ...
    SpatialFrequencyResponse: Final[int] = ...
    Noise: Final[int] = ...
    FocalPlaneXResolution: Final[int] = ...
    FocalPlaneYResolution: Final[int] = ...
    FocalPlaneResolutionUnit: Final[int] = ...
    ImageNumber: Final[int] = ...
    SecurityClassification: Final[int] = ...
    ImageHistory: Final[int] = ...
    ExposureIndex: Final[int] = ...
    TIFFEPStandardID: Final[int] = ...
    SensingMethod: Final[int] = ...
    XPTitle: Final[int] = ...
    XPComment: Final[int] = ...
    XPAuthor: Final[int] = ...
    XPKeywords: Final[int] = ...
    XPSubject: Final[int] = ...
    PrintImageMatching: Final[int] = ...
    DNGVersion: Final[int] = ...
    DNGBackwardVersion: Final[int] = ...
    UniqueCameraModel: Final[int] = ...
    LocalizedCameraModel: Final[int] = ...
    CFAPlaneColor: Final[int] = ...
    CFALayout: Final[int] = ...
    LinearizationTable: Final[int] = ...
    BlackLevelRepeatDim: Final[int] = ...
    BlackLevel: Final[int] = ...
    BlackLevelDeltaH: Final[int] = ...
    BlackLevelDeltaV: Final[int] = ...
    WhiteLevel: Final[int] = ...
    DefaultScale: Final[int] = ...
    DefaultCropOrigin: Final[int] = ...
    DefaultCropSize: Final[int] = ...
    ColorMatrix1: Final[int] = ...
    ColorMatrix2: Final[int] = ...
    CameraCalibration1: Final[int] = ...
    CameraCalibration2: Final[int] = ...
    ReductionMatrix1: Final[int] = ...
    ReductionMatrix2: Final[int] = ...
    AnalogBalance: Final[int] = ...
    AsShotNeutral: Final[int] = ...
    AsShotWhiteXY: Final[int] = ...
    BaselineExposure: Final[int] = ...
    BaselineNoise: Final[int] = ...
    BaselineSharpness: Final[int] = ...
    BayerGreenSplit: Final[int] = ...
    LinearResponseLimit: Final[int] = ...
    CameraSerialNumber: Final[int] = ...
    LensInfo: Final[int] = ...
    ChromaBlurRadius: Final[int] = ...
    AntiAliasStrength: Final[int] = ...
    ShadowScale: Final[int] = ...
    DNGPrivateData: Final[int] = ...
    MakerNoteSafety: Final[int] = ...
    CalibrationIlluminant1: Final[int] = ...
    CalibrationIlluminant2: Final[int] = ...
    BestQualityScale: Final[int] = ...
    RawDataUniqueID: Final[int] = ...
    OriginalRawFileName: Final[int] = ...
    OriginalRawFileData: Final[int] = ...
    ActiveArea: Final[int] = ...
    MaskedAreas: Final[int] = ...
    AsShotICCProfile: Final[int] = ...
    AsShotPreProfileMatrix: Final[int] = ...
    CurrentICCProfile: Final[int] = ...
    CurrentPreProfileMatrix: Final[int] = ...
    ColorimetricReference: Final[int] = ...
    CameraCalibrationSignature: Final[int] = ...
    ProfileCalibrationSignature: Final[int] = ...
    AsShotProfileName: Final[int] = ...
    NoiseReductionApplied: Final[int] = ...
    ProfileName: Final[int] = ...
    ProfileHueSatMapDims: Final[int] = ...
    ProfileHueSatMapData1: Final[int] = ...
    ProfileHueSatMapData2: Final[int] = ...
    ProfileToneCurve: Final[int] = ...
    ProfileEmbedPolicy: Final[int] = ...
    ProfileCopyright: Final[int] = ...
    ForwardMatrix1: Final[int] = ...
    ForwardMatrix2: Final[int] = ...
    PreviewApplicationName: Final[int] = ...
    PreviewApplicationVersion: Final[int] = ...
    PreviewSettingsName: Final[int] = ...
    PreviewSettingsDigest: Final[int] = ...
    PreviewColorSpace: Final[int] = ...
    PreviewDateTime: Final[int] = ...
    RawImageDigest: Final[int] = ...
    OriginalRawFileDigest: Final[int] = ...
    SubTileBlockSize: Final[int] = ...
    RowInterleaveFactor: Final[int] = ...
    ProfileLookTableDims: Final[int] = ...
    ProfileLookTableData: Final[int] = ...
    OpcodeList1: Final[int] = ...
    OpcodeList2: Final[int] = ...
    OpcodeList3: Final[int] = ...
    NoiseProfile: Final[int] = ...
    ZZZTestSlong1: Final[int] = ...
    ZZZTestSlong2: Final[int] = ...
    ZZZTestSByte: Final[int] = ...
    ZZZTestSShort: Final[int] = ...
    ZZZTestDFloat: Final[int] = ...

class ExifIFD:
    """Exif tag number reference - Exif IFD"""

    ExposureTime: Final[int] = ...
    FNumber: Final[int] = ...
    ExposureProgram: Final[int] = ...
    SpectralSensitivity: Final[int] = ...
    ISOSpeedRatings: Final[int] = ...
    OECF: Final[int] = ...
    SensitivityType: Final[int] = ...
    StandardOutputSensitivity: Final[int] = ...
    RecommendedExposureIndex: Final[int] = ...
    ISOSpeed: Final[int] = ...
    ISOSpeedLatitudeyyy: Final[int] = ...
    ISOSpeedLatitudezzz: Final[int] = ...
    ExifVersion: Final[int] = ...
    DateTimeOriginal: Final[int] = ...
    DateTimeDigitized: Final[int] = ...
    OffsetTime: Final[int] = ...
    OffsetTimeOriginal: Final[int] = ...
    OffsetTimeDigitized: Final[int] = ...
    ComponentsConfiguration: Final[int] = ...
    CompressedBitsPerPixel: Final[int] = ...
    ShutterSpeedValue: Final[int] = ...
    ApertureValue: Final[int] = ...
    BrightnessValue: Final[int] = ...
    ExposureBiasValue: Final[int] = ...
    MaxApertureValue: Final[int] = ...
    SubjectDistance: Final[int] = ...
    MeteringMode: Final[int] = ...
    LightSource: Final[int] = ...
    Flash: Final[int] = ...
    FocalLength: Final[int] = ...
    Temperature: Final[int] = ...
    Humidity: Final[int] = ...
    Pressure: Final[int] = ...
    WaterDepth: Final[int] = ...
    Acceleration: Final[int] = ...
    CameraElevationAngle: Final[int] = ...
    SubjectArea: Final[int] = ...
    MakerNote: Final[int] = ...
    UserComment: Final[int] = ...
    SubSecTime: Final[int] = ...
    SubSecTimeOriginal: Final[int] = ...
    SubSecTimeDigitized: Final[int] = ...
    FlashpixVersion: Final[int] = ...
    ColorSpace: Final[int] = ...
    PixelXDimension: Final[int] = ...
    PixelYDimension: Final[int] = ...
    RelatedSoundFile: Final[int] = ...
    InteroperabilityTag: Final[int] = ...
    FlashEnergy: Final[int] = ...
    SpatialFrequencyResponse: Final[int] = ...
    FocalPlaneXResolution: Final[int] = ...
    FocalPlaneYResolution: Final[int] = ...
    FocalPlaneResolutionUnit: Final[int] = ...
    SubjectLocation: Final[int] = ...
    ExposureIndex: Final[int] = ...
    SensingMethod: Final[int] = ...
    FileSource: Final[int] = ...
    SceneType: Final[int] = ...
    CFAPattern: Final[int] = ...
    CustomRendered: Final[int] = ...
    ExposureMode: Final[int] = ...
    WhiteBalance: Final[int] = ...
    DigitalZoomRatio: Final[int] = ...
    FocalLengthIn35mmFilm: Final[int] = ...
    SceneCaptureType: Final[int] = ...
    GainControl: Final[int] = ...
    Contrast: Final[int] = ...
    Saturation: Final[int] = ...
    Sharpness: Final[int] = ...
    DeviceSettingDescription: Final[int] = ...
    SubjectDistanceRange: Final[int] = ...
    ImageUniqueID: Final[int] = ...
    CameraOwnerName: Final[int] = ...
    BodySerialNumber: Final[int] = ...
    LensSpecification: Final[int] = ...
    LensMake: Final[int] = ...
    LensModel: Final[int] = ...
    LensSerialNumber: Final[int] = ...
    Gamma: Final[int] = ...

class GPSIFD:
    """Exif tag number reference - GPS IFD"""

    GPSVersionID: Final[int] = ...
    GPSLatitudeRef: Final[int] = ...
    GPSLatitude: Final[int] = ...
    GPSLongitudeRef: Final[int] = ...
    GPSLongitude: Final[int] = ...
    GPSAltitudeRef: Final[int] = ...
    GPSAltitude: Final[int] = ...
    GPSTimeStamp: Final[int] = ...
    GPSSatellites: Final[int] = ...
    GPSStatus: Final[int] = ...
    GPSMeasureMode: Final[int] = ...
    GPSDOP: Final[int] = ...
    GPSSpeedRef: Final[int] = ...
    GPSSpeed: Final[int] = ...
    GPSTrackRef: Final[int] = ...
    GPSTrack: Final[int] = ...
    GPSImgDirectionRef: Final[int] = ...
    GPSImgDirection: Final[int] = ...
    GPSMapDatum: Final[int] = ...
    GPSDestLatitudeRef: Final[int] = ...
    GPSDestLatitude: Final[int] = ...
    GPSDestLongitudeRef: Final[int] = ...
    GPSDestLongitude: Final[int] = ...
    GPSDestBearingRef: Final[int] = ...
    GPSDestBearing: Final[int] = ...
    GPSDestDistanceRef: Final[int] = ...
    GPSDestDistance: Final[int] = ...
    GPSProcessingMethod: Final[int] = ...
    GPSAreaInformation: Final[int] = ...
    GPSDateStamp: Final[int] = ...
    GPSDifferential: Final[int] = ...
    GPSHPositioningError: Final[int] = ...

class InteropIFD:
    """Exif tag number reference - Interoperability IFD"""

    InteroperabilityIndex: Final[int] = ...
