package p2p

import (
	"source.quilibrium.com/quilibrium/monorepo/go-libp2p-blossomsub/pb"
)

type PubSub interface {
	PublishToBitmask(bitmask []byte, data []byte) error
	Publish(data []byte) error
	Subscribe(bitmask []byte, handler func(message *pb.Message) error, raw bool)
	Unsubscribe(bitmask []byte, raw bool)
	GetPeerID() []byte
	GetBitmaskPeers() map[string][]string
	GetPeerstoreCount() int
	GetNetworkPeersCount() int
	GetRandomPeer(bitmask []byte) ([]byte, error)
	GetMultiaddrOfPeer(peerId []byte) string
}
