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

package mocks

import (
	common "github.com/docker/docker/api/types/common"
	container "github.com/docker/docker/api/types/container"

	context "context"

	io "io"

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

	network "github.com/docker/docker/api/types/network"

	types "github.com/docker/docker/api/types"

	v1 "github.com/opencontainers/image-spec/specs-go/v1"
)

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

// ContainerAttach provides a mock function with given fields: ctx, _a1, options
func (_m *ContainerAPIClient) ContainerAttach(ctx context.Context, _a1 string, options container.AttachOptions) (types.HijackedResponse, error) {
	ret := _m.Called(ctx, _a1, options)

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

	var r0 types.HijackedResponse
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, container.AttachOptions) (types.HijackedResponse, error)); ok {
		return rf(ctx, _a1, options)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, container.AttachOptions) types.HijackedResponse); ok {
		r0 = rf(ctx, _a1, options)
	} else {
		r0 = ret.Get(0).(types.HijackedResponse)
	}

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

	return r0, r1
}

// ContainerCreate provides a mock function with given fields: ctx, config, hostConfig, networkingConfig, platform, containerName
func (_m *ContainerAPIClient) ContainerCreate(ctx context.Context, config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, platform *v1.Platform, containerName string) (container.CreateResponse, error) {
	ret := _m.Called(ctx, config, hostConfig, networkingConfig, platform, containerName)

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

	var r0 container.CreateResponse
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, *container.Config, *container.HostConfig, *network.NetworkingConfig, *v1.Platform, string) (container.CreateResponse, error)); ok {
		return rf(ctx, config, hostConfig, networkingConfig, platform, containerName)
	}
	if rf, ok := ret.Get(0).(func(context.Context, *container.Config, *container.HostConfig, *network.NetworkingConfig, *v1.Platform, string) container.CreateResponse); ok {
		r0 = rf(ctx, config, hostConfig, networkingConfig, platform, containerName)
	} else {
		r0 = ret.Get(0).(container.CreateResponse)
	}

	if rf, ok := ret.Get(1).(func(context.Context, *container.Config, *container.HostConfig, *network.NetworkingConfig, *v1.Platform, string) error); ok {
		r1 = rf(ctx, config, hostConfig, networkingConfig, platform, containerName)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ContainerExecAttach provides a mock function with given fields: ctx, execID, config
func (_m *ContainerAPIClient) ContainerExecAttach(ctx context.Context, execID string, config container.ExecStartOptions) (types.HijackedResponse, error) {
	ret := _m.Called(ctx, execID, config)

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

	var r0 types.HijackedResponse
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, container.ExecStartOptions) (types.HijackedResponse, error)); ok {
		return rf(ctx, execID, config)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, container.ExecStartOptions) types.HijackedResponse); ok {
		r0 = rf(ctx, execID, config)
	} else {
		r0 = ret.Get(0).(types.HijackedResponse)
	}

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

	return r0, r1
}

// ContainerExecCreate provides a mock function with given fields: ctx, _a1, config
func (_m *ContainerAPIClient) ContainerExecCreate(ctx context.Context, _a1 string, config container.ExecOptions) (common.IDResponse, error) {
	ret := _m.Called(ctx, _a1, config)

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

	var r0 common.IDResponse
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, container.ExecOptions) (common.IDResponse, error)); ok {
		return rf(ctx, _a1, config)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, container.ExecOptions) common.IDResponse); ok {
		r0 = rf(ctx, _a1, config)
	} else {
		r0 = ret.Get(0).(common.IDResponse)
	}

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

	return r0, r1
}

// ContainerExecInspect provides a mock function with given fields: ctx, execID
func (_m *ContainerAPIClient) ContainerExecInspect(ctx context.Context, execID string) (container.ExecInspect, error) {
	ret := _m.Called(ctx, execID)

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

	var r0 container.ExecInspect
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string) (container.ExecInspect, error)); ok {
		return rf(ctx, execID)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string) container.ExecInspect); ok {
		r0 = rf(ctx, execID)
	} else {
		r0 = ret.Get(0).(container.ExecInspect)
	}

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

	return r0, r1
}

// ContainerInspect provides a mock function with given fields: ctx, _a1
func (_m *ContainerAPIClient) ContainerInspect(ctx context.Context, _a1 string) (container.InspectResponse, error) {
	ret := _m.Called(ctx, _a1)

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

	var r0 container.InspectResponse
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string) (container.InspectResponse, error)); ok {
		return rf(ctx, _a1)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string) container.InspectResponse); ok {
		r0 = rf(ctx, _a1)
	} else {
		r0 = ret.Get(0).(container.InspectResponse)
	}

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

	return r0, r1
}

// ContainerList provides a mock function with given fields: ctx, options
func (_m *ContainerAPIClient) ContainerList(ctx context.Context, options container.ListOptions) ([]container.Summary, error) {
	ret := _m.Called(ctx, options)

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

	var r0 []container.Summary
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, container.ListOptions) ([]container.Summary, error)); ok {
		return rf(ctx, options)
	}
	if rf, ok := ret.Get(0).(func(context.Context, container.ListOptions) []container.Summary); ok {
		r0 = rf(ctx, options)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]container.Summary)
		}
	}

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

	return r0, r1
}

// ContainerLogs provides a mock function with given fields: ctx, _a1, options
func (_m *ContainerAPIClient) ContainerLogs(ctx context.Context, _a1 string, options container.LogsOptions) (io.ReadCloser, error) {
	ret := _m.Called(ctx, _a1, options)

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

	var r0 io.ReadCloser
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, container.LogsOptions) (io.ReadCloser, error)); ok {
		return rf(ctx, _a1, options)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, container.LogsOptions) io.ReadCloser); ok {
		r0 = rf(ctx, _a1, options)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(io.ReadCloser)
		}
	}

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

	return r0, r1
}

// ContainerRemove provides a mock function with given fields: ctx, _a1, options
func (_m *ContainerAPIClient) ContainerRemove(ctx context.Context, _a1 string, options container.RemoveOptions) error {
	ret := _m.Called(ctx, _a1, options)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, container.RemoveOptions) error); ok {
		r0 = rf(ctx, _a1, options)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// ContainerStart provides a mock function with given fields: ctx, _a1, options
func (_m *ContainerAPIClient) ContainerStart(ctx context.Context, _a1 string, options container.StartOptions) error {
	ret := _m.Called(ctx, _a1, options)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, container.StartOptions) error); ok {
		r0 = rf(ctx, _a1, options)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// ContainerStop provides a mock function with given fields: ctx, name, options
func (_m *ContainerAPIClient) ContainerStop(ctx context.Context, name string, options container.StopOptions) error {
	ret := _m.Called(ctx, name, options)

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

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

	return r0
}

// ContainerWait provides a mock function with given fields: ctx, _a1, condition
func (_m *ContainerAPIClient) ContainerWait(ctx context.Context, _a1 string, condition container.WaitCondition) (<-chan container.WaitResponse, <-chan error) {
	ret := _m.Called(ctx, _a1, condition)

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

	var r0 <-chan container.WaitResponse
	var r1 <-chan error
	if rf, ok := ret.Get(0).(func(context.Context, string, container.WaitCondition) (<-chan container.WaitResponse, <-chan error)); ok {
		return rf(ctx, _a1, condition)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, container.WaitCondition) <-chan container.WaitResponse); ok {
		r0 = rf(ctx, _a1, condition)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(<-chan container.WaitResponse)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, container.WaitCondition) <-chan error); ok {
		r1 = rf(ctx, _a1, condition)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).(<-chan error)
		}
	}

	return r0, r1
}

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

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

	return mock
}
