type PubSub interface { GetSubs() iter.Seq[*Sub] GetPubs() iter.Seq[*Pub] GetChannels() iter.Seq[*Channel] GetPipes() iter.Seq[*Pipe] Pipe(pipeClient *PipeClient, pipes []*Pipe) error Sub(sub *Sub, channels []*Channel) error Pub(pub *Pub, channels []*Channel) error } type Cfg struct { Logger *slog.Logger PubSub PubSub }