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

package datacoord

import (
	indexpb "github.com/milvus-io/milvus/pkg/v3/proto/indexpb"
	mock "github.com/stretchr/testify/mock"
)

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

type MockStatsJobManager_Expecter struct {
	mock *mock.Mock
}

func (_m *MockStatsJobManager) EXPECT() *MockStatsJobManager_Expecter {
	return &MockStatsJobManager_Expecter{mock: &_m.Mock}
}

// DropStatsTask provides a mock function with given fields: originSegmentID, subJobType
func (_m *MockStatsJobManager) DropStatsTask(originSegmentID int64, subJobType indexpb.StatsSubJob) error {
	ret := _m.Called(originSegmentID, subJobType)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(int64, indexpb.StatsSubJob) error); ok {
		r0 = rf(originSegmentID, subJobType)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// MockStatsJobManager_DropStatsTask_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DropStatsTask'
type MockStatsJobManager_DropStatsTask_Call struct {
	*mock.Call
}

// DropStatsTask is a helper method to define mock.On call
//   - originSegmentID int64
//   - subJobType indexpb.StatsSubJob
func (_e *MockStatsJobManager_Expecter) DropStatsTask(originSegmentID interface{}, subJobType interface{}) *MockStatsJobManager_DropStatsTask_Call {
	return &MockStatsJobManager_DropStatsTask_Call{Call: _e.mock.On("DropStatsTask", originSegmentID, subJobType)}
}

func (_c *MockStatsJobManager_DropStatsTask_Call) Run(run func(originSegmentID int64, subJobType indexpb.StatsSubJob)) *MockStatsJobManager_DropStatsTask_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run(args[0].(int64), args[1].(indexpb.StatsSubJob))
	})
	return _c
}

func (_c *MockStatsJobManager_DropStatsTask_Call) Return(_a0 error) *MockStatsJobManager_DropStatsTask_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *MockStatsJobManager_DropStatsTask_Call) RunAndReturn(run func(int64, indexpb.StatsSubJob) error) *MockStatsJobManager_DropStatsTask_Call {
	_c.Call.Return(run)
	return _c
}

// GetStatsTask provides a mock function with given fields: originSegmentID, subJobType
func (_m *MockStatsJobManager) GetStatsTask(originSegmentID int64, subJobType indexpb.StatsSubJob) *indexpb.StatsTask {
	ret := _m.Called(originSegmentID, subJobType)

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

	var r0 *indexpb.StatsTask
	if rf, ok := ret.Get(0).(func(int64, indexpb.StatsSubJob) *indexpb.StatsTask); ok {
		r0 = rf(originSegmentID, subJobType)
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).(*indexpb.StatsTask)
		}
	}

	return r0
}

// MockStatsJobManager_GetStatsTask_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetStatsTask'
type MockStatsJobManager_GetStatsTask_Call struct {
	*mock.Call
}

// GetStatsTask is a helper method to define mock.On call
//   - originSegmentID int64
//   - subJobType indexpb.StatsSubJob
func (_e *MockStatsJobManager_Expecter) GetStatsTask(originSegmentID interface{}, subJobType interface{}) *MockStatsJobManager_GetStatsTask_Call {
	return &MockStatsJobManager_GetStatsTask_Call{Call: _e.mock.On("GetStatsTask", originSegmentID, subJobType)}
}

func (_c *MockStatsJobManager_GetStatsTask_Call) Run(run func(originSegmentID int64, subJobType indexpb.StatsSubJob)) *MockStatsJobManager_GetStatsTask_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run(args[0].(int64), args[1].(indexpb.StatsSubJob))
	})
	return _c
}

func (_c *MockStatsJobManager_GetStatsTask_Call) Return(_a0 *indexpb.StatsTask) *MockStatsJobManager_GetStatsTask_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *MockStatsJobManager_GetStatsTask_Call) RunAndReturn(run func(int64, indexpb.StatsSubJob) *indexpb.StatsTask) *MockStatsJobManager_GetStatsTask_Call {
	_c.Call.Return(run)
	return _c
}

// Start provides a mock function with given fields:
func (_m *MockStatsJobManager) Start() {
	_m.Called()
}

// MockStatsJobManager_Start_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Start'
type MockStatsJobManager_Start_Call struct {
	*mock.Call
}

