Build a receipt event that contains all relevant information for this room, taking the most recently received receipt for each user in an unthreaded context, and in each thread.
Given a list of ephemeral events, find the receipts and store the relevant ones to be returned later from buildAccumulatedReceiptEvent().
Summarises the read receipts within a room. Used by the sync accumulator.
Given receipts for users, picks the most recently-received one and provides the results in a new fake receipt event returned from buildAccumulatedReceiptEvent().
Handles unthreaded receipts and receipts in each thread separately, so the returned event contains the most recently received unthreaded receipt, and the most recently received receipt in each thread.