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

package mocks

import (
	client "github.com/agoda-com/macOS-vz-kubelet/pkg/client"
	api "github.com/virtual-kubelet/virtual-kubelet/node/api"

	context "context"

	io "io"

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

	statsv1alpha1 "k8s.io/kubelet/pkg/apis/stats/v1alpha1"

	types "k8s.io/apimachinery/pkg/types"

	v1 "k8s.io/api/core/v1"
)

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

// AttachToContainer provides a mock function with given fields: ctx, namespace, podName, containerName, attach
func (_m *VzClientInterface) AttachToContainer(ctx context.Context, namespace string, podName string, containerName string, attach api.AttachIO) error {
	ret := _m.Called(ctx, namespace, podName, containerName, attach)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string, string, api.AttachIO) error); ok {
		r0 = rf(ctx, namespace, podName, containerName, attach)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// CreateVirtualizationGroup provides a mock function with given fields: ctx, pod, serviceAccountToken, configMaps
func (_m *VzClientInterface) CreateVirtualizationGroup(ctx context.Context, pod *v1.Pod, serviceAccountToken string, configMaps map[string]*v1.ConfigMap) error {
	ret := _m.Called(ctx, pod, serviceAccountToken, configMaps)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, *v1.Pod, string, map[string]*v1.ConfigMap) error); ok {
		r0 = rf(ctx, pod, serviceAccountToken, configMaps)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// DeleteVirtualizationGroup provides a mock function with given fields: ctx, namespace, name, gracePeriod
func (_m *VzClientInterface) DeleteVirtualizationGroup(ctx context.Context, namespace string, name string, gracePeriod int64) error {
	ret := _m.Called(ctx, namespace, name, gracePeriod)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string, int64) error); ok {
		r0 = rf(ctx, namespace, name, gracePeriod)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// ExecuteContainerCommand provides a mock function with given fields: ctx, namespace, podName, containerName, cmd, attach
func (_m *VzClientInterface) ExecuteContainerCommand(ctx context.Context, namespace string, podName string, containerName string, cmd []string, attach api.AttachIO) error {
	ret := _m.Called(ctx, namespace, podName, containerName, cmd, attach)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string, string, []string, api.AttachIO) error); ok {
		r0 = rf(ctx, namespace, podName, containerName, cmd, attach)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// GetContainerLogs provides a mock function with given fields: ctx, namespace, podName, containerName, opts
func (_m *VzClientInterface) GetContainerLogs(ctx context.Context, namespace string, podName string, containerName string, opts api.ContainerLogOpts) (io.ReadCloser, error) {
	ret := _m.Called(ctx, namespace, podName, containerName, opts)

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

	var r0 io.ReadCloser
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string, string, api.ContainerLogOpts) (io.ReadCloser, error)); ok {
		return rf(ctx, namespace, podName, containerName, opts)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string, string, api.ContainerLogOpts) io.ReadCloser); ok {
		r0 = rf(ctx, namespace, podName, containerName, opts)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(io.ReadCloser)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string, string, api.ContainerLogOpts) error); ok {
		r1 = rf(ctx, namespace, podName, containerName, opts)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetVirtualizationGroup provides a mock function with given fields: ctx, namespace, name
func (_m *VzClientInterface) GetVirtualizationGroup(ctx context.Context, namespace string, name string) (*client.VirtualizationGroup, error) {
	ret := _m.Called(ctx, namespace, name)

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

	var r0 *client.VirtualizationGroup
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string) (*client.VirtualizationGroup, error)); ok {
		return rf(ctx, namespace, name)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string) *client.VirtualizationGroup); ok {
		r0 = rf(ctx, namespace, name)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*client.VirtualizationGroup)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string) error); ok {
		r1 = rf(ctx, namespace, name)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetVirtualizationGroupListResult provides a mock function with given fields: ctx
func (_m *VzClientInterface) GetVirtualizationGroupListResult(ctx context.Context) (map[types.NamespacedName]*client.VirtualizationGroup, error) {
	ret := _m.Called(ctx)

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

	var r0 map[types.NamespacedName]*client.VirtualizationGroup
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context) (map[types.NamespacedName]*client.VirtualizationGroup, error)); ok {
		return rf(ctx)
	}
	if rf, ok := ret.Get(0).(func(context.Context) map[types.NamespacedName]*client.VirtualizationGroup); ok {
		r0 = rf(ctx)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(map[types.NamespacedName]*client.VirtualizationGroup)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context) error); ok {
		r1 = rf(ctx)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// GetVirtualizationGroupStats provides a mock function with given fields: ctx, namespace, name, containers
func (_m *VzClientInterface) GetVirtualizationGroupStats(ctx context.Context, namespace string, name string, containers []v1.Container) ([]statsv1alpha1.ContainerStats, error) {
	ret := _m.Called(ctx, namespace, name, containers)

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

	var r0 []statsv1alpha1.ContainerStats
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string, []v1.Container) ([]statsv1alpha1.ContainerStats, error)); ok {
		return rf(ctx, namespace, name, containers)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string, []v1.Container) []statsv1alpha1.ContainerStats); ok {
		r0 = rf(ctx, namespace, name, containers)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]statsv1alpha1.ContainerStats)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string, []v1.Container) error); ok {
		r1 = rf(ctx, namespace, name, containers)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

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

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

	return mock
}
