using System;
using Umbraco.Core.Cache;
namespace Umbraco.Web.PublishedCache
{
///
/// Specifies a published snapshot.
///
/// A published snapshot is a point-in-time capture of the current state of
/// everything that is "published".
public interface IPublishedSnapshot : IDisposable
{
///
/// Gets the .
///
IPublishedContentCache Content { get; }
///
/// Gets the .
///
IPublishedMediaCache Media { get; }
///
/// Gets the .
///
IPublishedMemberCache Members { get; }
///
/// Gets the .
///
IDomainCache Domains { get; }
///
/// Gets the snapshot-level cache.
///
///
/// The snapshot-level cache belongs to this snapshot only.
///
IAppCache SnapshotCache { get; }
///
/// Gets the elements-level cache.
///
///
/// The elements-level cache is shared by all snapshots relying on the same elements,
/// ie all snapshots built on top of unchanging content / media / etc.
///
IAppCache ElementsCache { get; }
///
/// Forces the preview mode.
///
/// The forced preview mode.
/// A callback to execute when reverting to previous preview.
///
/// Forcing to false means no preview. Forcing to true means 'full' preview if the snapshot is not already previewing;
/// otherwise the snapshot keeps previewing according to whatever settings it is using already.
/// Stops forcing preview when disposed.
IDisposable ForcedPreview(bool preview, Action callback = null);
}
}