"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""

from .basesdk import BaseSDK, SyncSDK, AsyncSDK
from .sdkconfiguration import SDKConfiguration
from friendli.core.dedicated_audio import SyncDedicatedAudio, AsyncDedicatedAudio
from friendli.core.dedicated_chat import SyncDedicatedChat, AsyncDedicatedChat
from friendli.core.dedicated_chatrender import (
    SyncDedicatedChatRender,
    AsyncDedicatedChatRender,
)
from friendli.core.dedicated_completions import (
    SyncDedicatedCompletions,
    AsyncDedicatedCompletions,
)
from friendli.core.dedicated_image import SyncDedicatedImage, AsyncDedicatedImage
from friendli.core.dedicated_token import SyncDedicatedToken, AsyncDedicatedToken
from friendli.core.embeddings import SyncEmbeddings, AsyncEmbeddings
from friendli.core.endpoint import SyncEndpoint, AsyncEndpoint
from typing import Optional
import abc


class BaseDedicated(BaseSDK):
    def __init__(
        self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None
    ) -> None:
        BaseSDK.__init__(self, sdk_config, parent_ref=parent_ref)
        self.sdk_configuration = sdk_config
        self._init_sdks()

    def _init_sdks(self) -> None: ...


class SyncDedicated(BaseDedicated, SyncSDK):
    chat: SyncDedicatedChat
    chat_render: SyncDedicatedChatRender
    completions: SyncDedicatedCompletions
    embeddings: SyncEmbeddings
    token: SyncDedicatedToken
    image: SyncDedicatedImage
    audio: SyncDedicatedAudio
    endpoint: SyncEndpoint

    def _init_sdks(self):
        self.chat = SyncDedicatedChat(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.chat_render = SyncDedicatedChatRender(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.completions = SyncDedicatedCompletions(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.embeddings = SyncEmbeddings(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.token = SyncDedicatedToken(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.image = SyncDedicatedImage(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.audio = SyncDedicatedAudio(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.endpoint = SyncEndpoint(self.sdk_configuration, parent_ref=self.parent_ref)


class AsyncDedicated(BaseDedicated, AsyncSDK):
    chat: AsyncDedicatedChat
    chat_render: AsyncDedicatedChatRender
    completions: AsyncDedicatedCompletions
    embeddings: AsyncEmbeddings
    token: AsyncDedicatedToken
    image: AsyncDedicatedImage
    audio: AsyncDedicatedAudio
    endpoint: AsyncEndpoint

    def _init_sdks(self):
        self.chat = AsyncDedicatedChat(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.chat_render = AsyncDedicatedChatRender(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.completions = AsyncDedicatedCompletions(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.embeddings = AsyncEmbeddings(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.token = AsyncDedicatedToken(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.image = AsyncDedicatedImage(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.audio = AsyncDedicatedAudio(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.endpoint = AsyncEndpoint(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
