// Code generated by MockGen. DO NOT EDIT.
// Source: pkg/storage/tuple_iterators.go
//
// Generated by this command:
//
//	mockgen -source=pkg/storage/tuple_iterators.go -destination internal/mocks/mock_iterator.go -package mocks
//

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

import (
	context "context"
	reflect "reflect"

	gomock "go.uber.org/mock/gomock"
)

// MockIterator is a mock of Iterator interface.
type MockIterator[T any] struct {
	ctrl     *gomock.Controller
	recorder *MockIteratorMockRecorder[T]
	isgomock struct{}
}

// MockIteratorMockRecorder is the mock recorder for MockIterator.
type MockIteratorMockRecorder[T any] struct {
	mock *MockIterator[T]
}

// NewMockIterator creates a new mock instance.
func NewMockIterator[T any](ctrl *gomock.Controller) *MockIterator[T] {
	mock := &MockIterator[T]{ctrl: ctrl}
	mock.recorder = &MockIteratorMockRecorder[T]{mock}
	return mock
}

// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockIterator[T]) EXPECT() *MockIteratorMockRecorder[T] {
	return m.recorder
}

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

// Head indicates an expected call of Head.
func (mr *MockIteratorMockRecorder[T]) Head(ctx any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Head", reflect.TypeOf((*MockIterator[T])(nil).Head), ctx)
}

// IsOrdered mocks base method.
func (m *MockIterator[T]) IsOrdered() bool {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "IsOrdered")
	ret0, _ := ret[0].(bool)
	return ret0
}

// IsOrdered indicates an expected call of IsOrdered.
func (mr *MockIteratorMockRecorder[T]) IsOrdered() *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsOrdered", reflect.TypeOf((*MockIterator[T])(nil).IsOrdered))
}

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

// Next indicates an expected call of Next.
func (mr *MockIteratorMockRecorder[T]) Next(ctx any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Next", reflect.TypeOf((*MockIterator[T])(nil).Next), ctx)
}

// Stop mocks base method.
func (m *MockIterator[T]) Stop() {
	m.ctrl.T.Helper()
	m.ctrl.Call(m, "Stop")
}

// Stop indicates an expected call of Stop.
func (mr *MockIteratorMockRecorder[T]) Stop() *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Stop", reflect.TypeOf((*MockIterator[T])(nil).Stop))
}
