<?php

namespace Suin\RSSWriter;

use \Suin\RSSWriter\FeedInterface;
use \Suin\RSSWriter\ItemInterface;

interface ChannelInterface
{
	/**
	 * Set channel title
	 * @param string $title
	 * @return $this
	 */
	public function title($title);

	/**
	 * Set channel URL
	 * @param string $url
	 * @return $this
	 */
	public function url($url);

	/**
	 * Set channel description
	 * @param string $description
	 * @return $this
	 */
	public function description($description);

	/**
	 * Set ISO639 language code
	 *
	 * The language the channel is written in. This allows aggregators to group all
	 * Italian language sites, for example, on a single page. A list of allowable
	 * values for this element, as provided by Netscape, is here. You may also use
	 * values defined by the W3C.
	 *
	 * @param string $language
	 * @return $this
	 */
	public function language($language);

	/**
	 * Set channel copyright
	 * @param string $copyright
	 * @return $this
	 */
	public function copyright($copyright);

	/**
	 * Set channel published date
	 * @param int $pubDate Unix timestamp
	 * @return $this
	 */
	public function pubDate($pubDate);

	/**
	 * Set channel last build date
	 * @param int $lastBuildDate Unix timestamp
	 * @return $this
	 */
	public function lastBuildDate($lastBuildDate);

	/**
	 * Set channel ttl (minutes)
	 * @param int $ttl
	 * @return $this
	 */
	public function ttl($ttl);

	/**
	 * Add item object
	 * @param \Suin\RSSWriter\ItemInterface $item
	 * @return $this
	 */
	public function addItem(ItemInterface $item);

	/**
	 * Append to feed
	 * @param \Suin\RSSWriter\FeedInterface $feed
	 * @return $this
	 */
	public function appendTo(FeedInterface $feed);

	/**
	 * Return XML object
	 * @return \Suin\RSSWriter\SimpleXMLElement
	 */
	public function asXML();
}
