Mbgl-offline -

auto region = mbgl::OfflineRegion::create(...); region.setOfflineMapObserver(observer); region.setOfflineMapDownloadState(state); Example in Mapbox GL JS (web):