--- /dev/null
+from google.protobuf.descriptor import Descriptor\r
+from google.protobuf.internal.message_listener import MessageListener\r
+from google.protobuf.message import Message\r
+from typing import (\r
+ Sequence, TypeVar, Generic, Any, Iterator, Iterable,\r
+ Union, Optional, Callable, overload, List\r
+)\r
+\r
+_T = TypeVar('_T')\r
+class BaseContainer(Sequence[_T]):\r
+ def __init__(self, message_listener: MessageListener) -> None: ...\r
+ def __len__(self) -> int: ...\r
+ def __ne__(self, other: object) -> bool: ...\r
+ def __hash__(self) -> int: ...\r
+ def __repr__(self) -> str: ...\r
+ def sort(self, *, key: Optional[Callable[[_T], Any]] = ..., reverse: bool = ...) -> None: ...\r
+ @overload\r
+ def __getitem__(self, key: int) -> _T: ...\r
+ @overload\r
+ def __getitem__(self, key: slice) -> List[_T]: ...\r
+\r
+class RepeatedScalarFieldContainer(BaseContainer[_T]):\r
+ def __init__(self, message_listener: MessageListener, message_descriptor: Descriptor) -> None: ...\r
+ def append(self, value: _T) -> None: ...\r
+ def insert(self, key: int, value: _T) -> None: ...\r
+ def extend(self, elem_seq: Optional[Iterable[_T]]) -> None: ...\r
+ def MergeFrom(self, other: RepeatedScalarFieldContainer[_T]) -> None: ...\r
+ def remove(self, elem: _T) -> None: ...\r
+ def pop(self, key: int = ...) -> _T: ...\r
+ @overload\r
+ def __setitem__(self, key: int, value: _T) -> None: ...\r
+ @overload\r
+ def __setitem__(self, key: slice, value: Iterable[_T]) -> None: ...\r
+ def __getslice__(self, start: int, stop: int) -> List[_T]: ...\r
+ def __setslice__(self, start: int, stop: int, values: Iterable[_T]) -> None: ...\r
+ def __delitem__(self, key: Union[int, slice]) -> None: ...\r
+ def __delslice__(self, start: int, stop: int) -> None: ...\r
+\r
+class RepeatedCompositeFieldContainer(BaseContainer[_T]):\r
+ def __init__(self, message_listener: MessageListener, type_checker: Any) -> None: ...\r
+ def add(self, **kwargs: Any) -> _T: ...\r
+ def extend(self, elem_seq: Iterable[_T]) -> None: ...\r
+ def MergeFrom(self, other: RepeatedCompositeFieldContainer[_T]) -> None: ...\r
+ def remove(self, elem: _T) -> None: ...\r
+ def pop(self, key: int = ...) -> _T: ...\r
+ def __getslice__(self, start: int, stop: int) -> List[_T]: ...\r
+ def __delitem__(self, key: Union[int, slice]) -> None: ...\r
+ def __delslice__(self, start: int, stop: int) -> None: ...\r
+\r
+# Classes not yet typed\r
+class Mapping(Any): ...\r
+class MutableMapping(Mapping): ...\r
+class ScalarMap(MutableMapping): ...\r
+class MessageMap(MutableMapping): ...\r