//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.296
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace Pluto.Registration {
    using System;
    using RemObjects.SDK;
    using RemObjects.SDK.Types;
    using System.Collections.Generic;
    
    [RemObjects.SDK.Remotable(ActivatorClass=typeof(Host_Activator))]
    [System.Reflection.ObfuscationAttribute(Exclude=true)]
    public partial class Host : RemObjects.SDK.Types.ComplexType {
        private string @__host;
        private int @__port;
        private string @__practiceName;
        [RemObjects.SDK.StreamAs(RemObjects.SDK.StreamingFormat.AnsiString)]
        public virtual string host {
            get {
                return @__host;
            }
            set {
                @__host = value;
                this.TriggerPropertyChanged("host");
            }
        }
        public virtual int port {
            get {
                return @__port;
            }
            set {
                @__port = value;
                this.TriggerPropertyChanged("port");
            }
        }
        [RemObjects.SDK.StreamAs(RemObjects.SDK.StreamingFormat.AnsiString)]
        public virtual string practiceName {
            get {
                return @__practiceName;
            }
            set {
                @__practiceName = value;
                this.TriggerPropertyChanged("practiceName");
            }
        }
        public override void ReadComplex(RemObjects.SDK.Serializer aSerializer) {
            if (aSerializer.RecordStrictOrder) {
                host = aSerializer.ReadAnsiString("host");
                port = aSerializer.ReadInt32("port");
                practiceName = aSerializer.ReadAnsiString("practiceName");
            }
            else {
                host = aSerializer.ReadAnsiString("host");
                port = aSerializer.ReadInt32("port");
                practiceName = aSerializer.ReadAnsiString("practiceName");
            }
        }
        public override void WriteComplex(RemObjects.SDK.Serializer aSerializer) {
            if (aSerializer.RecordStrictOrder) {
                aSerializer.WriteAnsiString("host", host);
                aSerializer.WriteInt32("port", port);
                aSerializer.WriteAnsiString("practiceName", practiceName);
            }
            else {
                aSerializer.WriteAnsiString("host", host);
                aSerializer.WriteInt32("port", port);
                aSerializer.WriteAnsiString("practiceName", practiceName);
            }
        }
    }
    [RemObjects.SDK.Activator()]
    [System.Reflection.ObfuscationAttribute(Exclude=true, ApplyToMembers=false)]
    public class Host_Activator : RemObjects.SDK.TypeActivator {
        public Host_Activator() : 
                base() {
        }
        public override object CreateInstance() {
            return new Host();
        }
    }
    [RemObjects.SDK.Remotable(ActivatorClass=typeof(Server_Activator))]
    [System.Reflection.ObfuscationAttribute(Exclude=true)]
    public partial class Server : RemObjects.SDK.Types.ComplexType {
        private string @__HostGUID;
        private string @__InternalIP;
        private string @__ExternalIP;
        private int @__Port;
        [RemObjects.SDK.StreamAs(RemObjects.SDK.StreamingFormat.AnsiString)]
        public virtual string HostGUID {
            get {
                return @__HostGUID;
            }
            set {
                @__HostGUID = value;
                this.TriggerPropertyChanged("HostGUID");
            }
        }
        [RemObjects.SDK.StreamAs(RemObjects.SDK.StreamingFormat.AnsiString)]
        public virtual string InternalIP {
            get {
                return @__InternalIP;
            }
            set {
                @__InternalIP = value;
                this.TriggerPropertyChanged("InternalIP");
            }
        }
        [RemObjects.SDK.StreamAs(RemObjects.SDK.StreamingFormat.AnsiString)]
        public virtual string ExternalIP {
            get {
                return @__ExternalIP;
            }
            set {
                @__ExternalIP = value;
                this.TriggerPropertyChanged("ExternalIP");
            }
        }
        public virtual int Port {
            get {
                return @__Port;
            }
            set {
                @__Port = value;
                this.TriggerPropertyChanged("Port");
            }
        }
        public override void ReadComplex(RemObjects.SDK.Serializer aSerializer) {
            if (aSerializer.RecordStrictOrder) {
                HostGUID = aSerializer.ReadAnsiString("HostGUID");
                InternalIP = aSerializer.ReadAnsiString("InternalIP");
                ExternalIP = aSerializer.ReadAnsiString("ExternalIP");
                Port = aSerializer.ReadInt32("Port");
            }
            else {
                ExternalIP = aSerializer.ReadAnsiString("ExternalIP");
                HostGUID = aSerializer.ReadAnsiString("HostGUID");
                InternalIP = aSerializer.ReadAnsiString("InternalIP");
                Port = aSerializer.ReadInt32("Port");
            }
        }
        public override void WriteComplex(RemObjects.SDK.Serializer aSerializer) {
            if (aSerializer.RecordStrictOrder) {
                aSerializer.WriteAnsiString("HostGUID", HostGUID);
                aSerializer.WriteAnsiString("InternalIP", InternalIP);
                aSerializer.WriteAnsiString("ExternalIP", ExternalIP);
                aSerializer.WriteInt32("Port", Port);
            }
            else {
                aSerializer.WriteAnsiString("ExternalIP", ExternalIP);
                aSerializer.WriteAnsiString("HostGUID", HostGUID);
                aSerializer.WriteAnsiString("InternalIP", InternalIP);
                aSerializer.WriteInt32("Port", Port);
            }
        }
    }
    [RemObjects.SDK.Activator()]
    [System.Reflection.ObfuscationAttribute(Exclude=true, ApplyToMembers=false)]
    public class Server_Activator : RemObjects.SDK.TypeActivator {
        public Server_Activator() : 
                base() {
        }
        public override object CreateInstance() {
            return new Server();
        }
    }
    [RemObjects.SDK.Remotable(ActivatorClass=typeof(Client_Activator))]
    [System.Reflection.ObfuscationAttribute(Exclude=true)]
    public partial class Client : RemObjects.SDK.Types.ComplexType {
        private string @__systemApiKey;
        private Host @__host;
        [RemObjects.SDK.StreamAs(RemObjects.SDK.StreamingFormat.AnsiString)]
        public virtual string systemApiKey {
            get {
                return @__systemApiKey;
            }
            set {
                @__systemApiKey = value;
                this.TriggerPropertyChanged("systemApiKey");
            }
        }
        public virtual Host host {
            get {
                return @__host;
            }
            set {
                @__host = value;
                this.TriggerPropertyChanged("host");
            }
        }
        public override void ReadComplex(RemObjects.SDK.Serializer aSerializer) {
            if (aSerializer.RecordStrictOrder) {
                systemApiKey = aSerializer.ReadAnsiString("systemApiKey");
                host = ((Host)(aSerializer.Read("host", typeof(Host), RemObjects.SDK.StreamingFormat.Default)));
            }
            else {
                host = ((Host)(aSerializer.Read("host", typeof(Host), RemObjects.SDK.StreamingFormat.Default)));
                systemApiKey = aSerializer.ReadAnsiString("systemApiKey");
            }
        }
        public override void WriteComplex(RemObjects.SDK.Serializer aSerializer) {
            if (aSerializer.RecordStrictOrder) {
                aSerializer.WriteAnsiString("systemApiKey", systemApiKey);
                aSerializer.Write("host", host, typeof(Host), RemObjects.SDK.StreamingFormat.Default);
            }
            else {
                aSerializer.Write("host", host, typeof(Host), RemObjects.SDK.StreamingFormat.Default);
                aSerializer.WriteAnsiString("systemApiKey", systemApiKey);
            }
        }
    }
    [RemObjects.SDK.Activator()]
    [System.Reflection.ObfuscationAttribute(Exclude=true, ApplyToMembers=false)]
    public class Client_Activator : RemObjects.SDK.TypeActivator {
        public Client_Activator() : 
                base() {
        }
        public override object CreateInstance() {
            return new Client();
        }
    }
    public interface IRegistration : RemObjects.SDK.IROService {
        Host GetApiHostMobile(string SystemApiKey);
        Host GetApiHostWifi(string SystemApiKey);
        Client[] GetClients(bool @internal);
        Host GetRegistrationServer(string SystemApiKey);
        bool RegisterNewServerPractice(string PracticeName, Server server, string serverType, out string UserApiKey, out string UserApiPin);
        string RegisterNewClient(string UserApiKey, string UserApiPin);
        void ServerHasBeenUpdated(string HostGUID, string Version);
        string RetrieveNewClientPin(string UserApiKey);
        bool UpdateServer(Server server);
        bool UpdatePracticeName(string UserApiKey, string UserApiPin, string PracticeName);
        bool UpdatePracticeName2(string systemApiKey, string PracticeName);
        bool IsServerReachable(Server server);
        bool IsClientReachable(string systemApiKey);
        string RetrieveHostGUIDForServerFromInternet(Server server);
        bool DoesServerHostGUIDExist(string HostGUID);
    }
    public partial class Registration_Proxy : RemObjects.SDK.Proxy, IRegistration {
        public Registration_Proxy(RemObjects.SDK.IMessage aMessage, RemObjects.SDK.IClientChannel aClientChannel) : 
                base(aMessage, aClientChannel) {
        }
        public Registration_Proxy(RemObjects.SDK.IMessage aMessage, RemObjects.SDK.IClientChannel aClientChannel, string aOverrideInterfaceName) : 
                base(aMessage, aClientChannel, aOverrideInterfaceName) {
        }
        public Registration_Proxy(RemObjects.SDK.IRemoteService aRemoteService) : 
                base(aRemoteService) {
        }
        public Registration_Proxy(RemObjects.SDK.IRemoteService aRemoteService, string aOverrideInterfaceName) : 
                base(aRemoteService, aOverrideInterfaceName) {
        }
        public Registration_Proxy(System.Uri aUri) : 
                base(aUri) {
        }
        public Registration_Proxy(string aUrl) : 
                base(aUrl) {
        }
        protected override string @__GetInterfaceName() {
            return "Registration";
        }
        public virtual Host GetApiHostMobile(string SystemApiKey) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "GetApiHostMobile");
            @__LocalMessage.WriteAnsiString("SystemApiKey", SystemApiKey);
            @__LocalMessage.FinalizeMessage();
            @__ClientChannel.Dispatch(@__LocalMessage);
            Host Host = ((Host)(@__LocalMessage.Read("Host", typeof(Host), RemObjects.SDK.StreamingFormat.Default)));
            @__LocalMessage.Clear();
            return Host;
        }
        public virtual Host GetApiHostWifi(string SystemApiKey) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "GetApiHostWifi");
            @__LocalMessage.WriteAnsiString("SystemApiKey", SystemApiKey);
            @__LocalMessage.FinalizeMessage();
            @__ClientChannel.Dispatch(@__LocalMessage);
            Host host = ((Host)(@__LocalMessage.Read("host", typeof(Host), RemObjects.SDK.StreamingFormat.Default)));
            @__LocalMessage.Clear();
            return host;
        }
        public virtual Client[] GetClients(bool @internal) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "GetClients");
            @__LocalMessage.WriteBoolean("internal", @internal);
            @__LocalMessage.FinalizeMessage();
            @__ClientChannel.Dispatch(@__LocalMessage);
            Client[] Result = ((Client[])(@__LocalMessage.Read("Result", typeof(Client[]), RemObjects.SDK.StreamingFormat.Default)));
            @__LocalMessage.Clear();
            return Result;
        }
        public virtual Host GetRegistrationServer(string SystemApiKey) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "GetRegistrationServer");
            @__LocalMessage.WriteAnsiString("SystemApiKey", SystemApiKey);
            @__LocalMessage.FinalizeMessage();
            @__ClientChannel.Dispatch(@__LocalMessage);
            Host Host = ((Host)(@__LocalMessage.Read("Host", typeof(Host), RemObjects.SDK.StreamingFormat.Default)));
            @__LocalMessage.Clear();
            return Host;
        }
        public virtual bool RegisterNewServerPractice(string PracticeName, Server server, string serverType, out string UserApiKey, out string UserApiPin) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "RegisterNewServerPractice");
            @__LocalMessage.WriteAnsiString("PracticeName", PracticeName);
            @__LocalMessage.Write("server", server, typeof(Server), RemObjects.SDK.StreamingFormat.Default);
            @__LocalMessage.WriteAnsiString("serverType", serverType);
            @__LocalMessage.FinalizeMessage();
            @__ClientChannel.Dispatch(@__LocalMessage);
            bool Result = @__LocalMessage.ReadBoolean("Result");
            UserApiKey = @__LocalMessage.ReadAnsiString("UserApiKey");
            UserApiPin = @__LocalMessage.ReadAnsiString("UserApiPin");
            @__LocalMessage.Clear();
            return Result;
        }
        public virtual string RegisterNewClient(string UserApiKey, string UserApiPin) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "RegisterNewClient");
            @__LocalMessage.WriteAnsiString("UserApiKey", UserApiKey);
            @__LocalMessage.WriteAnsiString("UserApiPin", UserApiPin);
            @__LocalMessage.FinalizeMessage();
            @__ClientChannel.Dispatch(@__LocalMessage);
            string SystemApiKey = @__LocalMessage.ReadAnsiString("SystemApiKey");
            @__LocalMessage.Clear();
            return SystemApiKey;
        }
        public virtual void ServerHasBeenUpdated(string HostGUID, string Version) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "ServerHasBeenUpdated");
            @__LocalMessage.WriteAnsiString("HostGUID", HostGUID);
            @__LocalMessage.WriteAnsiString("Version", Version);
            @__LocalMessage.FinalizeMessage();
            @__ClientChannel.Dispatch(@__LocalMessage);
            @__LocalMessage.Clear();
        }
        public virtual string RetrieveNewClientPin(string UserApiKey) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "RetrieveNewClientPin");
            @__LocalMessage.WriteAnsiString("UserApiKey", UserApiKey);
            @__LocalMessage.FinalizeMessage();
            @__ClientChannel.Dispatch(@__LocalMessage);
            string pin = @__LocalMessage.ReadAnsiString("pin");
            @__LocalMessage.Clear();
            return pin;
        }
        public virtual bool UpdateServer(Server server) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "UpdateServer");
            @__LocalMessage.Write("server", server, typeof(Server), RemObjects.SDK.StreamingFormat.Default);
            @__LocalMessage.FinalizeMessage();
            @__ClientChannel.Dispatch(@__LocalMessage);
            bool Result = @__LocalMessage.ReadBoolean("Result");
            @__LocalMessage.Clear();
            return Result;
        }
        public virtual bool UpdatePracticeName(string UserApiKey, string UserApiPin, string PracticeName) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "UpdatePracticeName");
            @__LocalMessage.WriteAnsiString("UserApiKey", UserApiKey);
            @__LocalMessage.WriteAnsiString("UserApiPin", UserApiPin);
            @__LocalMessage.WriteAnsiString("PracticeName", PracticeName);
            @__LocalMessage.FinalizeMessage();
            @__ClientChannel.Dispatch(@__LocalMessage);
            bool Result = @__LocalMessage.ReadBoolean("Result");
            @__LocalMessage.Clear();
            return Result;
        }
        public virtual bool UpdatePracticeName2(string systemApiKey, string PracticeName) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "UpdatePracticeName2");
            @__LocalMessage.WriteAnsiString("systemApiKey", systemApiKey);
            @__LocalMessage.WriteAnsiString("PracticeName", PracticeName);
            @__LocalMessage.FinalizeMessage();
            @__ClientChannel.Dispatch(@__LocalMessage);
            bool Result = @__LocalMessage.ReadBoolean("Result");
            @__LocalMessage.Clear();
            return Result;
        }
        public virtual bool IsServerReachable(Server server) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "IsServerReachable");
            @__LocalMessage.Write("server", server, typeof(Server), RemObjects.SDK.StreamingFormat.Default);
            @__LocalMessage.FinalizeMessage();
            @__ClientChannel.Dispatch(@__LocalMessage);
            bool Result = @__LocalMessage.ReadBoolean("Result");
            @__LocalMessage.Clear();
            return Result;
        }
        public virtual bool IsClientReachable(string systemApiKey) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "IsClientReachable");
            @__LocalMessage.WriteAnsiString("systemApiKey", systemApiKey);
            @__LocalMessage.FinalizeMessage();
            @__ClientChannel.Dispatch(@__LocalMessage);
            bool Result = @__LocalMessage.ReadBoolean("Result");
            @__LocalMessage.Clear();
            return Result;
        }
        public virtual string RetrieveHostGUIDForServerFromInternet(Server server) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "RetrieveHostGUIDForServerFromInternet");
            @__LocalMessage.Write("server", server, typeof(Server), RemObjects.SDK.StreamingFormat.Default);
            @__LocalMessage.FinalizeMessage();
            @__ClientChannel.Dispatch(@__LocalMessage);
            string HostGUID = @__LocalMessage.ReadAnsiString("HostGUID");
            @__LocalMessage.Clear();
            return HostGUID;
        }
        public virtual bool DoesServerHostGUIDExist(string HostGUID) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "DoesServerHostGUIDExist");
            @__LocalMessage.WriteAnsiString("HostGUID", HostGUID);
            @__LocalMessage.FinalizeMessage();
            @__ClientChannel.Dispatch(@__LocalMessage);
            bool Result = @__LocalMessage.ReadBoolean("Result");
            @__LocalMessage.Clear();
            return Result;
        }
    }
    public class CoRegistration {
        public static IRegistration Create(RemObjects.SDK.IMessage aMessage, RemObjects.SDK.IClientChannel aClientChannel) {
            return new Registration_Proxy(aMessage, aClientChannel);
        }
        public static IRegistration Create(RemObjects.SDK.IRemoteService aRemoteService) {
            return new Registration_Proxy(aRemoteService);
        }
        public static IRegistration Create(System.Uri aUri) {
            return new Registration_Proxy(aUri);
        }
        public static IRegistration Create(string aUrl) {
            return new Registration_Proxy(aUrl);
        }
    }
    public interface IRegistration_Async : RemObjects.SDK.IROService_Async {
        System.IAsyncResult BeginGetApiHostMobile(string SystemApiKey, System.AsyncCallback @__Callback, object @__UserData);
        Host EndGetApiHostMobile(System.IAsyncResult @__AsyncResult);
        System.IAsyncResult BeginGetApiHostWifi(string SystemApiKey, System.AsyncCallback @__Callback, object @__UserData);
        Host EndGetApiHostWifi(System.IAsyncResult @__AsyncResult);
        System.IAsyncResult BeginGetClients(bool @internal, System.AsyncCallback @__Callback, object @__UserData);
        Client[] EndGetClients(System.IAsyncResult @__AsyncResult);
        System.IAsyncResult BeginGetRegistrationServer(string SystemApiKey, System.AsyncCallback @__Callback, object @__UserData);
        Host EndGetRegistrationServer(System.IAsyncResult @__AsyncResult);
        System.IAsyncResult BeginRegisterNewServerPractice(string PracticeName, Server server, string serverType, System.AsyncCallback @__Callback, object @__UserData);
        bool EndRegisterNewServerPractice(System.IAsyncResult @__AsyncResult, out string UserApiKey, out string UserApiPin);
        System.IAsyncResult BeginRegisterNewClient(string UserApiKey, string UserApiPin, System.AsyncCallback @__Callback, object @__UserData);
        string EndRegisterNewClient(System.IAsyncResult @__AsyncResult);
        System.IAsyncResult BeginServerHasBeenUpdated(string HostGUID, string Version, System.AsyncCallback @__Callback, object @__UserData);
        void EndServerHasBeenUpdated(System.IAsyncResult @__AsyncResult);
        System.IAsyncResult BeginRetrieveNewClientPin(string UserApiKey, System.AsyncCallback @__Callback, object @__UserData);
        string EndRetrieveNewClientPin(System.IAsyncResult @__AsyncResult);
        System.IAsyncResult BeginUpdateServer(Server server, System.AsyncCallback @__Callback, object @__UserData);
        bool EndUpdateServer(System.IAsyncResult @__AsyncResult);
        System.IAsyncResult BeginUpdatePracticeName(string UserApiKey, string UserApiPin, string PracticeName, System.AsyncCallback @__Callback, object @__UserData);
        bool EndUpdatePracticeName(System.IAsyncResult @__AsyncResult);
        System.IAsyncResult BeginUpdatePracticeName2(string systemApiKey, string PracticeName, System.AsyncCallback @__Callback, object @__UserData);
        bool EndUpdatePracticeName2(System.IAsyncResult @__AsyncResult);
        System.IAsyncResult BeginIsServerReachable(Server server, System.AsyncCallback @__Callback, object @__UserData);
        bool EndIsServerReachable(System.IAsyncResult @__AsyncResult);
        System.IAsyncResult BeginIsClientReachable(string systemApiKey, System.AsyncCallback @__Callback, object @__UserData);
        bool EndIsClientReachable(System.IAsyncResult @__AsyncResult);
        System.IAsyncResult BeginRetrieveHostGUIDForServerFromInternet(Server server, System.AsyncCallback @__Callback, object @__UserData);
        string EndRetrieveHostGUIDForServerFromInternet(System.IAsyncResult @__AsyncResult);
        System.IAsyncResult BeginDoesServerHostGUIDExist(string HostGUID, System.AsyncCallback @__Callback, object @__UserData);
        bool EndDoesServerHostGUIDExist(System.IAsyncResult @__AsyncResult);
    }
    public partial class Registration_AsyncProxy : RemObjects.SDK.AsyncProxy, IRegistration_Async {
        public Registration_AsyncProxy(RemObjects.SDK.IMessage aMessage, RemObjects.SDK.IClientChannel aClientChannel) : 
                base(aMessage, aClientChannel) {
        }
        public Registration_AsyncProxy(RemObjects.SDK.IMessage aMessage, RemObjects.SDK.IClientChannel aClientChannel, string aOverrideInterfaceName) : 
                base(aMessage, aClientChannel, aOverrideInterfaceName) {
        }
        public Registration_AsyncProxy(RemObjects.SDK.IRemoteService aRemoteService) : 
                base(aRemoteService) {
        }
        public Registration_AsyncProxy(RemObjects.SDK.IRemoteService aRemoteService, string aOverrideInterfaceName) : 
                base(aRemoteService, aOverrideInterfaceName) {
        }
        public Registration_AsyncProxy(System.Uri aUri) : 
                base(aUri) {
        }
        public Registration_AsyncProxy(string aUrl) : 
                base(aUrl) {
        }
        protected override string @__GetInterfaceName() {
            return "Registration";
        }
        public virtual System.IAsyncResult BeginGetApiHostMobile(string SystemApiKey, System.AsyncCallback @__Callback, object @__UserData) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "GetApiHostMobile");
            @__LocalMessage.WriteAnsiString("SystemApiKey", SystemApiKey);
            @__LocalMessage.FinalizeMessage();
            return @__ClientChannel.AsyncDispatch(@__LocalMessage, @__Callback, @__UserData);
        }
        public virtual Host EndGetApiHostMobile(System.IAsyncResult @__AsyncResult) {
            RemObjects.SDK.IMessage @__LocalMessage = ((RemObjects.SDK.IClientAsyncResult)(@__AsyncResult)).Message;
            Host Host = ((Host)(@__LocalMessage.Read("Host", typeof(Host), RemObjects.SDK.StreamingFormat.Default)));
            @__LocalMessage.Clear();
            return Host;
        }
        public virtual System.IAsyncResult BeginGetApiHostWifi(string SystemApiKey, System.AsyncCallback @__Callback, object @__UserData) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "GetApiHostWifi");
            @__LocalMessage.WriteAnsiString("SystemApiKey", SystemApiKey);
            @__LocalMessage.FinalizeMessage();
            return @__ClientChannel.AsyncDispatch(@__LocalMessage, @__Callback, @__UserData);
        }
        public virtual Host EndGetApiHostWifi(System.IAsyncResult @__AsyncResult) {
            RemObjects.SDK.IMessage @__LocalMessage = ((RemObjects.SDK.IClientAsyncResult)(@__AsyncResult)).Message;
            Host host = ((Host)(@__LocalMessage.Read("host", typeof(Host), RemObjects.SDK.StreamingFormat.Default)));
            @__LocalMessage.Clear();
            return host;
        }
        public virtual System.IAsyncResult BeginGetClients(bool @internal, System.AsyncCallback @__Callback, object @__UserData) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "GetClients");
            @__LocalMessage.WriteBoolean("internal", @internal);
            @__LocalMessage.FinalizeMessage();
            return @__ClientChannel.AsyncDispatch(@__LocalMessage, @__Callback, @__UserData);
        }
        public virtual Client[] EndGetClients(System.IAsyncResult @__AsyncResult) {
            RemObjects.SDK.IMessage @__LocalMessage = ((RemObjects.SDK.IClientAsyncResult)(@__AsyncResult)).Message;
            Client[] Result = ((Client[])(@__LocalMessage.Read("Result", typeof(Client[]), RemObjects.SDK.StreamingFormat.Default)));
            @__LocalMessage.Clear();
            return Result;
        }
        public virtual System.IAsyncResult BeginGetRegistrationServer(string SystemApiKey, System.AsyncCallback @__Callback, object @__UserData) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "GetRegistrationServer");
            @__LocalMessage.WriteAnsiString("SystemApiKey", SystemApiKey);
            @__LocalMessage.FinalizeMessage();
            return @__ClientChannel.AsyncDispatch(@__LocalMessage, @__Callback, @__UserData);
        }
        public virtual Host EndGetRegistrationServer(System.IAsyncResult @__AsyncResult) {
            RemObjects.SDK.IMessage @__LocalMessage = ((RemObjects.SDK.IClientAsyncResult)(@__AsyncResult)).Message;
            Host Host = ((Host)(@__LocalMessage.Read("Host", typeof(Host), RemObjects.SDK.StreamingFormat.Default)));
            @__LocalMessage.Clear();
            return Host;
        }
        public virtual System.IAsyncResult BeginRegisterNewServerPractice(string PracticeName, Server server, string serverType, System.AsyncCallback @__Callback, object @__UserData) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "RegisterNewServerPractice");
            @__LocalMessage.WriteAnsiString("PracticeName", PracticeName);
            @__LocalMessage.Write("server", server, typeof(Server), RemObjects.SDK.StreamingFormat.Default);
            @__LocalMessage.WriteAnsiString("serverType", serverType);
            @__LocalMessage.FinalizeMessage();
            return @__ClientChannel.AsyncDispatch(@__LocalMessage, @__Callback, @__UserData);
        }
        public virtual bool EndRegisterNewServerPractice(System.IAsyncResult @__AsyncResult, out string UserApiKey, out string UserApiPin) {
            RemObjects.SDK.IMessage @__LocalMessage = ((RemObjects.SDK.IClientAsyncResult)(@__AsyncResult)).Message;
            bool Result = @__LocalMessage.ReadBoolean("Result");
            UserApiKey = @__LocalMessage.ReadAnsiString("UserApiKey");
            UserApiPin = @__LocalMessage.ReadAnsiString("UserApiPin");
            @__LocalMessage.Clear();
            return Result;
        }
        public virtual System.IAsyncResult BeginRegisterNewClient(string UserApiKey, string UserApiPin, System.AsyncCallback @__Callback, object @__UserData) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "RegisterNewClient");
            @__LocalMessage.WriteAnsiString("UserApiKey", UserApiKey);
            @__LocalMessage.WriteAnsiString("UserApiPin", UserApiPin);
            @__LocalMessage.FinalizeMessage();
            return @__ClientChannel.AsyncDispatch(@__LocalMessage, @__Callback, @__UserData);
        }
        public virtual string EndRegisterNewClient(System.IAsyncResult @__AsyncResult) {
            RemObjects.SDK.IMessage @__LocalMessage = ((RemObjects.SDK.IClientAsyncResult)(@__AsyncResult)).Message;
            string SystemApiKey = @__LocalMessage.ReadAnsiString("SystemApiKey");
            @__LocalMessage.Clear();
            return SystemApiKey;
        }
        public virtual System.IAsyncResult BeginServerHasBeenUpdated(string HostGUID, string Version, System.AsyncCallback @__Callback, object @__UserData) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "ServerHasBeenUpdated");
            @__LocalMessage.WriteAnsiString("HostGUID", HostGUID);
            @__LocalMessage.WriteAnsiString("Version", Version);
            @__LocalMessage.FinalizeMessage();
            return @__ClientChannel.AsyncDispatch(@__LocalMessage, @__Callback, @__UserData);
        }
        public virtual void EndServerHasBeenUpdated(System.IAsyncResult @__AsyncResult) {
            RemObjects.SDK.IMessage @__LocalMessage = ((RemObjects.SDK.IClientAsyncResult)(@__AsyncResult)).Message;
            @__LocalMessage.Clear();
        }
        public virtual System.IAsyncResult BeginRetrieveNewClientPin(string UserApiKey, System.AsyncCallback @__Callback, object @__UserData) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "RetrieveNewClientPin");
            @__LocalMessage.WriteAnsiString("UserApiKey", UserApiKey);
            @__LocalMessage.FinalizeMessage();
            return @__ClientChannel.AsyncDispatch(@__LocalMessage, @__Callback, @__UserData);
        }
        public virtual string EndRetrieveNewClientPin(System.IAsyncResult @__AsyncResult) {
            RemObjects.SDK.IMessage @__LocalMessage = ((RemObjects.SDK.IClientAsyncResult)(@__AsyncResult)).Message;
            string pin = @__LocalMessage.ReadAnsiString("pin");
            @__LocalMessage.Clear();
            return pin;
        }
        public virtual System.IAsyncResult BeginUpdateServer(Server server, System.AsyncCallback @__Callback, object @__UserData) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "UpdateServer");
            @__LocalMessage.Write("server", server, typeof(Server), RemObjects.SDK.StreamingFormat.Default);
            @__LocalMessage.FinalizeMessage();
            return @__ClientChannel.AsyncDispatch(@__LocalMessage, @__Callback, @__UserData);
        }
        public virtual bool EndUpdateServer(System.IAsyncResult @__AsyncResult) {
            RemObjects.SDK.IMessage @__LocalMessage = ((RemObjects.SDK.IClientAsyncResult)(@__AsyncResult)).Message;
            bool Result = @__LocalMessage.ReadBoolean("Result");
            @__LocalMessage.Clear();
            return Result;
        }
        public virtual System.IAsyncResult BeginUpdatePracticeName(string UserApiKey, string UserApiPin, string PracticeName, System.AsyncCallback @__Callback, object @__UserData) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "UpdatePracticeName");
            @__LocalMessage.WriteAnsiString("UserApiKey", UserApiKey);
            @__LocalMessage.WriteAnsiString("UserApiPin", UserApiPin);
            @__LocalMessage.WriteAnsiString("PracticeName", PracticeName);
            @__LocalMessage.FinalizeMessage();
            return @__ClientChannel.AsyncDispatch(@__LocalMessage, @__Callback, @__UserData);
        }
        public virtual bool EndUpdatePracticeName(System.IAsyncResult @__AsyncResult) {
            RemObjects.SDK.IMessage @__LocalMessage = ((RemObjects.SDK.IClientAsyncResult)(@__AsyncResult)).Message;
            bool Result = @__LocalMessage.ReadBoolean("Result");
            @__LocalMessage.Clear();
            return Result;
        }
        public virtual System.IAsyncResult BeginUpdatePracticeName2(string systemApiKey, string PracticeName, System.AsyncCallback @__Callback, object @__UserData) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "UpdatePracticeName2");
            @__LocalMessage.WriteAnsiString("systemApiKey", systemApiKey);
            @__LocalMessage.WriteAnsiString("PracticeName", PracticeName);
            @__LocalMessage.FinalizeMessage();
            return @__ClientChannel.AsyncDispatch(@__LocalMessage, @__Callback, @__UserData);
        }
        public virtual bool EndUpdatePracticeName2(System.IAsyncResult @__AsyncResult) {
            RemObjects.SDK.IMessage @__LocalMessage = ((RemObjects.SDK.IClientAsyncResult)(@__AsyncResult)).Message;
            bool Result = @__LocalMessage.ReadBoolean("Result");
            @__LocalMessage.Clear();
            return Result;
        }
        public virtual System.IAsyncResult BeginIsServerReachable(Server server, System.AsyncCallback @__Callback, object @__UserData) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "IsServerReachable");
            @__LocalMessage.Write("server", server, typeof(Server), RemObjects.SDK.StreamingFormat.Default);
            @__LocalMessage.FinalizeMessage();
            return @__ClientChannel.AsyncDispatch(@__LocalMessage, @__Callback, @__UserData);
        }
        public virtual bool EndIsServerReachable(System.IAsyncResult @__AsyncResult) {
            RemObjects.SDK.IMessage @__LocalMessage = ((RemObjects.SDK.IClientAsyncResult)(@__AsyncResult)).Message;
            bool Result = @__LocalMessage.ReadBoolean("Result");
            @__LocalMessage.Clear();
            return Result;
        }
        public virtual System.IAsyncResult BeginIsClientReachable(string systemApiKey, System.AsyncCallback @__Callback, object @__UserData) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "IsClientReachable");
            @__LocalMessage.WriteAnsiString("systemApiKey", systemApiKey);
            @__LocalMessage.FinalizeMessage();
            return @__ClientChannel.AsyncDispatch(@__LocalMessage, @__Callback, @__UserData);
        }
        public virtual bool EndIsClientReachable(System.IAsyncResult @__AsyncResult) {
            RemObjects.SDK.IMessage @__LocalMessage = ((RemObjects.SDK.IClientAsyncResult)(@__AsyncResult)).Message;
            bool Result = @__LocalMessage.ReadBoolean("Result");
            @__LocalMessage.Clear();
            return Result;
        }
        public virtual System.IAsyncResult BeginRetrieveHostGUIDForServerFromInternet(Server server, System.AsyncCallback @__Callback, object @__UserData) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "RetrieveHostGUIDForServerFromInternet");
            @__LocalMessage.Write("server", server, typeof(Server), RemObjects.SDK.StreamingFormat.Default);
            @__LocalMessage.FinalizeMessage();
            return @__ClientChannel.AsyncDispatch(@__LocalMessage, @__Callback, @__UserData);
        }
        public virtual string EndRetrieveHostGUIDForServerFromInternet(System.IAsyncResult @__AsyncResult) {
            RemObjects.SDK.IMessage @__LocalMessage = ((RemObjects.SDK.IClientAsyncResult)(@__AsyncResult)).Message;
            string HostGUID = @__LocalMessage.ReadAnsiString("HostGUID");
            @__LocalMessage.Clear();
            return HostGUID;
        }
        public virtual System.IAsyncResult BeginDoesServerHostGUIDExist(string HostGUID, System.AsyncCallback @__Callback, object @__UserData) {
            RemObjects.SDK.IMessage @__LocalMessage = this.@__GetMessage();
            @__LocalMessage.InitializeRequestMessage(@__ClientChannel, "Registration", @__GetActiveInterfaceName(), "DoesServerHostGUIDExist");
            @__LocalMessage.WriteAnsiString("HostGUID", HostGUID);
            @__LocalMessage.FinalizeMessage();
            return @__ClientChannel.AsyncDispatch(@__LocalMessage, @__Callback, @__UserData);
        }
        public virtual bool EndDoesServerHostGUIDExist(System.IAsyncResult @__AsyncResult) {
            RemObjects.SDK.IMessage @__LocalMessage = ((RemObjects.SDK.IClientAsyncResult)(@__AsyncResult)).Message;
            bool Result = @__LocalMessage.ReadBoolean("Result");
            @__LocalMessage.Clear();
            return Result;
        }
    }
}
