-- Copyright (C) 2010-2011 John Millikin <jmillikin@gmail.com>
-- 
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- any later version.
-- 
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.
-- 
-- You should have received a copy of the GNU General Public License
-- along with this program.  If not, see <http://www.gnu.org/licenses/>.

module Network.Protocol.XMPP
	(
	-- * JIDs
	  JID (..)
	, Node
	, Domain
	, Resource

	, strNode
	, strDomain
	, strResource

	, parseJID
	, formatJID

	-- * Stanzas
	, Stanza
		( stanzaTo
		, stanzaFrom
		, stanzaID
		, stanzaLang
		, stanzaPayloads
		)

	, ReceivedStanza (..)
	, Message (..)
	, Presence (..)
	, IQ (..)
	, MessageType (..)
	, PresenceType (..)
	, IQType (..)

	, emptyMessage
	, emptyPresence
	, emptyIQ

	-- * The XMPP monad
	, XMPP
	, Server (..)
	, Error (..)
	, runClient
	, runComponent
	, putStanza
	, getStanza
	, bindJID

	-- ** Resuming sessions
	, Session
	, getSession
	, sessionIsSecure
	, runXMPP
	) where

import           Network.Protocol.XMPP.Client
import           Network.Protocol.XMPP.Component
import           Network.Protocol.XMPP.Connections
import           Network.Protocol.XMPP.JID
import           Network.Protocol.XMPP.Monad
import           Network.Protocol.XMPP.Stanza
