// Code generated by MockGen. DO NOT EDIT.
// Source: gitlab.com/gitlab-org/cluster-integration/gitlab-agent/v18/internal/cmd/agent (interfaces: ConfigurationWatcher)
//
// Generated by this command:
//
//	mockgen -typed -destination agent.go -package mock_cmd_agent gitlab.com/gitlab-org/cluster-integration/gitlab-agent/v18/internal/cmd/agent ConfigurationWatcher
//

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

import (
	context "context"
	reflect "reflect"

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

// MockConfigurationWatcher is a mock of ConfigurationWatcher interface.
type MockConfigurationWatcher[CD any] struct {
	ctrl     *gomock.Controller
	recorder *MockConfigurationWatcherMockRecorder[CD]
	isgomock struct{}
}

// MockConfigurationWatcherMockRecorder is the mock recorder for MockConfigurationWatcher.
type MockConfigurationWatcherMockRecorder[CD any] struct {
	mock *MockConfigurationWatcher[CD]
}

// NewMockConfigurationWatcher creates a new mock instance.
func NewMockConfigurationWatcher[CD any](ctrl *gomock.Controller) *MockConfigurationWatcher[CD] {
	mock := &MockConfigurationWatcher[CD]{ctrl: ctrl}
	mock.recorder = &MockConfigurationWatcherMockRecorder[CD]{mock}
	return mock
}

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

// Watch mocks base method.
func (m *MockConfigurationWatcher[CD]) Watch(arg0 context.Context, arg1 func(context.Context, CD)) {
	m.ctrl.T.Helper()
	m.ctrl.Call(m, "Watch", arg0, arg1)
}

// Watch indicates an expected call of Watch.
func (mr *MockConfigurationWatcherMockRecorder[CD]) Watch(arg0, arg1 any) *MockConfigurationWatcherWatchCall[CD] {
	mr.mock.ctrl.T.Helper()
	call := mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Watch", reflect.TypeOf((*MockConfigurationWatcher[CD])(nil).Watch), arg0, arg1)
	return &MockConfigurationWatcherWatchCall[CD]{Call: call}
}

// MockConfigurationWatcherWatchCall wrap *gomock.Call
type MockConfigurationWatcherWatchCall[CD any] struct {
	*gomock.Call
}

// Return rewrite *gomock.Call.Return
func (c *MockConfigurationWatcherWatchCall[CD]) Return() *MockConfigurationWatcherWatchCall[CD] {
	c.Call = c.Call.Return()
	return c
}

// Do rewrite *gomock.Call.Do
func (c *MockConfigurationWatcherWatchCall[CD]) Do(f func(context.Context, func(context.Context, CD))) *MockConfigurationWatcherWatchCall[CD] {
	c.Call = c.Call.Do(f)
	return c
}

// DoAndReturn rewrite *gomock.Call.DoAndReturn
func (c *MockConfigurationWatcherWatchCall[CD]) DoAndReturn(f func(context.Context, func(context.Context, CD))) *MockConfigurationWatcherWatchCall[CD] {
	c.Call = c.Call.DoAndReturn(f)
	return c
}
