// Code generated by MockGen. DO NOT EDIT.
// Source: github.com/erigontech/erigon/rpc/contracts (interfaces: Backend)
//
// Generated by this command:
//
//	mockgen -typed=true -destination=./backend_mock.go -package=contracts . Backend
//

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

import (
	context "context"
	big "math/big"
	reflect "reflect"

	common "github.com/erigontech/erigon/common"
	event "github.com/erigontech/erigon/common/event"
	bind "github.com/erigontech/erigon/execution/abi/bind"
	types "github.com/erigontech/erigon/execution/types"
	uint256 "github.com/holiman/uint256"
	gomock "go.uber.org/mock/gomock"
)

// MockBackend is a mock of Backend interface.
type MockBackend struct {
	ctrl     *gomock.Controller
	recorder *MockBackendMockRecorder
	isgomock struct{}
}

// MockBackendMockRecorder is the mock recorder for MockBackend.
type MockBackendMockRecorder struct {
	mock *MockBackend
}

// NewMockBackend creates a new mock instance.
func NewMockBackend(ctrl *gomock.Controller) *MockBackend {
	mock := &MockBackend{ctrl: ctrl}
	mock.recorder = &MockBackendMockRecorder{mock}
	return mock
}

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

// CallContract mocks base method.
func (m *MockBackend) CallContract(ctx context.Context, callMsg bind.CallMsg, blockNumber *uint256.Int) ([]byte, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "CallContract", ctx, callMsg, blockNumber)
	ret0, _ := ret[0].([]byte)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// CallContract indicates an expected call of CallContract.
func (mr *MockBackendMockRecorder) CallContract(ctx, callMsg, blockNumber any) *MockBackendCallContractCall {
	mr.mock.ctrl.T.Helper()
	call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CallContract", reflect.TypeOf((*MockBackend)(nil).CallContract), ctx, callMsg, blockNumber)
	return &MockBackendCallContractCall{Call: call}
}

// MockBackendCallContractCall wrap *gomock.Call
type MockBackendCallContractCall struct {
	*gomock.Call
}

// Return rewrite *gomock.Call.Return
func (c *MockBackendCallContractCall) Return(arg0 []byte, arg1 error) *MockBackendCallContractCall {
	c.Call = c.Call.Return(arg0, arg1)
	return c
}

// Do rewrite *gomock.Call.Do
func (c *MockBackendCallContractCall) Do(f func(context.Context, bind.CallMsg, *uint256.Int) ([]byte, error)) *MockBackendCallContractCall {
	c.Call = c.Call.Do(f)
	return c
}

// DoAndReturn rewrite *gomock.Call.DoAndReturn
func (c *MockBackendCallContractCall) DoAndReturn(f func(context.Context, bind.CallMsg, *uint256.Int) ([]byte, error)) *MockBackendCallContractCall {
	c.Call = c.Call.DoAndReturn(f)
	return c
}

// CodeAt mocks base method.
func (m *MockBackend) CodeAt(ctx context.Context, contract common.Address, blockNumber *uint256.Int) ([]byte, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "CodeAt", ctx, contract, blockNumber)
	ret0, _ := ret[0].([]byte)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// CodeAt indicates an expected call of CodeAt.
func (mr *MockBackendMockRecorder) CodeAt(ctx, contract, blockNumber any) *MockBackendCodeAtCall {
	mr.mock.ctrl.T.Helper()
	call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CodeAt", reflect.TypeOf((*MockBackend)(nil).CodeAt), ctx, contract, blockNumber)
	return &MockBackendCodeAtCall{Call: call}
}

// MockBackendCodeAtCall wrap *gomock.Call
type MockBackendCodeAtCall struct {
	*gomock.Call
}

// Return rewrite *gomock.Call.Return
func (c *MockBackendCodeAtCall) Return(arg0 []byte, arg1 error) *MockBackendCodeAtCall {
	c.Call = c.Call.Return(arg0, arg1)
	return c
}

