func NewBeaconBlockSubmitter() eth2client.BeaconBlockSubmitter {
	return &BeaconBlockSubmitter{}
}
NewBeaconBlockSubmitter returns a mock beacon block submitter.
package mock
import (
	"context"
	"encoding/hex"
	"errors"
	"strings"
	"time"
	eth2client "github.com/attestantio/go-eth2-client"
	api "github.com/attestantio/go-eth2-client/api/v1"
	"github.com/attestantio/go-eth2-client/spec"
	"github.com/attestantio/go-eth2-client/spec/altair"
	"github.com/attestantio/go-eth2-client/spec/phase0"
	"github.com/prysmaticlabs/go-bitfield"
)
type GenesisTimeProvider struct {
	genesisTime time.Time
}
func NewGenesisTimeProvider(genesisTime time.Time) eth2client.GenesisTimeProvider {
	return &GenesisTimeProvider{
		genesisTime: genesisTime,
	}
}
func (m *GenesisTimeProvider) GenesisTime(ctx context.Context) (time.Time, error) {
	return m.genesisTime, nil
}
type SlotDurationProvider struct {
	slotDuration time.Duration
}
func NewSlotDurationProvider(slotDuration time.Duration) eth2client.SlotDurationProvider {
	return &SlotDurationProvider{
		slotDuration: slotDuration,
	}
}
func (m *SlotDurationProvider) SlotDuration(ctx context.Context) (time.Duration, error) {
	return m.slotDuration, nil
}
type ErroringSlotDurationProvider struct{}
func NewErroringSlotDurationProvider() eth2client.SlotDurationProvider {
	return &ErroringSlotDurationProvider{}
}
func (m *ErroringSlotDurationProvider) SlotDuration(ctx context.Context) (time.Duration, error) {
	return 0, errors.New("mock")
}
type FarFutureEpochProvider struct {
	farFutureEpoch phase0.Epoch
}
func NewFarFutureEpochProvider(farFutureEpoch phase0.Epoch) eth2client.FarFutureEpochProvider {
	return &FarFutureEpochProvider{
		farFutureEpoch: farFutureEpoch,
	}
}
func (m *FarFutureEpochProvider) FarFutureEpoch(ctx context.Context) (phase0.Epoch, error) {
	return m.farFutureEpoch, nil
}
type SlotsPerEpochProvider struct {
	slotsPerEpoch uint64
}
func NewSlotsPerEpochProvider(slotsPerEpoch uint64) eth2client.SlotsPerEpochProvider {
	return &SlotsPerEpochProvider{
		slotsPerEpoch: slotsPerEpoch,
	}
}
func (m *SlotsPerEpochProvider) SlotsPerEpoch(ctx context.Context) (uint64, error) {
	return m.slotsPerEpoch, nil
}
type ErroringSlotsPerEpochProvider struct{}
func NewErroringSlotsPerEpochProvider() eth2client.SlotsPerEpochProvider {
	return &ErroringSlotsPerEpochProvider{}
}
func (m *ErroringSlotsPerEpochProvider) SlotsPerEpoch(ctx context.Context) (uint64, error) {
	return 0, errors.New("error")
}
type ProposerDutiesProvider struct{}
func NewProposerDutiesProvider() eth2client.ProposerDutiesProvider {
	return &ProposerDutiesProvider{}
}
func (m *ProposerDutiesProvider) ProposerDuties(ctx context.Context, epoch phase0.Epoch, validatorIndices []phase0.ValidatorIndex) ([]*api.ProposerDuty, error) {
	return make([]*api.ProposerDuty, 0), nil
}
type AttesterDutiesProvider struct{}
func NewAttesterDutiesProvider() eth2client.AttesterDutiesProvider {
	return &AttesterDutiesProvider{}
}
func (m *AttesterDutiesProvider) AttesterDuties(ctx context.Context, epoch phase0.Epoch, validatorIndices []phase0.ValidatorIndex) ([]*api.AttesterDuty, error) {
	return make([]*api.AttesterDuty, 0), nil
}
type SyncCommitteeDutiesProvider struct{}
func NewSyncCommitteeDutiesProvider() eth2client.SyncCommitteeDutiesProvider {
	return &SyncCommitteeDutiesProvider{}
}
func (m *SyncCommitteeDutiesProvider) SyncCommitteeDuties(ctx context.Context, epoch phase0.Epoch, validatorIndices []phase0.ValidatorIndex) ([]*api.SyncCommitteeDuty, error) {
	return make([]*api.SyncCommitteeDuty, 0), nil
}
type SyncCommitteeSubscriptionsSubmitter struct{}
func NewSyncCommitteeSubscriptionsSubmitter() eth2client.SyncCommitteeSubscriptionsSubmitter {
	return &SyncCommitteeSubscriptionsSubmitter{}
}
func (m *SyncCommitteeSubscriptionsSubmitter) SubmitSyncCommitteeSubscriptions(ctx context.Context, subscriptions []*api.SyncCommitteeSubscription) error {
	return nil
}
type ErroringSyncCommitteeSubscriptionsSubmitter struct{}
func NewErroringSyncCommitteeSubscriptionsSubmitter() eth2client.SyncCommitteeSubscriptionsSubmitter {
	return &ErroringSyncCommitteeSubscriptionsSubmitter{}
}
func (m *ErroringSyncCommitteeSubscriptionsSubmitter) SubmitSyncCommitteeSubscriptions(ctx context.Context, subscriptions []*api.SyncCommitteeSubscription) error {
	return errors.New("error")
}
type SyncCommitteeMessagesSubmitter struct{}
func NewSyncCommitteeMessagesSubmitter() eth2client.SyncCommitteeMessagesSubmitter {
	return &SyncCommitteeMessagesSubmitter{}
}
func (m *SyncCommitteeMessagesSubmitter) SubmitSyncCommitteeMessages(ctx context.Context, messages []*altair.SyncCommitteeMessage) error {
	return nil
}
type ErroringSyncCommitteeMessagesSubmitter struct{}
func NewErroringSyncCommitteeMessagesSubmitter() eth2client.SyncCommitteeMessagesSubmitter {
	return &ErroringSyncCommitteeMessagesSubmitter{}
}
func (m *ErroringSyncCommitteeMessagesSubmitter) SubmitSyncCommitteeMessages(ctx context.Context, messages []*altair.SyncCommitteeMessage) error {
	return errors.New("error")
}
type SyncCommitteeContributionsSubmitter struct{}
func NewSyncCommitteeContributionsSubmitter() eth2client.SyncCommitteeContributionsSubmitter {
	return &SyncCommitteeContributionsSubmitter{}
}
func (m *SyncCommitteeContributionsSubmitter) SubmitSyncCommitteeContributions(ctx context.Context, contributionAndProofs []*altair.SignedContributionAndProof) error {
	return nil
}
type ErroringSyncCommitteeContributionsSubmitter struct{}
func NewErroringSyncCommitteeContributionsSubmitter() eth2client.SyncCommitteeContributionsSubmitter {
	return &ErroringSyncCommitteeContributionsSubmitter{}
}
func (m *ErroringSyncCommitteeContributionsSubmitter) SubmitSyncCommitteeContributions(ctx context.Context, contributionAndProofs []*altair.SignedContributionAndProof) error {
	return errors.New("error")
}
type EventsProvider struct{}
func NewEventsProvider() eth2client.EventsProvider {
	return &EventsProvider{}
}
func (m *EventsProvider) Events(ctx context.Context, topics []string, handler eth2client.EventHandlerFunc) error {
	return nil
}
type AttestationsSubmitter struct{}
func NewAttestationsSubmitter() eth2client.AttestationsSubmitter {
	return &AttestationsSubmitter{}
}
func (m *AttestationsSubmitter) SubmitAttestations(ctx context.Context, attestation []*phase0.Attestation) error {
	return nil
}
type ErroringAttestationsSubmitter struct{}
func NewErroringAttestationsSubmitter() eth2client.AttestationsSubmitter {
	return &ErroringAttestationsSubmitter{}
}
func (m *ErroringAttestationsSubmitter) SubmitAttestations(ctx context.Context, attestations []*phase0.Attestation) error {
	return errors.New("error")
}
type BeaconBlockSubmitter struct{}