ModdleElement typesafety

Hi,
I am currently trying to make programmatic changes to a moddle typesafe. Here is an example of what I came up with so far:

import { Element } from "bpmn-js/lib/model/Types";
import { useService } from "bpmn-js-properties-panel";
import Modeling from "bpmn-js/lib/features/modeling/Modeling";
import { getBusinessObject, is } from "bpmn-js/lib/util/ModelUtil";
import BPMNModdle, { ModdleElement } from "bpmn-moddle";

const removeSpecificExecutionListener = (element: Element): void => {
  const moddle: BPMNModdle = useService("moddle");
  const modeling: Modeling = useService("modeling");

  const businessObject: ModdleElement = getBusinessObject(element);
  const extensionElements =
    businessObject.extensionElements || moddle.create("bpmn:ExtensionElements"); // What type is this?
  const values: ModdleElement[] | undefined = extensionElements.get("values");
  if (values?.length) {
    const index = values.findIndex(
      (value) =>
        is(value, "camunda:ExecutionListener") &&
        value.get("event") === "start" &&
        value
          .get("fields")
          .some(
            (field: ModdleElement) =>
              field.get("name") === "hideExecutionListener" &&
              field.get("string") === "true",
          ),
    );
    if (index > -1) {
      extensionElements.get("values").splice(index, 1);
    }
  }

  modeling.updateProperties(element, {
    extensionElements,
  });
};

These are my questions regarding this example:

What type should const extensionElements be?

Is ModdleElement[] | undefined the correct type for extensionElements? It feels like ModdleElement provides no information about the correctness of the model and there is no autocompletion. Did I import the correct type import BPMNModdle, { ModdleElement } from "bpmn-moddle"; ?

Is there a guide on what types to import when working with the bpmn libraries and typescript?

The bpmn-moddle types weren’t created by us so we can’t vouch for their correctness.