package com.peachpasswords.di import com.peachpasswords.sync.PairedDeviceRegistry import com.peachpasswords.sync.PairedDeviceStore import com.peachpasswords.sync.SyncGenerationPort import com.peachpasswords.sync.SyncGenerationStore import com.peachpasswords.vault.VaultRepository import com.peachpasswords.vault.VaultStorage import com.peachpasswords.vault.VaultStore import dagger.Binds import dagger.Module import dagger.hilt.EntryPoint import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) abstract class VaultModule { @Binds @Singleton abstract fun bindVaultStorage(impl: VaultStore): VaultStorage @Binds @Singleton abstract fun bindPairedDeviceRegistry(impl: PairedDeviceStore): PairedDeviceRegistry @Binds @Singleton abstract fun bindSyncGenerationPort(impl: SyncGenerationStore): SyncGenerationPort } /** QA seam: lets instrumented tests reach the vault without any UI. */ @EntryPoint @InstallIn(SingletonComponent::class) internal interface VaultRepositoryEntryPoint { fun vaultRepository(): VaultRepository }