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

from .basesdk import BaseSDK, SyncSDK, AsyncSDK
from .sdkconfiguration import SDKConfiguration
from friendli.core.container_audio import SyncContainerAudio, AsyncContainerAudio
from friendli.core.container_chat import SyncContainerChat, AsyncContainerChat
from friendli.core.container_completions import (
    SyncContainerCompletions,
    AsyncContainerCompletions,
)
from friendli.core.container_image import SyncContainerImage, AsyncContainerImage
from friendli.core.container_token import SyncContainerToken, AsyncContainerToken
from typing import Optional
import abc


class BaseContainer(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 SyncContainer(BaseContainer, SyncSDK):
    chat: SyncContainerChat
    completions: SyncContainerCompletions
    token: SyncContainerToken
    image: SyncContainerImage
    audio: SyncContainerAudio

    def _init_sdks(self):
        self.chat = SyncContainerChat(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.completions = SyncContainerCompletions(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.token = SyncContainerToken(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.image = SyncContainerImage(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.audio = SyncContainerAudio(
            self.sdk_configuration, parent_ref=self.parent_ref
        )


class AsyncContainer(BaseContainer, AsyncSDK):
    chat: AsyncContainerChat
    completions: AsyncContainerCompletions
    token: AsyncContainerToken
    image: AsyncContainerImage
    audio: AsyncContainerAudio

    def _init_sdks(self):
        self.chat = AsyncContainerChat(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.completions = AsyncContainerCompletions(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.token = AsyncContainerToken(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.image = AsyncContainerImage(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
        self.audio = AsyncContainerAudio(
            self.sdk_configuration, parent_ref=self.parent_ref
        )
