namespace Obscur.Core.DTO
{
    /// <summary>
    ///     Interface for objects required to produce clones lacking any data 
    ///     dependent on post-authentication state/data.
    /// </summary>
    /// <typeparam name="T">Object to clone.</typeparam>
	public interface IAuthenticatibleClonable<T>
	{
        /// <summary>
        ///     Clones this <typeparamref name="T"/>, excluding any data  
        ///     dependent on post-authentication state/data.
        /// </summary>
        /// <returns>Authenticable object clone.</returns>
		T CreateAuthenticatibleClone();
	}
}
