"""
类型存根文件 - GroupAPI

此文件由 dev/tools/generate_sync_stubs.py 自动生成。
请勿手动编辑。
"""

from typing import List, Optional, Union, Literal
from ncatbot.core.api.client import IAPIClient
from ncatbot.core.service import ServiceManager

# 前向声明
class EssenceMessage: ...
class File: ...
class GroupChatActivity: ...
class GroupInfo: ...
class GroupMemberInfo: ...
class GroupMemberList: ...

class GroupAPI:
    """
    GroupAPI 类型存根

    包含异步方法和动态生成的同步方法（*_sync）。
    """

    # 属性声明
    _client: IAPIClient
    _service_manager: Optional[ServiceManager]

    def __init__(
        self, client: IAPIClient, service_manager: Optional[ServiceManager] = ...
    ) -> None: ...
    async def create_group_file_folder(
        self, group_id: Union[str, int], folder_name: str
    ) -> None: ...
    def create_group_file_folder_sync(
        self, group_id: Union[str, int], folder_name: str
    ) -> None: ...
    async def delete_essence_msg(self, message_id: Union[str, int]) -> None: ...
    def delete_essence_msg_sync(self, message_id: Union[str, int]) -> None: ...
    async def delete_group_file(
        self, group_id: Union[str, int], file_id: str
    ) -> None: ...
    def delete_group_file_sync(
        self, group_id: Union[str, int], file_id: str
    ) -> None: ...
    async def delete_group_folder(
        self, group_id: Union[str, int], folder_id: str
    ) -> None: ...
    def delete_group_folder_sync(
        self, group_id: Union[str, int], folder_id: str
    ) -> None: ...
    async def get_essence_msg_list(
        self, group_id: Union[str, int]
    ) -> List["EssenceMessage"]: ...
    def get_essence_msg_list_sync(
        self, group_id: Union[str, int]
    ) -> List["EssenceMessage"]: ...
    async def get_file(self, file_id: str, file: str) -> "File": ...
    def get_file_sync(self, file_id: str, file: str) -> "File": ...
    async def get_group_album_list(self, group_id: Union[str, int]) -> List[dict]: ...
    def get_group_album_list_sync(self, group_id: Union[str, int]) -> List[dict]: ...
    async def get_group_file_url(
        self, group_id: Union[str, int], file_id: str
    ) -> str: ...
    def get_group_file_url_sync(
        self, group_id: Union[str, int], file_id: str
    ) -> str: ...
    async def get_group_files_by_folder(
        self, group_id: Union[str, int], folder_id: str, file_count: int = ...
    ) -> dict: ...
    def get_group_files_by_folder_sync(
        self, group_id: Union[str, int], folder_id: str, file_count: int = ...
    ) -> dict: ...
    async def get_group_honor_info(
        self,
        group_id: Union[str, int],
        type: Literal["talkative", "performer", "legend", "emotion", "all"],
    ) -> "GroupChatActivity": ...
    def get_group_honor_info_sync(
        self,
        group_id: Union[str, int],
        type: Literal["talkative", "performer", "legend", "emotion", "all"],
    ) -> "GroupChatActivity": ...
    async def get_group_info(self, group_id: Union[str, int]) -> "GroupInfo": ...
    def get_group_info_sync(self, group_id: Union[str, int]) -> "GroupInfo": ...
    async def get_group_info_ex(self, group_id: Union[str, int]) -> dict: ...
    def get_group_info_ex_sync(self, group_id: Union[str, int]) -> dict: ...
    async def get_group_list(self, info: bool = ...) -> List[Union[str, dict]]: ...
    def get_group_list_sync(self, info: bool = ...) -> List[Union[str, dict]]: ...
    async def get_group_member_info(
        self, group_id: Union[str, int], user_id: Union[str, int]
    ) -> "GroupMemberInfo": ...
    def get_group_member_info_sync(
        self, group_id: Union[str, int], user_id: Union[str, int]
    ) -> "GroupMemberInfo": ...
    async def get_group_member_list(
        self, group_id: Union[str, int]
    ) -> "GroupMemberList": ...
    def get_group_member_list_sync(
        self, group_id: Union[str, int]
    ) -> "GroupMemberList": ...
    async def get_group_root_files(
        self, group_id: Union[str, int], file_count: int = ...
    ) -> dict: ...
    def get_group_root_files_sync(
        self, group_id: Union[str, int], file_count: int = ...
    ) -> dict: ...
    async def get_group_shut_list(
        self, group_id: Union[str, int]
    ) -> "GroupMemberList": ...
    def get_group_shut_list_sync(
        self, group_id: Union[str, int]
    ) -> "GroupMemberList": ...
    async def group_file_folder_makedir(
        self, group_id: Union[str, int], path: str
    ) -> Optional[str]: ...
    def group_file_folder_makedir_sync(
        self, group_id: Union[str, int], path: str
    ) -> Optional[str]: ...
    async def move_group_file(
        self,
        group_id: Union[str, int],
        file_id: str,
        current_parent_directory: str,
        target_parent_directory: str,
    ) -> None: ...
    def move_group_file_sync(
        self,
        group_id: Union[str, int],
        file_id: str,
        current_parent_directory: str,
        target_parent_directory: str,
    ) -> None: ...
    async def post_group_file(
        self,
        group_id: Union[str, int],
        image: Optional[str] = ...,
        record: Optional[str] = ...,
        video: Optional[str] = ...,
        file: Optional[str] = ...,
    ) -> str: ...
    def post_group_file_sync(
        self,
        group_id: Union[str, int],
        image: Optional[str] = ...,
        record: Optional[str] = ...,
        video: Optional[str] = ...,
        file: Optional[str] = ...,
    ) -> str: ...
    async def rename_group_file(
        self, group_id: Union[str, int], file_id: str, new_name: str
    ) -> None: ...
    def rename_group_file_sync(
        self, group_id: Union[str, int], file_id: str, new_name: str
    ) -> None: ...
    async def send_group_file(self, group_id: Union[str, int], file: str) -> str: ...
    def send_group_file_sync(self, group_id: Union[str, int], file: str) -> str: ...
    async def send_group_image(self, group_id: Union[str, int], image: str) -> str: ...
    def send_group_image_sync(self, group_id: Union[str, int], image: str) -> str: ...
    async def send_group_record(self, group_id: Union[str, int], file: str) -> str: ...
    def send_group_record_sync(self, group_id: Union[str, int], file: str) -> str: ...
    async def send_group_sign(self, group_id: Union[str, int]) -> None: ...
    def send_group_sign_sync(self, group_id: Union[str, int]) -> None: ...
    async def send_group_video(self, group_id: Union[str, int], video: str) -> str: ...
    def send_group_video_sync(self, group_id: Union[str, int], video: str) -> str: ...
    async def set_essence_msg(self, message_id: Union[str, int]) -> None: ...
    def set_essence_msg_sync(self, message_id: Union[str, int]) -> None: ...
    async def set_group_admin(
        self, group_id: Union[str, int], user_id: Union[str, int], enable: bool = ...
    ) -> None: ...
    def set_group_admin_sync(
        self, group_id: Union[str, int], user_id: Union[str, int], enable: bool = ...
    ) -> None: ...
    async def set_group_avatar(self, group_id: Union[str, int], file: str) -> None: ...
    def set_group_avatar_sync(self, group_id: Union[str, int], file: str) -> None: ...
    async def set_group_ban(
        self, group_id: Union[str, int], user_id: Union[str, int], duration: int = ...
    ) -> None: ...
    def set_group_ban_sync(
        self, group_id: Union[str, int], user_id: Union[str, int], duration: int = ...
    ) -> None: ...
    async def set_group_card(
        self, group_id: Union[str, int], user_id: Union[str, int], card: str = ...
    ) -> None: ...
    def set_group_card_sync(
        self, group_id: Union[str, int], user_id: Union[str, int], card: str = ...
    ) -> None: ...
    async def set_group_kick(
        self,
        group_id: Union[str, int],
        user_id: Union[str, int],
        reject_add_request: bool = ...,
    ) -> None: ...
    def set_group_kick_sync(
        self,
        group_id: Union[str, int],
        user_id: Union[str, int],
        reject_add_request: bool = ...,
    ) -> None: ...
    async def set_group_leave(
        self, group_id: Union[str, int], is_dismiss: bool = ...
    ) -> None: ...
    def set_group_leave_sync(
        self, group_id: Union[str, int], is_dismiss: bool = ...
    ) -> None: ...
    async def set_group_name(self, group_id: Union[str, int], name: str) -> None: ...
    def set_group_name_sync(self, group_id: Union[str, int], name: str) -> None: ...
    async def set_group_remark(
        self, group_id: Union[str, int], remark: str
    ) -> None: ...
    def set_group_remark_sync(self, group_id: Union[str, int], remark: str) -> None: ...
    async def set_group_sign(self, group_id: Union[str, int]) -> None: ...
    def set_group_sign_sync(self, group_id: Union[str, int]) -> None: ...
    async def set_group_special_title(
        self,
        group_id: Union[str, int],
        user_id: Union[str, int],
        special_title: str = ...,
        duration: int = ...,
    ) -> None: ...
    def set_group_special_title_sync(
        self,
        group_id: Union[str, int],
        user_id: Union[str, int],
        special_title: str = ...,
        duration: int = ...,
    ) -> None: ...
    async def set_group_todo(
        self, group_id: Union[str, int], message_id: Union[str, int]
    ) -> dict: ...
    def set_group_todo_sync(
        self, group_id: Union[str, int], message_id: Union[str, int]
    ) -> dict: ...
    async def set_group_whole_ban(
        self, group_id: Union[str, int], enable: bool = ...
    ) -> None: ...
    def set_group_whole_ban_sync(
        self, group_id: Union[str, int], enable: bool = ...
    ) -> None: ...
    async def trans_group_file(
        self, group_id: Union[str, int], file_id: str
    ) -> None: ...
    def trans_group_file_sync(
        self, group_id: Union[str, int], file_id: str
    ) -> None: ...
    async def upload_group_file(
        self,
        group_id: Union[str, int],
        file: str,
        name: str,
        folder: Optional[str] = ...,
    ) -> None: ...
    def upload_group_file_sync(
        self,
        group_id: Union[str, int],
        file: str,
        name: str,
        folder: Optional[str] = ...,
    ) -> None: ...
    async def upload_image_to_group_album(
        self,
        group_id: Union[str, int],
        file: str,
        album_id: str = ...,
        album_name: str = ...,
    ) -> None: ...
    def upload_image_to_group_album_sync(
        self,
        group_id: Union[str, int],
        file: str,
        album_id: str = ...,
        album_name: str = ...,
    ) -> None: ...