// Start is a helper method to define mock.On call
func (_e *MockStatsJobManager_Expecter) Start() *MockStatsJobManager_Start_Call {
	return &MockStatsJobManager_Start_Call{Call: _e.mock.On("Start")}
}

func (_c *MockStatsJobManager_Start_Call) Run(run func()) *MockStatsJobManager_Start_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run()
	})
	return _c
}

func (_c *MockStatsJobManager_Start_Call) Return() *MockStatsJobManager_Start_Call {
	_c.Call.Return()
	return _c
}

func (_c *MockStatsJobManager_Start_Call) RunAndReturn(run func()) *MockStatsJobManager_Start_Call {
	_c.Call.Return(run)
	return _c
}

// Stop provides a mock function with given fields:
func (_m *MockStatsJobManager) Stop() {
	_m.Called()
}

// MockStatsJobManager_Stop_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Stop'
type MockStatsJobManager_Stop_Call struct {
	*mock.Call
}

// Stop is a helper method to define mock.On call
func (_e *MockStatsJobManager_Expecter) Stop() *MockStatsJobManager_Stop_Call {
	return &MockStatsJobManager_Stop_Call{Call: _e.mock.On("Stop")}
}

func (_c *MockStatsJobManager_Stop_Call) Run(run func()) *MockStatsJobManager_Stop_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run()
	})
	return _c
}

func (_c *MockStatsJobManager_Stop_Call) Return() *MockStatsJobManager_Stop_Call {
	_c.Call.Return()
	return _c
}

func (_c *MockStatsJobManager_Stop_Call) RunAndReturn(run func()) *MockStatsJobManager_Stop_Call {
	_c.Call.Return(run)
	return _c
}

// SubmitStatsTask provides a mock function with given fields: originSegmentID, targetSegmentID, subJobType, canRecycle
func (_m *MockStatsJobManager) SubmitStatsTask(originSegmentID int64, targetSegmentID int64, subJobType indexpb.StatsSubJob, canRecycle bool) error {
	ret := _m.Called(originSegmentID, targetSegmentID, subJobType, canRecycle)

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

	var r0 error
	if rf, ok := ret.Get(0).(func(int64, int64, indexpb.StatsSubJob, bool) error); ok {
		r0 = rf(originSegmentID, targetSegmentID, subJobType, canRecycle)
	} else {
		r0 = ret.Error(0)
	}

	return r0
}

// MockStatsJobManager_SubmitStatsTask_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SubmitStatsTask'
type MockStatsJobManager_SubmitStatsTask_Call struct {
	*mock.Call
}

// SubmitStatsTask is a helper method to define mock.On call
//   - originSegmentID int64
//   - targetSegmentID int64
//   - subJobType indexpb.StatsSubJob
//   - canRecycle bool
func (_e *MockStatsJobManager_Expecter) SubmitStatsTask(originSegmentID interface{}, targetSegmentID interface{}, subJobType interface{}, canRecycle interface{}) *MockStatsJobManager_SubmitStatsTask_Call {
	return &MockStatsJobManager_SubmitStatsTask_Call{Call: _e.mock.On("SubmitStatsTask", originSegmentID, targetSegmentID, subJobType, canRecycle)}
}

func (_c *MockStatsJobManager_SubmitStatsTask_Call) Run(run func(originSegmentID int64, targetSegmentID int64, subJobType indexpb.StatsSubJob, canRecycle bool)) *MockStatsJobManager_SubmitStatsTask_Call {
	_c.Call.Run(func(args mock.Arguments) {
		run(args[0].(int64), args[1].(int64), args[2].(indexpb.StatsSubJob), args[3].(bool))
	})
	return _c
}

func (_c *MockStatsJobManager_SubmitStatsTask_Call) Return(_a0 error) *MockStatsJobManager_SubmitStatsTask_Call {
	_c.Call.Return(_a0)
	return _c
}

func (_c *MockStatsJobManager_SubmitStatsTask_Call) RunAndReturn(run func(int64, int64, indexpb.StatsSubJob, bool) error) *MockStatsJobManager_SubmitStatsTask_Call {
	_c.Call.Return(run)
	return _c
}

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

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

	return mock
}
