using System;
using System.Collections.Generic;
namespace MediaBrowser.Controller.Entities
{
    /// 
    /// Interface IHasMetadata
    /// 
    public interface IHasMetadata : IHasImages
    {
        /// 
        /// Gets the preferred metadata country code.
        /// 
        /// System.String.
        string GetPreferredMetadataCountryCode();
        /// 
        /// Gets the date modified.
        /// 
        /// The date modified.
        DateTime DateModified { get; set; }
        /// 
        /// Gets or sets the date last saved.
        /// 
        /// The date last saved.
        DateTime DateLastSaved { get; set; }
        SourceType SourceType { get; set; }
        /// 
        /// Gets or sets the date last refreshed.
        /// 
        /// The date last refreshed.
        DateTime DateLastRefreshed { get; set; }
        /// 
        /// This is called before any metadata refresh and returns true or false indicating if changes were made
        /// 
        /// true if XXXX, false otherwise.
        bool BeforeMetadataRefresh();
        /// 
        /// Afters the metadata refresh.
        /// 
        void AfterMetadataRefresh();
        /// 
        /// Gets a value indicating whether [supports people].
        /// 
        /// true if [supports people]; otherwise, false.
        bool SupportsPeople { get; }
        bool RequiresRefresh();
        bool EnableRefreshOnDateModifiedChange { get; }
        string PresentationUniqueKey { get; set; }
        string GetPresentationUniqueKey();
        string CreatePresentationUniqueKey();
        bool StopRefreshIfLocalMetadataFound { get; }
        int? GetInheritedParentalRatingValue();
        int InheritedParentalRatingValue { get; set; }
        List GetInheritedTags();
        List InheritedTags { get; set; }
    }
}