import typing, abc
from System.Collections.Generic import IReadOnlyList_1, IList_1, IEnumerator_1
from System.Collections import IList
from System import Array_1

class Collection_GenericClasses(abc.ABCMeta):
    Generic_Collection_GenericClasses_Collection_1_T = typing.TypeVar('Generic_Collection_GenericClasses_Collection_1_T')
    def __getitem__(self, types : typing.Type[Generic_Collection_GenericClasses_Collection_1_T]) -> typing.Type[Collection_1[Generic_Collection_GenericClasses_Collection_1_T]]: ...

Collection : Collection_GenericClasses

Collection_1_T = typing.TypeVar('Collection_1_T')
class Collection_1(typing.Generic[Collection_1_T], IReadOnlyList_1[Collection_1_T], IList_1[Collection_1_T], IList):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, list: IList_1[Collection_1_T]) -> None: ...
    @property
    def Count(self) -> int: ...
    @property
    def Item(self) -> Collection_1_T: ...
    @Item.setter
    def Item(self, value: Collection_1_T) -> Collection_1_T: ...
    def Add(self, item: Collection_1_T) -> None: ...
    def Clear(self) -> None: ...
    def Contains(self, item: Collection_1_T) -> bool: ...
    def CopyTo(self, array: Array_1[Collection_1_T], index: int) -> None: ...
    def GetEnumerator(self) -> IEnumerator_1[Collection_1_T]: ...
    def IndexOf(self, item: Collection_1_T) -> int: ...
    def Insert(self, index: int, item: Collection_1_T) -> None: ...
    def Remove(self, item: Collection_1_T) -> bool: ...
    def RemoveAt(self, index: int) -> None: ...


class ReadOnlyCollection_GenericClasses(abc.ABCMeta):
    Generic_ReadOnlyCollection_GenericClasses_ReadOnlyCollection_1_T = typing.TypeVar('Generic_ReadOnlyCollection_GenericClasses_ReadOnlyCollection_1_T')
    def __getitem__(self, types : typing.Type[Generic_ReadOnlyCollection_GenericClasses_ReadOnlyCollection_1_T]) -> typing.Type[ReadOnlyCollection_1[Generic_ReadOnlyCollection_GenericClasses_ReadOnlyCollection_1_T]]: ...

ReadOnlyCollection : ReadOnlyCollection_GenericClasses

ReadOnlyCollection_1_T = typing.TypeVar('ReadOnlyCollection_1_T')
class ReadOnlyCollection_1(typing.Generic[ReadOnlyCollection_1_T], IReadOnlyList_1[ReadOnlyCollection_1_T], IList_1[ReadOnlyCollection_1_T], IList):
    def __init__(self, list: IList_1[ReadOnlyCollection_1_T]) -> None: ...
    @property
    def Count(self) -> int: ...
    @property
    def Item(self) -> ReadOnlyCollection_1_T: ...
    def Contains(self, value: ReadOnlyCollection_1_T) -> bool: ...
    def CopyTo(self, array: Array_1[ReadOnlyCollection_1_T], index: int) -> None: ...
    def GetEnumerator(self) -> IEnumerator_1[ReadOnlyCollection_1_T]: ...
    def IndexOf(self, value: ReadOnlyCollection_1_T) -> int: ...

