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

import typing

from .resources.agent.client import AgentClient, AsyncAgentClient
from .resources.agent_documents.client import AgentDocumentsClient, AsyncAgentDocumentsClient
from .resources.agent_tools.client import AgentToolsClient, AsyncAgentToolsClient
from .resources.api_token.client import ApiTokenClient, AsyncApiTokenClient
from .resources.auth.client import AsyncAuthClient, AuthClient
from .resources.documents.client import AsyncDocumentsClient, DocumentsClient
from .resources.prompts.client import AsyncPromptsClient, PromptsClient
from .resources.tags.client import AsyncTagsClient, TagsClient
from .resources.tools.client import AsyncToolsClient, ToolsClient
from .resources.traces.client import AsyncTracesClient, TracesClient
from .resources.user.client import AsyncUserClient, UserClient


class Superagent:
    def __init__(self, *, environment: str, token: typing.Optional[str] = None):
        self._environment = environment
        self._token = token
        self.agent = AgentClient(environment=self._environment, token=self._token)
        self.agent_documents = AgentDocumentsClient(environment=self._environment, token=self._token)
        self.tags = TagsClient(environment=self._environment, token=self._token)
        self.agent_tools = AgentToolsClient(environment=self._environment, token=self._token)
        self.auth = AuthClient(environment=self._environment, token=self._token)
        self.user = UserClient(environment=self._environment, token=self._token)
        self.api_token = ApiTokenClient(environment=self._environment, token=self._token)
        self.documents = DocumentsClient(environment=self._environment, token=self._token)
        self.prompts = PromptsClient(environment=self._environment, token=self._token)
        self.tools = ToolsClient(environment=self._environment, token=self._token)
        self.traces = TracesClient(environment=self._environment, token=self._token)


class AsyncSuperagent:
    def __init__(self, *, environment: str, token: typing.Optional[str] = None):
        self._environment = environment
        self._token = token
        self.agent = AsyncAgentClient(environment=self._environment, token=self._token)
        self.agent_documents = AsyncAgentDocumentsClient(environment=self._environment, token=self._token)
        self.tags = AsyncTagsClient(environment=self._environment, token=self._token)
        self.agent_tools = AsyncAgentToolsClient(environment=self._environment, token=self._token)
        self.auth = AsyncAuthClient(environment=self._environment, token=self._token)
        self.user = AsyncUserClient(environment=self._environment, token=self._token)
        self.api_token = AsyncApiTokenClient(environment=self._environment, token=self._token)
        self.documents = AsyncDocumentsClient(environment=self._environment, token=self._token)
        self.prompts = AsyncPromptsClient(environment=self._environment, token=self._token)
        self.tools = AsyncToolsClient(environment=self._environment, token=self._token)
        self.traces = AsyncTracesClient(environment=self._environment, token=self._token)
