async function collect ({olderThan} = {}) {
  return // TODO
  // logger.silly('Running GC')
  // olderThan = typeof olderThan === 'number' ? olderThan : TRASH_EXPIRATION_AGE

  // // clear any scheduled GC
  // if (nextGCTimeout) {
  //   clearTimeout(nextGCTimeout)
  //   nextGCTimeout = null
  // }

  // // run the GC
  // var totalBytes = 0
  // var startTime = Date.now()

  // // clear items in trash
  // var trashItems = await query({olderThan})
  // if (trashItems.length) {
  //   logger.info(`Deleting ${trashItems.length} items in trash`)
  //   logger.silly('Items:', {urls: trashItems.map(a => a.name)})
  // }
  // for (let item of trashItems) {
  //   let path = joinPath(PATHS.TRASH, item.name)
  //   if (item.stat.mount) {
  //     await filesystem.get().pda.unmount(path)
  //   } else if (item.stat.isDirectory()) {
  //     await filesystem.get().pda.rmdir(path, {recursive: true})
  //   } else {
  //     await filesystem.get().pda.unlink(path)
  //   }
  //   totalBytes += item.stat.size
  // }

  // // clear cached dats
  // // TODO
  // // fetch all drive metas with lastaccesstime older than DAT_CACHE_TIME
  // // then delete the drive
  // {
  //   // await datLibrary.removeFromTrash(trashItems[i].key)
  //   // totalBytes += await archivesDb.deleteArchive(trashItems[i].key)
  // }

  // logger.silly(`GC completed in ${Date.now() - startTime} ms`)

  // // schedule the next GC
  // schedule(TRASH_REGULAR_COLLECT_WAIT)
  // logger.silly(`Scheduling next run to happen in ${ms(TRASH_REGULAR_COLLECT_WAIT)}`)

  // // return stats
  // return {totalBytes, totalItems: trashItems.length}
}
@param {Object} [opts]
@param {number} [opts.olderThan]
@returns {Promise<CollectResult>}