using System;
using System.Collections.Generic;
namespace Umbraco.Web.Routing
{
///
/// Provides utilities to handle site domains.
///
public interface ISiteDomainHelper
{
///
/// Filters a list of DomainAndUri to pick one that best matches the current request.
///
/// The list of DomainAndUri to filter.
/// The Uri of the current request.
/// A culture.
/// The default culture.
/// The selected DomainAndUri.
///
/// If the filter is invoked then is _not_ empty and
/// is _not_ null, and could not be
/// matched with anything in .
/// The may be null, but when non-null, it can be used
/// to help pick the best matches.
/// The filter _must_ return something else an exception will be thrown.
///
DomainAndUri MapDomain(IReadOnlyCollection domainAndUris, Uri current, string culture, string defaultCulture);
///
/// Filters a list of DomainAndUri to pick those that best matches the current request.
///
/// The list of DomainAndUri to filter.
/// The Uri of the current request.
/// A value indicating whether to exclude the current/default domain.
/// A culture.
/// The default culture.
/// The selected DomainAndUri items.
///
/// The filter must return something, even empty, else an exception will be thrown.
/// The may be null, but when non-null, it can be used
/// to help pick the best matches.
///
IEnumerable MapDomains(IReadOnlyCollection domainAndUris, Uri current, bool excludeDefault, string culture, string defaultCulture);
}
}