GeoLeaf Core API - v3.19.0
    Preparing search index...
    EventWrapperMap: Map<
        (e: unknown) => void,
        Map<MapEvent, (e: MaplibreEventArg) => void>,
    >

    Caller handler → the events it is bound to → the wrapper actually attached.

    ⚠️ The wrapper is typed on MaplibreEventArg — what MapLibre hands a listener — and NOT on GeoLeafNormalizedMapEvent, which is what it hands the CALLER. The two differ, and stating the engine's side here is what lets map.on/off take the wrapper without a cast. Normalisation happens inside the wrapper, where it belongs.