# Path: aioreactive/observables.py
# T1 = TypeVar("T1")
# T2 = TypeVar("T2")
# class AsyncAnonymousObservable(AsyncObservable[TSource]):
# class AsyncIterableObservable(AsyncIterable[TSource], AsyncObservable[TSource]):
#     def __init__(self, subscribe: Callable[[AsyncObserver[TSource]], Awaitable[AsyncDisposable]]) -> None:
#     async def subscribe_async(self, observer: AsyncObserver[TSource]) -> AsyncDisposable:
#     def __init__(self, source: AsyncObservable[TSource]) -> None:
#     async def subscribe_async(self, observer: AsyncObserver[TSource]) -> AsyncDisposable:
#     def __aiter__(self) -> AsyncIterator[TSource]:


from typing import AsyncIterable, TypeVar
from .observables import AsyncIterableObservable, AsyncObservable


TSource = TypeVar("TSource")


def to_async_iterable(source: AsyncObservable[TSource]) -> AsyncIterable[TSource]:
    """Convert async observable to async iterable.

    Args:
        count: The number of elements to skip before returning the
            remaining values.

    Returns:
        A source stream that contains the values that occur
        after the specified index in the input source stream.
    """


# Path: aioreactive/observables.py
# T1 = TypeVar("T1")
# T2 = TypeVar("T2")
# class AsyncAnonymousObservable(AsyncObservable[TSource]):
# class AsyncIterableObservable(AsyncIterable[TSource], AsyncObservable[TSource]):
#     def __init__(self, subscribe: Callable[[AsyncObserver[TSource]], Awaitable[AsyncDisposable]]) -> None:
#     async def subscribe_async(self, observer: AsyncObserver[TSource]) -> AsyncDisposable:
#     def __init__(self, source: AsyncObservable[TSource]) -> None:
#     async def subscribe_async(self, observer: AsyncObserver[TSource]) -> AsyncDisposable:
#     def __aiter__(self) -> AsyncIterator[TSource]:


# Path: aioreactive/leave.py
from typing import AsyncIterable, TypeVar
from .observables import AsyncIterableObservable, AsyncObservable



TSource = TypeVar("TSource")


def to_async_iterable(source: AsyncObservable[TSource]) -> AsyncIterable[TSource]:
    """Convert async observable to async iterable.

    Args:
        count: The number of elements to skip before returning the
            remaining values.

    Returns:
        A source stream that contains the values that occur
        after the specified index in the input source stream.
    """


    return AsyncIterableObservable(source)