// Code generated by MockGen. DO NOT EDIT.
// Source: segment.go
//
// Generated by this command:
//
//	mockgen -source=segment.go -package=mock -destination=./mock/segment.go
//

// Package mock is a generated GoMock package.
package mock

import (
	context "context"
	reflect "reflect"

	gomock "go.uber.org/mock/gomock"

	domain "github.com/bucketeer-io/bucketeer/v2/pkg/feature/domain"
	mysql "github.com/bucketeer-io/bucketeer/v2/pkg/storage/v2/mysql"
	feature "github.com/bucketeer-io/bucketeer/v2/proto/feature"
)

// MockSegmentStorage is a mock of SegmentStorage interface.
type MockSegmentStorage struct {
	ctrl     *gomock.Controller
	recorder *MockSegmentStorageMockRecorder
}

// MockSegmentStorageMockRecorder is the mock recorder for MockSegmentStorage.
type MockSegmentStorageMockRecorder struct {
	mock *MockSegmentStorage
}

// NewMockSegmentStorage creates a new mock instance.
func NewMockSegmentStorage(ctrl *gomock.Controller) *MockSegmentStorage {
	mock := &MockSegmentStorage{ctrl: ctrl}
	mock.recorder = &MockSegmentStorageMockRecorder{mock}
	return mock
}

// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockSegmentStorage) EXPECT() *MockSegmentStorageMockRecorder {
	return m.recorder
}

// CreateSegment mocks base method.
func (m *MockSegmentStorage) CreateSegment(ctx context.Context, segment *domain.Segment, environmentId string) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "CreateSegment", ctx, segment, environmentId)
	ret0, _ := ret[0].(error)
	return ret0
}

// CreateSegment indicates an expected call of CreateSegment.
func (mr *MockSegmentStorageMockRecorder) CreateSegment(ctx, segment, environmentId any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateSegment", reflect.TypeOf((*MockSegmentStorage)(nil).CreateSegment), ctx, segment, environmentId)
}

// DeleteSegment mocks base method.
func (m *MockSegmentStorage) DeleteSegment(ctx context.Context, id string) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "DeleteSegment", ctx, id)
	ret0, _ := ret[0].(error)
	return ret0
}

// DeleteSegment indicates an expected call of DeleteSegment.
func (mr *MockSegmentStorageMockRecorder) DeleteSegment(ctx, id any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteSegment", reflect.TypeOf((*MockSegmentStorage)(nil).DeleteSegment), ctx, id)
}

// GetSegment mocks base method.
func (m *MockSegmentStorage) GetSegment(ctx context.Context, id, environmentId string) (*domain.Segment, []string, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "GetSegment", ctx, id, environmentId)
	ret0, _ := ret[0].(*domain.Segment)
	ret1, _ := ret[1].([]string)
	ret2, _ := ret[2].(error)
	return ret0, ret1, ret2
}

// GetSegment indicates an expected call of GetSegment.
func (mr *MockSegmentStorageMockRecorder) GetSegment(ctx, id, environmentId any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSegment", reflect.TypeOf((*MockSegmentStorage)(nil).GetSegment), ctx, id, environmentId)
}

// ListSegments mocks base method.
func (m *MockSegmentStorage) ListSegments(ctx context.Context, options *mysql.ListOptions, isInUseStatus *bool) ([]*feature.Segment, int, int64, map[string][]string, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ListSegments", ctx, options, isInUseStatus)
	ret0, _ := ret[0].([]*feature.Segment)
	ret1, _ := ret[1].(int)
	ret2, _ := ret[2].(int64)
	ret3, _ := ret[3].(map[string][]string)
	ret4, _ := ret[4].(error)
	return ret0, ret1, ret2, ret3, ret4
}

// ListSegments indicates an expected call of ListSegments.
func (mr *MockSegmentStorageMockRecorder) ListSegments(ctx, options, isInUseStatus any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSegments", reflect.TypeOf((*MockSegmentStorage)(nil).ListSegments), ctx, options, isInUseStatus)
}

// UpdateSegment mocks base method.
func (m *MockSegmentStorage) UpdateSegment(ctx context.Context, segment *domain.Segment, environmentId string) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "UpdateSegment", ctx, segment, environmentId)
	ret0, _ := ret[0].(error)
	return ret0
}

// UpdateSegment indicates an expected call of UpdateSegment.
func (mr *MockSegmentStorageMockRecorder) UpdateSegment(ctx, segment, environmentId any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateSegment", reflect.TypeOf((*MockSegmentStorage)(nil).UpdateSegment), ctx, segment, environmentId)
}