// Do rewrite *gomock.Call.Do
func (c *MockBackendCodeAtCall) Do(f func(context.Context, common.Address, *uint256.Int) ([]byte, error)) *MockBackendCodeAtCall {
	c.Call = c.Call.Do(f)
	return c
}

// DoAndReturn rewrite *gomock.Call.DoAndReturn
func (c *MockBackendCodeAtCall) DoAndReturn(f func(context.Context, common.Address, *uint256.Int) ([]byte, error)) *MockBackendCodeAtCall {
	c.Call = c.Call.DoAndReturn(f)
	return c
}

// EstimateGas mocks base method.
func (m *MockBackend) EstimateGas(ctx context.Context, callMsg bind.CallMsg) (uint64, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "EstimateGas", ctx, callMsg)
	ret0, _ := ret[0].(uint64)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// EstimateGas indicates an expected call of EstimateGas.
func (mr *MockBackendMockRecorder) EstimateGas(ctx, callMsg any) *MockBackendEstimateGasCall {
	mr.mock.ctrl.T.Helper()
	call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EstimateGas", reflect.TypeOf((*MockBackend)(nil).EstimateGas), ctx, callMsg)
	return &MockBackendEstimateGasCall{Call: call}
}

// MockBackendEstimateGasCall wrap *gomock.Call
type MockBackendEstimateGasCall struct {
	*gomock.Call
}

// Return rewrite *gomock.Call.Return
func (c *MockBackendEstimateGasCall) Return(gas uint64, err error) *MockBackendEstimateGasCall {
	c.Call = c.Call.Return(gas, err)
	return c
}

// Do rewrite *gomock.Call.Do
func (c *MockBackendEstimateGasCall) Do(f func(context.Context, bind.CallMsg) (uint64, error)) *MockBackendEstimateGasCall {
	c.Call = c.Call.Do(f)
	return c
}

// DoAndReturn rewrite *gomock.Call.DoAndReturn
func (c *MockBackendEstimateGasCall) DoAndReturn(f func(context.Context, bind.CallMsg) (uint64, error)) *MockBackendEstimateGasCall {
	c.Call = c.Call.DoAndReturn(f)
	return c
}

// FilterLogs mocks base method.
func (m *MockBackend) FilterLogs(ctx context.Context, query bind.FilterQuery) ([]types.Log, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "FilterLogs", ctx, query)
	ret0, _ := ret[0].([]types.Log)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// FilterLogs indicates an expected call of FilterLogs.
func (mr *MockBackendMockRecorder) FilterLogs(ctx, query any) *MockBackendFilterLogsCall {
	mr.mock.ctrl.T.Helper()
	call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FilterLogs", reflect.TypeOf((*MockBackend)(nil).FilterLogs), ctx, query)
	return &MockBackendFilterLogsCall{Call: call}
}

// MockBackendFilterLogsCall wrap *gomock.Call
type MockBackendFilterLogsCall struct {
	*gomock.Call
}

// Return rewrite *gomock.Call.Return
func (c *MockBackendFilterLogsCall) Return(arg0 []types.Log, arg1 error) *MockBackendFilterLogsCall {
	c.Call = c.Call.Return(arg0, arg1)
	return c
}

// Do rewrite *gomock.Call.Do
func (c *MockBackendFilterLogsCall) Do(f func(context.Context, bind.FilterQuery) ([]types.Log, error)) *MockBackendFilterLogsCall {
	c.Call = c.Call.Do(f)
	return c
}

// DoAndReturn rewrite *gomock.Call.DoAndReturn
func (c *MockBackendFilterLogsCall) DoAndReturn(f func(context.Context, bind.FilterQuery) ([]types.Log, error)) *MockBackendFilterLogsCall {
	c.Call = c.Call.DoAndReturn(f)
	return c
}

// PendingCodeAt mocks base method.
func (m *MockBackend) PendingCodeAt(ctx context.Context, account common.Address) ([]byte, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "PendingCodeAt", ctx, account)
	ret0, _ := ret[0].([]byte)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// PendingCodeAt indicates an expected call of PendingCodeAt.
