// Code generated by mockery v2.33.1. DO NOT EDIT.

package local

import (
	"context"
	proxycfg "github.com/hashicorp/consul/agent/proxycfg"
	mock "github.com/stretchr/testify/mock"

	structs "github.com/hashicorp/consul/agent/structs"
)

// MockConfigManager is an autogenerated mock type for the ConfigManager type
type MockConfigManager struct {
	mock.Mock
}

// Deregister provides a mock function with given fields: proxyID, source
func (_m *MockConfigManager) Deregister(proxyID proxycfg.ProxyID, source proxycfg.ProxySource) {
	_m.Called(proxyID, source)
}

// Register provides a mock function with given fields: proxyID, service, source, token, overwrite
func (_m *MockConfigManager) Register(proxyID proxycfg.ProxyID, service *structs.NodeService, source proxycfg.ProxySource, token string, overwrite bool) error {
	ret := _m.Called(proxyID, service, source, token, overwrite)

	var r0 error
	if rf, ok := ret.Get(0).(func(proxycfg.ProxyID, *structs.NodeService, proxycfg.ProxySource, string, bool) error); ok {
		r0 = rf(proxyID, service, source, token, overwrite)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// RegisteredProxies provides a mock function with given fields: source
func (_m *MockConfigManager) RegisteredProxies(source proxycfg.ProxySource) []proxycfg.ProxyID {
	ret := _m.Called(source)

	var r0 []proxycfg.ProxyID
	if rf, ok := ret.Get(0).(func(proxycfg.ProxySource) []proxycfg.ProxyID); ok {
		r0 = rf(source)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]proxycfg.ProxyID)
		}
	}

	return r0
}

// Watch provides a mock function with given fields: id
func (_m *MockConfigManager) Watch(id proxycfg.ProxyID) (<-chan *proxycfg.ConfigSnapshot, context.CancelFunc) {
	ret := _m.Called(id)

	var r0 <-chan *proxycfg.ConfigSnapshot
	var r1 context.CancelFunc
	if rf, ok := ret.Get(0).(func(proxycfg.ProxyID) (<-chan *proxycfg.ConfigSnapshot, context.CancelFunc)); ok {
		return rf(id)
	}
	if rf, ok := ret.Get(0).(func(proxycfg.ProxyID) <-chan *proxycfg.ConfigSnapshot); ok {
		r0 = rf(id)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(<-chan *proxycfg.ConfigSnapshot)
		}
	}

	if rf, ok := ret.Get(1).(func(proxycfg.ProxyID) context.CancelFunc); ok {
		r1 = rf(id)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).(context.CancelFunc)
		}
	}

	return r0, r1
}

// NewMockConfigManager creates a new instance of MockConfigManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
// The first argument is typically a *testing.T value.
func NewMockConfigManager(t interface {
	mock.TestingT
	Cleanup(func())
}) *MockConfigManager {
	mock := &MockConfigManager{}
	mock.Mock.Test(t)

	t.Cleanup(func() { mock.AssertExpectations(t) })

	return mock
}
