<?xml version="1.0"?>
<doc>
    <assembly>
        <name>DiscordRPC</name>
    </assembly>
    <members>
        <member name="T:DiscordRPC.Configuration">
            <summary>
            Configuration of the current RPC connection
            </summary>
        </member>
        <member name="P:DiscordRPC.Configuration.ApiEndpoint">
            <summary>
            The Discord API endpoint that should be used.
            </summary>
        </member>
        <member name="P:DiscordRPC.Configuration.CdnHost">
            <summary>
            The CDN endpoint
            </summary>
        </member>
        <member name="P:DiscordRPC.Configuration.Environment">
            <summary>
            The type of environment the connection on. Usually Production. 
            </summary>
        </member>
        <member name="T:DiscordRPC.Converters.EnumSnakeCaseConverter">
            <summary>
            Converts enums with the <see cref="T:DiscordRPC.Converters.EnumValueAttribute"/> into Json friendly terms. 
            </summary>
        </member>
        <member name="T:DiscordRPC.DiscordRpcClient">
            <summary>
            A Discord RPC Client which is used to send Rich Presence updates and receive Join / Spectate events.
            </summary>
        </member>
        <member name="P:DiscordRPC.DiscordRpcClient.HasRegisteredUriScheme">
            <summary>
            Gets a value indicating if the client has registered a URI Scheme. If this is false, Join / Spectate events will fail.
            <para>To register a URI Scheme, call <see cref="M:DiscordRPC.DiscordRpcClient.RegisterUriScheme(System.String,System.String)"/>.</para>
            </summary>
        </member>
        <member name="P:DiscordRPC.DiscordRpcClient.ApplicationID">
            <summary>
            Gets the Application ID of the RPC Client.
            </summary>
        </member>
        <member name="P:DiscordRPC.DiscordRpcClient.SteamID">
            <summary>
            Gets the Steam ID of the RPC Client. This value can be null if none was supplied.
            </summary>
        </member>
        <member name="P:DiscordRPC.DiscordRpcClient.ProcessID">
            <summary>
            Gets the ID of the process used to run the RPC Client. Discord tracks this process ID and waits for its termination. Defaults to the current application process ID.
            </summary>
        </member>
        <member name="P:DiscordRPC.DiscordRpcClient.MaxQueueSize">
            <summary>
            The maximum size of the message queue received from Discord. 
            </summary>
        </member>
        <member name="P:DiscordRPC.DiscordRpcClient.IsDisposed">
            <summary>
            The dispose state of the client object.
            </summary>
        </member>
        <member name="P:DiscordRPC.DiscordRpcClient.Logger">
            <summary>
            The logger used this client and its associated components. <see cref="T:DiscordRPC.Logging.ILogger"/> are not called safely and can come from any thread. It is upto the <see cref="T:DiscordRPC.Logging.ILogger"/> to account for this and apply appropriate thread safe methods.
            </summary>
        </member>
        <member name="P:DiscordRPC.DiscordRpcClient.AutoEvents">
            <summary>
            Indicates if the client will automatically invoke the events without <see cref="M:DiscordRPC.DiscordRpcClient.Invoke"/> having to be called. 
            </summary>
        </member>
        <member name="P:DiscordRPC.DiscordRpcClient.SkipIdenticalPresence">
            <summary>
            Skips sending presences that are identical to the current one.
            </summary>
        </member>
        <member name="P:DiscordRPC.DiscordRpcClient.TargetPipe">
            <summary>
            The pipe the discord client is on, ranging from 0 to 9. Use -1 to scan through all pipes.
            <para>This property can be used for testing multiple clients. For example, if a Discord Client was on pipe 0, the Discord Canary is most likely on pipe 1.</para>
            </summary>
        </member>
        <member name="P:DiscordRPC.DiscordRpcClient.CurrentPresence">
            <summary>
            The current presence that the client has. Gets set with <see cref="M:DiscordRPC.DiscordRpcClient.SetPresence(DiscordRPC.RichPresence)"/> and updated on <see cref="E:DiscordRPC.DiscordRpcClient.OnPresenceUpdate"/>.
            </summary>
        </member>
        <member name="P:DiscordRPC.DiscordRpcClient.Subscription">
            <summary>
            Current subscription to events. Gets set with <see cref="M:DiscordRPC.DiscordRpcClient.Subscribe(DiscordRPC.EventType)"/>, <see cref="T:DiscordRPC.Message.UnsubscribeMessage"/> and updated on <see cref="E:DiscordRPC.DiscordRpcClient.OnSubscribe"/>, <see cref="E:DiscordRPC.DiscordRpcClient.OnUnsubscribe"/>.
            </summary>
        </member>
        <member name="P:DiscordRPC.DiscordRpcClient.CurrentUser">
            <summary>
            The current discord user. This is updated with the ready event and will be null until the event is fired from the connection.
            </summary>
        </member>
        <member name="P:DiscordRPC.DiscordRpcClient.Configuration">
            <summary>
            The current configuration the connection is using. Only becomes available after a ready event.
            </summary>
        </member>
        <member name="P:DiscordRPC.DiscordRpcClient.IsInitialized">
            <summary>
            Represents if the client has been <see cref="M:DiscordRPC.DiscordRpcClient.Initialize"/>
            </summary>
        </member>
        <member name="P:DiscordRPC.DiscordRpcClient.ShutdownOnly">
            <summary>
            Forces the connection to shutdown gracefully instead of just aborting the connection.
            <para>This option helps prevents ghosting in applications where the Process ID is a host and the game is executed within the host (ie: the Unity3D editor). This will tell Discord that we have no presence and we are closing the connection manually, instead of waiting for the process to terminate.</para>
            </summary>
        </member>
        <member name="E:DiscordRPC.DiscordRpcClient.OnReady">
            <summary>
            Called when the discord client is ready to send and receive messages.
            <para>If <see cref="P:DiscordRPC.DiscordRpcClient.AutoEvents"/> is true then this event will execute on a different thread. If it is not true however, then this event is not invoked untill <see cref="M:DiscordRPC.DiscordRpcClient.Invoke"/> and will be on the calling thread.</para>
            </summary>
        </member>
        <member name="E:DiscordRPC.DiscordRpcClient.OnClose">
            <summary>
            Called when connection to the Discord Client is lost. The connection will remain close and unready to accept messages until the Ready event is called again.
            <para>If <see cref="P:DiscordRPC.DiscordRpcClient.AutoEvents"/> is true then this event will execute on a different thread. If it is not true however, then this event is not invoked untill <see cref="M:DiscordRPC.DiscordRpcClient.Invoke"/> and will be on the calling thread.</para>
            </summary>
        </member>
        <member name="E:DiscordRPC.DiscordRpcClient.OnError">
            <summary>
            Called when a error has occured during the transmission of a message. For example, if a bad Rich Presence payload is sent, this event will be called explaining what went wrong.
            <para>If <see cref="P:DiscordRPC.DiscordRpcClient.AutoEvents"/> is true then this event will execute on a different thread. If it is not true however, then this event is not invoked untill <see cref="M:DiscordRPC.DiscordRpcClient.Invoke"/> and will be on the calling thread.</para>
            </summary>
        </member>
        <member name="E:DiscordRPC.DiscordRpcClient.OnPresenceUpdate">
            <summary>
            Called when the Discord Client has updated the presence.
            <para>If <see cref="P:DiscordRPC.DiscordRpcClient.AutoEvents"/> is true then this event will execute on a different thread. If it is not true however, then this event is not invoked untill <see cref="M:DiscordRPC.DiscordRpcClient.Invoke"/> and will be on the calling thread.</para>
            </summary>
        </member>
        <member name="E:DiscordRPC.DiscordRpcClient.OnSubscribe">
            <summary>
            Called when the Discord Client has subscribed to an event.
            <para>If <see cref="P:DiscordRPC.DiscordRpcClient.AutoEvents"/> is true then this event will execute on a different thread. If it is not true however, then this event is not invoked untill <see cref="M:DiscordRPC.DiscordRpcClient.Invoke"/> and will be on the calling thread.</para>
            </summary>
        </member>
        <member name="E:DiscordRPC.DiscordRpcClient.OnUnsubscribe">
            <summary>
            Called when the Discord Client has unsubscribed from an event.
            <para>If <see cref="P:DiscordRPC.DiscordRpcClient.AutoEvents"/> is true then this event will execute on a different thread. If it is not true however, then this event is not invoked untill <see cref="M:DiscordRPC.DiscordRpcClient.Invoke"/> and will be on the calling thread.</para>
            </summary>
        </member>
        <member name="E:DiscordRPC.DiscordRpcClient.OnJoin">
            <summary>
            Called when the Discord Client wishes for this process to join a game.
            <para>If <see cref="P:DiscordRPC.DiscordRpcClient.AutoEvents"/> is true then this event will execute on a different thread. If it is not true however, then this event is not invoked untill <see cref="M:DiscordRPC.DiscordRpcClient.Invoke"/> and will be on the calling thread.</para>
            </summary>
        </member>
        <member name="E:DiscordRPC.DiscordRpcClient.OnSpectate">
            <summary>
            Called when the Discord Client wishes for this process to spectate a game.
            <para>If <see cref="P:DiscordRPC.DiscordRpcClient.AutoEvents"/> is true then this event will execute on a different thread. If it is not true however, then this event is not invoked untill <see cref="M:DiscordRPC.DiscordRpcClient.Invoke"/> and will be on the calling thread.</para>
            </summary>
        </member>
        <member name="E:DiscordRPC.DiscordRpcClient.OnJoinRequested">
            <summary>
            Called when another discord user requests permission to join this game.
            <para>This event is not invoked untill <see cref="M:DiscordRPC.DiscordRpcClient.Invoke"/> is executed.</para>
            </summary>
        </member>
        <member name="E:DiscordRPC.DiscordRpcClient.OnConnectionEstablished">
            <summary>
            The connection to the discord client was succesfull. This is called before <see cref="F:DiscordRPC.Message.MessageType.Ready"/>.
            <para>If <see cref="P:DiscordRPC.DiscordRpcClient.AutoEvents"/> is true then this event will execute on a different thread. If it is not true however, then this event is not invoked untill <see cref="M:DiscordRPC.DiscordRpcClient.Invoke"/> and will be on the calling thread.</para>
            </summary>
        </member>
        <member name="E:DiscordRPC.DiscordRpcClient.OnConnectionFailed">
            <summary>
            Failed to establish any connection with discord. Discord is potentially not running?
            <para>If <see cref="P:DiscordRPC.DiscordRpcClient.AutoEvents"/> is true then this event will execute on a different thread. If it is not true however, then this event is not invoked untill <see cref="M:DiscordRPC.DiscordRpcClient.Invoke"/> and will be on the calling thread.</para>
            </summary>
        </member>
        <member name="E:DiscordRPC.DiscordRpcClient.OnRpcMessage">
            <summary>
            The RPC Connection has sent a message. Called before any other event and executed from the RPC Thread.
            </summary>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.#ctor(System.String)">
            <summary>
            Creates a new Discord RPC Client which can be used to send Rich Presence and receive Join / Spectate events.
            </summary>
            <param name="applicationID">The ID of the application created at discord's developers portal.</param>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.#ctor(System.String,System.Int32,DiscordRPC.Logging.ILogger,System.Boolean,DiscordRPC.IO.INamedPipeClient)">
            <summary>
            Creates a new Discord RPC Client which can be used to send Rich Presence and receive Join / Spectate events. This constructor exposes more advance features such as custom NamedPipeClients and Loggers.
            </summary>
            <param name="applicationID">The ID of the application created at discord's developers portal.</param>
            <param name="pipe">The pipe to connect too. If -1, then the client will scan for the first available instance of Discord.</param>
            <param name="logger">The logger used to report messages. If null, then a <see cref="T:DiscordRPC.Logging.NullLogger"/> will be created and logs will be ignored.</param>
            <param name="autoEvents">Should events be automatically invoked from the RPC Thread as they arrive from discord?</param>
            <param name="client">The pipe client to use and communicate to discord through. If null, the default <see cref="T:DiscordRPC.IO.ManagedNamedPipeClient"/> will be used.</param>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.Invoke">
            <summary>
            Dequeues all the messages from Discord, processes them and then invoke appropriate event handlers. This will process the message and update the internal state before invoking the events. Returns the messages that were invoked in the order they were invoked.
            <para>This method cannot be used if <see cref="P:DiscordRPC.DiscordRpcClient.AutoEvents"/> is enabled.</para>
            </summary>
            <returns>Returns the messages that were invoked and in the order they were invoked.</returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.ProcessMessage(DiscordRPC.Message.IMessage)">
            <summary>
            Processes the message, updating our internal state and then invokes the events.
            </summary>
            <param name="message"></param>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.Respond(DiscordRPC.Message.JoinRequestMessage,System.Boolean)">
            <summary>
            Respond to a Join Request. All requests will timeout after 30 seconds.
            <para>Because of the 30 second timeout, it is recommended to call <seealso cref="M:DiscordRPC.DiscordRpcClient.Invoke"/> faster than every 15 seconds to give your users adequate time to respond to the request.</para>
            </summary>
            <param name="request">The request that is being responded too.</param>
            <param name="acceptRequest">Accept the join request.</param>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.SetPresence(DiscordRPC.RichPresence)">
            <summary>
            Sets the Rich Presence.
            </summary>
            <param name="presence">The Rich Presence to set on the current Discord user.</param>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.UpdateButtons(DiscordRPC.Button[])">
            <summary>
            Updates only the <see cref="P:DiscordRPC.RichPresence.Buttons"/> of the <see cref="P:DiscordRPC.DiscordRpcClient.CurrentPresence"/> and updates/removes the buttons. Returns the newly edited Rich Presence.
            </summary>
            <param name="button">The buttons of the Rich Presence</param>
            <returns>Updated Rich Presence</returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.SetButton(DiscordRPC.Button,System.Int32)">
            <summary>
            Updates only the <see cref="P:DiscordRPC.RichPresence.Buttons"/> of the <see cref="P:DiscordRPC.DiscordRpcClient.CurrentPresence"/> and updates the button with the given index. Returns the newly edited Rich Presence.
            </summary>
            <param name="button">The buttons of the Rich Presence</param>
            <param name="index">The number of the button</param>
            <returns>Updated Rich Presence</returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.UpdateDetails(System.String)">
            <summary>
            Updates only the <see cref="P:DiscordRPC.BaseRichPresence.Details"/> of the <see cref="P:DiscordRPC.DiscordRpcClient.CurrentPresence"/> and sends the updated presence to Discord. Returns the newly edited Rich Presence.
            </summary>
            <param name="details">The details of the Rich Presence</param>
            <returns>Updated Rich Presence</returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.UpdateState(System.String)">
            <summary>
            Updates only the <see cref="P:DiscordRPC.BaseRichPresence.State"/> of the <see cref="P:DiscordRPC.DiscordRpcClient.CurrentPresence"/> and sends the updated presence to Discord. Returns the newly edited Rich Presence.
            </summary>
            <param name="state">The state of the Rich Presence</param>
            <returns>Updated Rich Presence</returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.UpdateParty(DiscordRPC.Party)">
            <summary>
            Updates only the <see cref="P:DiscordRPC.BaseRichPresence.Party"/> of the <see cref="P:DiscordRPC.DiscordRpcClient.CurrentPresence"/> and sends the updated presence to Discord. Returns the newly edited Rich Presence.
            </summary>
            <param name="party">The party of the Rich Presence</param>
            <returns>Updated Rich Presence</returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.UpdatePartySize(System.Int32)">
            <summary>
            Updates the <see cref="P:DiscordRPC.Party.Size"/> of the <see cref="P:DiscordRPC.DiscordRpcClient.CurrentPresence"/> and sends the update presence to Discord. Returns the newly edited Rich Presence.
            <para>Will return null if no presence exists and will throw a new <see cref="T:System.NullReferenceException"/> if the Party does not exist.</para>
            </summary>
            <param name="size">The new size of the party. It cannot be greater than <see cref="P:DiscordRPC.Party.Max"/></param>
            <returns>Updated Rich Presence</returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.UpdatePartySize(System.Int32,System.Int32)">
            <summary>
            Updates the <see cref="P:DiscordRPC.Party.Size"/> of the <see cref="P:DiscordRPC.DiscordRpcClient.CurrentPresence"/> and sends the update presence to Discord. Returns the newly edited Rich Presence.
            <para>Will return null if no presence exists and will throw a new <see cref="T:System.NullReferenceException"/> if the Party does not exist.</para>
            </summary>
            <param name="size">The new size of the party. It cannot be greater than <see cref="P:DiscordRPC.Party.Max"/></param>
            <param name="max">The new size of the party. It cannot be smaller than <see cref="P:DiscordRPC.Party.Size"/></param>
            <returns>Updated Rich Presence</returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.UpdateLargeAsset(System.String,System.String)">
            <summary>
            Updates the large <see cref="T:DiscordRPC.Assets"/> of the <see cref="P:DiscordRPC.DiscordRpcClient.CurrentPresence"/> and sends the updated presence to Discord. Both <paramref name="key"/> and <paramref name="tooltip"/> are optional and will be ignored it null.
            </summary>
            <param name="key">Optional: The new key to set the asset too</param>
            <param name="tooltip">Optional: The new tooltip to display on the asset</param>
            <returns>Updated Rich Presence</returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.UpdateSmallAsset(System.String,System.String)">
            <summary>
            Updates the small <see cref="T:DiscordRPC.Assets"/> of the <see cref="P:DiscordRPC.DiscordRpcClient.CurrentPresence"/> and sends the updated presence to Discord. Both <paramref name="key"/> and <paramref name="tooltip"/> are optional and will be ignored it null.
            </summary>
            <param name="key">Optional: The new key to set the asset too</param>
            <param name="tooltip">Optional: The new tooltip to display on the asset</param>
            <returns>Updated Rich Presence</returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.UpdateSecrets(DiscordRPC.Secrets)">
            <summary>
            Updates the <see cref="T:DiscordRPC.Secrets"/> of the <see cref="P:DiscordRPC.DiscordRpcClient.CurrentPresence"/> and sends the updated presence to Discord. Will override previous secret entirely.
            </summary>
            <param name="secrets">The new secret to send to discord.</param>
            <returns>Updated Rich Presence</returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.UpdateStartTime">
            <summary>
            Sets the start time of the <see cref="P:DiscordRPC.DiscordRpcClient.CurrentPresence"/> to now and sends the updated presence to Discord.
            </summary>
            <returns>Updated Rich Presence</returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.UpdateStartTime(System.DateTime)">
            <summary>
            Sets the start time of the <see cref="P:DiscordRPC.DiscordRpcClient.CurrentPresence"/> and sends the updated presence to Discord.
            </summary>
            <param name="time">The new time for the start</param>
            <returns>Updated Rich Presence</returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.UpdateEndTime">
            <summary>
            Sets the end time of the <see cref="P:DiscordRPC.DiscordRpcClient.CurrentPresence"/> to now and sends the updated presence to Discord.
            </summary>
            <returns>Updated Rich Presence</returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.UpdateEndTime(System.DateTime)">
            <summary>
            Sets the end time of the <see cref="P:DiscordRPC.DiscordRpcClient.CurrentPresence"/> and sends the updated presence to Discord.
            </summary>
            <param name="time">The new time for the end</param>
            <returns>Updated Rich Presence</returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.UpdateClearTime">
            <summary>
            Sets the start and end time of <see cref="P:DiscordRPC.DiscordRpcClient.CurrentPresence"/> to null and sends it to Discord.
            </summary>
            <returns>Updated Rich Presence</returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.ClearPresence">
            <summary>
            Clears the Rich Presence. Use this just before disposal to prevent ghosting.
            </summary>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.RegisterUriScheme(System.String,System.String)">
            <summary>
            Registers the application executable to a custom URI Scheme.
            <para>This is required for the Join and Spectate features. Discord will run this custom URI Scheme to launch your application when a user presses either of the buttons.</para>
            </summary>
            <param name="steamAppID">Optional Steam ID. If supplied, Discord will launch the game through steam instead of directly calling it.</param>
            <param name="executable">The path to the executable. If null, the path to the current executable will be used instead.</param>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.Subscribe(DiscordRPC.EventType)">
            <summary>
            Subscribes to an event sent from discord. Used for Join / Spectate feature.
            <para>Requires the UriScheme to be registered.</para>
            </summary>
            <param name="type">The event type to subscribe to</param>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.Unubscribe(DiscordRPC.EventType)">
            <summary>
            
            </summary>
            <param name="type"></param>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.Unsubscribe(DiscordRPC.EventType)">
            <summary>
            Unsubscribe from the event sent by discord. Used for Join / Spectate feature.
            <para>Requires the UriScheme to be registered.</para>
            </summary>
            <param name="type">The event type to unsubscribe from</param>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.SetSubscription(DiscordRPC.EventType)">
            <summary>
            Sets the subscription to the events sent from Discord.
            <para>Requires the UriScheme to be registered.</para>
            </summary>
            <param name="type">The new subscription as a flag. Events selected in the flag will be subscribed too and the other events will be unsubscribed.</param>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.SubscribeToTypes(DiscordRPC.EventType,System.Boolean)">
            <summary>
            Simple helper function that will subscribe to the specified types in the flag.
            </summary>
            <param name="type">The flag to subscribe to</param>
            <param name="isUnsubscribe">Represents if the unsubscribe payload should be sent instead.</param>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.SynchronizeState">
            <summary>
            Resends the current presence and subscription. This is used when Ready is called to keep the current state within discord.
            </summary>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.Initialize">
            <summary>
            Attempts to initalize a connection to the Discord IPC.
            </summary>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.Deinitialize">
            <summary>
            Attempts to disconnect and deinitialize the IPC connection while retaining the settings.
            </summary>
        </member>
        <member name="M:DiscordRPC.DiscordRpcClient.Dispose">
            <summary>
            Terminates the connection to Discord and disposes of the object.
            </summary>
        </member>
        <member name="T:DiscordRPC.Events.OnReadyEvent">
            <summary>
            Called when the Discord Client is ready to send and receive messages.
            </summary>
            <param name="sender">The Discord client handler that sent this event</param>
            <param name="args">The arguments supplied with the event</param>
        </member>
        <member name="T:DiscordRPC.Events.OnCloseEvent">
            <summary>
            Called when connection to the Discord Client is lost. The connection will remain close and unready to accept messages until the Ready event is called again.
            </summary>
            <param name="sender">The Discord client handler that sent this event</param>
            <param name="args">The arguments supplied with the event</param>
        </member>
        <member name="T:DiscordRPC.Events.OnErrorEvent">
            <summary>
            Called when a error has occured during the transmission of a message. For example, if a bad Rich Presence payload is sent, this event will be called explaining what went wrong.
            </summary>
            <param name="sender">The Discord client handler that sent this event</param>
            <param name="args">The arguments supplied with the event</param>
        </member>
        <member name="T:DiscordRPC.Events.OnPresenceUpdateEvent">
            <summary>
            Called when the Discord Client has updated the presence.
            </summary>
            <param name="sender">The Discord client handler that sent this event</param>
            <param name="args">The arguments supplied with the event</param>
        </member>
        <member name="T:DiscordRPC.Events.OnSubscribeEvent">
            <summary>
            Called when the Discord Client has subscribed to an event.
            </summary>
            <param name="sender">The Discord client handler that sent this event</param>
            <param name="args">The arguments supplied with the event</param>
        </member>
        <member name="T:DiscordRPC.Events.OnUnsubscribeEvent">
            <summary>
            Called when the Discord Client has unsubscribed from an event.
            </summary>
            <param name="sender">The Discord client handler that sent this event</param>
            <param name="args">The arguments supplied with the event</param>
        </member>
        <member name="T:DiscordRPC.Events.OnJoinEvent">
            <summary>
            Called when the Discord Client wishes for this process to join a game.
            </summary>
            <param name="sender">The Discord client handler that sent this event</param>
            <param name="args">The arguments supplied with the event</param>
        </member>
        <member name="T:DiscordRPC.Events.OnSpectateEvent">
            <summary>
            Called when the Discord Client wishes for this process to spectate a game.
            </summary>
            <param name="sender">The Discord client handler that sent this event</param>
            <param name="args">The arguments supplied with the event</param>
        </member>
        <member name="T:DiscordRPC.Events.OnJoinRequestedEvent">
            <summary>
            Called when another discord user requests permission to join this game.
            </summary>
            <param name="sender">The Discord client handler that sent this event</param>
            <param name="args">The arguments supplied with the event</param>
        </member>
        <member name="T:DiscordRPC.Events.OnConnectionEstablishedEvent">
            <summary>
            The connection to the discord client was succesfull. This is called before <see cref="T:DiscordRPC.Events.OnReadyEvent"/>.
            </summary>
            <param name="sender">The Discord client handler that sent this event</param>
            <param name="args">The arguments supplied with the event</param>
        </member>
        <member name="T:DiscordRPC.Events.OnConnectionFailedEvent">
            <summary>
            Failed to establish any connection with discord. Discord is potentially not running?
            </summary>
            <param name="sender">The Discord client handler that sent this event</param>
            <param name="args">The arguments supplied with the event</param>
        </member>
        <member name="T:DiscordRPC.Events.OnRpcMessageEvent">
            <summary>
            A RPC Message is received.
            </summary>
            <param name="sender">The handler that sent this event</param>
            <param name="msg">The raw message from the RPC</param>
        </member>
        <member name="T:DiscordRPC.EventType">
            <summary>
            The type of event receieved by the RPC. A flag type that can be combined.
            </summary>
        </member>
        <member name="F:DiscordRPC.EventType.None">
            <summary>
            No event
            </summary>
        </member>
        <member name="F:DiscordRPC.EventType.Spectate">
            <summary>
            Called when the Discord Client wishes to enter a game to spectate
            </summary>
        </member>
        <member name="F:DiscordRPC.EventType.Join">
            <summary>
            Called when the Discord Client wishes to enter a game to play.
            </summary>
        </member>
        <member name="F:DiscordRPC.EventType.JoinRequest">
            <summary>
            Called when another Discord Client has requested permission to join this game.
            </summary>
        </member>
        <member name="T:DiscordRPC.Exceptions.BadPresenceException">
            <summary>
            A BadPresenceException is thrown when invalid, incompatible or conflicting properties and is unable to be sent.
            </summary>
        </member>
        <member name="T:DiscordRPC.Exceptions.InvalidConfigurationException">
            <summary>
            A InvalidConfigurationException is thrown when trying to perform a action that conflicts with the current configuration.
            </summary>
        </member>
        <member name="T:DiscordRPC.Exceptions.InvalidPipeException">
            <summary>
            The exception that is thrown when a error occurs while communicating with a pipe or when a connection attempt fails.
            </summary>
        </member>
        <member name="T:DiscordRPC.Exceptions.StringOutOfRangeException">
            <summary>
            A StringOutOfRangeException is thrown when the length of a string exceeds the allowed limit.
            </summary>
        </member>
        <member name="P:DiscordRPC.Exceptions.StringOutOfRangeException.MaximumLength">
            <summary>
            Maximum length the string is allowed to be.
            </summary>
        </member>
        <member name="P:DiscordRPC.Exceptions.StringOutOfRangeException.MinimumLength">
            <summary>
            Minimum length the string is allowed to be.
            </summary>
        </member>
        <member name="M:DiscordRPC.Exceptions.StringOutOfRangeException.#ctor(System.String,System.Int32,System.Int32)">
            <summary>
            Creates a new string out of range exception with a range of min to max and a custom message
            </summary>
            <param name="message">The custom message</param>
            <param name="min">Minimum length the string can be</param>
            <param name="max">Maximum length the string can be</param>
        </member>
        <member name="M:DiscordRPC.Exceptions.StringOutOfRangeException.#ctor(System.Int32,System.Int32)">
            <summary>
            Creates a new sting out of range exception with a range of min to max
            </summary>
            <param name="minumum"></param>
            <param name="max"></param>
        </member>
        <member name="M:DiscordRPC.Exceptions.StringOutOfRangeException.#ctor(System.Int32)">
            <summary>
            Creates a new sting out of range exception with a range of 0 to max
            </summary>
            <param name="max"></param>
        </member>
        <member name="T:DiscordRPC.Exceptions.UninitializedException">
            <summary>
            Thrown when an action is performed on a client that has not yet been initialized
            </summary>
        </member>
        <member name="M:DiscordRPC.Exceptions.UninitializedException.#ctor(System.String)">
            <summary>
            Creates a new unintialized exception
            </summary>
            <param name="message"></param>
        </member>
        <member name="M:DiscordRPC.Exceptions.UninitializedException.#ctor">
            <summary>
            Creates a new uninitialized exception with default message.
            </summary>
        </member>
        <member name="P:DiscordRPC.Helper.BackoffDelay.Maximum">
            <summary>
            The maximum time the backoff can reach
            </summary>
        </member>
        <member name="P:DiscordRPC.Helper.BackoffDelay.Minimum">
            <summary>
            The minimum time the backoff can start at
            </summary>
        </member>
        <member name="P:DiscordRPC.Helper.BackoffDelay.Current">
            <summary>
            The current time of the backoff
            </summary>
        </member>
        <member name="P:DiscordRPC.Helper.BackoffDelay.Fails">
            <summary>
            The current number of failures
            </summary>
        </member>
        <member name="P:DiscordRPC.Helper.BackoffDelay.Random">
            <summary>
            The random generator
            </summary>
        </member>
        <member name="M:DiscordRPC.Helper.BackoffDelay.Reset">
            <summary>
            Resets the backoff
            </summary>
        </member>
        <member name="T:DiscordRPC.Helper.StringTools">
            <summary>
            Collectin of helpful string extensions
            </summary>
        </member>
        <member name="M:DiscordRPC.Helper.StringTools.GetNullOrString(System.String)">
            <summary>
            Will return null if the string is whitespace, otherwise it will return the string. 
            </summary>
            <param name="str">The string to check</param>
            <returns>Null if the string is empty, otherwise the string</returns>
        </member>
        <member name="M:DiscordRPC.Helper.StringTools.WithinLength(System.String,System.Int32)">
            <summary>
            Does the string fit within the given amount of bytes? Uses UTF8 encoding.
            </summary>
            <param name="str">The string to check</param>
            <param name="bytes">The maximum number of bytes the string can take up</param>
            <returns>True if the string fits within the number of bytes</returns>
        </member>
        <member name="M:DiscordRPC.Helper.StringTools.WithinLength(System.String,System.Int32,System.Text.Encoding)">
            <summary>
            Does the string fit within the given amount of bytes?
            </summary>
            <param name="str">The string to check</param>
            <param name="bytes">The maximum number of bytes the string can take up</param>
            <param name="encoding">The encoding to count the bytes with</param>
            <returns>True if the string fits within the number of bytes</returns>
        </member>
        <member name="M:DiscordRPC.Helper.StringTools.ToCamelCase(System.String)">
            <summary>
            Converts the string into UpperCamelCase (Pascal Case).
            </summary>
            <param name="str">The string to convert</param>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.Helper.StringTools.ToSnakeCase(System.String)">
            <summary>
            Converts the string into UPPER_SNAKE_CASE
            </summary>
            <param name="str">The string to convert</param>
            <returns></returns>
        </member>
        <member name="P:DiscordRPC.IO.Handshake.Version">
            <summary>
            Version of the IPC API we are using
            </summary>
        </member>
        <member name="P:DiscordRPC.IO.Handshake.ClientID">
            <summary>
            The ID of the app.
            </summary>
        </member>
        <member name="T:DiscordRPC.IO.INamedPipeClient">
            <summary>
            Pipe Client used to communicate with Discord.
            </summary>
        </member>
        <member name="P:DiscordRPC.IO.INamedPipeClient.Logger">
            <summary>
            The logger for the Pipe client to use
            </summary>
        </member>
        <member name="P:DiscordRPC.IO.INamedPipeClient.IsConnected">
            <summary>
            Is the pipe client currently connected?
            </summary>
        </member>
        <member name="P:DiscordRPC.IO.INamedPipeClient.ConnectedPipe">
            <summary>
            The pipe the client is currently connected too
            </summary>
        </member>
        <member name="M:DiscordRPC.IO.INamedPipeClient.Connect(System.Int32)">
            <summary>
            Attempts to connect to the pipe. If 0-9 is passed to pipe, it should try to only connect to the specified pipe. If -1 is passed, the pipe will find the first available pipe.
            </summary>
            <param name="pipe">If -1 is passed, the pipe will find the first available pipe, otherwise it connects to the pipe that was supplied</param>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.IO.INamedPipeClient.ReadFrame(DiscordRPC.IO.PipeFrame@)">
            <summary>
            Reads a frame if there is one available. Returns false if there is none. This should be non blocking (aka use a Peek first).
            </summary>
            <param name="frame">The frame that has been read. Will be <code>default(PipeFrame)</code> if it fails to read</param>
            <returns>Returns true if a frame has been read, otherwise false.</returns>
        </member>
        <member name="M:DiscordRPC.IO.INamedPipeClient.WriteFrame(DiscordRPC.IO.PipeFrame)">
            <summary>
            Writes the frame to the pipe. Returns false if any errors occur.
            </summary>
            <param name="frame">The frame to be written</param>
        </member>
        <member name="M:DiscordRPC.IO.INamedPipeClient.Close">
            <summary>
            Closes the connection
            </summary>
        </member>
        <member name="T:DiscordRPC.IO.ManagedNamedPipeClient">
            <summary>
            A named pipe client using the .NET framework <see cref="T:System.IO.Pipes.NamedPipeClientStream"/>
            </summary>
        </member>
        <member name="F:DiscordRPC.IO.ManagedNamedPipeClient.PIPE_NAME">
            <summary>
            Name format of the pipe
            </summary>
        </member>
        <member name="P:DiscordRPC.IO.ManagedNamedPipeClient.Logger">
            <summary>
            The logger for the Pipe client to use
            </summary>
        </member>
        <member name="P:DiscordRPC.IO.ManagedNamedPipeClient.IsConnected">
            <summary>
            Checks if the client is connected
            </summary>
        </member>
        <member name="P:DiscordRPC.IO.ManagedNamedPipeClient.ConnectedPipe">
            <summary>
            The pipe we are currently connected too.
            </summary>
        </member>
        <member name="M:DiscordRPC.IO.ManagedNamedPipeClient.#ctor">
            <summary>
            Creates a new instance of a Managed NamedPipe client. Doesn't connect to anything yet, just setups the values.
            </summary>
        </member>
        <member name="M:DiscordRPC.IO.ManagedNamedPipeClient.Connect(System.Int32)">
            <summary>
            Connects to the pipe
            </summary>
            <param name="pipe"></param>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.IO.ManagedNamedPipeClient.AttemptConnection(System.Int32,System.Boolean)">
            <summary>
            Attempts a new connection
            </summary>
            <param name="pipe">The pipe number to connect too.</param>
            <param name="isSandbox">Should the connection to a sandbox be attempted?</param>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.IO.ManagedNamedPipeClient.BeginReadStream">
            <summary>
            Starts a read. Can be executed in another thread.
            </summary>
        </member>
        <member name="M:DiscordRPC.IO.ManagedNamedPipeClient.EndReadStream(System.IAsyncResult)">
            <summary>
            Ends a read. Can be executed in another thread.
            </summary>
            <param name="callback"></param>
        </member>
        <member name="M:DiscordRPC.IO.ManagedNamedPipeClient.ReadFrame(DiscordRPC.IO.PipeFrame@)">
            <summary>
            Reads a frame, returning false if none are available
            </summary>
            <param name="frame"></param>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.IO.ManagedNamedPipeClient.WriteFrame(DiscordRPC.IO.PipeFrame)">
            <summary>
            Writes a frame to the pipe
            </summary>
            <param name="frame"></param>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.IO.ManagedNamedPipeClient.Close">
            <summary>
            Closes the pipe
            </summary>
        </member>
        <member name="M:DiscordRPC.IO.ManagedNamedPipeClient.Dispose">
            <summary>
            Disposes of the stream
            </summary>
        </member>
        <member name="M:DiscordRPC.IO.ManagedNamedPipeClient.GetPipeName(System.Int32,System.String)">
            <summary>
            Returns a platform specific path that Discord is hosting the IPC on.
            </summary>
            <param name="pipe">The pipe number.</param>
            <param name="sandbox">The sandbox environment the pipe is in</param>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.IO.ManagedNamedPipeClient.GetPipeName(System.Int32)">
            <summary>
            returns a platform specific path that Discord is hosting the IPC on.
            </summary>
            <param name="pipe">The pipe number</param>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.IO.ManagedNamedPipeClient.GetPipeSandbox">
            <summary>
            Gets the name of the possible sandbox environment the pipe might be located within. If the platform doesn't support sandboxed Discord, then it will return null.
            </summary>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.IO.ManagedNamedPipeClient.GetTemporaryDirectory">
            <summary>
            Gets the temporary path for the current environment. Only applicable for UNIX based systems.
            </summary>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.IO.ManagedNamedPipeClient.IsUnix">
            <summary>
            Returns true if the current OS platform is Unix based (Unix or MacOSX).
            </summary>
            <returns></returns>
        </member>
        <member name="T:DiscordRPC.IO.Opcode">
            <summary>
            The operation code that the <see cref="T:DiscordRPC.IO.PipeFrame"/> was sent under. This defines the type of frame and the data to expect.
            </summary>
        </member>
        <member name="F:DiscordRPC.IO.Opcode.Handshake">
            <summary>
            Initial handshake frame
            </summary>
        </member>
        <member name="F:DiscordRPC.IO.Opcode.Frame">
            <summary>
            Generic message frame
            </summary>
        </member>
        <member name="F:DiscordRPC.IO.Opcode.Close">
            <summary>
            Discord has closed the connection
            </summary>
        </member>
        <member name="F:DiscordRPC.IO.Opcode.Ping">
            <summary>
            Ping frame (not used?)
            </summary>
        </member>
        <member name="F:DiscordRPC.IO.Opcode.Pong">
            <summary>
            Pong frame (not used?)
            </summary>
        </member>
        <member name="T:DiscordRPC.IO.PipeFrame">
            <summary>
            A frame received and sent to the Discord client for RPC communications.
            </summary>
        </member>
        <member name="F:DiscordRPC.IO.PipeFrame.MAX_SIZE">
            <summary>
            The maxium size of a pipe frame (16kb).
            </summary>
        </member>
        <member name="P:DiscordRPC.IO.PipeFrame.Opcode">
            <summary>
            The opcode of the frame
            </summary>
        </member>
        <member name="P:DiscordRPC.IO.PipeFrame.Length">
            <summary>
            The length of the frame data
            </summary>
        </member>
        <member name="P:DiscordRPC.IO.PipeFrame.Data">
            <summary>
            The data in the frame
            </summary>
        </member>
        <member name="P:DiscordRPC.IO.PipeFrame.Message">
            <summary>
            The data represented as a string.
            </summary>
        </member>
        <member name="M:DiscordRPC.IO.PipeFrame.#ctor(DiscordRPC.IO.Opcode,System.Object)">
            <summary>
            Creates a new pipe frame instance
            </summary>
            <param name="opcode">The opcode of the frame</param>
            <param name="data">The data of the frame that will be serialized as JSON</param>
        </member>
        <member name="P:DiscordRPC.IO.PipeFrame.MessageEncoding">
            <summary>
            Gets the encoding used for the pipe frames
            </summary>
        </member>
        <member name="M:DiscordRPC.IO.PipeFrame.SetMessage(System.String)">
            <summary>
            Sets the data based of a string
            </summary>
            <param name="str"></param>
        </member>
        <member name="M:DiscordRPC.IO.PipeFrame.GetMessage">
            <summary>
            Gets a string based of the data
            </summary>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.IO.PipeFrame.SetObject(System.Object)">
            <summary>
            Serializes the object into json string then encodes it into <see cref="P:DiscordRPC.IO.PipeFrame.Data"/>.
            </summary>
            <param name="obj"></param>
        </member>
        <member name="M:DiscordRPC.IO.PipeFrame.SetObject(DiscordRPC.IO.Opcode,System.Object)">
            <summary>
            Sets the opcodes and serializes the object into a json string.
            </summary>
            <param name="opcode"></param>
            <param name="obj"></param>
        </member>
        <member name="M:DiscordRPC.IO.PipeFrame.GetObject``1">
            <summary>
            Deserializes the data into the supplied type using JSON.
            </summary>
            <typeparam name="T">The type to deserialize into</typeparam>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.IO.PipeFrame.ReadStream(System.IO.Stream)">
            <summary>
            Attempts to read the contents of the frame from the stream
            </summary>
            <param name="stream"></param>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.IO.PipeFrame.Min(System.Int32,System.UInt32)">
            <summary>
            Returns minimum value between a int and a unsigned int
            </summary>
        </member>
        <member name="M:DiscordRPC.IO.PipeFrame.TryReadUInt32(System.IO.Stream,System.UInt32@)">
            <summary>
            Attempts to read a UInt32
            </summary>
            <param name="stream"></param>
            <param name="value"></param>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.IO.PipeFrame.WriteStream(System.IO.Stream)">
            <summary>
            Writes the frame into the target frame as one big byte block.
            </summary>
            <param name="stream"></param>
        </member>
        <member name="M:DiscordRPC.IO.PipeFrame.Equals(DiscordRPC.IO.PipeFrame)">
            <summary>
            Compares if the frame equals the other frame.
            </summary>
            <param name="other"></param>
            <returns></returns>
        </member>
        <member name="T:DiscordRPC.Logging.ConsoleLogger">
            <summary>
            Logs the outputs to the console using <see cref="M:System.Console.WriteLine"/>
            </summary>
        </member>
        <member name="P:DiscordRPC.Logging.ConsoleLogger.Level">
            <summary>
            The level of logging to apply to this logger.
            </summary>
        </member>
        <member name="P:DiscordRPC.Logging.ConsoleLogger.Coloured">
            <summary>
            Should the output be coloured?
            </summary>
        </member>
        <member name="P:DiscordRPC.Logging.ConsoleLogger.Colored">
            <summary>
            A alias too <see cref="P:DiscordRPC.Logging.ConsoleLogger.Coloured"/>
            </summary>
        </member>
        <member name="M:DiscordRPC.Logging.ConsoleLogger.#ctor">
            <summary>
            Creates a new instance of a Console Logger.
            </summary>
        </member>
        <member name="M:DiscordRPC.Logging.ConsoleLogger.#ctor(DiscordRPC.Logging.LogLevel)">
            <summary>
            Creates a new instance of a Console Logger
            </summary>
            <param name="level">The log level</param>
        </member>
        <member name="M:DiscordRPC.Logging.ConsoleLogger.#ctor(DiscordRPC.Logging.LogLevel,System.Boolean)">
            <summary>
            Creates a new instance of a Console Logger with a set log level
            </summary>
            <param name="level">The log level</param>
            <param name="coloured">Should the logs be in colour?</param>
        </member>
        <member name="M:DiscordRPC.Logging.ConsoleLogger.Trace(System.String,System.Object[])">
            <summary>
            Informative log messages
            </summary>
            <param name="message"></param>
            <param name="args"></param>
        </member>
        <member name="M:DiscordRPC.Logging.ConsoleLogger.Info(System.String,System.Object[])">
            <summary>
            Informative log messages
            </summary>
            <param name="message"></param>
            <param name="args"></param>
        </member>
        <member name="M:DiscordRPC.Logging.ConsoleLogger.Warning(System.String,System.Object[])">
            <summary>
            Warning log messages
            </summary>
            <param name="message"></param>
            <param name="args"></param>
        </member>
        <member name="M:DiscordRPC.Logging.ConsoleLogger.Error(System.String,System.Object[])">
            <summary>
            Error log messsages
            </summary>
            <param name="message"></param>
            <param name="args"></param>
        </member>
        <member name="T:DiscordRPC.Logging.FileLogger">
            <summary>
            Logs the outputs to a file
            </summary>
        </member>
        <member name="P:DiscordRPC.Logging.FileLogger.Level">
            <summary>
            The level of logging to apply to this logger.
            </summary>
        </member>
        <member name="P:DiscordRPC.Logging.FileLogger.File">
            <summary>
            Should the output be coloured?
            </summary>
        </member>
        <member name="M:DiscordRPC.Logging.FileLogger.#ctor(System.String)">
            <summary>
            Creates a new instance of the file logger
            </summary>
            <param name="path">The path of the log file.</param>
        </member>
        <member name="M:DiscordRPC.Logging.FileLogger.#ctor(System.String,DiscordRPC.Logging.LogLevel)">
            <summary>
            Creates a new instance of the file logger
            </summary>
            <param name="path">The path of the log file.</param>
            <param name="level">The level to assign to the logger.</param>
        </member>
        <member name="M:DiscordRPC.Logging.FileLogger.Trace(System.String,System.Object[])">
            <summary>
            Informative log messages
            </summary>
            <param name="message"></param>
            <param name="args"></param>
        </member>
        <member name="M:DiscordRPC.Logging.FileLogger.Info(System.String,System.Object[])">
            <summary>
            Informative log messages
            </summary>
            <param name="message"></param>
            <param name="args"></param>
        </member>
        <member name="M:DiscordRPC.Logging.FileLogger.Warning(System.String,System.Object[])">
            <summary>
            Warning log messages
            </summary>
            <param name="message"></param>
            <param name="args"></param>
        </member>
        <member name="M:DiscordRPC.Logging.FileLogger.Error(System.String,System.Object[])">
            <summary>
            Error log messsages
            </summary>
            <param name="message"></param>
            <param name="args"></param>
        </member>
        <member name="T:DiscordRPC.Logging.ILogger">
            <summary>
            Logging interface to log the internal states of the pipe. Logs are sent in a NON thread safe way. They can come from multiple threads and it is upto the ILogger to account for it.
            </summary>
        </member>
        <member name="P:DiscordRPC.Logging.ILogger.Level">
            <summary>
            The level of logging to apply to this logger.
            </summary>
        </member>
        <member name="M:DiscordRPC.Logging.ILogger.Trace(System.String,System.Object[])">
            <summary>
            Debug trace messeages used for debugging internal elements.
            </summary>
            <param name="message"></param>
            <param name="args"></param>
        </member>
        <member name="M:DiscordRPC.Logging.ILogger.Info(System.String,System.Object[])">
            <summary>
            Informative log messages
            </summary>
            <param name="message"></param>
            <param name="args"></param>
        </member>
        <member name="M:DiscordRPC.Logging.ILogger.Warning(System.String,System.Object[])">
            <summary>
            Warning log messages
            </summary>
            <param name="message"></param>
            <param name="args"></param>
        </member>
        <member name="M:DiscordRPC.Logging.ILogger.Error(System.String,System.Object[])">
            <summary>
            Error log messsages
            </summary>
            <param name="message"></param>
            <param name="args"></param>
        </member>
        <member name="T:DiscordRPC.Logging.LogLevel">
            <summary>
            Level of logging to use.
            </summary>
        </member>
        <member name="F:DiscordRPC.Logging.LogLevel.Trace">
            <summary>
            Trace, Info, Warning and Errors are logged
            </summary>
        </member>
        <member name="F:DiscordRPC.Logging.LogLevel.Info">
            <summary>
            Info, Warning and Errors are logged
            </summary>
        </member>
        <member name="F:DiscordRPC.Logging.LogLevel.Warning">
            <summary>
            Warning and Errors are logged
            </summary>
        </member>
        <member name="F:DiscordRPC.Logging.LogLevel.Error">
            <summary>
            Only Errors are logged
            </summary>
        </member>
        <member name="F:DiscordRPC.Logging.LogLevel.None">
            <summary>
            Nothing is logged
            </summary>
        </member>
        <member name="T:DiscordRPC.Logging.NullLogger">
            <summary>
            Ignores all log events
            </summary>
        </member>
        <member name="P:DiscordRPC.Logging.NullLogger.Level">
            <summary>
            The level of logging to apply to this logger.
            </summary>
        </member>
        <member name="M:DiscordRPC.Logging.NullLogger.Trace(System.String,System.Object[])">
            <summary>
            Informative log messages
            </summary>
            <param name="message"></param>
            <param name="args"></param>
        </member>
        <member name="M:DiscordRPC.Logging.NullLogger.Info(System.String,System.Object[])">
            <summary>
            Informative log messages
            </summary>
            <param name="message"></param>
            <param name="args"></param>
        </member>
        <member name="M:DiscordRPC.Logging.NullLogger.Warning(System.String,System.Object[])">
            <summary>
            Warning log messages
            </summary>
            <param name="message"></param>
            <param name="args"></param>
        </member>
        <member name="M:DiscordRPC.Logging.NullLogger.Error(System.String,System.Object[])">
            <summary>
            Error log messsages
            </summary>
            <param name="message"></param>
            <param name="args"></param>
        </member>
        <member name="T:DiscordRPC.Message.CloseMessage">
            <summary>
            Called when the IPC has closed.
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.CloseMessage.Type">
            <summary>
            The type of message
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.CloseMessage.Reason">
            <summary>
            The reason for the close
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.CloseMessage.Code">
            <summary>
            The closure code
            </summary>
        </member>
        <member name="T:DiscordRPC.Message.ConnectionEstablishedMessage">
            <summary>
            The connection to the discord client was succesfull. This is called before <see cref="F:DiscordRPC.Message.MessageType.Ready"/>.
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.ConnectionEstablishedMessage.Type">
            <summary>
            The type of message received from discord
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.ConnectionEstablishedMessage.ConnectedPipe">
            <summary>
            The pipe we ended up connecting too
            </summary>
        </member>
        <member name="T:DiscordRPC.Message.ConnectionFailedMessage">
            <summary>
            Failed to establish any connection with discord. Discord is potentially not running?
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.ConnectionFailedMessage.Type">
            <summary>
            The type of message received from discord
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.ConnectionFailedMessage.FailedPipe">
            <summary>
            The pipe we failed to connect too.
            </summary>
        </member>
        <member name="T:DiscordRPC.Message.ErrorMessage">
            <summary>
            Created when a error occurs within the ipc and it is sent to the client.
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.ErrorMessage.Type">
            <summary>
            The type of message received from discord
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.ErrorMessage.Code">
            <summary>
            The Discord error code.
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.ErrorMessage.Message">
            <summary>
            The message associated with the error code.
            </summary>
        </member>
        <member name="T:DiscordRPC.Message.ErrorCode">
            <summary>
            The error message received by discord. See https://discordapp.com/developers/docs/topics/rpc#rpc-server-payloads-rpc-errors for documentation
            </summary>
        </member>
        <member name="F:DiscordRPC.Message.ErrorCode.Success">
            <summary> Pipe was Successful </summary>
        </member>
        <member name="F:DiscordRPC.Message.ErrorCode.PipeException">
            <summary>The pipe had an exception</summary>
        </member>
        <member name="F:DiscordRPC.Message.ErrorCode.ReadCorrupt">
            <summary>The pipe received corrupted data</summary>
        </member>
        <member name="F:DiscordRPC.Message.ErrorCode.NotImplemented">
            <summary>The functionality was not yet implemented</summary>
        </member>
        <member name="F:DiscordRPC.Message.ErrorCode.UnkownError">
            <summary>Unkown Discord error</summary>
        </member>
        <member name="F:DiscordRPC.Message.ErrorCode.InvalidPayload">
            <summary>Invalid Payload received</summary>
        </member>
        <member name="F:DiscordRPC.Message.ErrorCode.InvalidCommand">
            <summary>Invalid command was sent</summary>
        </member>
        <member name="F:DiscordRPC.Message.ErrorCode.InvalidEvent">
            <summary>Invalid event was sent </summary>
        </member>
        <member name="T:DiscordRPC.Message.IMessage">
            <summary>
            Messages received from discord.
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.IMessage.Type">
            <summary>
            The type of message received from discord
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.IMessage.TimeCreated">
            <summary>
            The time the message was created
            </summary>
        </member>
        <member name="M:DiscordRPC.Message.IMessage.#ctor">
            <summary>
            Creates a new instance of the message
            </summary>
        </member>
        <member name="T:DiscordRPC.Message.JoinMessage">
            <summary>
            Called when the Discord Client wishes for this process to join a game. D -> C.
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.JoinMessage.Type">
            <summary>
            The type of message received from discord
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.JoinMessage.Secret">
            <summary>
            The <see cref="P:DiscordRPC.Secrets.JoinSecret" /> to connect with. 
            </summary>
        </member>
        <member name="T:DiscordRPC.Message.JoinRequestMessage">
            <summary>
            Called when some other person has requested access to this game. C -> D -> C.
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.JoinRequestMessage.Type">
            <summary>
            The type of message received from discord
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.JoinRequestMessage.User">
            <summary>
            The discord user that is requesting access.
            </summary>
        </member>
        <member name="T:DiscordRPC.Message.MessageType">
            <summary>
            Type of message.
            </summary>
        </member>
        <member name="F:DiscordRPC.Message.MessageType.Ready">
            <summary>
            The Discord Client is ready to send and receive messages.
            </summary>
        </member>
        <member name="F:DiscordRPC.Message.MessageType.Close">
            <summary>
            The connection to the Discord Client is lost. The connection will remain close and unready to accept messages until the Ready event is called again.
            </summary>
        </member>
        <member name="F:DiscordRPC.Message.MessageType.Error">
            <summary>
            A error has occured during the transmission of a message. For example, if a bad Rich Presence payload is sent, this event will be called explaining what went wrong.
            </summary>
        </member>
        <member name="F:DiscordRPC.Message.MessageType.PresenceUpdate">
            <summary>
            The Discord Client has updated the presence.
            </summary>
        </member>
        <member name="F:DiscordRPC.Message.MessageType.Subscribe">
            <summary>
            The Discord Client has subscribed to an event.
            </summary>
        </member>
        <member name="F:DiscordRPC.Message.MessageType.Unsubscribe">
            <summary>
            The Discord Client has unsubscribed from an event.
            </summary>
        </member>
        <member name="F:DiscordRPC.Message.MessageType.Join">
            <summary>
            The Discord Client wishes for this process to join a game.
            </summary>
        </member>
        <member name="F:DiscordRPC.Message.MessageType.Spectate">
            <summary>
            The Discord Client wishes for this process to spectate a game. 
            </summary>
        </member>
        <member name="F:DiscordRPC.Message.MessageType.JoinRequest">
            <summary>
            Another discord user requests permission to join this game.
            </summary>
        </member>
        <member name="F:DiscordRPC.Message.MessageType.ConnectionEstablished">
            <summary>
            The connection to the discord client was succesfull. This is called before <see cref="F:DiscordRPC.Message.MessageType.Ready"/>.
            </summary>
        </member>
        <member name="F:DiscordRPC.Message.MessageType.ConnectionFailed">
            <summary>
            Failed to establish any connection with discord. Discord is potentially not running?
            </summary>
        </member>
        <member name="T:DiscordRPC.Message.PresenceMessage">
            <summary>
            Representation of the message received by discord when the presence has been updated.
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.PresenceMessage.Type">
            <summary>
            The type of message received from discord
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.PresenceMessage.Presence">
            <summary>
            The rich presence Discord has set
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.PresenceMessage.Name">
            <summary>
            The name of the application Discord has set it for
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.PresenceMessage.ApplicationID">
            <summary>
            The ID of the application discord has set it for
            </summary>
        </member>
        <member name="T:DiscordRPC.Message.ReadyMessage">
            <summary>
            Called when the ipc is ready to send arguments.
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.ReadyMessage.Type">
            <summary>
            The type of message received from discord
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.ReadyMessage.Configuration">
            <summary>
            The configuration of the connection
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.ReadyMessage.User">
            <summary>
            User the connection belongs too
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.ReadyMessage.Version">
            <summary>
            The version of the RPC
            </summary>
        </member>
        <member name="T:DiscordRPC.Message.SpectateMessage">
            <summary>
            Called when the Discord Client wishes for this process to spectate a game. D -> C. 
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.SpectateMessage.Type">
            <summary>
            The type of message received from discord
            </summary>
        </member>
        <member name="T:DiscordRPC.Message.SubscribeMessage">
            <summary>
            Called as validation of a subscribe
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.SubscribeMessage.Type">
            <summary>
            The type of message received from discord
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.SubscribeMessage.Event">
            <summary>
            The event that was subscribed too.
            </summary>
        </member>
        <member name="T:DiscordRPC.Message.UnsubscribeMessage">
            <summary>
            Called as validation of a subscribe
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.UnsubscribeMessage.Type">
            <summary>
            The type of message received from discord
            </summary>
        </member>
        <member name="P:DiscordRPC.Message.UnsubscribeMessage.Event">
            <summary>
            The event that was subscribed too.
            </summary>
        </member>
        <member name="M:DiscordRPC.Registry.IUriSchemeCreator.RegisterUriScheme(DiscordRPC.Registry.UriSchemeRegister)">
            <summary>
            Registers the URI scheme. If Steam ID is passed, the application will be launched through steam instead of directly.
            <para>Additional arguments can be supplied if required.</para>
            </summary>
            <param name="register">The register context.</param>
        </member>
        <member name="P:DiscordRPC.Registry.UriSchemeRegister.ApplicationID">
            <summary>
            The ID of the Discord App to register
            </summary>
        </member>
        <member name="P:DiscordRPC.Registry.UriSchemeRegister.SteamAppID">
            <summary>
            Optional Steam App ID to register. If given a value, then the game will launch through steam instead of Discord.
            </summary>
        </member>
        <member name="P:DiscordRPC.Registry.UriSchemeRegister.UsingSteamApp">
            <summary>
            Is this register using steam?
            </summary>
        </member>
        <member name="P:DiscordRPC.Registry.UriSchemeRegister.ExecutablePath">
            <summary>
            The full executable path of the application.
            </summary>
        </member>
        <member name="M:DiscordRPC.Registry.UriSchemeRegister.RegisterUriScheme">
            <summary>
            Registers the URI scheme, using the correct creator for the correct platform
            </summary>
        </member>
        <member name="M:DiscordRPC.Registry.UriSchemeRegister.GetApplicationLocation">
            <summary>
            Gets the FileName for the currently executing application
            </summary>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.Registry.WindowsUriSchemeCreator.CreateUriScheme(System.String,System.String,System.String,System.String)">
            <summary>
            Creates the actual scheme
            </summary>
            <param name="scheme"></param>
            <param name="friendlyName"></param>
            <param name="defaultIcon"></param>
            <param name="command"></param>
        </member>
        <member name="M:DiscordRPC.Registry.WindowsUriSchemeCreator.GetSteamLocation">
            <summary>
            Gets the current location of the steam client
            </summary>
            <returns></returns>
        </member>
        <member name="T:DiscordRPC.BaseRichPresence">
            <summary>
            The base rich presence structure
            </summary>
        </member>
        <member name="P:DiscordRPC.BaseRichPresence.State">
            <summary>
            The user's current <see cref="P:DiscordRPC.BaseRichPresence.Party"/> status. For example, "Playing Solo" or "With Friends".
            <para>Max 128 bytes</para>
            </summary>
        </member>
        <member name="F:DiscordRPC.BaseRichPresence._state">
            <summary>Inernal inner state string</summary>
        </member>
        <member name="P:DiscordRPC.BaseRichPresence.Details">
            <summary>
            What the user is currently doing. For example, "Competitive - Total Mayhem".
            <para>Max 128 bytes</para>
            </summary>
        </member>
        <member name="F:DiscordRPC.BaseRichPresence._details">
            <summary>Inernal inner detail string</summary>
        </member>
        <member name="P:DiscordRPC.BaseRichPresence.Timestamps">
            <summary>
            The time elapsed / remaining time data.
            </summary>
        </member>
        <member name="P:DiscordRPC.BaseRichPresence.Assets">
            <summary>
            The names of the images to use and the tooltips to give those images.
            </summary>
        </member>
        <member name="P:DiscordRPC.BaseRichPresence.Party">
            <summary>
            The party the player is currently in. The <see cref="P:DiscordRPC.Party.ID"/> must be set for this to be included in the RichPresence update.
            </summary>
        </member>
        <member name="P:DiscordRPC.BaseRichPresence.Secrets">
            <summary>
            The secrets used for Join / Spectate. Secrets are obfuscated data of your choosing. They could be match ids, player ids, lobby ids, etc. Make this object null if you do not wish too / unable too implement the Join / Request feature.
            <para>To keep security on the up and up, Discord requires that you properly hash/encode/encrypt/put-a-padlock-on-and-swallow-the-key-but-wait-then-how-would-you-open-it your secrets.</para>
            <para>Visit the <see href="https://discordapp.com/developers/docs/rich-presence/how-to#secrets">Rich Presence How-To</see> for more information.</para>
            </summary>
        </member>
        <member name="P:DiscordRPC.BaseRichPresence.Instance">
            <summary>
            Marks the <see cref="P:DiscordRPC.Secrets.MatchSecret"/> as a game session with a specific beginning and end. It was going to be used as a form of notification, but was replaced with the join feature. It may potentially have use in the future, but it currently has no use.
            <para>
            "TLDR it marks the matchSecret field as an instance, that is to say a context in game that’s not like a lobby state/not in game state. It was gonna he used for notify me, but we scrapped that for ask to join. We may put it to another use in the future. For now, don’t worry about it" - Mason (Discord API Server 14 / 03 / 2018)
               </para>
            </summary>
        </member>
        <member name="M:DiscordRPC.BaseRichPresence.HasTimestamps">
            <summary>
            Does the Rich Presence have valid timestamps?
            </summary>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.BaseRichPresence.HasAssets">
            <summary>
            Does the Rich Presence have valid assets?
            </summary>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.BaseRichPresence.HasParty">
            <summary>
            Does the Rich Presence have a valid party?
            </summary>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.BaseRichPresence.HasSecrets">
            <summary>
            Does the Rich Presence have valid secrets?
            </summary>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.BaseRichPresence.ValidateString(System.String,System.String@,System.Int32,System.Text.Encoding)">
            <summary>
            Attempts to call <see cref="M:DiscordRPC.Helper.StringTools.GetNullOrString(System.String)"/> on the string and return the result, if its within a valid length.
            </summary>
            <param name="str">The string to check</param>
            <param name="result">The formatted string result</param>
            <param name="bytes">The maximum number of bytes the string can take up</param>
            <param name="encoding">The encoding to count the bytes with</param>
            <returns>True if the string fits within the number of bytes</returns>
        </member>
        <member name="M:DiscordRPC.BaseRichPresence.op_Implicit(DiscordRPC.BaseRichPresence)~System.Boolean">
            <summary>
            Operator that converts a presence into a boolean for null checks.
            </summary>
            <param name="presesnce"></param>
        </member>
        <member name="M:DiscordRPC.BaseRichPresence.Matches(DiscordRPC.RichPresence)">
            <summary>
            Checks if the other rich presence differs from the current one
            </summary>
            <param name="other"></param>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.BaseRichPresence.ToRichPresence">
            <summary>
            Converts this BaseRichPresence to RichPresence
            </summary>
            <returns></returns>
        </member>
        <member name="T:DiscordRPC.Secrets">
            <summary>
            The secrets used for Join / Spectate. Secrets are obfuscated data of your choosing. They could be match ids, player ids, lobby ids, etc.
            <para>To keep security on the up and up, Discord requires that you properly hash/encode/encrypt/put-a-padlock-on-and-swallow-the-key-but-wait-then-how-would-you-open-it your secrets.</para>
            <para>You should send discord data that someone else's game client would need to join or spectate their friend. If you can't or don't want to support those actions, you don't need to send secrets.</para>
            <para>Visit the <see href="https://discordapp.com/developers/docs/rich-presence/how-to#secrets">Rich Presence How-To</see> for more information.</para>
            </summary>
        </member>
        <member name="P:DiscordRPC.Secrets.MatchSecret">
            <summary>
            The unique match code to distinguish different games/lobbies. Use <see cref="M:DiscordRPC.Secrets.CreateSecret(System.Random)"/> to get an appropriately sized secret. 
            <para>This cannot be null and must be supplied for the  Join / Spectate feature to work.</para>
            <para>Max Length of 128 Bytes</para>
            </summary>
        </member>
        <member name="P:DiscordRPC.Secrets.JoinSecret">
            <summary>
            The secret data that will tell the client how to connect to the game to play. This could be a unique identifier for a fancy match maker or player id, lobby id, etc.
            <para>It is recommended to encrypt this information so its hard for people to replicate it. 
            Do <b>NOT</b> just use the IP address in this. That is a bad practice and can leave your players vulnerable!
            </para>
            <para>Max Length of 128 Bytes</para>
            </summary>
        </member>
        <member name="P:DiscordRPC.Secrets.SpectateSecret">
            <summary>
            The secret data that will tell the client how to connect to the game to spectate. This could be a unique identifier for a fancy match maker or player id, lobby id, etc.
            <para>It is recommended to encrypt this information so its hard for people to replicate it. 
            Do <b>NOT</b> just use the IP address in this. That is a bad practice and can leave your players vulnerable!
            </para>
            <para>Max Length of 128 Bytes</para>
            </summary>
        </member>
        <member name="P:DiscordRPC.Secrets.Encoding">
            <summary>
            The encoding the secret generator is using
            </summary>
        </member>
        <member name="P:DiscordRPC.Secrets.SecretLength">
            <summary>
            The length of a secret in bytes.
            </summary>
        </member>
        <member name="M:DiscordRPC.Secrets.CreateSecret(System.Random)">
            <summary>
            Creates a new secret. This is NOT a cryptographic function and should NOT be used for sensitive information. This is mainly provided as a way to generate quick IDs.
            </summary>
            <param name="random">The random to use</param>
            <returns>Returns a <see cref="P:DiscordRPC.Secrets.SecretLength"/> sized string with random characters from <see cref="P:DiscordRPC.Secrets.Encoding"/></returns>
        </member>
        <member name="M:DiscordRPC.Secrets.CreateFriendlySecret(System.Random)">
            <summary>
            Creates a secret word using more readable friendly characters. Useful for debugging purposes. This is not a cryptographic function and should NOT be used for sensitive information.
            </summary>
            <param name="random">The random used to generate the characters</param>
            <returns></returns>
        </member>
        <member name="T:DiscordRPC.Assets">
            <summary>
            Information about the pictures used in the Rich Presence.
            </summary>
        </member>
        <member name="P:DiscordRPC.Assets.LargeImageKey">
            <summary>
            Name of the uploaded image for the large profile artwork.
            <para>Max 256 Bytes.</para>
            </summary>
            <remarks>Allows URL to directly link to images.</remarks>
        </member>
        <member name="P:DiscordRPC.Assets.IsLargeImageKeyExternal">
            <summary>
            Gets if the large square image is from an external link
            </summary>
        </member>
        <member name="P:DiscordRPC.Assets.LargeImageText">
            <summary>
            The tooltip for the large square image. For example, "Summoners Rift" or "Horizon Lunar Colony".
            <para>Max 128 Bytes.</para>
            </summary>
        </member>
        <member name="P:DiscordRPC.Assets.SmallImageKey">
            <summary>
            Name of the uploaded image for the small profile artwork.
            <para>Max 256 Bytes.</para>
            </summary>
            <remarks>Allows URL to directly link to images.</remarks>
        </member>
        <member name="P:DiscordRPC.Assets.IsSmallImageKeyExternal">
            <summary>
            Gets if the small profile artwork is from an external link
            </summary>
        </member>
        <member name="P:DiscordRPC.Assets.SmallImageText">
            <summary>
            The tooltip for the small circle image. For example, "LvL 6" or "Ultimate 85%".
            <para>Max 128 Bytes.</para>
            </summary>
        </member>
        <member name="P:DiscordRPC.Assets.LargeImageID">
            <summary>
            The ID of the large image. This is only set after Update Presence and will automatically become null when <see cref="P:DiscordRPC.Assets.LargeImageKey"/> is changed.
            </summary>
        </member>
        <member name="P:DiscordRPC.Assets.SmallImageID">
            <summary>
            The ID of the small image. This is only set after Update Presence and will automatically become null when <see cref="P:DiscordRPC.Assets.SmallImageKey"/> is changed.
            </summary>
        </member>
        <member name="M:DiscordRPC.Assets.Merge(DiscordRPC.Assets)">
            <summary>
            Merges this asset with the other, taking into account for ID's instead of keys.
            </summary>
            <param name="other"></param>
        </member>
        <member name="T:DiscordRPC.Timestamps">
            <summary>
            Structure representing the start and endtimes of a match.
            </summary>
        </member>
        <member name="P:DiscordRPC.Timestamps.Now">
            <summary>A new timestamp that starts from the current time.</summary>
        </member>
        <member name="M:DiscordRPC.Timestamps.FromTimeSpan(System.Double)">
            <summary>
            Creates a new timestamp starting at the current time and ending in the supplied timespan
            </summary>
            <param name="seconds">How long the Timestamp will last for in seconds.</param>
            <returns>Returns a new timestamp with given duration.</returns>
        </member>
        <member name="M:DiscordRPC.Timestamps.FromTimeSpan(System.TimeSpan)">
            <summary>
            Creates a new timestamp starting at current time and ending in the supplied timespan
            </summary>
            <param name="timespan">How long the Timestamp will last for.</param>
            <returns>Returns a new timestamp with given duration.</returns>
        </member>
        <member name="P:DiscordRPC.Timestamps.Start">
            <summary>
            The time that match started. When included (not-null), the time in the rich presence will be shown as "00:01 elapsed".
            </summary>
        </member>
        <member name="P:DiscordRPC.Timestamps.End">
            <summary>
            The time the match will end. When included (not-null), the time in the rich presence will be shown as "00:01 remaining". This will override the "elapsed" to "remaining".
            </summary>
        </member>
        <member name="M:DiscordRPC.Timestamps.#ctor">
            <summary>
            Creates a empty timestamp object
            </summary>
        </member>
        <member name="M:DiscordRPC.Timestamps.#ctor(System.DateTime)">
            <summary>
            Creates a timestamp with the set start time
            </summary>
            <param name="start"></param>
        </member>
        <member name="M:DiscordRPC.Timestamps.#ctor(System.DateTime,System.DateTime)">
            <summary>
            Creates a timestamp with a set duration
            </summary>
            <param name="start">The start time</param>
            <param name="end">The end time</param>
        </member>
        <member name="P:DiscordRPC.Timestamps.StartUnixMilliseconds">
            <summary>
            Converts between DateTime and Milliseconds to give the Unix Epoch Time for the <see cref="P:DiscordRPC.Timestamps.Start"/>.
            </summary>
        </member>
        <member name="P:DiscordRPC.Timestamps.EndUnixMilliseconds">
            <summary>
            Converts between DateTime and Milliseconds to give the Unix Epoch Time  for the <see cref="P:DiscordRPC.Timestamps.End"/>.
            <seealso cref="P:DiscordRPC.Timestamps.End"/>
            </summary>
        </member>
        <member name="M:DiscordRPC.Timestamps.FromUnixMilliseconds(System.UInt64)">
            <summary>
            Converts a Unix Epoch time into a <see cref="T:System.DateTime"/>.
            </summary>
            <param name="unixTime">The time in milliseconds since 1970 / 01 / 01</param>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.Timestamps.ToUnixMilliseconds(System.DateTime)">
            <summary>
            Converts a <see cref="T:System.DateTime"/> into a Unix Epoch time (in milliseconds).
            </summary>
            <param name="date">The datetime to convert</param>
            <returns></returns>
        </member>
        <member name="T:DiscordRPC.Party">
            <summary>
            Structure representing the part the player is in.
            </summary>
        </member>
        <member name="T:DiscordRPC.Party.PrivacySetting">
            <summary>
            Privacy of the party
            </summary>
        </member>
        <member name="F:DiscordRPC.Party.PrivacySetting.Private">
            <summary>
            The party is private, invites only.
            </summary>
        </member>
        <member name="F:DiscordRPC.Party.PrivacySetting.Public">
            <summary>
            THe party is public, anyone can join.
            </summary>
        </member>
        <member name="P:DiscordRPC.Party.ID">
            <summary>
            A unique ID for the player's current party / lobby / group. If this is not supplied, they player will not be in a party and the rest of the information will not be sent. 
            <para>Max 128 Bytes</para>
            </summary>
        </member>
        <member name="P:DiscordRPC.Party.Size">
            <summary>
            The current size of the players party / lobby / group.
            </summary>
        </member>
        <member name="P:DiscordRPC.Party.Max">
            <summary>
            The maxium size of the party / lobby / group. This is required to be larger than <see cref="P:DiscordRPC.Party.Size"/>. If it is smaller than the current party size, it will automatically be set too <see cref="P:DiscordRPC.Party.Size"/> when the presence is sent.
            </summary>
        </member>
        <member name="P:DiscordRPC.Party.Privacy">
            <summary>
            The privacy of the party
            </summary>
        </member>
        <member name="T:DiscordRPC.Button">
            <summary>
            A Rich Presence button.
            </summary>
        </member>
        <member name="P:DiscordRPC.Button.Label">
            <summary>
            Text shown on the button
            <para>Max 32 bytes.</para>
            </summary>
        </member>
        <member name="P:DiscordRPC.Button.Url">
            <summary>
            The URL opened when clicking the button.
            <para>Max 512 bytes.</para>
            </summary>
        </member>
        <member name="T:DiscordRPC.RichPresence">
            <summary>
            The Rich Presence structure that will be sent and received by Discord. Use this class to build your presence and update it appropriately.
            </summary>
        </member>
        <member name="P:DiscordRPC.RichPresence.Buttons">
            <summary>
            The buttons to display in the presence. 
            <para>Max of 2</para>
            </summary>
        </member>
        <member name="M:DiscordRPC.RichPresence.HasButtons">
            <summary>
            Does the Rich Presence have any buttons?
            </summary>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.RichPresence.WithState(System.String)">
            <summary>
            Sets the state of the Rich Presence. See also <seealso cref="P:DiscordRPC.BaseRichPresence.State"/>.
            </summary>
            <param name="state">The user's current <see cref="T:DiscordRPC.Party"/> status.</param>
            <returns>The modified Rich Presence.</returns>
        </member>
        <member name="M:DiscordRPC.RichPresence.WithDetails(System.String)">
            <summary>
            Sets the details of the Rich Presence. See also <seealso cref="P:DiscordRPC.BaseRichPresence.Details"/>.
            </summary>
            <param name="details">What the user is currently doing.</param>
            <returns>The modified Rich Presence.</returns>
        </member>
        <member name="M:DiscordRPC.RichPresence.WithTimestamps(DiscordRPC.Timestamps)">
            <summary>
            Sets the timestamp of the Rich Presence. See also <seealso cref="T:DiscordRPC.Timestamps"/>.
            </summary>
            <param name="timestamps">The time elapsed / remaining time data.</param>
            <returns>The modified Rich Presence.</returns>
        </member>
        <member name="M:DiscordRPC.RichPresence.WithAssets(DiscordRPC.Assets)">
            <summary>
            Sets the assets of the Rich Presence. See also <seealso cref="T:DiscordRPC.Assets"/>.
            </summary>
            <param name="assets">The names of the images to use and the tooltips to give those images.</param>
            <returns>The modified Rich Presence.</returns>
        </member>
        <member name="M:DiscordRPC.RichPresence.WithParty(DiscordRPC.Party)">
            <summary>
            Sets the Rich Presence's party. See also <seealso cref="T:DiscordRPC.Party"/>.
            </summary>
            <param name="party">The party the player is currently in.</param>
            <returns>The modified Rich Presence.</returns>
        </member>
        <member name="M:DiscordRPC.RichPresence.WithSecrets(DiscordRPC.Secrets)">
            <summary>
            Sets the Rich Presence's secrets. See also <seealso cref="T:DiscordRPC.Secrets"/>.
            </summary>
            <param name="secrets">The secrets used for Join / Spectate.</param>
            <returns>The modified Rich Presence.</returns>
        </member>
        <member name="M:DiscordRPC.RichPresence.Clone">
            <summary>
            Clones the presence into a new instance. Used for thread safe writing and reading. This function will ignore properties if they are in a invalid state.
            </summary>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.RichPresence.Merge(DiscordRPC.BaseRichPresence)">
            <summary>
            Merges the passed presence with this one, taking into account the image key to image id annoyance.
            </summary>
            <param name="presence"></param>
            <returns>self</returns>
        </member>
        <member name="M:DiscordRPC.RichPresence.op_Implicit(DiscordRPC.RichPresence)~System.Boolean">
            <summary>
            Operator that converts a presence into a boolean for null checks.
            </summary>
            <param name="presesnce"></param>
        </member>
        <member name="T:DiscordRPC.RichPresenceResponse">
            <summary>
            A rich presence that has been parsed from the pipe as a response.
            </summary>
        </member>
        <member name="P:DiscordRPC.RichPresenceResponse.ClientID">
            <summary>
            ID of the client
            </summary>
        </member>
        <member name="P:DiscordRPC.RichPresenceResponse.Name">
            <summary>
            Name of the bot
            </summary>
        </member>
        <member name="P:DiscordRPC.RPC.Commands.CloseCommand.PID">
            <summary>
            The process ID
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Commands.CloseCommand.value">
            <summary>
            The rich presence to be set. Can be null.
            </summary>
        </member>
        <member name="P:DiscordRPC.RPC.Commands.PresenceCommand.PID">
            <summary>
            The process ID
            </summary>
        </member>
        <member name="P:DiscordRPC.RPC.Commands.PresenceCommand.Presence">
            <summary>
            The rich presence to be set. Can be null.
            </summary>
        </member>
        <member name="P:DiscordRPC.RPC.Commands.RespondCommand.UserID">
            <summary>
            The user ID that we are accepting / rejecting
            </summary>
        </member>
        <member name="P:DiscordRPC.RPC.Commands.RespondCommand.Accept">
            <summary>
            If true, the user will be allowed to connect.
            </summary>
        </member>
        <member name="P:DiscordRPC.RPC.Payload.ClosePayload.Code">
            <summary>
            The close code the discord gave us
            </summary>
        </member>
        <member name="P:DiscordRPC.RPC.Payload.ClosePayload.Reason">
            <summary>
            The close reason discord gave us
            </summary>
        </member>
        <member name="T:DiscordRPC.RPC.Payload.Command">
            <summary>
            The possible commands that can be sent and received by the server.
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.Dispatch">
            <summary>
            event dispatch
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.SetActivity">
            <summary>
            Called to set the activity
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.Subscribe">
            <summary>
            used to subscribe to an RPC event
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.Unsubscribe">
            <summary>
            used to unsubscribe from an RPC event
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.SendActivityJoinInvite">
            <summary>
            Used to accept join requests.
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.CloseActivityJoinRequest">
            <summary>
            Used to reject join requests.
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.Authorize">
            <summary>
            used to authorize a new client with your app
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.Authenticate">
            <summary>
            used to authenticate an existing client with your app
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.GetGuild">
            <summary>
            used to retrieve guild information from the client
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.GetGuilds">
            <summary>
            used to retrieve a list of guilds from the client
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.GetChannel">
            <summary>
            used to retrieve channel information from the client
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.GetChannels">
            <summary>
            used to retrieve a list of channels for a guild from the client
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.SetUserVoiceSettings">
            <summary>
            used to change voice settings of users in voice channels
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.SelectVoiceChannel">
            <summary>
            used to join or leave a voice channel, group dm, or dm
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.GetSelectedVoiceChannel">
            <summary>
            used to get the current voice channel the client is in
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.SelectTextChannel">
            <summary>
            used to join or leave a text channel, group dm, or dm
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.GetVoiceSettings">
            <summary>
            used to retrieve the client's voice settings
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.SetVoiceSettings">
            <summary>
            used to set the client's voice settings
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.Command.CaptureShortcut">
            <summary>
            used to capture a keyboard shortcut entered by the user RPC Events
            </summary>
        </member>
        <member name="T:DiscordRPC.RPC.Payload.IPayload">
            <summary>
            Base Payload that is received by both client and server
            </summary>
        </member>
        <member name="P:DiscordRPC.RPC.Payload.IPayload.Command">
            <summary>
            The type of payload
            </summary>
        </member>
        <member name="P:DiscordRPC.RPC.Payload.IPayload.Nonce">
            <summary>
            A incremental value to help identify payloads
            </summary>
        </member>
        <member name="T:DiscordRPC.RPC.Payload.ArgumentPayload">
            <summary>
            The payload that is sent by the client to discord for events such as setting the rich presence.
            <para>
            SetPrecense
            </para>
            </summary>
        </member>
        <member name="P:DiscordRPC.RPC.Payload.ArgumentPayload.Arguments">
            <summary>
            The data the server sent too us
            </summary>
        </member>
        <member name="M:DiscordRPC.RPC.Payload.ArgumentPayload.SetObject(System.Object)">
            <summary>
            Sets the obejct stored within the data.
            </summary>
            <param name="obj"></param>
        </member>
        <member name="M:DiscordRPC.RPC.Payload.ArgumentPayload.GetObject``1">
            <summary>
            Gets the object stored within the Data
            </summary>
            <typeparam name="T"></typeparam>
            <returns></returns>
        </member>
        <member name="T:DiscordRPC.RPC.Payload.EventPayload">
            <summary>
            Used for Discord IPC Events
            </summary>
        </member>
        <member name="P:DiscordRPC.RPC.Payload.EventPayload.Data">
            <summary>
            The data the server sent too us
            </summary>
        </member>
        <member name="P:DiscordRPC.RPC.Payload.EventPayload.Event">
            <summary>
            The type of event the server sent
            </summary>
        </member>
        <member name="M:DiscordRPC.RPC.Payload.EventPayload.#ctor">
            <summary>
            Creates a payload with empty data
            </summary>
        </member>
        <member name="M:DiscordRPC.RPC.Payload.EventPayload.#ctor(System.Int64)">
            <summary>
            Creates a payload with empty data and a set nonce
            </summary>
            <param name="nonce"></param>
        </member>
        <member name="M:DiscordRPC.RPC.Payload.EventPayload.GetObject``1">
            <summary>
            Gets the object stored within the Data
            </summary>
            <typeparam name="T"></typeparam>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.RPC.Payload.EventPayload.ToString">
            <summary>
            Converts the object into a human readable string
            </summary>
            <returns></returns>
        </member>
        <member name="T:DiscordRPC.RPC.Payload.ServerEvent">
            <summary>
            See https://discordapp.com/developers/docs/topics/rpc#rpc-server-payloads-rpc-events for documentation
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.ServerEvent.Ready">
            <summary>
            Sent when the server is ready to accept messages
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.ServerEvent.Error">
            <summary>
            Sent when something bad has happened
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.ServerEvent.ActivityJoin">
            <summary>
            Join Event 
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.ServerEvent.ActivitySpectate">
            <summary>
            Spectate Event
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.Payload.ServerEvent.ActivityJoinRequest">
            <summary>
            Request Event
            </summary>
        </member>
        <member name="T:DiscordRPC.RPC.RpcConnection">
            <summary>
            Communicates between the client and discord through RPC
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.RpcConnection.VERSION">
            <summary>
            Version of the RPC Protocol
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.RpcConnection.POLL_RATE">
            <summary>
            The rate of poll to the discord pipe.
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.RpcConnection.CLEAR_ON_SHUTDOWN">
            <summary>
            Should we send a null presence on the fairwells?
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.RpcConnection.LOCK_STEP">
            <summary>
            Should we work in a lock step manner? This option is semi-obsolete and may not work as expected.
            </summary>
        </member>
        <member name="P:DiscordRPC.RPC.RpcConnection.Logger">
            <summary>
            The logger used by the RPC connection
            </summary>
        </member>
        <member name="E:DiscordRPC.RPC.RpcConnection.OnRpcMessage">
            <summary>
            Called when a message is received from the RPC and is about to be enqueued. This is cross-thread and will execute on the RPC thread.
            </summary>
        </member>
        <member name="P:DiscordRPC.RPC.RpcConnection.State">
            <summary>
            The current state of the RPC connection
            </summary>
        </member>
        <member name="P:DiscordRPC.RPC.RpcConnection.Configuration">
            <summary>
            The configuration received by the Ready
            </summary>
        </member>
        <member name="P:DiscordRPC.RPC.RpcConnection.IsRunning">
            <summary>
            Indicates if the RPC connection is still running in the background
            </summary>
        </member>
        <member name="P:DiscordRPC.RPC.RpcConnection.ShutdownOnly">
            <summary>
            Forces the <see cref="M:DiscordRPC.RPC.RpcConnection.Close"/> to call <see cref="M:DiscordRPC.RPC.RpcConnection.Shutdown"/> instead, safely saying goodbye to Discord. 
            <para>This option helps prevents ghosting in applications where the Process ID is a host and the game is executed within the host (ie: the Unity3D editor). This will tell Discord that we have no presence and we are closing the connection manually, instead of waiting for the process to terminate.</para>
            </summary>
        </member>
        <member name="M:DiscordRPC.RPC.RpcConnection.#ctor(System.String,System.Int32,System.Int32,DiscordRPC.IO.INamedPipeClient,System.UInt32,System.UInt32)">
            <summary>
            Creates a new instance of the RPC.
            </summary>
            <param name="applicationID">The ID of the Discord App</param>
            <param name="processID">The ID of the currently running process</param>
            <param name="targetPipe">The target pipe to connect too</param>
            <param name="client">The pipe client we shall use.</param>
            <param name="maxRxQueueSize">The maximum size of the out queue</param>
            <param name="maxRtQueueSize">The maximum size of the in queue</param>
        </member>
        <member name="M:DiscordRPC.RPC.RpcConnection.EnqueueCommand(DiscordRPC.RPC.Commands.ICommand)">
            <summary>
            Enqueues a command
            </summary>
            <param name="command">The command to enqueue</param>
        </member>
        <member name="M:DiscordRPC.RPC.RpcConnection.EnqueueMessage(DiscordRPC.Message.IMessage)">
            <summary>
            Adds a message to the message queue. Does not copy the message, so besure to copy it yourself or dereference it.
            </summary>
            <param name="message">The message to add</param>
        </member>
        <member name="M:DiscordRPC.RPC.RpcConnection.DequeueMessage">
            <summary>
            Dequeues a single message from the event stack. Returns null if none are available.
            </summary>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.RPC.RpcConnection.DequeueMessages">
            <summary>
            Dequeues all messages from the event stack. 
            </summary>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.RPC.RpcConnection.MainLoop">
            <summary>
            Main thread loop
            </summary>
        </member>
        <member name="M:DiscordRPC.RPC.RpcConnection.ProcessFrame(DiscordRPC.RPC.Payload.EventPayload)">
            <summary>Handles the response from the pipe and calls appropriate events and changes states.</summary>
            <param name="response">The response received by the server.</param>
        </member>
        <member name="M:DiscordRPC.RPC.RpcConnection.EstablishHandshake">
            <summary>
            Establishes the handshake with the server. 
            </summary>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.RPC.RpcConnection.SendHandwave">
            <summary>
            Establishes a fairwell with the server by sending a handwave.
            </summary>
        </member>
        <member name="M:DiscordRPC.RPC.RpcConnection.AttemptConnection">
            <summary>
            Attempts to connect to the pipe. Returns true on success
            </summary>
            <returns></returns>
        </member>
        <member name="M:DiscordRPC.RPC.RpcConnection.SetConnectionState(DiscordRPC.RPC.RpcState)">
            <summary>
            Sets the current state of the pipe, locking the l_states object for thread saftey.
            </summary>
            <param name="state">The state to set it too.</param>
        </member>
        <member name="M:DiscordRPC.RPC.RpcConnection.Shutdown">
            <summary>
            Closes the connection and disposes of resources. This will not force termination, but instead allow Discord disconnect us after we say goodbye. 
            <para>This option helps prevents ghosting in applications where the Process ID is a host and the game is executed within the host (ie: the Unity3D editor). This will tell Discord that we have no presence and we are closing the connection manually, instead of waiting for the process to terminate.</para>
            </summary>
        </member>
        <member name="M:DiscordRPC.RPC.RpcConnection.Close">
            <summary>
            Closes the connection and disposes of resources.
            </summary>
        </member>
        <member name="M:DiscordRPC.RPC.RpcConnection.Dispose">
            <summary>
            Closes the connection and disposes resources. Identical to <see cref="M:DiscordRPC.RPC.RpcConnection.Close"/> but ignores the "ShutdownOnly" value.
            </summary>
        </member>
        <member name="T:DiscordRPC.RPC.RpcState">
            <summary>
            State of the RPC connection
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.RpcState.Disconnected">
            <summary>
            Disconnected from the discord client
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.RpcState.Connecting">
            <summary>
            Connecting to the discord client. The handshake has been sent and we are awaiting the ready event
            </summary>
        </member>
        <member name="F:DiscordRPC.RPC.RpcState.Connected">
            <summary>
            We are connect to the client and can send and receive messages.
            </summary>
        </member>
        <member name="T:DiscordRPC.User">
            <summary>
            Object representing a Discord user. This is used for join requests.
            </summary>
        </member>
        <member name="T:DiscordRPC.User.AvatarFormat">
            <summary>
            Possible formats for avatars
            </summary>
        </member>
        <member name="F:DiscordRPC.User.AvatarFormat.PNG">
            <summary>
            Portable Network Graphics format (.png)
            <para>Losses format that supports transparent avatars. Most recommended for stationary formats with wide support from many libraries.</para>
            </summary>
        </member>
        <member name="F:DiscordRPC.User.AvatarFormat.JPEG">
            <summary>
            Joint Photographic Experts Group format (.jpeg)
            <para>The format most cameras use. Lossy and does not support transparent avatars.</para>
            </summary>
        </member>
        <member name="F:DiscordRPC.User.AvatarFormat.WebP">
            <summary>
            WebP format (.webp)
            <para>Picture only version of WebM. Pronounced "weeb p".</para>
            </summary>
        </member>
        <member name="F:DiscordRPC.User.AvatarFormat.GIF">
            <summary>
            Graphics Interchange Format (.gif)
            <para>Animated avatars that Discord Nitro users are able to use. If the user doesn't have an animated avatar, then it will just be a single frame gif.</para>
            </summary>
        </member>
        <member name="T:DiscordRPC.User.AvatarSize">
            <summary>
            Possible square sizes of avatars.
            </summary>
        </member>
        <member name="F:DiscordRPC.User.AvatarSize.x16">
            <summary> 16 x 16 pixels.</summary>
        </member>
        <member name="F:DiscordRPC.User.AvatarSize.x32">
            <summary> 32 x 32 pixels.</summary>
        </member>
        <member name="F:DiscordRPC.User.AvatarSize.x64">
            <summary> 64 x 64 pixels.</summary>
        </member>
        <member name="F:DiscordRPC.User.AvatarSize.x128">
            <summary> 128 x 128 pixels.</summary>
        </member>
        <member name="F:DiscordRPC.User.AvatarSize.x256">
            <summary> 256 x 256 pixels.</summary>
        </member>
        <member name="F:DiscordRPC.User.AvatarSize.x512">
            <summary> 512 x 512 pixels.</summary>
        </member>
        <member name="F:DiscordRPC.User.AvatarSize.x1024">
            <summary> 1024 x 1024 pixels.</summary>
        </member>
        <member name="F:DiscordRPC.User.AvatarSize.x2048">
            <summary> 2048 x 2048 pixels.</summary>
        </member>
        <member name="P:DiscordRPC.User.ID">
            <summary>
            The snowflake ID of the user. 
            </summary>
        </member>
        <member name="P:DiscordRPC.User.Username">
            <summary>
            The username of the player.
            </summary>
        </member>
        <member name="P:DiscordRPC.User.Discriminator">
            <summary>
            The discriminator of the user.
            </summary>
            <remarks>If the user has migrated to unique a <see cref="P:DiscordRPC.User.Username"/>, the discriminator will always be 0.</remarks>
        </member>
        <member name="P:DiscordRPC.User.DisplayName">
            <summary>
            The display name of the user
            </summary>
            <remarks>This will be empty if the user has not set a global display name.</remarks>
        </member>
        <member name="P:DiscordRPC.User.Avatar">
            <summary>
            The avatar hash of the user. Too get a URL for the avatar, use the <see cref="M:DiscordRPC.User.GetAvatarURL(DiscordRPC.User.AvatarFormat,DiscordRPC.User.AvatarSize)"/>. This can be null if the user has no avatar. The <see cref="M:DiscordRPC.User.GetAvatarURL(DiscordRPC.User.AvatarFormat,DiscordRPC.User.AvatarSize)"/> will account for this and return the discord default.
            </summary>
        </member>
        <member name="P:DiscordRPC.User.Flags">
            <summary>
            The flags on a users account, often represented as a badge.
            </summary>
        </member>
        <member name="T:DiscordRPC.User.Flag">
            <summary>
            A flag on the user account
            </summary>
        </member>
        <member name="F:DiscordRPC.User.Flag.None">
            <summary>No flag</summary>
        </member>
        <member name="F:DiscordRPC.User.Flag.Employee">
            <summary>Staff of Discord.</summary>
        </member>
        <member name="F:DiscordRPC.User.Flag.Partner">
            <summary>Partners of Discord.</summary>
        </member>
        <member name="F:DiscordRPC.User.Flag.HypeSquad">
            <summary>Original HypeSquad which organise events.</summary>
        </member>
        <member name="F:DiscordRPC.User.Flag.BugHunter">
            <summary>Bug Hunters that found and reported bugs in Discord.</summary>
        </member>
        <member name="F:DiscordRPC.User.Flag.HouseBravery">
            <summary>The HypeSquad House of Bravery.</summary>
        </member>
        <member name="F:DiscordRPC.User.Flag.HouseBrilliance">
            <summary>The HypeSquad House of Brilliance.</summary>
        </member>
        <member name="F:DiscordRPC.User.Flag.HouseBalance">
            <summary>The HypeSquad House of Balance (the best one).</summary>
        </member>
        <member name="F:DiscordRPC.User.Flag.EarlySupporter">
            <summary>Early Supporter of Discord and had Nitro before the store was released.</summary>
        </member>
        <member name="F:DiscordRPC.User.Flag.TeamUser">
            <summary>Apart of a team.
            <para>Unclear if it is reserved for members that share a team with the current application.</para>
            </summary>
        </member>
        <member name="P:DiscordRPC.User.Premium">
            <summary>
            The premium type of the user.
            </summary>
        </member>
        <member name="T:DiscordRPC.User.PremiumType">
            <summary>
            Type of premium
            </summary>
        </member>
        <member name="F:DiscordRPC.User.PremiumType.None">
            <summary>No subscription to any forms of Nitro.</summary>
        </member>
        <member name="F:DiscordRPC.User.PremiumType.NitroClassic">
            <summary>Nitro Classic subscription. Has chat perks and animated avatars.</summary>
        </member>
        <member name="F:DiscordRPC.User.PremiumType.Nitro">
            <summary>Nitro subscription. Has chat perks, animated avatars, server boosting, and access to free Nitro Games.</summary>
        </member>
        <member name="P:DiscordRPC.User.CdnEndpoint">
            <summary>
            The endpoint for the CDN. Normally cdn.discordapp.com.
            </summary>
        </member>
        <member name="M:DiscordRPC.User.#ctor">
            <summary>
            Creates a new User instance.
            </summary>
        </member>
        <member name="M:DiscordRPC.User.SetConfiguration(DiscordRPC.Configuration)">
            <summary>
            Updates the URL paths to the appropriate configuration
            </summary>
            <param name="configuration">The configuration received by the OnReady event.</param>
        </member>
        <member name="M:DiscordRPC.User.GetAvatarURL(DiscordRPC.User.AvatarFormat)">
            <summary>
            Gets a URL that can be used to download the user's avatar. If the user has not yet set their avatar, it will return the default one that discord is using. The default avatar only supports the <see cref="F:DiscordRPC.User.AvatarFormat.PNG"/> format.
            </summary>
            <remarks>The file returned will be 128px x 128px</remarks>
            <param name="format">The format of the target avatar</param>
            <returns>URL to the discord CDN for the particular avatar</returns>
        </member>
        <member name="M:DiscordRPC.User.GetAvatarURL(DiscordRPC.User.AvatarFormat,DiscordRPC.User.AvatarSize)">
            <summary>
            Gets a URL that can be used to download the user's avatar. If the user has not yet set their avatar, it will return the default one that discord is using. The default avatar only supports the <see cref="F:DiscordRPC.User.AvatarFormat.PNG"/> format.
            </summary>
            <param name="format">The format of the target avatar</param>
            <param name="size">The optional size of the avatar you wish for.</param>
            <returns>URL to the discord CDN for the particular avatar</returns>
        </member>
        <member name="M:DiscordRPC.User.GetAvatarExtension(DiscordRPC.User.AvatarFormat)">
            <summary>
            Returns the file extension of the specified format.
            </summary>
            <param name="format">The format to get the extention off</param>
            <returns>Returns a period prefixed file extension.</returns>
        </member>
        <member name="M:DiscordRPC.User.ToString">
            <summary>
            Formats the user into a displayable format. If the user has a <see cref="P:DiscordRPC.User.DisplayName"/>, then this will be used.
            <para>If the user still has a discriminator, then this will return the form of `Username#Discriminator`.</para>
            </summary>
            <returns>String of the user that can be used for display.</returns>
        </member>
    </members>
</doc>
