--- /dev/null
+from typing import Any, Optional\r
+\r
+class Error(Exception): ...\r
+class ParseError(Error): ...\r
+\r
+# This is named 'Any' in the original, but that conflicts with typing.Any,\r
+# and we really only need this file to mix in.\r
+class Any_:\r
+ type_url: Any = ...\r
+ value: Any = ...\r
+ def Pack(self, msg: Any, type_url_prefix: bytes = ..., deterministic: Optional[Any] = ...) -> None: ...\r
+ def Unpack(self, msg: Any): ...\r
+ def TypeName(self): ...\r
+ def Is(self, descriptor: Any): ...\r
+\r
+class Timestamp:\r
+ def ToJsonString(self): ...\r
+ seconds: Any = ...\r
+ nanos: Any = ...\r
+ def FromJsonString(self, value: Any) -> None: ...\r
+ def GetCurrentTime(self) -> None: ...\r
+ def ToNanoseconds(self): ...\r
+ def ToMicroseconds(self): ...\r
+ def ToMilliseconds(self): ...\r
+ def ToSeconds(self): ...\r
+ def FromNanoseconds(self, nanos: Any) -> None: ...\r
+ def FromMicroseconds(self, micros: Any) -> None: ...\r
+ def FromMilliseconds(self, millis: Any) -> None: ...\r
+ def FromSeconds(self, seconds: Any) -> None: ...\r
+ def ToDatetime(self): ...\r
+ def FromDatetime(self, dt: Any) -> None: ...\r
+\r
+class Duration:\r
+ def ToJsonString(self): ...\r
+ seconds: Any = ...\r
+ nanos: Any = ...\r
+ def FromJsonString(self, value: Any) -> None: ...\r
+ def ToNanoseconds(self): ...\r
+ def ToMicroseconds(self): ...\r
+ def ToMilliseconds(self): ...\r
+ def ToSeconds(self): ...\r
+ def FromNanoseconds(self, nanos: Any) -> None: ...\r
+ def FromMicroseconds(self, micros: Any) -> None: ...\r
+ def FromMilliseconds(self, millis: Any) -> None: ...\r
+ def FromSeconds(self, seconds: Any) -> None: ...\r
+ def ToTimedelta(self): ...\r
+ def FromTimedelta(self, td: Any) -> None: ...\r
+\r
+class FieldMask:\r
+ def ToJsonString(self): ...\r
+ def FromJsonString(self, value: Any) -> None: ...\r
+ def IsValidForDescriptor(self, message_descriptor: Any): ...\r
+ def AllFieldsFromDescriptor(self, message_descriptor: Any) -> None: ...\r
+ def CanonicalFormFromMask(self, mask: Any) -> None: ...\r
+ def Union(self, mask1: Any, mask2: Any) -> None: ...\r
+ def Intersect(self, mask1: Any, mask2: Any) -> None: ...\r
+ def MergeMessage(self, source: Any, destination: Any, replace_message_field: bool = ..., replace_repeated_field: bool = ...) -> None: ...\r
+\r
+class _FieldMaskTree:\r
+ def __init__(self, field_mask: Optional[Any] = ...) -> None: ...\r
+ def MergeFromFieldMask(self, field_mask: Any) -> None: ...\r
+ def AddPath(self, path: Any): ...\r
+ def ToFieldMask(self, field_mask: Any) -> None: ...\r
+ def IntersectPath(self, path: Any, intersection: Any): ...\r
+ def AddLeafNodes(self, prefix: Any, node: Any) -> None: ...\r
+ def MergeMessage(self, source: Any, destination: Any, replace_message: Any, replace_repeated: Any) -> None: ...\r
+\r
+class Struct:\r
+ def __getitem__(self, key: Any): ...\r
+ def __contains__(self, item: Any): ...\r
+ def __setitem__(self, key: Any, value: Any) -> None: ...\r
+ def __delitem__(self, key: Any) -> None: ...\r
+ def __len__(self): ...\r
+ def __iter__(self): ...\r
+ def keys(self): ...\r
+ def values(self): ...\r
+ def items(self): ...\r
+ def get_or_create_list(self, key: Any): ...\r
+ def get_or_create_struct(self, key: Any): ...\r
+ def update(self, dictionary: Any) -> None: ...\r
+\r
+class ListValue:\r
+ def __len__(self): ...\r
+ def append(self, value: Any) -> None: ...\r
+ def extend(self, elem_seq: Any) -> None: ...\r
+ def __getitem__(self, index: Any): ...\r
+ def __setitem__(self, index: Any, value: Any) -> None: ...\r
+ def __delitem__(self, key: Any) -> None: ...\r
+ def items(self) -> None: ...\r
+ def add_struct(self): ...\r
+ def add_list(self): ...\r