Reading from the source code:

https://github.com/mozilla/pdf.js/blob/57d196e3497e77c81c19f852715ce79d9fb91492/src/display/annotation_layer.js#L2846

it appears to me it was not an intention to mark downloadManager as a required parameter in AnnotationLayerParameters:

https://github.com/mozilla/pdf.js/blob/57d196e3497e77c81c19f852715ce79d9fb91492/src/display/annotation_layer.js#L63

and AnnotationLayerBuilderOptions:

https://github.com/mozilla/pdf.js/blob/57d196e3497e77c81c19f852715ce79d9fb91492/web/annotation_layer_builder.js#L40

and it should be optional, similarly to accessibilityManager for example:

https://github.com/mozilla/pdf.js/blob/57d196e3497e77c81c19f852715ce79d9fb91492/web/text_layer_builder.js#L30

**Configuration:**
- PDF.js version: 2.11.174
- Is a browser extension: no

**What is the expected behavior? (add screenshot)**

`downloadManager` to be optional

**What went wrong? (add screenshot)**

`downloadManager` marked as required

Link to a viewer (if hosted on a site other than mozilla.github.io/pdf.js or as Firefox/Chrome extension):

popup.append(header);
    if (this.#dateTimePromise) {
      const modificationDate = document.createElement("span");
      modificationDate.classList.add("popupDate");
      this.#dateTimePromise.then(localized => {
        modificationDate.textContent = localized;
      });
      header.append(modificationDate);
    }
    const contentsObj = this.#contentsObj;
    const richText = this.#richText;
    if (
      richText?.str &&
      (!contentsObj?.str || contentsObj.str === richText.str)
    ) {
      XfaLayer.render({
        xfaHtml: richText.html,
        intent: "richText",
        div: popup,
      });
      popup.lastChild.classList.add("richText", "popupContent");
    } else {
      const contents = this._formatContents(contentsObj);
      popup.append(contents);
    }
    let useParentRect = !!this.#parentRect;
    let rect = useParentRect ? this.#parentRect : this.#rect;
    for (const element of this.#elements) {
      if (!rect || Util.intersect(element.data.rect, rect) !== null) {
        rect = element.data.rect;