// Code generated by MockGen. DO NOT EDIT.
// Source: cache.go
//
// Generated by this command:
//
//	mockgen -source cache.go -destination ../../internal/mocks/mock_cache.go -package mocks cache
//

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

import (
	reflect "reflect"
	time "time"

	keys "github.com/openfga/openfga/pkg/storage/cache/keys"
	gomock "go.uber.org/mock/gomock"
)

// MockCacheItem is a mock of CacheItem interface.
type MockCacheItem struct {
	ctrl     *gomock.Controller
	recorder *MockCacheItemMockRecorder
	isgomock struct{}
}

// MockCacheItemMockRecorder is the mock recorder for MockCacheItem.
type MockCacheItemMockRecorder struct {
	mock *MockCacheItem
}

// NewMockCacheItem creates a new mock instance.
func NewMockCacheItem(ctrl *gomock.Controller) *MockCacheItem {
	mock := &MockCacheItem{ctrl: ctrl}
	mock.recorder = &MockCacheItemMockRecorder{mock}
	return mock
}

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

// CacheEntityType mocks base method.
func (m *MockCacheItem) CacheEntityType() string {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "CacheEntityType")
	ret0, _ := ret[0].(string)
	return ret0
}

// CacheEntityType indicates an expected call of CacheEntityType.
func (mr *MockCacheItemMockRecorder) CacheEntityType() *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CacheEntityType", reflect.TypeOf((*MockCacheItem)(nil).CacheEntityType))
}

// MockInMemoryCache is a mock of InMemoryCache interface.
type MockInMemoryCache[T any] struct {
	ctrl     *gomock.Controller
	recorder *MockInMemoryCacheMockRecorder[T]
	isgomock struct{}
}

// MockInMemoryCacheMockRecorder is the mock recorder for MockInMemoryCache.
type MockInMemoryCacheMockRecorder[T any] struct {
	mock *MockInMemoryCache[T]
}

// NewMockInMemoryCache creates a new mock instance.
func NewMockInMemoryCache[T any](ctrl *gomock.Controller) *MockInMemoryCache[T] {
	mock := &MockInMemoryCache[T]{ctrl: ctrl}
	mock.recorder = &MockInMemoryCacheMockRecorder[T]{mock}
	return mock
}

// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockInMemoryCache[T]) EXPECT() *MockInMemoryCacheMockRecorder[T] {
	return m.recorder
}

// Delete mocks base method.
func (m *MockInMemoryCache[T]) Delete(key keys.Key) {
	m.ctrl.T.Helper()
	m.ctrl.Call(m, "Delete", key)
}

// Delete indicates an expected call of Delete.
func (mr *MockInMemoryCacheMockRecorder[T]) Delete(key any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockInMemoryCache[T])(nil).Delete), key)
}

// Get mocks base method.
func (m *MockInMemoryCache[T]) Get(key keys.Key) T {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "Get", key)
	ret0, _ := ret[0].(T)
	return ret0
}

// Get indicates an expected call of Get.
func (mr *MockInMemoryCacheMockRecorder[T]) Get(key any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockInMemoryCache[T])(nil).Get), key)
}

// Set mocks base method.
func (m *MockInMemoryCache[T]) Set(key keys.Key, value T, ttl time.Duration) {
	m.ctrl.T.Helper()
	m.ctrl.Call(m, "Set", key, value, ttl)
}

// Set indicates an expected call of Set.
func (mr *MockInMemoryCacheMockRecorder[T]) Set(key, value, ttl any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Set", reflect.TypeOf((*MockInMemoryCache[T])(nil).Set), key, value, ttl)
}

// Stop mocks base method.
func (m *MockInMemoryCache[T]) Stop() {
	m.ctrl.T.Helper()
	m.ctrl.Call(m, "Stop")
}

// Stop indicates an expected call of Stop.
func (mr *MockInMemoryCacheMockRecorder[T]) Stop() *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Stop", reflect.TypeOf((*MockInMemoryCache[T])(nil).Stop))
}
