//Auto-generated by kalyptus. DO NOT EDIT.
namespace Akonadi {
    using Kimono;
    using System;
    using Qyoto;
    using System.Collections.Generic;
    /// <remarks>
    ///  The agent type is a representation of an available agent, that can
    ///  be started as an agent instance.
    ///  It provides all information about the type.
    ///  All available agent types can be retrieved from the AgentManager.
    ///  @code
    ///  Akonadi.AgentType.List types = Akonadi.AgentManager.Self().Types();
    ///  foreach ( const Akonadi.AgentType &type, types ) {
    ///    qDebug() << "Name:" << type.name() << "(" << type.identifier() << ")";
    ///  }
    ///  @endcode
    /// </remarks>        <author> Tobias Koenig <tokoe@kde.org>
    ///  </author>
    ///         <short> A representation of an agent type. </short>
    [SmokeClass("Akonadi::AgentType")]
    public class AgentType : Object, IDisposable {
        protected SmokeInvocation interceptor = null;
        private IntPtr smokeObject;
        protected AgentType(Type dummy) {}
        protected void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(AgentType), this);
        }
        private static SmokeInvocation staticInterceptor = null;
        static AgentType() {
            staticInterceptor = new SmokeInvocation(typeof(AgentType), null);
        }
        /// <remarks>
        ///  Creates a new agent type.
        ///      </remarks>        <short>    Creates a new agent type.</short>
        public AgentType() : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("AgentType", "AgentType()", typeof(void));
        }
        /// <remarks>
        ///  Creates an agent type from an <code>other</code> agent type.
        ///      </remarks>        <short>    Creates an agent type from an <code>other</code> agent type.</short>
        public AgentType(Akonadi.AgentType other) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("AgentType#", "AgentType(const Akonadi::AgentType&)", typeof(void), typeof(Akonadi.AgentType), other);
        }
        /// <remarks>
        ///  Returns whether the agent type is valid.
        ///      </remarks>        <short>    Returns whether the agent type is valid.</short>
        public bool IsValid() {
            return (bool) interceptor.Invoke("isValid", "isValid() const", typeof(bool));
        }
        /// <remarks>
        ///  Returns the unique identifier of the agent type.
        ///      </remarks>        <short>    Returns the unique identifier of the agent type.</short>
        public string Identifier() {
            return (string) interceptor.Invoke("identifier", "identifier() const", typeof(string));
        }
        /// <remarks>
        ///  Returns the i18n'ed name of the agent type.
        ///      </remarks>        <short>    Returns the i18n'ed name of the agent type.</short>
        public string Name() {
            return (string) interceptor.Invoke("name", "name() const", typeof(string));
        }
        /// <remarks>
        ///  Returns the description of the agent type.
        ///      </remarks>        <short>    Returns the description of the agent type.</short>
        public string Description() {
            return (string) interceptor.Invoke("description", "description() const", typeof(string));
        }
        /// <remarks>
        ///  Returns the name of the icon of the agent type.
        ///      </remarks>        <short>    Returns the name of the icon of the agent type.</short>
        public string IconName() {
            return (string) interceptor.Invoke("iconName", "iconName() const", typeof(string));
        }
        /// <remarks>
        ///  Returns the icon of the agent type.
        ///      </remarks>        <short>    Returns the icon of the agent type.</short>
        public QIcon Icon() {
            return (QIcon) interceptor.Invoke("icon", "icon() const", typeof(QIcon));
        }
        /// <remarks>
        ///  Returns the list of supported mime types of the agent type.
        ///      </remarks>        <short>    Returns the list of supported mime types of the agent type.</short>
        public List<string> MimeTypes() {
            return (List<string>) interceptor.Invoke("mimeTypes", "mimeTypes() const", typeof(List<string>));
        }
        /// <remarks>
        ///  Returns the list of supported capabilities of the agent type.
        ///      </remarks>        <short>    Returns the list of supported capabilities of the agent type.</short>
        public List<string> Capabilities() {
            return (List<string>) interceptor.Invoke("capabilities", "capabilities() const", typeof(List<string>));
        }
        /// <remarks>
        ///      </remarks>        <short>   </short>
        public override bool Equals(object o) {
            if (!(o is AgentType)) { return false; }
            return this == (AgentType) o;
        }
        public override int GetHashCode() {
            return interceptor.GetHashCode();
        }
        ~AgentType() {
            interceptor.Invoke("~AgentType", "~AgentType()", typeof(void));
        }
        public void Dispose() {
            interceptor.Invoke("~AgentType", "~AgentType()", typeof(void));
        }
        public static bool operator==(AgentType lhs, Akonadi.AgentType other) {
            return (bool) staticInterceptor.Invoke("operator==#", "operator==(const Akonadi::AgentType&) const", typeof(bool), typeof(AgentType), lhs, typeof(Akonadi.AgentType), other);
        }
        public static bool operator!=(AgentType lhs, Akonadi.AgentType other) {
            return !(bool) staticInterceptor.Invoke("operator==#", "operator==(const Akonadi::AgentType&) const", typeof(bool), typeof(AgentType), lhs, typeof(Akonadi.AgentType), other);
        }
    }
}
