async def METHOD_NAME(
    conn: triopg._triopg.TrioConnectionProxy,
    organization_id: OrganizationID,
    author: DeviceID,
    realm_id: RealmID,
    checkpoint: int,
) -> Tuple[int, Dict[VlobID, int]]:
    await _check_realm_and_read_access(conn, organization_id, author, realm_id, None)
    ret = await conn.fetch(
        *_q_poll_changes(
            organization_id=organization_id.str, realm_id=realm_id, checkpoint=checkpoint
        )
    )
    changes_since_checkpoint: Dict[VlobID, int] = {
        VlobID.from_hex(src_id): src_version for _, src_id, src_version in ret
    }
    new_checkpoint: int = ret[-1][0] if ret else checkpoint
    return (new_checkpoint, changes_since_checkpoint)