package com.flagship.abox.manager.di

import com.flagship.abox.manager.domain.DeviceCatalog
import com.flagship.abox.manager.domain.InfraredGateway
import com.flagship.abox.manager.domain.SessionGateway
import com.flagship.abox.manager.domain.SocketGateway
import com.flagship.abox.manager.domain.TemperatureHumidityGateway
import com.flagship.abox.manager.testing.fakes.FakeDeviceCatalog
import com.flagship.abox.manager.testing.fakes.FakeInfraredGateway
import com.flagship.abox.manager.testing.fakes.FakeSessionGateway
import com.flagship.abox.manager.testing.fakes.FakeSocketGateway
import com.flagship.abox.manager.testing.fakes.FakeTemperatureHumidityGateway
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import javax.inject.Singleton

@Module
@InstallIn(SingletonComponent::class)
object FoundationModule {
    @Provides
    @Singleton
    fun provideSessionGateway(): SessionGateway = FakeSessionGateway()

    @Provides
    @Singleton
    fun provideDeviceCatalog(): DeviceCatalog = FakeDeviceCatalog()

    @Provides
    @Singleton
    fun provideSocketGateway(): SocketGateway = FakeSocketGateway()

    @Provides
    @Singleton
    fun provideTemperatureHumidityGateway(): TemperatureHumidityGateway =
        FakeTemperatureHumidityGateway()

    @Provides
    @Singleton
    fun provideInfraredGateway(): InfraredGateway = FakeInfraredGateway()
}
