# This file was auto-generated by Fern from our API Definition.

import typing

from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
from ..core.request_options import RequestOptions
from ..types.access_group import AccessGroup
from ..types.access_group_list_response import AccessGroupListResponse
from ..types.access_group_manager import AccessGroupManager
from ..types.access_group_managers_response import AccessGroupManagersResponse
from ..types.access_group_member import AccessGroupMember
from ..types.access_group_members_response import AccessGroupMembersResponse
from ..types.access_group_visible_org import AccessGroupVisibleOrg
from ..types.access_group_visible_orgs_response import AccessGroupVisibleOrgsResponse
from ..types.delete_response import DeleteResponse
from .raw_client import AsyncRawGroupsClient, RawGroupsClient

# this is used as the default value for optional parameters
OMIT = typing.cast(typing.Any, ...)


class GroupsClient:
    def __init__(self, *, client_wrapper: SyncClientWrapper):
        self._raw_client = RawGroupsClient(client_wrapper=client_wrapper)

    @property
    def with_raw_response(self) -> RawGroupsClient:
        """
        Retrieves a raw implementation of this client that returns raw responses.

        Returns
        -------
        RawGroupsClient
        """
        return self._raw_client

    def list(
        self,
        *,
        owner_org_id: typing.Optional[str] = None,
        limit: typing.Optional[int] = None,
        page_number: typing.Optional[int] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> AccessGroupListResponse:
        """
        List groups visible to the current principal.

        Parameters
        ----------
        owner_org_id : typing.Optional[str]
            Optional owner org filter.

        limit : typing.Optional[int]

        page_number : typing.Optional[int]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroupListResponse
            Successful Response

        Examples
        --------
        from terminaluse import TerminalUseBase

        client = TerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )
        client.groups.list()
        """
        _response = self._raw_client.list(
            owner_org_id=owner_org_id, limit=limit, page_number=page_number, request_options=request_options
        )
        return _response.data

    def create(
        self,
        *,
        name: str,
        description: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> AccessGroup:
        """
        Create an org-owned access group.

        Parameters
        ----------
        name : str
            Group name (unique within owner org).

        description : typing.Optional[str]
            Optional group description.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroup
            Successful Response

        Examples
        --------
        from terminaluse import TerminalUseBase

        client = TerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )
        client.groups.create(
            name="name",
        )
        """
        _response = self._raw_client.create(name=name, description=description, request_options=request_options)
        return _response.data

    def retrieve(self, group_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> AccessGroup:
        """
        Get group details.

        Parameters
        ----------
        group_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroup
            Successful Response

        Examples
        --------
        from terminaluse import TerminalUseBase

        client = TerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )
        client.groups.retrieve(
            group_id="group_id",
        )
        """
        _response = self._raw_client.retrieve(group_id, request_options=request_options)
        return _response.data

    def delete(self, group_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> DeleteResponse:
        """
        Delete an access group.

        Parameters
        ----------
        group_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        DeleteResponse
            Successful Response

        Examples
        --------
        from terminaluse import TerminalUseBase

        client = TerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )
        client.groups.delete(
            group_id="group_id",
        )
        """
        _response = self._raw_client.delete(group_id, request_options=request_options)
        return _response.data

    def update(
        self,
        group_id: str,
        *,
        description: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> AccessGroup:
        """
        Update group metadata.

        Parameters
        ----------
        group_id : str

        description : typing.Optional[str]
            Optional group description.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroup
            Successful Response

        Examples
        --------
        from terminaluse import TerminalUseBase

        client = TerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )
        client.groups.update(
            group_id="group_id",
        )
        """
        _response = self._raw_client.update(group_id, description=description, request_options=request_options)
        return _response.data

    def managers_list(
        self, group_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> AccessGroupManagersResponse:
        """
        Parameters
        ----------
        group_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroupManagersResponse
            Successful Response

        Examples
        --------
        from terminaluse import TerminalUseBase

        client = TerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )
        client.groups.managers_list(
            group_id="group_id",
        )
        """
        _response = self._raw_client.managers_list(group_id, request_options=request_options)
        return _response.data

    def managers_upsert(
        self, group_id: str, member_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> AccessGroupManager:
        """
        Parameters
        ----------
        group_id : str

        member_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroupManager
            Successful Response

        Examples
        --------
        from terminaluse import TerminalUseBase

        client = TerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )
        client.groups.managers_upsert(
            group_id="group_id",
            member_id="member_id",
        )
        """
        _response = self._raw_client.managers_upsert(group_id, member_id, request_options=request_options)
        return _response.data

    def managers_delete(
        self, group_id: str, member_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> DeleteResponse:
        """
        Parameters
        ----------
        group_id : str

        member_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        DeleteResponse
            Successful Response

        Examples
        --------
        from terminaluse import TerminalUseBase

        client = TerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )
        client.groups.managers_delete(
            group_id="group_id",
            member_id="member_id",
        )
        """
        _response = self._raw_client.managers_delete(group_id, member_id, request_options=request_options)
        return _response.data

    def members_list(
        self, group_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> AccessGroupMembersResponse:
        """
        Parameters
        ----------
        group_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroupMembersResponse
            Successful Response

        Examples
        --------
        from terminaluse import TerminalUseBase

        client = TerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )
        client.groups.members_list(
            group_id="group_id",
        )
        """
        _response = self._raw_client.members_list(group_id, request_options=request_options)
        return _response.data

    def members_upsert(
        self, group_id: str, member_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> AccessGroupMember:
        """
        Parameters
        ----------
        group_id : str

        member_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroupMember
            Successful Response

        Examples
        --------
        from terminaluse import TerminalUseBase

        client = TerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )
        client.groups.members_upsert(
            group_id="group_id",
            member_id="member_id",
        )
        """
        _response = self._raw_client.members_upsert(group_id, member_id, request_options=request_options)
        return _response.data

    def members_delete(
        self, group_id: str, member_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> DeleteResponse:
        """
        Parameters
        ----------
        group_id : str

        member_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        DeleteResponse
            Successful Response

        Examples
        --------
        from terminaluse import TerminalUseBase

        client = TerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )
        client.groups.members_delete(
            group_id="group_id",
            member_id="member_id",
        )
        """
        _response = self._raw_client.members_delete(group_id, member_id, request_options=request_options)
        return _response.data

    def visible_orgs_list(
        self, group_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> AccessGroupVisibleOrgsResponse:
        """
        Parameters
        ----------
        group_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroupVisibleOrgsResponse
            Successful Response

        Examples
        --------
        from terminaluse import TerminalUseBase

        client = TerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )
        client.groups.visible_orgs_list(
            group_id="group_id",
        )
        """
        _response = self._raw_client.visible_orgs_list(group_id, request_options=request_options)
        return _response.data

    def visible_orgs_upsert(
        self, group_id: str, org_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> AccessGroupVisibleOrg:
        """
        Parameters
        ----------
        group_id : str

        org_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroupVisibleOrg
            Successful Response

        Examples
        --------
        from terminaluse import TerminalUseBase

        client = TerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )
        client.groups.visible_orgs_upsert(
            group_id="group_id",
            org_id="org_id",
        )
        """
        _response = self._raw_client.visible_orgs_upsert(group_id, org_id, request_options=request_options)
        return _response.data

    def visible_orgs_delete(
        self, group_id: str, org_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> DeleteResponse:
        """
        Parameters
        ----------
        group_id : str

        org_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        DeleteResponse
            Successful Response

        Examples
        --------
        from terminaluse import TerminalUseBase

        client = TerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )
        client.groups.visible_orgs_delete(
            group_id="group_id",
            org_id="org_id",
        )
        """
        _response = self._raw_client.visible_orgs_delete(group_id, org_id, request_options=request_options)
        return _response.data


class AsyncGroupsClient:
    def __init__(self, *, client_wrapper: AsyncClientWrapper):
        self._raw_client = AsyncRawGroupsClient(client_wrapper=client_wrapper)

    @property
    def with_raw_response(self) -> AsyncRawGroupsClient:
        """
        Retrieves a raw implementation of this client that returns raw responses.

        Returns
        -------
        AsyncRawGroupsClient
        """
        return self._raw_client

    async def list(
        self,
        *,
        owner_org_id: typing.Optional[str] = None,
        limit: typing.Optional[int] = None,
        page_number: typing.Optional[int] = None,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> AccessGroupListResponse:
        """
        List groups visible to the current principal.

        Parameters
        ----------
        owner_org_id : typing.Optional[str]
            Optional owner org filter.

        limit : typing.Optional[int]

        page_number : typing.Optional[int]

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroupListResponse
            Successful Response

        Examples
        --------
        import asyncio

        from terminaluse import AsyncTerminalUseBase

        client = AsyncTerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )


        async def main() -> None:
            await client.groups.list()


        asyncio.run(main())
        """
        _response = await self._raw_client.list(
            owner_org_id=owner_org_id, limit=limit, page_number=page_number, request_options=request_options
        )
        return _response.data

    async def create(
        self,
        *,
        name: str,
        description: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> AccessGroup:
        """
        Create an org-owned access group.

        Parameters
        ----------
        name : str
            Group name (unique within owner org).

        description : typing.Optional[str]
            Optional group description.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroup
            Successful Response

        Examples
        --------
        import asyncio

        from terminaluse import AsyncTerminalUseBase

        client = AsyncTerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )


        async def main() -> None:
            await client.groups.create(
                name="name",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.create(name=name, description=description, request_options=request_options)
        return _response.data

    async def retrieve(self, group_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> AccessGroup:
        """
        Get group details.

        Parameters
        ----------
        group_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroup
            Successful Response

        Examples
        --------
        import asyncio

        from terminaluse import AsyncTerminalUseBase

        client = AsyncTerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )


        async def main() -> None:
            await client.groups.retrieve(
                group_id="group_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.retrieve(group_id, request_options=request_options)
        return _response.data

    async def delete(self, group_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> DeleteResponse:
        """
        Delete an access group.

        Parameters
        ----------
        group_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        DeleteResponse
            Successful Response

        Examples
        --------
        import asyncio

        from terminaluse import AsyncTerminalUseBase

        client = AsyncTerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )


        async def main() -> None:
            await client.groups.delete(
                group_id="group_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.delete(group_id, request_options=request_options)
        return _response.data

    async def update(
        self,
        group_id: str,
        *,
        description: typing.Optional[str] = OMIT,
        request_options: typing.Optional[RequestOptions] = None,
    ) -> AccessGroup:
        """
        Update group metadata.

        Parameters
        ----------
        group_id : str

        description : typing.Optional[str]
            Optional group description.

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroup
            Successful Response

        Examples
        --------
        import asyncio

        from terminaluse import AsyncTerminalUseBase

        client = AsyncTerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )


        async def main() -> None:
            await client.groups.update(
                group_id="group_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.update(group_id, description=description, request_options=request_options)
        return _response.data

    async def managers_list(
        self, group_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> AccessGroupManagersResponse:
        """
        Parameters
        ----------
        group_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroupManagersResponse
            Successful Response

        Examples
        --------
        import asyncio

        from terminaluse import AsyncTerminalUseBase

        client = AsyncTerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )


        async def main() -> None:
            await client.groups.managers_list(
                group_id="group_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.managers_list(group_id, request_options=request_options)
        return _response.data

    async def managers_upsert(
        self, group_id: str, member_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> AccessGroupManager:
        """
        Parameters
        ----------
        group_id : str

        member_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroupManager
            Successful Response

        Examples
        --------
        import asyncio

        from terminaluse import AsyncTerminalUseBase

        client = AsyncTerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )


        async def main() -> None:
            await client.groups.managers_upsert(
                group_id="group_id",
                member_id="member_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.managers_upsert(group_id, member_id, request_options=request_options)
        return _response.data

    async def managers_delete(
        self, group_id: str, member_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> DeleteResponse:
        """
        Parameters
        ----------
        group_id : str

        member_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        DeleteResponse
            Successful Response

        Examples
        --------
        import asyncio

        from terminaluse import AsyncTerminalUseBase

        client = AsyncTerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )


        async def main() -> None:
            await client.groups.managers_delete(
                group_id="group_id",
                member_id="member_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.managers_delete(group_id, member_id, request_options=request_options)
        return _response.data

    async def members_list(
        self, group_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> AccessGroupMembersResponse:
        """
        Parameters
        ----------
        group_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroupMembersResponse
            Successful Response

        Examples
        --------
        import asyncio

        from terminaluse import AsyncTerminalUseBase

        client = AsyncTerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )


        async def main() -> None:
            await client.groups.members_list(
                group_id="group_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.members_list(group_id, request_options=request_options)
        return _response.data

    async def members_upsert(
        self, group_id: str, member_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> AccessGroupMember:
        """
        Parameters
        ----------
        group_id : str

        member_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroupMember
            Successful Response

        Examples
        --------
        import asyncio

        from terminaluse import AsyncTerminalUseBase

        client = AsyncTerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )


        async def main() -> None:
            await client.groups.members_upsert(
                group_id="group_id",
                member_id="member_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.members_upsert(group_id, member_id, request_options=request_options)
        return _response.data

    async def members_delete(
        self, group_id: str, member_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> DeleteResponse:
        """
        Parameters
        ----------
        group_id : str

        member_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        DeleteResponse
            Successful Response

        Examples
        --------
        import asyncio

        from terminaluse import AsyncTerminalUseBase

        client = AsyncTerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )


        async def main() -> None:
            await client.groups.members_delete(
                group_id="group_id",
                member_id="member_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.members_delete(group_id, member_id, request_options=request_options)
        return _response.data

    async def visible_orgs_list(
        self, group_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> AccessGroupVisibleOrgsResponse:
        """
        Parameters
        ----------
        group_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroupVisibleOrgsResponse
            Successful Response

        Examples
        --------
        import asyncio

        from terminaluse import AsyncTerminalUseBase

        client = AsyncTerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )


        async def main() -> None:
            await client.groups.visible_orgs_list(
                group_id="group_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.visible_orgs_list(group_id, request_options=request_options)
        return _response.data

    async def visible_orgs_upsert(
        self, group_id: str, org_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> AccessGroupVisibleOrg:
        """
        Parameters
        ----------
        group_id : str

        org_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        AccessGroupVisibleOrg
            Successful Response

        Examples
        --------
        import asyncio

        from terminaluse import AsyncTerminalUseBase

        client = AsyncTerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )


        async def main() -> None:
            await client.groups.visible_orgs_upsert(
                group_id="group_id",
                org_id="org_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.visible_orgs_upsert(group_id, org_id, request_options=request_options)
        return _response.data

    async def visible_orgs_delete(
        self, group_id: str, org_id: str, *, request_options: typing.Optional[RequestOptions] = None
    ) -> DeleteResponse:
        """
        Parameters
        ----------
        group_id : str

        org_id : str

        request_options : typing.Optional[RequestOptions]
            Request-specific configuration.

        Returns
        -------
        DeleteResponse
            Successful Response

        Examples
        --------
        import asyncio

        from terminaluse import AsyncTerminalUseBase

        client = AsyncTerminalUseBase(
            agent_api_key="YOUR_AGENT_API_KEY",
            token="YOUR_TOKEN",
            base_url="https://yourhost.com/path/to/api",
        )


        async def main() -> None:
            await client.groups.visible_orgs_delete(
                group_id="group_id",
                org_id="org_id",
            )


        asyncio.run(main())
        """
        _response = await self._raw_client.visible_orgs_delete(group_id, org_id, request_options=request_options)
        return _response.data
