// Copyright 2025 Sonic Operations Ltd
// This file is part of the Sonic Client
//
// Sonic is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Sonic is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with Sonic. If not, see <http://www.gnu.org/licenses/>.

// Code generated by MockGen. DO NOT EDIT.
// Source: sonic_api.go
//
// Generated by this command:
//
//	mockgen -source=sonic_api.go -package=ethapi -destination=sonic_api_mock.go
//

// Package ethapi is a generated GoMock package.
package ethapi

import (
	iter "iter"
	reflect "reflect"

	scc "github.com/0xsoniclabs/sonic/scc"
	cert "github.com/0xsoniclabs/sonic/scc/cert"
	result "github.com/0xsoniclabs/sonic/utils/result"
	idx "github.com/Fantom-foundation/lachesis-base/inter/idx"
	gomock "go.uber.org/mock/gomock"
)

// MockSccApiBackend is a mock of SccApiBackend interface.
type MockSccApiBackend struct {
	ctrl     *gomock.Controller
	recorder *MockSccApiBackendMockRecorder
	isgomock struct{}
}

// MockSccApiBackendMockRecorder is the mock recorder for MockSccApiBackend.
type MockSccApiBackendMockRecorder struct {
	mock *MockSccApiBackend
}

// NewMockSccApiBackend creates a new mock instance.
func NewMockSccApiBackend(ctrl *gomock.Controller) *MockSccApiBackend {
	mock := &MockSccApiBackend{ctrl: ctrl}
	mock.recorder = &MockSccApiBackendMockRecorder{mock}
	return mock
}

// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockSccApiBackend) EXPECT() *MockSccApiBackendMockRecorder {
	return m.recorder
}

// EnumerateBlockCertificates mocks base method.
func (m *MockSccApiBackend) EnumerateBlockCertificates(first idx.Block) iter.Seq[result.T[cert.BlockCertificate]] {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "EnumerateBlockCertificates", first)
	ret0, _ := ret[0].(iter.Seq[result.T[cert.BlockCertificate]])
	return ret0
}

// EnumerateBlockCertificates indicates an expected call of EnumerateBlockCertificates.
func (mr *MockSccApiBackendMockRecorder) EnumerateBlockCertificates(first any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EnumerateBlockCertificates", reflect.TypeOf((*MockSccApiBackend)(nil).EnumerateBlockCertificates), first)
}

// EnumerateCommitteeCertificates mocks base method.
func (m *MockSccApiBackend) EnumerateCommitteeCertificates(first scc.Period) iter.Seq[result.T[cert.CommitteeCertificate]] {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "EnumerateCommitteeCertificates", first)
	ret0, _ := ret[0].(iter.Seq[result.T[cert.CommitteeCertificate]])
	return ret0
}

// EnumerateCommitteeCertificates indicates an expected call of EnumerateCommitteeCertificates.
func (mr *MockSccApiBackendMockRecorder) EnumerateCommitteeCertificates(first any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EnumerateCommitteeCertificates", reflect.TypeOf((*MockSccApiBackend)(nil).EnumerateCommitteeCertificates), first)
}

// GetLatestBlockCertificate mocks base method.
func (m *MockSccApiBackend) GetLatestBlockCertificate() (cert.BlockCertificate, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "GetLatestBlockCertificate")
	ret0, _ := ret[0].(cert.BlockCertificate)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// GetLatestBlockCertificate indicates an expected call of GetLatestBlockCertificate.
func (mr *MockSccApiBackendMockRecorder) GetLatestBlockCertificate() *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLatestBlockCertificate", reflect.TypeOf((*MockSccApiBackend)(nil).GetLatestBlockCertificate))
}

// GetLatestCommitteeCertificate mocks base method.
func (m *MockSccApiBackend) GetLatestCommitteeCertificate() (cert.CommitteeCertificate, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "GetLatestCommitteeCertificate")
	ret0, _ := ret[0].(cert.CommitteeCertificate)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// GetLatestCommitteeCertificate indicates an expected call of GetLatestCommitteeCertificate.
func (mr *MockSccApiBackendMockRecorder) GetLatestCommitteeCertificate() *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLatestCommitteeCertificate", reflect.TypeOf((*MockSccApiBackend)(nil).GetLatestCommitteeCertificate))
}
