// Code generated by MockGen. DO NOT EDIT.
// Source: /Users/just/Workspace/Go/pkg/mod/sigs.k8s.io/controller-runtime@v0.20.1/pkg/controller/controller.go
//
// Generated by this command:
//
//	mockgen -destination pkg/resourceworker/controllers/fake/controller/mocks.go -source /Users/just/Workspace/Go/pkg/mod/sigs.k8s.io/controller-runtime@v0.20.1/pkg/controller/controller.go
//

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

import (
	context "context"
	reflect "reflect"

	logr "github.com/go-logr/logr"
	gomock "go.uber.org/mock/gomock"
	reconcile "sigs.k8s.io/controller-runtime/pkg/reconcile"
	source "sigs.k8s.io/controller-runtime/pkg/source"
)

// MockTypedController is a mock of TypedController interface.
type MockTypedController[request comparable] struct {
	ctrl     *gomock.Controller
	recorder *MockTypedControllerMockRecorder[request]
	isgomock struct{}
}

// MockTypedControllerMockRecorder is the mock recorder for MockTypedController.
type MockTypedControllerMockRecorder[request comparable] struct {
	mock *MockTypedController[request]
}

// NewMockTypedController creates a new mock instance.
func NewMockTypedController[request comparable](ctrl *gomock.Controller) *MockTypedController[request] {
	mock := &MockTypedController[request]{ctrl: ctrl}
	mock.recorder = &MockTypedControllerMockRecorder[request]{mock}
	return mock
}

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

// GetLogger mocks base method.
func (m *MockTypedController[request]) GetLogger() logr.Logger {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "GetLogger")
	ret0, _ := ret[0].(logr.Logger)
	return ret0
}

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

// Reconcile mocks base method.
func (m *MockTypedController[request]) Reconcile(arg0 context.Context, arg1 request) (reconcile.Result, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "Reconcile", arg0, arg1)
	ret0, _ := ret[0].(reconcile.Result)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// Reconcile indicates an expected call of Reconcile.
func (mr *MockTypedControllerMockRecorder[request]) Reconcile(arg0, arg1 any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Reconcile", reflect.TypeOf((*MockTypedController[request])(nil).Reconcile), arg0, arg1)
}

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

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

// Watch mocks base method.
func (m *MockTypedController[request]) Watch(src source.TypedSource[request]) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "Watch", src)
	ret0, _ := ret[0].(error)
	return ret0
}

// Watch indicates an expected call of Watch.
func (mr *MockTypedControllerMockRecorder[request]) Watch(src any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Watch", reflect.TypeOf((*MockTypedController[request])(nil).Watch), src)
}
