using System;
using System.Collections.Generic;
namespace Umbraco.Core.Cache
{
///
/// An abstract class for implementing a basic cache provider
///
public interface ICacheProvider
{
///
/// Removes all items from the cache.
///
void ClearAllCache();
///
/// Removes an item from the cache, identified by its key.
///
/// The key of the item.
void ClearCacheItem(string key);
///
/// Removes items from the cache, of a specified type.
///
/// The name of the type to remove.
///
/// If the type is an interface, then all items of a type implementing that interface are
/// removed. Otherwise, only items of that exact type are removed (items of type inheriting from
/// the specified type are not removed).
/// Performs a case-sensitive search.
///
void ClearCacheObjectTypes(string typeName);
///
/// Removes items from the cache, of a specified type.
///
/// The type of the items to remove.
/// If the type is an interface, then all items of a type implementing that interface are
/// removed. Otherwise, only items of that exact type are removed (items of type inheriting from
/// the specified type are not removed).
void ClearCacheObjectTypes();
///
/// Removes items from the cache, of a specified type, satisfying a predicate.
///
/// The type of the items to remove.
/// The predicate to satisfy.
/// If the type is an interface, then all items of a type implementing that interface are
/// removed. Otherwise, only items of that exact type are removed (items of type inheriting from
/// the specified type are not removed).
void ClearCacheObjectTypes(Func predicate);
void ClearCacheByKeySearch(string keyStartsWith);
void ClearCacheByKeyExpression(string regexString);
IEnumerable