)// Advertiser is an interface for advertising servicestypeAdvertiserinterface{// Advertise advertises a serviceAdvertise(ctxcontext.Context,nsstring,opts...Option)(time.Duration,error)}// Discoverer is an interface for peer discoverytypeDiscovererinterface{// FindPeers discovers peers providing a serviceFindPeers(ctxcontext.Context,nsstring,opts...Option)(<-chanpeer.AddrInfo,error)}// Discovery is an interface that combines service advertisement and peer discoverytypeDiscoveryinterface{AdvertiserDiscoverer}