using System;
using System.Collections.Generic;
using System.Xml.XPath;
using Umbraco.Core;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Core.Xml;
namespace Umbraco.Web
{
using Examine = global::Examine;
///
/// Query methods used for accessing strongly typed content in templates
///
public interface IPublishedContentQuery
{
IPublishedContent Content(int id);
IPublishedContent Content(Guid id);
IPublishedContent Content(Udi id);
IPublishedContent ContentSingleAtXPath(string xpath, params XPathVariable[] vars);
IEnumerable Content(IEnumerable ids);
IEnumerable Content(IEnumerable ids);
IEnumerable ContentAtXPath(string xpath, params XPathVariable[] vars);
IEnumerable ContentAtXPath(XPathExpression xpath, params XPathVariable[] vars);
IEnumerable ContentAtRoot();
IPublishedContent Media(int id);
IPublishedContent Media(Guid id);
IPublishedContent Media(Udi id);
IEnumerable Media(IEnumerable ids);
IEnumerable Media(IEnumerable ids);
IEnumerable MediaAtRoot();
///
/// Searches content.
///
IEnumerable Search(string term, bool useWildCards = true, string indexName = null);
///
/// Searches content.
///
IEnumerable Search(int skip, int take, out int totalRecords, string term, bool useWildCards = true, string indexName = null);
///
/// Searches content.
///
IEnumerable Search(Examine.SearchCriteria.ISearchCriteria criteria, Examine.ISearcher searchProvider = null);
///
/// Searches content.
///
IEnumerable Search(int skip, int take, out int totalRecords, Examine.SearchCriteria.ISearchCriteria criteria, Examine.ISearcher searchProvider = null);
}
}