readTile

abstract suspend fun readTile(z: Int, x: Int, y: Int): TileBlob?

Returns the cached blob, or null if the tile isn't present. Treat TileBlob.EMPTY as "the server confirmed no tile here" — distinct from null cache miss.