//Auto-generated by kalyptus. DO NOT EDIT.
namespace Akonadi {
    using Kimono;
    using System;
    using Qyoto;
    using System.Collections.Generic;
    /// <remarks>
    ///  This singleton class can be used to create or remove agent instances or trigger
    ///  synchronization of collections. Furthermore it provides information about status
    ///  changes of the agents.
    ///  @code
    ///    Akonadi.AgentManager manager = Akonadi.AgentManager.Self();
    ///    Akonadi.AgentType.List types = manager.Types();
    ///    foreach( const Akonadi.AgentType type&, types ) {
    ///      qDebug() << "Type:" << type.name() << type.description();
    ///    }
    ///  @endcode
    /// </remarks>        <author> Tobias Koenig <tokoe@kde.org>
    ///  </author>
    ///         <short> Provides an interface to retrieve agent types and manage agent instances. </short>
    [SmokeClass("Akonadi::AgentManager")]
    public class AgentManager : QObject {
        protected AgentManager(Type dummy) : base((Type) null) {}
        protected new void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(AgentManager), this);
        }
        private static SmokeInvocation staticInterceptor = null;
        static AgentManager() {
            staticInterceptor = new SmokeInvocation(typeof(AgentManager), null);
        }
        /// <remarks>
        ///  Returns the list of all available agent types.
        ///      </remarks>        <short>    Returns the list of all available agent types.</short>
        public List<Akonadi.AgentType> Types() {
            return (List<Akonadi.AgentType>) interceptor.Invoke("types", "types() const", typeof(List<Akonadi.AgentType>));
        }
        /// <remarks>
        ///  Returns the agent type with the given <code>identifier</code> or
        ///  an invalid agent type if the identifier does not exist.
        ///      </remarks>        <short>    Returns the agent type with the given <code>identifier</code> or  an invalid agent type if the identifier does not exist.</short>
        public Akonadi.AgentType type(string identififer) {
            return (Akonadi.AgentType) interceptor.Invoke("type$", "type(const QString&) const", typeof(Akonadi.AgentType), typeof(string), identififer);
        }
        /// <remarks>
        ///  Returns the list of all available agent instances.
        ///      </remarks>        <short>    Returns the list of all available agent instances.</short>
        public List<Akonadi.AgentInstance> Instances() {
            return (List<Akonadi.AgentInstance>) interceptor.Invoke("instances", "instances() const", typeof(List<Akonadi.AgentInstance>));
        }
        /// <remarks>
        ///  Returns the agent instance with the given <code>identifier</code> or
        ///  an invalid agent instance if the identifier does not exist.
        ///      </remarks>        <short>    Returns the agent instance with the given <code>identifier</code> or  an invalid agent instance if the identifier does not exist.</short>
        public Akonadi.AgentInstance Instance(string identififer) {
            return (Akonadi.AgentInstance) interceptor.Invoke("instance$", "instance(const QString&) const", typeof(Akonadi.AgentInstance), typeof(string), identififer);
        }
        /// <remarks>
        ///  Removes the given agent <code>instance.</code>
        ///      </remarks>        <short>    Removes the given agent <code>instance.</code></short>
        public void RemoveInstance(Akonadi.AgentInstance instance) {
            interceptor.Invoke("removeInstance#", "removeInstance(const Akonadi::AgentInstance&)", typeof(void), typeof(Akonadi.AgentInstance), instance);
        }
        /// <remarks>
        ///  Trigger a synchronization of the given collection by its owning resource agent.
        /// <param> name="collection" The collection to synchronize.
        ///      </param></remarks>        <short>    Trigger a synchronization of the given collection by its owning resource agent.</short>
        public void SynchronizeCollection(Akonadi.Collection collection) {
            interceptor.Invoke("synchronizeCollection#", "synchronizeCollection(const Akonadi::Collection&)", typeof(void), typeof(Akonadi.Collection), collection);
        }
        /// <remarks>
        ///  Returns the global instance of the agent manager.
        ///      </remarks>        <short>    Returns the global instance of the agent manager.</short>
        public static Akonadi.AgentManager Self() {
            return (Akonadi.AgentManager) staticInterceptor.Invoke("self", "self()", typeof(Akonadi.AgentManager));
        }
        protected new IAgentManagerSignals Emit {
            get { return (IAgentManagerSignals) Q_EMIT; }
        }
    }

    public interface IAgentManagerSignals : IQObjectSignals {
    }
}
