provideSubscriptionManagerFactory

@Provides
fun provideSubscriptionManagerFactory(context: Context, indexerClient: IndexerClient, utxoManager: UtxoManager, syncStateManager: SyncStateManager, networkRepository: NetworkRepository): SubscriptionManagerFactory

Provide SubscriptionManagerFactory.

Why Factory: SubscriptionManager should NOT be singleton because:

  • Each instance manages subscription for ONE address

  • Multiple addresses = multiple SubscriptionManager instances

  • Lifecycle tied to ViewModel/screen scope, not app scope

Usage in ViewModel:

@HiltViewModel
class BalanceViewModel @Inject constructor(
private val subscriptionManagerFactory: SubscriptionManagerFactory
) : ViewModel() {

fun syncBalance(address: String) {
viewModelScope.launch {
subscriptionManagerFactory.create()
.startSubscription(address)
.collect { state -> ... }
}
}
}