Js-libp2p: inconsistency with interface-libp2p and peerDiscovery

the interface-libp2p package doesn’t include Registrar and ConnectionManager which are essential to initialise a PeerDiscovery instance.

when we pass in any peer discovery implemention using

libp2p: {
  peerDiscovery: [xyz()]
}

xyz is expected to take in Components as an argument, which is not possible to construct anymore outside of that scope if we don’t expose ConnectionManager and Registrar from the API

tl;dr:
peer discovery implementations expect Components as an argument for their initialisations, whereas it’s (seemingly) not possible to construct them when using interfaces-libp2p as it doesn’t expose Registrar and ConnectionManager

also look at: Registrar and ConnectionManager missing from interface-libp2p · Issue #338 · libp2p/js-libp2p-interfaces · GitHub

what is the recommended way to go about such a use case?