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

package mock

import (
	context "context"

	mock "github.com/stretchr/testify/mock"
	infraapi "github.com/tidbcloud/dataflow-service/pkg/infra-api"

	v1 "github.com/tidbcloud/infra-api/api/v1"
)

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

// CreateBackupIgnoreExists provides a mock function with given fields: ctx, cloudProvider, region, param
func (_m *BackupFacade) CreateBackupIgnoreExists(ctx context.Context, cloudProvider string, region string, param *infraapi.CreateBackupParam) error {
	ret := _m.Called(ctx, cloudProvider, region, param)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string, *infraapi.CreateBackupParam) error); ok {
		r0 = rf(ctx, cloudProvider, region, param)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// DeleteBackupIgnoreNotFound provides a mock function with given fields: ctx, cloudProvider, region, tenantID, projectID, clusterID, backupName
func (_m *BackupFacade) DeleteBackupIgnoreNotFound(ctx context.Context, cloudProvider string, region string, tenantID uint64, projectID uint64, clusterID uint64, backupName string) error {
	ret := _m.Called(ctx, cloudProvider, region, tenantID, projectID, clusterID, backupName)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string, uint64, uint64, uint64, string) error); ok {
		r0 = rf(ctx, cloudProvider, region, tenantID, projectID, clusterID, backupName)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// DeleteLogBackupIgnoreNotFound provides a mock function with given fields: ctx, cloudProvider, region, tenantID, projectID, clusterID, logBackupName
func (_m *BackupFacade) DeleteLogBackupIgnoreNotFound(ctx context.Context, cloudProvider string, region string, tenantID uint64, projectID uint64, clusterID uint64, logBackupName string) error {
	ret := _m.Called(ctx, cloudProvider, region, tenantID, projectID, clusterID, logBackupName)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string, uint64, uint64, uint64, string) error); ok {
		r0 = rf(ctx, cloudProvider, region, tenantID, projectID, clusterID, logBackupName)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// GetBackup provides a mock function with given fields: ctx, cloudProvider, region, tenantID, projectID, clusterID, backupCRName
func (_m *BackupFacade) GetBackup(ctx context.Context, cloudProvider string, region string, tenantID uint64, projectID uint64, clusterID uint64, backupCRName string) (*v1.Backup, error) {
	ret := _m.Called(ctx, cloudProvider, region, tenantID, projectID, clusterID, backupCRName)

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

	var r0 *v1.Backup
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string, uint64, uint64, uint64, string) (*v1.Backup, error)); ok {
		return rf(ctx, cloudProvider, region, tenantID, projectID, clusterID, backupCRName)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string, uint64, uint64, uint64, string) *v1.Backup); ok {
		r0 = rf(ctx, cloudProvider, region, tenantID, projectID, clusterID, backupCRName)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*v1.Backup)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string, uint64, uint64, uint64, string) error); ok {
		r1 = rf(ctx, cloudProvider, region, tenantID, projectID, clusterID, backupCRName)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// ListBackups provides a mock function with given fields: ctx, region, projectID, clusterID
func (_m *BackupFacade) ListBackups(ctx context.Context, region string, projectID uint64, clusterID uint64) ([]v1.Backup, error) {
	ret := _m.Called(ctx, region, projectID, clusterID)

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

	var r0 []v1.Backup
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, uint64, uint64) ([]v1.Backup, error)); ok {
		return rf(ctx, region, projectID, clusterID)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, uint64, uint64) []v1.Backup); ok {
		r0 = rf(ctx, region, projectID, clusterID)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]v1.Backup)
		}
	}

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

	return r0, r1
}

// ListLogBackups provides a mock function with given fields: ctx
func (_m *BackupFacade) ListLogBackups(ctx context.Context) ([]v1.Backup, error) {
	ret := _m.Called(ctx)

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

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

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

	return r0, r1
}

// RawCreateBackupCR provides a mock function with given fields: ctx, cloudProvider, region, tenantID, projectID, clusterID, backup
func (_m *BackupFacade) RawCreateBackupCR(ctx context.Context, cloudProvider string, region string, tenantID uint64, projectID uint64, clusterID uint64, backup *v1.Backup) error {
	ret := _m.Called(ctx, cloudProvider, region, tenantID, projectID, clusterID, backup)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string, uint64, uint64, uint64, *v1.Backup) error); ok {
		r0 = rf(ctx, cloudProvider, region, tenantID, projectID, clusterID, backup)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// RawGetBackupCR provides a mock function with given fields: ctx, cloudProvider, region, tenantID, projectID, clusterID, backupName
func (_m *BackupFacade) RawGetBackupCR(ctx context.Context, cloudProvider string, region string, tenantID uint64, projectID uint64, clusterID uint64, backupName string) (*v1.Backup, error) {
	ret := _m.Called(ctx, cloudProvider, region, tenantID, projectID, clusterID, backupName)

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

	var r0 *v1.Backup
	var r1 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string, uint64, uint64, uint64, string) (*v1.Backup, error)); ok {
		return rf(ctx, cloudProvider, region, tenantID, projectID, clusterID, backupName)
	}
	if rf, ok := ret.Get(0).(func(context.Context, string, string, uint64, uint64, uint64, string) *v1.Backup); ok {
		r0 = rf(ctx, cloudProvider, region, tenantID, projectID, clusterID, backupName)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*v1.Backup)
		}
	}

	if rf, ok := ret.Get(1).(func(context.Context, string, string, uint64, uint64, uint64, string) error); ok {
		r1 = rf(ctx, cloudProvider, region, tenantID, projectID, clusterID, backupName)
	} else {
		r1 = ret.Error(1)
	}

	return r0, r1
}

// StartLogBackupIgnoreExists provides a mock function with given fields: ctx, cloudProvider, region, param
func (_m *BackupFacade) StartLogBackupIgnoreExists(ctx context.Context, cloudProvider string, region string, param *infraapi.BackupParam) error {
	ret := _m.Called(ctx, cloudProvider, region, param)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string, *infraapi.BackupParam) error); ok {
		r0 = rf(ctx, cloudProvider, region, param)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// StopLogBackup provides a mock function with given fields: ctx, cloudProvider, region, tenantID, projectID, clusterID, logBackupName
func (_m *BackupFacade) StopLogBackup(ctx context.Context, cloudProvider string, region string, tenantID uint64, projectID uint64, clusterID uint64, logBackupName string) error {
	ret := _m.Called(ctx, cloudProvider, region, tenantID, projectID, clusterID, logBackupName)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string, uint64, uint64, uint64, string) error); ok {
		r0 = rf(ctx, cloudProvider, region, tenantID, projectID, clusterID, logBackupName)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// TruncateLogBackup provides a mock function with given fields: ctx, cloudProvider, region, tenantID, projectID, clusterID, logBackupName, truncateUntil
func (_m *BackupFacade) TruncateLogBackup(ctx context.Context, cloudProvider string, region string, tenantID uint64, projectID uint64, clusterID uint64, logBackupName string, truncateUntil string) error {
	ret := _m.Called(ctx, cloudProvider, region, tenantID, projectID, clusterID, logBackupName, truncateUntil)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(context.Context, string, string, uint64, uint64, uint64, string, string) error); ok {
		r0 = rf(ctx, cloudProvider, region, tenantID, projectID, clusterID, logBackupName, truncateUntil)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

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

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

	return mock
}
