/*
Copyright The Kubernetes Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

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

package ionoscloud

import (
	context "context"

	mock "github.com/stretchr/testify/mock"
	ionos_cloud_sdk_go "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/ionoscloud/ionos-cloud-sdk-go"
)

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

// K8sNodepoolsFindById provides a mock function with given fields: ctx, k8sClusterId, nodepoolId
func (_m *MockAPIClient) K8sNodepoolsFindById(ctx context.Context, k8sClusterId string, nodepoolId string) ionos_cloud_sdk_go.ApiK8sNodepoolsFindByIdRequest {
	ret := _m.Called(ctx, k8sClusterId, nodepoolId)

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

	var r0 ionos_cloud_sdk_go.ApiK8sNodepoolsFindByIdRequest
	if rf, ok := ret.Get(0).(func(context.Context, string, string) ionos_cloud_sdk_go.ApiK8sNodepoolsFindByIdRequest); ok {
		r0 = rf(ctx, k8sClusterId, nodepoolId)
	} else {
		r0 = ret.Get(0).(ionos_cloud_sdk_go.ApiK8sNodepoolsFindByIdRequest)
	}

	return r0
}

// K8sNodepoolsFindByIdExecute provides a mock function with given fields: r
func (_m *MockAPIClient) K8sNodepoolsFindByIdExecute(r ionos_cloud_sdk_go.ApiK8sNodepoolsFindByIdRequest) (ionos_cloud_sdk_go.KubernetesNodePool, *ionos_cloud_sdk_go.APIResponse, error) {
	ret := _m.Called(r)

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

	var r0 ionos_cloud_sdk_go.KubernetesNodePool
	var r1 *ionos_cloud_sdk_go.APIResponse
	var r2 error
	if rf, ok := ret.Get(0).(func(ionos_cloud_sdk_go.ApiK8sNodepoolsFindByIdRequest) (ionos_cloud_sdk_go.KubernetesNodePool, *ionos_cloud_sdk_go.APIResponse, error)); ok {
		return rf(r)
	}
	if rf, ok := ret.Get(0).(func(ionos_cloud_sdk_go.ApiK8sNodepoolsFindByIdRequest) ionos_cloud_sdk_go.KubernetesNodePool); ok {
		r0 = rf(r)
	} else {
		r0 = ret.Get(0).(ionos_cloud_sdk_go.KubernetesNodePool)
	}

	if rf, ok := ret.Get(1).(func(ionos_cloud_sdk_go.ApiK8sNodepoolsFindByIdRequest) *ionos_cloud_sdk_go.APIResponse); ok {
		r1 = rf(r)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).(*ionos_cloud_sdk_go.APIResponse)
		}
	}

	if rf, ok := ret.Get(2).(func(ionos_cloud_sdk_go.ApiK8sNodepoolsFindByIdRequest) error); ok {
		r2 = rf(r)
	} else {
		r2 = ret.Error(2)
	}

	return r0, r1, r2
}

// K8sNodepoolsNodesDelete provides a mock function with given fields: ctx, k8sClusterId, nodepoolId, nodeId
func (_m *MockAPIClient) K8sNodepoolsNodesDelete(ctx context.Context, k8sClusterId string, nodepoolId string, nodeId string) ionos_cloud_sdk_go.ApiK8sNodepoolsNodesDeleteRequest {
	ret := _m.Called(ctx, k8sClusterId, nodepoolId, nodeId)

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

	var r0 ionos_cloud_sdk_go.ApiK8sNodepoolsNodesDeleteRequest
	if rf, ok := ret.Get(0).(func(context.Context, string, string, string) ionos_cloud_sdk_go.ApiK8sNodepoolsNodesDeleteRequest); ok {
		r0 = rf(ctx, k8sClusterId, nodepoolId, nodeId)
	} else {
		r0 = ret.Get(0).(ionos_cloud_sdk_go.ApiK8sNodepoolsNodesDeleteRequest)
	}

	return r0
}

// K8sNodepoolsNodesDeleteExecute provides a mock function with given fields: r
func (_m *MockAPIClient) K8sNodepoolsNodesDeleteExecute(r ionos_cloud_sdk_go.ApiK8sNodepoolsNodesDeleteRequest) (*ionos_cloud_sdk_go.APIResponse, error) {
	ret := _m.Called(r)

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

	var r0 *ionos_cloud_sdk_go.APIResponse
	var r1 error
	if rf, ok := ret.Get(0).(func(ionos_cloud_sdk_go.ApiK8sNodepoolsNodesDeleteRequest) (*ionos_cloud_sdk_go.APIResponse, error)); ok {
		return rf(r)
	}
	if rf, ok := ret.Get(0).(func(ionos_cloud_sdk_go.ApiK8sNodepoolsNodesDeleteRequest) *ionos_cloud_sdk_go.APIResponse); ok {
		r0 = rf(r)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*ionos_cloud_sdk_go.APIResponse)
		}
	}

	if rf, ok := ret.Get(1).(func(ionos_cloud_sdk_go.ApiK8sNodepoolsNodesDeleteRequest) error); ok {
		r1 = rf(r)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// K8sNodepoolsNodesGet provides a mock function with given fields: ctx, k8sClusterId, nodepoolId
func (_m *MockAPIClient) K8sNodepoolsNodesGet(ctx context.Context, k8sClusterId string, nodepoolId string) ionos_cloud_sdk_go.ApiK8sNodepoolsNodesGetRequest {
	ret := _m.Called(ctx, k8sClusterId, nodepoolId)

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

	var r0 ionos_cloud_sdk_go.ApiK8sNodepoolsNodesGetRequest
	if rf, ok := ret.Get(0).(func(context.Context, string, string) ionos_cloud_sdk_go.ApiK8sNodepoolsNodesGetRequest); ok {
		r0 = rf(ctx, k8sClusterId, nodepoolId)
	} else {
		r0 = ret.Get(0).(ionos_cloud_sdk_go.ApiK8sNodepoolsNodesGetRequest)
	}

	return r0
}

// K8sNodepoolsNodesGetExecute provides a mock function with given fields: r
func (_m *MockAPIClient) K8sNodepoolsNodesGetExecute(r ionos_cloud_sdk_go.ApiK8sNodepoolsNodesGetRequest) (ionos_cloud_sdk_go.KubernetesNodes, *ionos_cloud_sdk_go.APIResponse, error) {
	ret := _m.Called(r)

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

	var r0 ionos_cloud_sdk_go.KubernetesNodes
	var r1 *ionos_cloud_sdk_go.APIResponse
	var r2 error
	if rf, ok := ret.Get(0).(func(ionos_cloud_sdk_go.ApiK8sNodepoolsNodesGetRequest) (ionos_cloud_sdk_go.KubernetesNodes, *ionos_cloud_sdk_go.APIResponse, error)); ok {
		return rf(r)
	}
	if rf, ok := ret.Get(0).(func(ionos_cloud_sdk_go.ApiK8sNodepoolsNodesGetRequest) ionos_cloud_sdk_go.KubernetesNodes); ok {
		r0 = rf(r)
	} else {
		r0 = ret.Get(0).(ionos_cloud_sdk_go.KubernetesNodes)
	}

	if rf, ok := ret.Get(1).(func(ionos_cloud_sdk_go.ApiK8sNodepoolsNodesGetRequest) *ionos_cloud_sdk_go.APIResponse); ok {
		r1 = rf(r)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).(*ionos_cloud_sdk_go.APIResponse)
		}
	}

	if rf, ok := ret.Get(2).(func(ionos_cloud_sdk_go.ApiK8sNodepoolsNodesGetRequest) error); ok {
		r2 = rf(r)
	} else {
		r2 = ret.Error(2)
	}

	return r0, r1, r2
}

// K8sNodepoolsPut provides a mock function with given fields: ctx, k8sClusterId, nodepoolId
func (_m *MockAPIClient) K8sNodepoolsPut(ctx context.Context, k8sClusterId string, nodepoolId string) ionos_cloud_sdk_go.ApiK8sNodepoolsPutRequest {
	ret := _m.Called(ctx, k8sClusterId, nodepoolId)

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

	var r0 ionos_cloud_sdk_go.ApiK8sNodepoolsPutRequest
	if rf, ok := ret.Get(0).(func(context.Context, string, string) ionos_cloud_sdk_go.ApiK8sNodepoolsPutRequest); ok {
		r0 = rf(ctx, k8sClusterId, nodepoolId)
	} else {
		r0 = ret.Get(0).(ionos_cloud_sdk_go.ApiK8sNodepoolsPutRequest)
	}

	return r0
}

// K8sNodepoolsPutExecute provides a mock function with given fields: r
func (_m *MockAPIClient) K8sNodepoolsPutExecute(r ionos_cloud_sdk_go.ApiK8sNodepoolsPutRequest) (ionos_cloud_sdk_go.KubernetesNodePool, *ionos_cloud_sdk_go.APIResponse, error) {
	ret := _m.Called(r)

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

	var r0 ionos_cloud_sdk_go.KubernetesNodePool
	var r1 *ionos_cloud_sdk_go.APIResponse
	var r2 error
	if rf, ok := ret.Get(0).(func(ionos_cloud_sdk_go.ApiK8sNodepoolsPutRequest) (ionos_cloud_sdk_go.KubernetesNodePool, *ionos_cloud_sdk_go.APIResponse, error)); ok {
		return rf(r)
	}
	if rf, ok := ret.Get(0).(func(ionos_cloud_sdk_go.ApiK8sNodepoolsPutRequest) ionos_cloud_sdk_go.KubernetesNodePool); ok {
		r0 = rf(r)
	} else {
		r0 = ret.Get(0).(ionos_cloud_sdk_go.KubernetesNodePool)
	}

	if rf, ok := ret.Get(1).(func(ionos_cloud_sdk_go.ApiK8sNodepoolsPutRequest) *ionos_cloud_sdk_go.APIResponse); ok {
		r1 = rf(r)
	} else {
		if ret.Get(1) != nil {
			r1 = ret.Get(1).(*ionos_cloud_sdk_go.APIResponse)
		}
	}

	if rf, ok := ret.Get(2).(func(ionos_cloud_sdk_go.ApiK8sNodepoolsPutRequest) error); ok {
		r2 = rf(r)
	} else {
		r2 = ret.Error(2)
	}

	return r0, r1, r2
}

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

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

	return mock
}
