readMany

suspend fun readMany(requests: List<MidnightContract.ReadRequest>, notIndexedTimeoutMs: Long = 0): Map<String, MidnightContract.ReadOutcome>

Read MANY view circuits in one shot: ONE state fetch, ONE engine session, every circuit against the SAME state snapshot (each isolated on a native clone). Failures are captured per key instead of failing the batch — probing patterns (enumerate proposals until the contract's not-found assert) read the error from the outcome.

notIndexedTimeoutMs 0 retries the state fetch while the contract isn't in the indexer yet (a freshly-deployed or just-connected contract lags the node by a beat) — the retry every consumer was hand-rolling. Cancellation propagates normally.