BalanceRepository

@Singleton
class BalanceRepository @Inject constructor(utxoManager: UtxoManager, indexerClient: IndexerClient)

Repository for aggregating and exposing token balances to the UI layer.

Responsibilities:

  • Transform UTXO manager data to TokenBalance models

  • Expose Flow> for UI consumption

  • Calculate token balances from available UTXOs

Data Flow:

Database → UtxoManager → BalanceRepository → ViewModel → UI
(UTXOs) (Sum by type) (Add metadata) (Transform) (Display)

Example Usage:

@Inject lateinit var repository: BalanceRepository

repository.observeBalances(address)
.collect { balances ->
balances.forEach { balance ->
println("${balance.tokenType}: ${balance.balance} (${balance.utxoCount} UTXOs)")
}
}

Constructors

Link copied to clipboard
@Inject
constructor(utxoManager: UtxoManager, indexerClient: IndexerClient)

Functions

Link copied to clipboard
fun observeBalances(address: String): Flow<List<TokenBalance>>

Observe available token balances for a specific address.

Link copied to clipboard

Observe pending token balances for a specific address.

Link copied to clipboard
fun observeTokenBalance(address: String, tokenType: String): Flow<TokenBalance?>

Observe balance for a specific token type.

Link copied to clipboard

Observe total balance across all token types (available + pending).

Link copied to clipboard
suspend fun resetConnection()

Reset the WebSocket connection to the indexer.