async def METHOD_NAME(
    conn: triopg._triopg.TrioConnectionProxy,
    organization_id: OrganizationID,
    author: DeviceID,
    encryption_revision: int,
    vlob_id: VlobID,
    version: int | None = None,
    timestamp: DateTime | None = None,
) -> Tuple[int, bytes, DeviceID, DateTime, DateTime]:
    realm_id = await _get_realm_id_from_vlob_id(conn, organization_id, vlob_id)
    await _check_realm_and_read_access(conn, organization_id, author, realm_id, encryption_revision)
    if version is None:
        if timestamp is None:
            data = await conn.fetchrow(
                *_q_read_data_without_timestamp(
                    organization_id=organization_id.str,
                    realm_id=realm_id,
                    encryption_revision=encryption_revision,
                    vlob_id=vlob_id,
                )
            )
            assert data  # _get_realm_id_from_vlob_id checks vlob presence
        else:
            data = await conn.fetchrow(
                *_q_read_data_with_timestamp(
                    organization_id=organization_id.str,
                    realm_id=realm_id,
                    encryption_revision=encryption_revision,
                    vlob_id=vlob_id,
                    timestamp=timestamp,
                )
            )
            if not data:
                raise VlobVersionError()
    else:
        data = await conn.fetchrow(
            *_q_read_data_with_version(
                organization_id=organization_id.str,
                realm_id=realm_id,
                encryption_revision=encryption_revision,
                vlob_id=vlob_id,
                version=version,
            )
        )
        if not data:
            raise VlobVersionError()
    version, blob, vlob_author, created_on = data
    assert isinstance(version, int)
    assert isinstance(blob, bytes)
    vlob_author = DeviceID(vlob_author)
    author_last_role_granted_on = await _get_last_role_granted_on(
        conn, organization_id, realm_id, vlob_author
    )
    assert isinstance(author_last_role_granted_on, DateTime)
    return version, blob, vlob_author, created_on, author_last_role_granted_on