from .base import BaseClient
from .user import UserClient
from .site import SiteClient
from .device import DeviceClient
from .ssid import SSIDClient
from .organization import OrganizationClient
from .auth import Authenticator

class OVCirrusApiClient:
    def __init__(self, base_url: str, auth: Authenticator):
        self.base_client = BaseClient(base_url, auth)

        # Attach modular clients, reusing the base methods
        self.user = UserClient(self.base_client)
        self.organization = OrganizationClient(self.base_client)
        self.site = SiteClient(self.base_client)
        self.device = DeviceClient(self.base_client)
        self.ssid = SSIDClient(self.base_client)

    async def close(self):
        await self.base_client.close()
