func NewElectionManagerOptions() ElectionManagerOptions {
	return &electionManagerOptions{
		clockOpts:                  clock.NewOptions(),
		instrumentOpts:             instrument.NewOptions(),
		electionOpts:               services.NewElectionOptions(),
		campaignRetryOpts:          retry.NewOptions(),
		changeRetryOpts:            retry.NewOptions(),
		resignRetryOpts:            retry.NewOptions(),
		electionKeyFmt:             defaultElectionKeyFormat,
		campaignStateCheckInterval: defaultCampaignStateCheckInterval,
		shardCutoffCheckOffset:     defaultShardCutoffCheckOffset,
	}
}
NewElectionManagerOptions create a new set of options for the election manager.
package aggregator
import (
	"time"
	"github.com/m3db/m3cluster/services"
	"github.com/m3db/m3x/clock"
	"github.com/m3db/m3x/instrument"
	"github.com/m3db/m3x/retry"
)
const (
	defaultElectionKeyFormat          = "/shardset/%d/lock"
	defaultCampaignStateCheckInterval = time.Second
	defaultShardCutoffCheckOffset     = 30 * time.Second
)
type ElectionManagerOptions interface {
	SetClockOptions(value clock.Options) ElectionManagerOptions
	ClockOptions() clock.Options
	SetInstrumentOptions(value instrument.Options) ElectionManagerOptions
	InstrumentOptions() instrument.Options
	SetElectionOptions(value services.ElectionOptions) ElectionManagerOptions
	ElectionOptions() services.ElectionOptions
	SetCampaignOptions(value services.CampaignOptions) ElectionManagerOptions
	CampaignOptions() services.CampaignOptions
	SetCampaignRetryOptions(value retry.Options) ElectionManagerOptions
	CampaignRetryOptions() retry.Options
	SetChangeRetryOptions(value retry.Options) ElectionManagerOptions
	ChangeRetryOptions() retry.Options
	SetResignRetryOptions(value retry.Options) ElectionManagerOptions
	ResignRetryOptions() retry.Options
	SetElectionKeyFmt(value string) ElectionManagerOptions
	ElectionKeyFmt() string
	SetLeaderService(value services.LeaderService) ElectionManagerOptions
	LeaderService() services.LeaderService
	SetPlacementManager(value PlacementManager) ElectionManagerOptions
	PlacementManager() PlacementManager
	SetFlushTimesManager(value FlushTimesManager) ElectionManagerOptions
	FlushTimesManager() FlushTimesManager
	SetCampaignStateCheckInterval(value time.Duration) ElectionManagerOptions
	CampaignStateCheckInterval() time.Duration
	SetShardCutoffCheckOffset(value time.Duration) ElectionManagerOptions
	ShardCutoffCheckOffset() time.Duration
}
type electionManagerOptions struct {
	clockOpts                  clock.Options
	instrumentOpts             instrument.Options
	electionOpts               services.ElectionOptions
	campaignOpts               services.CampaignOptions
	campaignRetryOpts          retry.Options
	changeRetryOpts            retry.Options
	resignRetryOpts            retry.Options
	electionKeyFmt             string
	leaderService              services.LeaderService
	placementManager           PlacementManager
	flushTimesManager          FlushTimesManager
	campaignStateCheckInterval time.Duration
	shardCutoffCheckOffset     time.Duration
}