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

package container

import (
	context "context"
	net "net"

	mock "github.com/stretchr/testify/mock"

	time "time"
)

// MockClient is an autogenerated mock type for the Client type
type MockClient struct {
	mock.Mock
}

// ExecContainer provides a mock function with given fields: _a0, _a1, _a2, _a3, _a4
func (_m *MockClient) ExecContainer(_a0 context.Context, _a1 *Container, _a2 string, _a3 []string, _a4 bool) error {
	ret := _m.Called(_a0, _a1, _a2, _a3, _a4)

	if len(ret) == 0 {
		panic("no return value specified for ExecContainer")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *Container, string, []string, bool) error); ok {
		r0 = rf(_a0, _a1, _a2, _a3, _a4)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// IPTablesContainer provides a mock function with given fields: _a0, _a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8, _a9, _a10, _a11
func (_m *MockClient) IPTablesContainer(_a0 context.Context, _a1 *Container, _a2 []string, _a3 []string, _a4 []*net.IPNet, _a5 []*net.IPNet, _a6 []string, _a7 []string, _a8 time.Duration, _a9 string, _a10 bool, _a11 bool) error {
	ret := _m.Called(_a0, _a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8, _a9, _a10, _a11)

	if len(ret) == 0 {
		panic("no return value specified for IPTablesContainer")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *Container, []string, []string, []*net.IPNet, []*net.IPNet, []string, []string, time.Duration, string, bool, bool) error); ok {
		r0 = rf(_a0, _a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8, _a9, _a10, _a11)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// KillContainer provides a mock function with given fields: _a0, _a1, _a2, _a3
func (_m *MockClient) KillContainer(_a0 context.Context, _a1 *Container, _a2 string, _a3 bool) error {
	ret := _m.Called(_a0, _a1, _a2, _a3)

	if len(ret) == 0 {
		panic("no return value specified for KillContainer")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *Container, string, bool) error); ok {
		r0 = rf(_a0, _a1, _a2, _a3)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// ListContainers provides a mock function with given fields: _a0, _a1, _a2
func (_m *MockClient) ListContainers(_a0 context.Context, _a1 FilterFunc, _a2 ListOpts) ([]*Container, error) {
	ret := _m.Called(_a0, _a1, _a2)

	if len(ret) == 0 {
		panic("no return value specified for ListContainers")
	}

	var r0 []*Container
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, FilterFunc, ListOpts) ([]*Container, error)); ok {
		return rf(_a0, _a1, _a2)
	}
	if rf, ok := ret.Get(0).(func(context.Context, FilterFunc, ListOpts) []*Container); ok {
		r0 = rf(_a0, _a1, _a2)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]*Container)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, FilterFunc, ListOpts) error); ok {
		r1 = rf(_a0, _a1, _a2)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// NetemContainer provides a mock function with given fields: _a0, _a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8, _a9, _a10
func (_m *MockClient) NetemContainer(_a0 context.Context, _a1 *Container, _a2 string, _a3 []string, _a4 []*net.IPNet, _a5 []string, _a6 []string, _a7 time.Duration, _a8 string, _a9 bool, _a10 bool) error {
	ret := _m.Called(_a0, _a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8, _a9, _a10)

	if len(ret) == 0 {
		panic("no return value specified for NetemContainer")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *Container, string, []string, []*net.IPNet, []string, []string, time.Duration, string, bool, bool) error); ok {
		r0 = rf(_a0, _a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8, _a9, _a10)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// PauseContainer provides a mock function with given fields: _a0, _a1, _a2
func (_m *MockClient) PauseContainer(_a0 context.Context, _a1 *Container, _a2 bool) error {
	ret := _m.Called(_a0, _a1, _a2)

	if len(ret) == 0 {
		panic("no return value specified for PauseContainer")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *Container, bool) error); ok {
		r0 = rf(_a0, _a1, _a2)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// RemoveContainer provides a mock function with given fields: _a0, _a1, _a2, _a3, _a4, _a5
func (_m *MockClient) RemoveContainer(_a0 context.Context, _a1 *Container, _a2 bool, _a3 bool, _a4 bool, _a5 bool) error {
	ret := _m.Called(_a0, _a1, _a2, _a3, _a4, _a5)

	if len(ret) == 0 {
		panic("no return value specified for RemoveContainer")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *Container, bool, bool, bool, bool) error); ok {
		r0 = rf(_a0, _a1, _a2, _a3, _a4, _a5)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// RestartContainer provides a mock function with given fields: _a0, _a1, _a2, _a3
func (_m *MockClient) RestartContainer(_a0 context.Context, _a1 *Container, _a2 time.Duration, _a3 bool) error {
	ret := _m.Called(_a0, _a1, _a2, _a3)

	if len(ret) == 0 {
		panic("no return value specified for RestartContainer")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *Container, time.Duration, bool) error); ok {
		r0 = rf(_a0, _a1, _a2, _a3)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// StartContainer provides a mock function with given fields: _a0, _a1, _a2
func (_m *MockClient) StartContainer(_a0 context.Context, _a1 *Container, _a2 bool) error {
	ret := _m.Called(_a0, _a1, _a2)

	if len(ret) == 0 {
		panic("no return value specified for StartContainer")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *Container, bool) error); ok {
		r0 = rf(_a0, _a1, _a2)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// StopContainer provides a mock function with given fields: _a0, _a1, _a2, _a3
func (_m *MockClient) StopContainer(_a0 context.Context, _a1 *Container, _a2 int, _a3 bool) error {
	ret := _m.Called(_a0, _a1, _a2, _a3)

	if len(ret) == 0 {
		panic("no return value specified for StopContainer")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *Container, int, bool) error); ok {
		r0 = rf(_a0, _a1, _a2, _a3)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// StopContainerWithID provides a mock function with given fields: _a0, _a1, _a2, _a3
func (_m *MockClient) StopContainerWithID(_a0 context.Context, _a1 string, _a2 time.Duration, _a3 bool) error {
	ret := _m.Called(_a0, _a1, _a2, _a3)

	if len(ret) == 0 {
		panic("no return value specified for StopContainerWithID")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, time.Duration, bool) error); ok {
		r0 = rf(_a0, _a1, _a2, _a3)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// StopIPTablesContainer provides a mock function with given fields: _a0, _a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8, _a9, _a10
func (_m *MockClient) StopIPTablesContainer(_a0 context.Context, _a1 *Container, _a2 []string, _a3 []string, _a4 []*net.IPNet, _a5 []*net.IPNet, _a6 []string, _a7 []string, _a8 string, _a9 bool, _a10 bool) error {
	ret := _m.Called(_a0, _a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8, _a9, _a10)

	if len(ret) == 0 {
		panic("no return value specified for StopIPTablesContainer")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *Container, []string, []string, []*net.IPNet, []*net.IPNet, []string, []string, string, bool, bool) error); ok {
		r0 = rf(_a0, _a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8, _a9, _a10)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// StopNetemContainer provides a mock function with given fields: _a0, _a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8
func (_m *MockClient) StopNetemContainer(_a0 context.Context, _a1 *Container, _a2 string, _a3 []*net.IPNet, _a4 []string, _a5 []string, _a6 string, _a7 bool, _a8 bool) error {
	ret := _m.Called(_a0, _a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8)

	if len(ret) == 0 {
		panic("no return value specified for StopNetemContainer")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *Container, string, []*net.IPNet, []string, []string, string, bool, bool) error); ok {
		r0 = rf(_a0, _a1, _a2, _a3, _a4, _a5, _a6, _a7, _a8)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// StressContainer provides a mock function with given fields: _a0, _a1, _a2, _a3, _a4, _a5, _a6
func (_m *MockClient) StressContainer(_a0 context.Context, _a1 *Container, _a2 []string, _a3 string, _a4 bool, _a5 time.Duration, _a6 bool) (string, <-chan string, <-chan error, error) {
	ret := _m.Called(_a0, _a1, _a2, _a3, _a4, _a5, _a6)

	if len(ret) == 0 {
		panic("no return value specified for StressContainer")
	}

	var r0 string
	var r1 <-chan string
	var r2 <-chan error
	var r3 error
	if rf, ok := ret.Get(0).(func(context.Context, *Container, []string, string, bool, time.Duration, bool) (string, <-chan string, <-chan error, error)); ok {
		return rf(_a0, _a1, _a2, _a3, _a4, _a5, _a6)
	}
	if rf, ok := ret.Get(0).(func(context.Context, *Container, []string, string, bool, time.Duration, bool) string); ok {
		r0 = rf(_a0, _a1, _a2, _a3, _a4, _a5, _a6)
	} else {
		r0 = ret.Get(0).(string)
	}

	if rf, ok := ret.Get(1).(func(context.Context, *Container, []string, string, bool, time.Duration, bool) <-chan string); ok {
		r1 = rf(_a0, _a1, _a2, _a3, _a4, _a5, _a6)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).(<-chan string)
		}
	}

	if rf, ok := ret.Get(2).(func(context.Context, *Container, []string, string, bool, time.Duration, bool) <-chan error); ok {
		r2 = rf(_a0, _a1, _a2, _a3, _a4, _a5, _a6)
	} else {
		if ret.Get(2) != nil {
			r2 = ret.Get(2).(<-chan error)
		}
	}

	if rf, ok := ret.Get(3).(func(context.Context, *Container, []string, string, bool, time.Duration, bool) error); ok {
		r3 = rf(_a0, _a1, _a2, _a3, _a4, _a5, _a6)
	} else {
		r3 = ret.Error(3)
	}

	return r0, r1, r2, r3
}

// UnpauseContainer provides a mock function with given fields: _a0, _a1, _a2
func (_m *MockClient) UnpauseContainer(_a0 context.Context, _a1 *Container, _a2 bool) error {
	ret := _m.Called(_a0, _a1, _a2)

	if len(ret) == 0 {
		panic("no return value specified for UnpauseContainer")
	}

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *Container, bool) error); ok {
		r0 = rf(_a0, _a1, _a2)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// NewMockClient creates a new instance of MockClient. 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 NewMockClient(t interface {
	mock.TestingT
	Cleanup(func())
}) *MockClient {
	mock := &MockClient{}
	mock.Mock.Test(t)

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

	return mock
}
