package com.garfiec.librechat.core.data.di

import android.app.Application
import android.content.Context
import androidx.datastore.core.DataStore
import com.garfiec.librechat.core.common.network.ConnectivityObserver
import com.garfiec.librechat.core.network.api.AgentsApi
import com.garfiec.librechat.core.network.api.ApiKeysApi
import com.garfiec.librechat.core.network.api.AuthApi
import com.garfiec.librechat.core.network.api.BalanceApi
import com.garfiec.librechat.core.network.api.BannerApi
import com.garfiec.librechat.core.network.api.ChatApi
import com.garfiec.librechat.core.network.api.ConfigApi
import com.garfiec.librechat.core.network.api.ConversationsApi
import com.garfiec.librechat.core.network.api.FilesApi
import com.garfiec.librechat.core.network.api.FilesExtApi
import com.garfiec.librechat.core.network.api.KeysApi
import com.garfiec.librechat.core.network.api.McpApi
import com.garfiec.librechat.core.network.api.MemoriesApi
import com.garfiec.librechat.core.network.api.MessagesApi
import com.garfiec.librechat.core.network.api.PresetsApi
import com.garfiec.librechat.core.network.api.PromptsApi
import com.garfiec.librechat.core.network.api.SearchApi
import com.garfiec.librechat.core.network.api.ShareApi
import com.garfiec.librechat.core.network.api.SpeechApi
import com.garfiec.librechat.core.network.api.TagsApi
import com.garfiec.librechat.core.network.api.UserApi
import com.garfiec.librechat.core.network.sse.SseClient
import io.ktor.client.HttpClient
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.serialization.json.Json
import org.junit.Test
import org.koin.test.verify.verify

class DataModuleVerificationTest {
    @Test
    fun verifyDataModule() {
        dataModule.verify(
            extraTypes = listOf(
                Context::class,
                Application::class,
                Lazy::class,
                HttpClient::class,
                Json::class,
                CoroutineDispatcher::class,
                ConnectivityObserver::class,
                SseClient::class,
                AuthApi::class,
                UserApi::class,
                ChatApi::class,
                ConversationsApi::class,
                MessagesApi::class,
                FilesApi::class,
                FilesExtApi::class,
                AgentsApi::class,
                PresetsApi::class,
                PromptsApi::class,
                TagsApi::class,
                ShareApi::class,
                ConfigApi::class,
                BalanceApi::class,
                SearchApi::class,
                KeysApi::class,
                ApiKeysApi::class,
                McpApi::class,
                MemoriesApi::class,
                SpeechApi::class,
                BannerApi::class,
                DataStore::class,
            ),
        )
    }
}
