from _typeshed import Incomplete
from collections.abc import Iterable
from typing import Literal

import _win32typing

def wrap(
    ob, iid=None, usePolicy: type[Incomplete] | None = None, useDispatcher: type[Incomplete] | bool | Literal[0, 1] | None = None
): ...
def unwrap(ob): ...

class ListEnumerator:
    index: int
    def __init__(self, data, index: int = 0, iid=...) -> None: ...
    def Next(self, count: int): ...
    def Skip(self, count: int) -> None: ...
    def Reset(self) -> None: ...
    def Clone(self): ...

class ListEnumeratorGateway(ListEnumerator):
    def Next(self, count: int) -> Iterable[Incomplete]: ...

def NewEnum(
    seq,
    cls=...,
    iid=...,
    usePolicy: type[Incomplete] | None = None,
    useDispatcher: type[Incomplete] | bool | Literal[0, 1] | None = None,
): ...

class Collection:
    data: Incomplete
    def __init__(self, data=None, readOnly: bool | Literal[0, 1] = 0) -> None: ...
    def Item(self, *args): ...
    def Count(self): ...
    def Add(self, value) -> None: ...
    def Remove(self, index) -> None: ...
    def Insert(self, index, value) -> None: ...

def NewCollection(seq, cls=...) -> _win32typing.PyIUnknown: ...

class FileStream:
    file: Incomplete
    def __init__(self, file: _win32typing.Pymmapfile) -> None: ...
    def Read(self, amount): ...
    def Write(self, data) -> int: ...
    def Clone(self): ...
    def CopyTo(self, dest, cb) -> tuple[int, int]: ...
    def Seek(self, offset: int, origin: int) -> int: ...
