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

from typing import Any

from ...engine.result import FilterResult

class AsyncCommon(FilterResult):
    async def close(self) -> None: ...

class AsyncResult(AsyncCommon):
    def __init__(self, real_result) -> None: ...
    def keys(self): ...
    def unique(self, strategy: Any | None = ...): ...
    def columns(self, *col_expressions): ...
    async def partitions(self, size: Any | None = ...) -> None: ...
    async def fetchone(self): ...
    async def fetchmany(self, size: Any | None = ...): ...
    async def all(self): ...
    def __aiter__(self): ...
    async def __anext__(self): ...
    async def first(self): ...
    async def one_or_none(self): ...
    async def scalar_one(self): ...
    async def scalar_one_or_none(self): ...
    async def one(self): ...
    async def scalar(self): ...
    async def freeze(self): ...
    def merge(self, *others): ...
    def scalars(self, index: int = ...): ...
    def mappings(self): ...

class AsyncScalarResult(AsyncCommon):
    def __init__(self, real_result, index) -> None: ...
    def unique(self, strategy: Any | None = ...): ...
    async def partitions(self, size: Any | None = ...) -> None: ...
    async def fetchall(self): ...
    async def fetchmany(self, size: Any | None = ...): ...
    async def all(self): ...
    def __aiter__(self): ...
    async def __anext__(self): ...
    async def first(self): ...
    async def one_or_none(self): ...
    async def one(self): ...

class AsyncMappingResult(AsyncCommon):
    def __init__(self, result) -> None: ...
    def keys(self): ...
    def unique(self, strategy: Any | None = ...): ...
    def columns(self, *col_expressions): ...
    async def partitions(self, size: Any | None = ...) -> None: ...
    async def fetchall(self): ...
    async def fetchone(self): ...
    async def fetchmany(self, size: Any | None = ...): ...
    async def all(self): ...
    def __aiter__(self): ...
    async def __anext__(self): ...
    async def first(self): ...
    async def one_or_none(self): ...
    async def one(self): ...
