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