// Code generated by MockGen. DO NOT EDIT.
// Source: ../../redistool/expiring_hash.go

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

import (
	context "context"
	reflect "reflect"
	time "time"

	gomock "github.com/golang/mock/gomock"
	redistool "gitlab.com/gitlab-org/cluster-integration/gitlab-agent/v16/internal/tool/redistool"
)

// MockExpiringHashInterface is a mock of ExpiringHashInterface interface.
type MockExpiringHashInterface[K1 any, K2 any] struct {
	ctrl     *gomock.Controller
	recorder *MockExpiringHashInterfaceMockRecorder[K1, K2]
}

// MockExpiringHashInterfaceMockRecorder is the mock recorder for MockExpiringHashInterface.
type MockExpiringHashInterfaceMockRecorder[K1 any, K2 any] struct {
	mock *MockExpiringHashInterface[K1, K2]
}

// NewMockExpiringHashInterface creates a new mock instance.
func NewMockExpiringHashInterface[K1 any, K2 any](ctrl *gomock.Controller) *MockExpiringHashInterface[K1, K2] {
	mock := &MockExpiringHashInterface[K1, K2]{ctrl: ctrl}
	mock.recorder = &MockExpiringHashInterfaceMockRecorder[K1, K2]{mock}
	return mock
}

// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockExpiringHashInterface[K1, K2]) EXPECT() *MockExpiringHashInterfaceMockRecorder[K1, K2] {
	return m.recorder
}

// Clear mocks base method.
func (m *MockExpiringHashInterface[K1, K2]) Clear(arg0 context.Context) (int, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "Clear", arg0)
	ret0, _ := ret[0].(int)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// Clear indicates an expected call of Clear.
func (mr *MockExpiringHashInterfaceMockRecorder[K1, K2]) Clear(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Clear", reflect.TypeOf((*MockExpiringHashInterface[K1, K2])(nil).Clear), arg0)
}

// Forget mocks base method.
func (m *MockExpiringHashInterface[K1, K2]) Forget(key K1, hashKey K2) {
	m.ctrl.T.Helper()
	m.ctrl.Call(m, "Forget", key, hashKey)
}

// Forget indicates an expected call of Forget.
func (mr *MockExpiringHashInterfaceMockRecorder[K1, K2]) Forget(key, hashKey interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Forget", reflect.TypeOf((*MockExpiringHashInterface[K1, K2])(nil).Forget), key, hashKey)
}

// GC mocks base method.
func (m *MockExpiringHashInterface[K1, K2]) GC() func(context.Context) (int, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "GC")
	ret0, _ := ret[0].(func(context.Context) (int, error))
	return ret0
}

// GC indicates an expected call of GC.
func (mr *MockExpiringHashInterfaceMockRecorder[K1, K2]) GC() *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GC", reflect.TypeOf((*MockExpiringHashInterface[K1, K2])(nil).GC))
}

// Len mocks base method.
func (m *MockExpiringHashInterface[K1, K2]) Len(ctx context.Context, key K1) (int64, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "Len", ctx, key)
	ret0, _ := ret[0].(int64)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// Len indicates an expected call of Len.
func (mr *MockExpiringHashInterfaceMockRecorder[K1, K2]) Len(ctx, key interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Len", reflect.TypeOf((*MockExpiringHashInterface[K1, K2])(nil).Len), ctx, key)
}

// Refresh mocks base method.
func (m *MockExpiringHashInterface[K1, K2]) Refresh(nextRefresh time.Time) redistool.IOFunc {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "Refresh", nextRefresh)
	ret0, _ := ret[0].(redistool.IOFunc)
	return ret0
}

// Refresh indicates an expected call of Refresh.
func (mr *MockExpiringHashInterfaceMockRecorder[K1, K2]) Refresh(nextRefresh interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Refresh", reflect.TypeOf((*MockExpiringHashInterface[K1, K2])(nil).Refresh), nextRefresh)
}

// Scan mocks base method.
func (m *MockExpiringHashInterface[K1, K2]) Scan(ctx context.Context, key K1, cb redistool.ScanCallback) (int, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "Scan", ctx, key, cb)
	ret0, _ := ret[0].(int)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// Scan indicates an expected call of Scan.
func (mr *MockExpiringHashInterfaceMockRecorder[K1, K2]) Scan(ctx, key, cb interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Scan", reflect.TypeOf((*MockExpiringHashInterface[K1, K2])(nil).Scan), ctx, key, cb)
}

// Set mocks base method.
func (m *MockExpiringHashInterface[K1, K2]) Set(key K1, hashKey K2, value []byte) redistool.IOFunc {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "Set", key, hashKey, value)
	ret0, _ := ret[0].(redistool.IOFunc)
	return ret0
}

// Set indicates an expected call of Set.
func (mr *MockExpiringHashInterfaceMockRecorder[K1, K2]) Set(key, hashKey, value interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Set", reflect.TypeOf((*MockExpiringHashInterface[K1, K2])(nil).Set), key, hashKey, value)
}

// Unset mocks base method.
func (m *MockExpiringHashInterface[K1, K2]) Unset(key K1, hashKey K2) redistool.IOFunc {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "Unset", key, hashKey)
	ret0, _ := ret[0].(redistool.IOFunc)
	return ret0
}

// Unset indicates an expected call of Unset.
func (mr *MockExpiringHashInterfaceMockRecorder[K1, K2]) Unset(key, hashKey interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Unset", reflect.TypeOf((*MockExpiringHashInterface[K1, K2])(nil).Unset), key, hashKey)
}