func (mr *MockBackendMockRecorder) PendingCodeAt(ctx, account any) *MockBackendPendingCodeAtCall {
	mr.mock.ctrl.T.Helper()
	call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PendingCodeAt", reflect.TypeOf((*MockBackend)(nil).PendingCodeAt), ctx, account)
	return &MockBackendPendingCodeAtCall{Call: call}
}

// MockBackendPendingCodeAtCall wrap *gomock.Call
type MockBackendPendingCodeAtCall struct {
	*gomock.Call
}

// Return rewrite *gomock.Call.Return
func (c *MockBackendPendingCodeAtCall) Return(arg0 []byte, arg1 error) *MockBackendPendingCodeAtCall {
	c.Call = c.Call.Return(arg0, arg1)
	return c
}

// Do rewrite *gomock.Call.Do
func (c *MockBackendPendingCodeAtCall) Do(f func(context.Context, common.Address) ([]byte, error)) *MockBackendPendingCodeAtCall {
	c.Call = c.Call.Do(f)
	return c
}

// DoAndReturn rewrite *gomock.Call.DoAndReturn
func (c *MockBackendPendingCodeAtCall) DoAndReturn(f func(context.Context, common.Address) ([]byte, error)) *MockBackendPendingCodeAtCall {
	c.Call = c.Call.DoAndReturn(f)
	return c
}

// PendingNonceAt mocks base method.
func (m *MockBackend) PendingNonceAt(ctx context.Context, account common.Address) (uint64, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "PendingNonceAt", ctx, account)
	ret0, _ := ret[0].(uint64)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// PendingNonceAt indicates an expected call of PendingNonceAt.
func (mr *MockBackendMockRecorder) PendingNonceAt(ctx, account any) *MockBackendPendingNonceAtCall {
	mr.mock.ctrl.T.Helper()
	call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PendingNonceAt", reflect.TypeOf((*MockBackend)(nil).PendingNonceAt), ctx, account)
	return &MockBackendPendingNonceAtCall{Call: call}
}

// MockBackendPendingNonceAtCall wrap *gomock.Call
type MockBackendPendingNonceAtCall struct {
	*gomock.Call
}

// Return rewrite *gomock.Call.Return
func (c *MockBackendPendingNonceAtCall) Return(arg0 uint64, arg1 error) *MockBackendPendingNonceAtCall {
	c.Call = c.Call.Return(arg0, arg1)
	return c
}

// Do rewrite *gomock.Call.Do
func (c *MockBackendPendingNonceAtCall) Do(f func(context.Context, common.Address) (uint64, error)) *MockBackendPendingNonceAtCall {
	c.Call = c.Call.Do(f)
	return c
}

// DoAndReturn rewrite *gomock.Call.DoAndReturn
func (c *MockBackendPendingNonceAtCall) DoAndReturn(f func(context.Context, common.Address) (uint64, error)) *MockBackendPendingNonceAtCall {
	c.Call = c.Call.DoAndReturn(f)
	return c
}

// SendTransaction mocks base method.
func (m *MockBackend) SendTransaction(ctx context.Context, txn types.Transaction) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "SendTransaction", ctx, txn)
	ret0, _ := ret[0].(error)
	return ret0
}

// SendTransaction indicates an expected call of SendTransaction.
func (mr *MockBackendMockRecorder) SendTransaction(ctx, txn any) *MockBackendSendTransactionCall {
	mr.mock.ctrl.T.Helper()
	call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SendTransaction", reflect.TypeOf((*MockBackend)(nil).SendTransaction), ctx, txn)
	return &MockBackendSendTransactionCall{Call: call}
}

// MockBackendSendTransactionCall wrap *gomock.Call
type MockBackendSendTransactionCall struct {
	*gomock.Call
}

// Return rewrite *gomock.Call.Return
func (c *MockBackendSendTransactionCall) Return(arg0 error) *MockBackendSendTransactionCall {
	c.Call = c.Call.Return(arg0)
	return c
}

