BalanceCalculator

Calculates wallet balance from ledger events.

Algorithm:

  1. Start with zero balance

  2. Process events chronologically (by ID)

  3. For each event:

    • If receiver matches wallet address: ADD amount

    • If sender matches wallet address: SUBTRACT amount

  4. Track shielded/unshielded/dust separately

Usage:

val calculator = BalanceCalculator()
val deserializer = MockDeserializer()

// Process cached events
val events = cachedEvents.map { deserializer.deserialize(it.rawHex) }
val balance = calculator.calculate(events, walletAddress = "mn_addr_...")

Constructors

Link copied to clipboard
constructor()

Functions

Link copied to clipboard
fun calculate(events: List<LedgerEvent>, walletAddress: String): Balance

Calculate balance for a specific address from ledger events.

Link copied to clipboard
suspend fun calculateFromRaw(rawEvents: List<String>, walletAddress: String, deserializer: LedgerEventDeserializer): Balance

Calculate balance from raw hex events (includes deserialization).