// - gossipsubParams: an object containing custom gossipsub parameters. All attributes are optional, and if not specified, it will use default values.
// - d: optimal degree for a GossipSub topic mesh. Default `6`
// - dLow: lower bound on the number of peers we keep in a GossipSub topic mesh. Default `5`
// - dHigh: upper bound on the number of peers we keep in a GossipSub topic mesh. Default `12`
// - dScore: affects how peers are selected when pruning a mesh due to over subscription. Default `4`
// - dOut: sets the quota for the number of outbound connections to maintain in a topic mesh. Default `2`
// - historyLength: controls the size of the message cache used for gossip. Default `5`
// - historyGossip: controls how many cached message ids we will advertise in IHAVE gossip messages. Default `3`
// - dLazy: affects how many peers we will emit gossip to at each heartbeat. Default `6`
// - gossipFactor: affects how many peers we will emit gossip to at each heartbeat. Default `0.25`
// - gossipRetransmission: controls how many times we will allow a peer to request the same message id through IWANT gossip before we start ignoring them. Default `3`
// - heartbeatInitialDelayMs: short delay in milliseconds before the heartbeat timer begins after the router is initialized. Default `100` milliseconds
// - heartbeatIntervalSeconds: controls the time between heartbeats. Default `1` second
// - slowHeartbeatWarning: duration threshold for heartbeat processing before emitting a warning. Default `0.1`
// - fanoutTTLSeconds: controls how long we keep track of the fanout state. Default `60` seconds
// - prunePeers: controls the number of peers to include in prune Peer eXchange. Default `16`
// - pruneBackoffSeconds: controls the backoff time for pruned peers. Default `60` seconds
// - unsubscribeBackoffSeconds: controls the backoff time to use when unsuscribing from a topic. Default `10` seconds
// - connectors: number of active connection attempts for peers obtained through PX. Default `8`
// - maxPendingConnections: maximum number of pending connections for peers attempted through px. Default `128`
// - connectionTimeoutSeconds: timeout in seconds for connection attempts. Default `30` seconds
// - directConnectTicks: the number of heartbeat ticks for attempting to reconnect direct peers that are not currently connected. Default `300`
// - directConnectInitialDelaySeconds: initial delay before opening connections to direct peers. Default `1` second
// - opportunisticGraftTicks: number of heartbeat ticks for attempting to improve the mesh with opportunistic grafting. Default `60`
// - opportunisticGraftPeers: the number of peers to opportunistically graft. Default `2`
// - graftFloodThresholdSeconds: If a GRAFT comes before GraftFloodThresholdSeconds has elapsed since the last PRUNE, then there is an extra score penalty applied to the peer through P7. Default `10` seconds
// - maxIHaveLength: max number of messages to include in an IHAVE message, also controls the max number of IHAVE ids we will accept and request with IWANT from a peer within a heartbeat. Default `5000`
// - maxIHaveMessages: max number of IHAVE messages to accept from a peer within a heartbeat. Default `10`
// - iWantFollowupTimeSeconds: Time to wait for a message requested through IWANT following an IHAVE advertisement. Default `3` seconds