#  Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.

import asyncio as asyncio
from collections.abc import Callable, Coroutine
from typing import Any
from typing_extensions import TypeAlias

from .langhelpers import memoized_property

_Greenlet: TypeAlias = Any  # actually greenlet.greenlet

def is_exit_exception(e): ...

class _AsyncIoGreenlet(_Greenlet):
    driver: Any
    gr_context: Any
    def __init__(self, fn, driver) -> None: ...

def await_only(awaitable: Coroutine[Any, Any, Any]) -> Any: ...
def await_fallback(awaitable: Coroutine[Any, Any, Any]) -> Any: ...
async def greenlet_spawn(fn: Callable[..., Any], *args, _require_await: bool = ..., **kwargs) -> Any: ...

class AsyncAdaptedLock:
    @memoized_property
    def mutex(self): ...
    def __enter__(self): ...
    def __exit__(self, *arg, **kw) -> None: ...

def get_event_loop(): ...
