package org.jivesoftware.smack;

import org.jivesoftware.smack.filter.StanzaFilter;
import org.jivesoftware.smack.iqrequest.IQRequestHandler;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.PlainStreamElement;
import org.jivesoftware.smack.packet.Stanza;
import org.jxmpp.jid.DomainBareJid;
import org.jxmpp.jid.FullJid;

public interface XMPPConnection {
   DomainBareJid getServiceName();

   String getHost();

   int getPort();

   FullJid getUser();

   String getStreamId();

   boolean isConnected();

   boolean isAuthenticated();

   boolean isAnonymous();

   boolean isSecureConnection();

   boolean isUsingCompression();

   /** @deprecated */
   @Deprecated
   void sendPacket(Stanza var1) throws SmackException.NotConnectedException, InterruptedException;

   void sendStanza(Stanza var1) throws SmackException.NotConnectedException, InterruptedException;

   void send(PlainStreamElement var1) throws SmackException.NotConnectedException, InterruptedException;

   void addConnectionListener(ConnectionListener var1);

   void removeConnectionListener(ConnectionListener var1);

   PacketCollector createPacketCollectorAndSend(IQ var1) throws SmackException.NotConnectedException, InterruptedException;

   PacketCollector createPacketCollectorAndSend(StanzaFilter var1, Stanza var2) throws SmackException.NotConnectedException, InterruptedException;

   PacketCollector createPacketCollector(StanzaFilter var1);

   PacketCollector createPacketCollector(PacketCollector.Configuration var1);

   void removePacketCollector(PacketCollector var1);

   /** @deprecated */
   @Deprecated
   void addPacketListener(StanzaListener var1, StanzaFilter var2);

   /** @deprecated */
   @Deprecated
   boolean removePacketListener(StanzaListener var1);

   void addSyncStanzaListener(StanzaListener var1, StanzaFilter var2);

   boolean removeSyncStanzaListener(StanzaListener var1);

   void addAsyncStanzaListener(StanzaListener var1, StanzaFilter var2);

   boolean removeAsyncStanzaListener(StanzaListener var1);

   void addPacketSendingListener(StanzaListener var1, StanzaFilter var2);

   void removePacketSendingListener(StanzaListener var1);

   void addPacketInterceptor(StanzaListener var1, StanzaFilter var2);

   void removePacketInterceptor(StanzaListener var1);

   long getPacketReplyTimeout();

   void setPacketReplyTimeout(long var1);

   int getConnectionCounter();

   void setFromMode(XMPPConnection.FromMode var1);

   XMPPConnection.FromMode getFromMode();

   <F extends ExtensionElement> F getFeature(String var1, String var2);

   boolean hasFeature(String var1, String var2);

   void sendStanzaWithResponseCallback(Stanza var1, StanzaFilter var2, StanzaListener var3) throws SmackException.NotConnectedException, InterruptedException;

   void sendStanzaWithResponseCallback(Stanza var1, StanzaFilter var2, StanzaListener var3, ExceptionCallback var4) throws SmackException.NotConnectedException, InterruptedException;

   void sendStanzaWithResponseCallback(Stanza var1, StanzaFilter var2, StanzaListener var3, ExceptionCallback var4, long var5) throws SmackException.NotConnectedException, InterruptedException;

   void sendIqWithResponseCallback(IQ var1, StanzaListener var2) throws SmackException.NotConnectedException, InterruptedException;

   void sendIqWithResponseCallback(IQ var1, StanzaListener var2, ExceptionCallback var3) throws SmackException.NotConnectedException, InterruptedException;

   void sendIqWithResponseCallback(IQ var1, StanzaListener var2, ExceptionCallback var3, long var4) throws SmackException.NotConnectedException, InterruptedException;

   void addOneTimeSyncCallback(StanzaListener var1, StanzaFilter var2);

   IQRequestHandler registerIQRequestHandler(IQRequestHandler var1);

   IQRequestHandler unregisterIQRequestHandler(IQRequestHandler var1);

   IQRequestHandler unregisterIQRequestHandler(String var1, String var2, IQ.Type var3);

   long getLastStanzaReceived();

   public static enum FromMode {
      UNCHANGED,
      OMITTED,
      USER;
   }
}