// Do rewrite *gomock.Call.Do
func (c *MockBackendSendTransactionCall) Do(f func(context.Context, types.Transaction) error) *MockBackendSendTransactionCall {
	c.Call = c.Call.Do(f)
	return c
}

// DoAndReturn rewrite *gomock.Call.DoAndReturn
func (c *MockBackendSendTransactionCall) DoAndReturn(f func(context.Context, types.Transaction) error) *MockBackendSendTransactionCall {
	c.Call = c.Call.DoAndReturn(f)
	return c
}

// SubscribeFilterLogs mocks base method.
func (m *MockBackend) SubscribeFilterLogs(ctx context.Context, query bind.FilterQuery, ch chan<- types.Log) (event.Subscription, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "SubscribeFilterLogs", ctx, query, ch)
	ret0, _ := ret[0].(event.Subscription)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// SubscribeFilterLogs indicates an expected call of SubscribeFilterLogs.
func (mr *MockBackendMockRecorder) SubscribeFilterLogs(ctx, query, ch any) *MockBackendSubscribeFilterLogsCall {
	mr.mock.ctrl.T.Helper()
	call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SubscribeFilterLogs", reflect.TypeOf((*MockBackend)(nil).SubscribeFilterLogs), ctx, query, ch)
	return &MockBackendSubscribeFilterLogsCall{Call: call}
}

// MockBackendSubscribeFilterLogsCall wrap *gomock.Call
type MockBackendSubscribeFilterLogsCall struct {
	*gomock.Call
}

// Return rewrite *gomock.Call.Return
func (c *MockBackendSubscribeFilterLogsCall) Return(arg0 event.Subscription, arg1 error) *MockBackendSubscribeFilterLogsCall {
	c.Call = c.Call.Return(arg0, arg1)
	return c
}

// Do rewrite *gomock.Call.Do
func (c *MockBackendSubscribeFilterLogsCall) Do(f func(context.Context, bind.FilterQuery, chan<- types.Log) (event.Subscription, error)) *MockBackendSubscribeFilterLogsCall {
	c.Call = c.Call.Do(f)
	return c
}

// DoAndReturn rewrite *gomock.Call.DoAndReturn
func (c *MockBackendSubscribeFilterLogsCall) DoAndReturn(f func(context.Context, bind.FilterQuery, chan<- types.Log) (event.Subscription, error)) *MockBackendSubscribeFilterLogsCall {
	c.Call = c.Call.DoAndReturn(f)
	return c
}

// SuggestGasPrice mocks base method.
func (m *MockBackend) SuggestGasPrice(ctx context.Context) (*big.Int, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "SuggestGasPrice", ctx)
	ret0, _ := ret[0].(*big.Int)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// SuggestGasPrice indicates an expected call of SuggestGasPrice.
func (mr *MockBackendMockRecorder) SuggestGasPrice(ctx any) *MockBackendSuggestGasPriceCall {
	mr.mock.ctrl.T.Helper()
	call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SuggestGasPrice", reflect.TypeOf((*MockBackend)(nil).SuggestGasPrice), ctx)
	return &MockBackendSuggestGasPriceCall{Call: call}
}

// MockBackendSuggestGasPriceCall wrap *gomock.Call
type MockBackendSuggestGasPriceCall struct {
	*gomock.Call
}

// Return rewrite *gomock.Call.Return
func (c *MockBackendSuggestGasPriceCall) Return(arg0 *big.Int, arg1 error) *MockBackendSuggestGasPriceCall {
	c.Call = c.Call.Return(arg0, arg1)
	return c
}

// Do rewrite *gomock.Call.Do
func (c *MockBackendSuggestGasPriceCall) Do(f func(context.Context) (*big.Int, error)) *MockBackendSuggestGasPriceCall {
	c.Call = c.Call.Do(f)
	return c
}

// DoAndReturn rewrite *gomock.Call.DoAndReturn
func (c *MockBackendSuggestGasPriceCall) DoAndReturn(f func(context.Context) (*big.Int, error)) *MockBackendSuggestGasPriceCall {
	c.Call = c.Call.DoAndReturn(f)
	return c
}
