--- /dev/null
+from typing import Any, Dict, NamedTuple, Tuple, Union
+from typing_extensions import Literal
+
+class _TagInfo(NamedTuple):
+ value: Any
+ name: str
+ type: _TagType
+ length: int
+ enum: dict[str, int]
+
+class TagInfo(_TagInfo):
+ def __new__(
+ cls,
+ value: Any | None = ...,
+ name: str = ...,
+ type: _TagType | None = ...,
+ length: int | None = ...,
+ enum: dict[str, int] | None = ...,
+ ): ...
+ def cvt_enum(self, value): ...
+
+def lookup(tag: int, group: int | None = ...) -> _TagInfo: ...
+
+BYTE: Literal[1]
+ASCII: Literal[2]
+SHORT: Literal[3]
+LONG: Literal[4]
+RATIONAL: Literal[5]
+SIGNED_BYTE: Literal[6]
+UNDEFINED: Literal[7]
+SIGNED_SHORT: Literal[8]
+SIGNED_LONG: Literal[9]
+SIGNED_RATIONAL: Literal[10]
+FLOAT: Literal[11]
+DOUBLE: Literal[12]
+IFD: Literal[13]
+
+_TagType = Literal[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
+_TagTuple = Union[Tuple[str, _TagType, int], Tuple[str, _TagInfo, int, Dict[str, int]]]
+
+TAGS_V2: dict[int, _TagTuple]
+TAGS_V2_GROUPS: dict[int, dict[int, _TagTuple]]
+TAGS: dict[int, str]
+TYPES: dict[int, str]
+LIBTIFF_CORE: set[int]