from typing import Dict, Optional

from weaviate.aliases.alias import AliasReturn
from weaviate.connect.v4 import ConnectionAsync

from .executor import _AliasExecutor

class _AliasAsync(_AliasExecutor[ConnectionAsync]):
    async def list_all(self, *, collection: Optional[str] = None) -> Dict[str, AliasReturn]: ...
    async def get(self, *, alias_name: str) -> Optional[AliasReturn]: ...
    async def create(self, *, alias_name: str, target_collection: str) -> None: ...
    async def delete(self, *, alias_name: str) -> bool: ...
    async def update(self, *, alias_name: str, new_target_collection: str) -> bool: ...
    async def exists(self, *, alias_name: str) -> bool: ...
