<?xml version="1.0"?>
<doc>
    <assembly>
        <name>SkyFrost.Base.Models</name>
    </assembly>
    <members>
        <member name="T:SkyFrost.Base.AssetChunk">
            <summary>
            Metadata about an uploaded asset chunk
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AssetChunk.Index">
            <summary>
            Index of the chunk of the whole asset. 0 indexed
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AssetChunk.Key">
            <summary>
            Opaque key representing this chunk, identifying it appropriately with given asset backend.
            E.g. in case of Cloudflare this will be the ETag of given part
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AssetUploadData.Hash">
            <summary>
            The signature of the asset, uniquely identifying the asset that is being uploaded.
            This is a hash of given asset.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AssetUploadData.Variant">
            <summary>
            Identifier of the variant of this asset (if a variant is being uploaded)
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AssetUploadData.Id">
            <summary>
            Unique ID of the upload job
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AssetUploadData.OwnerId">
            <summary>
            Owner of the upload - this is the user/group who is responsible for uploading this asset.
            Typically this is the one who upserted a record that requires upload of this asset
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AssetUploadData.TotalBytes">
            <summary>
            The size of this entire asset
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AssetUploadData.ChunkSize">
            <summary>
            Size of each chunk in bytes (except last, which can be smaller)
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AssetUploadData.TotalChunks">
            <summary>
            Number of chunks that this upload is composed of
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AssetUploadData.UploadState">
            <summary>
            Current state of this upload
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AssetUploadData.UploadKey">
            <summary>
            Opaque key identifying the upload with the target system.
            E.g. in case of CloudFlare, this is the UploadId generated by the S3 API
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AssetUploadData.UploadEndpoint">
            <summary>
            Api endpoint where to upload the individual chunks
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AssetUploadData.IsDirectUpload">
            <summary>
            Indicates that the upload is direct in a single part (no chunks) and it's technically completed the moment
            the upload of the file finishes - the asset is ready to use right away.
            This allows for speedier uploads with smaller files, which also use fewer requests.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AssetUploadData.MaxUploadConcurrency">
            <summary>
            Maximum number of parallel uploads that are supported/allowed
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AssetUploadData.Chunks">
            <summary>
            List of all the uploaded chunks of the asset.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppBuildConfiguration.ConfigId">
            <summary>
            ID that uniquely identifies this configuration
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppBuildConfiguration.OwnerId">
            <summary>
            The owner of the given configuration. Either User or Group.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppBuildConfiguration.AppConfiguration">
            <summary>
            Configuration file for the build itself
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppBuildConfiguration.SplashScreenSignature">
            <summary>
            DB signature of the image file for a custom splashscreen
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildType.Unity_Mono">
            <summary>
            Unity Engine with the Mono runtime
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildType.Unity_Mono_Debug">
            <summary>
            Unity Engine with the Mono runtime and profiling and debugging enabled
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildType.Unity_IL2CPP_Release">
            <summary>
            Unity Engine compiled with IL2CPP using the Release Configuration
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildType.Unity_IL2CPP_Master">
            <summary>
            Unity Engine compiled with IL2CPP using the Master Configuration
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildType.HeadlessNetFramework">
            <summary>
            Headless build using the older .NET Framework runtime
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildType.HeadlessNet">
            <summary>
            Headless build using the modern .NET runtime (.NET Core, .NET 5 and so on...)
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildType.UnitySDK">
            <summary>
            Unity SDK corresponding to this build
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppBuildVariantDescriptor.BuildType">
            <summary>
            Specific type of the build of the product
            </summary>
        </member>
        <member name="T:SkyFrost.Base.Build">
            <summary>
            Represents an unique build of our application. This doesn't contain any actual files of given application or platform
            specific version, but rather is a summary of changes done in this release. To get actual executables or files related to this 
            build, the BuildVariant for specific application is used.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Build.Application">
            <summary>
            The application this build is of. This allows us to use the same build system for multiple applications that do not update in sync
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Build.Version">
            <summary>
            Version number of the given build. This uniquely identifies the build and generally corresponds to the UTC time it was built on.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Build.AlternateVersionNumber">
            <summary>
            This is used for the old build versioning scheme before we switched to the date based one
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Build.Description">
            <summary>
            Any description/summary of this build. This is optional too, mostly for builds that are planned to become public releases,
            but can be used for internal notes and goals of this build as well.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Build.Graphic">
            <summary>
            Optional associated graphic with this build. Can be used for main release builds for promoting them and giving them a bit more 
            flair in the launcher when browsing
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Build.Changes">
            <summary>
            List of changes in this build relative to the previous one in given branch.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Build.KnownIssues">
            <summary>
            List of any known issues with this build. Mostly for informative purposes.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Build.Notes">
            <summary>
            Any other notes for this build, if applicable
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Build.Branch">
            <summary>
            Unique name of the branch that this build corresponds to. Branches are typically used for features and changes that are
            developed in parallel and later merged into the main one. Each branch has its own history of changes and separates those
            from mixing with changes being done in parallel. When a branch gets merged into another one, this also allows to create 
            a full summary of those changes.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Build.MergedBranch">
            <summary>
            Name of the branch that got merged into this build. This is used to generate the summary of changes - e.g. if feature
            is being developed in parallel and then gets merged into the main one, the list of changes done on that branch is put together
            for the release, so it doesn't have to duplicate those again.
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildChangeType.Feature">
            <summary>
            A new functionality
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildChangeType.Tweak">
            <summary>
            A change to existing functionality or behavior
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildChangeType.Optimization">
            <summary>
            Performance improvement to reduce resource usage
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildChangeType.Security">
            <summary>
            Change, bugfix or addition specifically improving the security of the platform
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildChangeType.Bugfix">
            <summary>
            Bugfix that corrects behavior of a feature
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildChange.ChangeId">
            <summary>
            An unique id of the change. This allows the change to be uniquely identified and referred to
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildChange.Description">
            <summary>
            Description of the change.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildChange.Type">
            <summary>
            Type of the change. This is used to group the changes in release logs.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildChange.WorkInProgress">
            <summary>
            This is used to mark changes that are work in progress and do not represent final state
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildChange.BranchSpecific">
            <summary>
            This change is specific to the branch it's one and won't be shown when the branch is merged into another.
            E.g. this can be used for bugfixes for in-development features - when those features are released to the main branch,
            it's not necessary to list all bugs that happened during the development, but they're still useful for testing within the branch.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildChange.RelatedIssues">
            <summary>
            Any GitHub/Moderation/other issues that this change is based on or related to
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildChange.Contributors">
            <summary>
            Any users who contributed to this change in the build with actual code changes and implementations
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildChange.Reporters">
            <summary>
            Any users based on whose reports and feedback was this change made
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildChange.AffectedPlatforms">
            <summary>
            List of build platforms that this change affects. E.g. bugfixes that are Windows/Linux/Android specific
            If the list is missing (null or empty), the change affects any platform.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildChange.ExcludedPublishingPlatforms">
            <summary>
            Any platforms from which this change is excluded. This can be used for features that would conflict
            with the rules/guidelines of given platform, so when the changelog is pushed there, the changes are not
            included with it.
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildReferenceType.Invalid">
            <summary>
            Doesn't have a valid reference
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildReferenceType.VersionNumber">
            <summary>
            References a specific version number. It won't update to another one until it's changed
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildReferenceType.ChannelId">
            <summary>
            Uses build referenced by another channel. Allows to automatically track another channel with custom configuration
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildReferenceType.LatestInBranch">
            <summary>
            Always uses the latest build in a given branch
            </summary>
        </member>
        <member name="F:SkyFrost.Base.ConfigReferenceType.Invalid">
            <summary>
            Doesn't have a valid reference
            </summary>
        </member>
        <member name="F:SkyFrost.Base.ConfigReferenceType.ConfigId">
            <summary>
            Refers to a specific configuration by its unique ID
            </summary>
        </member>
        <member name="F:SkyFrost.Base.ConfigReferenceType.ChannelId">
            <summary>
            Tracks another channel's configuration
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildChannel.ChannelId">
            <summary>
            Unique ID of the channel. Each channel gets assigned a unique ID that can be used to refer to it
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildChannel.OwnerId">
            <summary>
            The owner of the given channel. Either User or Group.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildChannel.Application">
            <summary>
            The application this channel is for.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildChannel.BuildReferenceType">
            <summary>
            This specifies how does this channel reference which build to use
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildChannel.BuildId">
            <summary>
            This is the unique identifier of which build to use. Format is dependent on the reference type
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildChannel.ConfigReferenceType">
            <summary>
            This specifies the format the the ConfigurationId, determining how it's referenced.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildChannel.ConfigId">
            <summary>
            This is unique identifier of the configuration to use for this channel. Configuration can change the default settings,
            auto-init worlds, dash and other aspects of the App experience to create customized builds.
            It's dependent on the configuration reference type
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildFile.Signature">
            <summary>
            Signature (hash) of the file. Used for the DB lookup.
            Null if the entry represents a folder.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildFile.SizeBytes">
            <summary>
            Size of given file in bytes.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildFile.Path">
            <summary>
            Path of given file / folder in the installed build. Includes filename.
            The given DB asset will be placed at this location.
            </summary>
        </member>
        <member name="T:SkyFrost.Base.BuildNote">
            <summary>
            An additional note for a build. Can be a known issue or just any note that doesn't fit other criteria
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildNote.NoteId">
            <summary>
            Id that uniquely identifies this node and allows it to be referenced from other systems
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildNote.Description">
            <summary>
            Actual content of the note
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildUser.Username">
            <summary>
            Printable username of given user
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildUser.UserID">
            <summary>
            UserID
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildUser.DiscordHandle">
            <summary>
            Discord Handle
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildUser.GithubHandle">
            <summary>
            GitHub Username
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildStatus.Nonexistent">
            <summary>
            The build doesn't exist and won't be built.
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildStatus.ScheduledToBuild">
            <summary>
            The build is scheduled to be built, but isn't picked up by the system yet
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildStatus.Building">
            <summary>
            This build is currently being built
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildStatus.Built">
            <summary>
            This build was sucessfullly built
            </summary>
        </member>
        <member name="F:SkyFrost.Base.BuildStatus.FailedToBuild">
            <summary>
            Failed to build, e.g. due to an error in the build process
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildVariant.VariantId">
            <summary>
            Uniquely identifying id of the variant. This should be the same for variants that represent
            identical build variants (same platform, version and so on)
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildVariant.Status">
            <summary>
            Current status of the build
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildVariant.Files">
            <summary>
            Installable files representing this build
            </summary>
        </member>
        <member name="M:SkyFrost.Base.BuildVariant.GetIdString">
            <summary>
            Computes a unique ID string that identifies this variant
            IMPORTANT!!! Make sure that new additions to the data model will preserve the ID string for the old versions.
            that way existing build variants do not suddenly change their ID
            </summary>
            <returns></returns>
        </member>
        <member name="P:SkyFrost.Base.BuildVariant`1.Descriptor">
            <summary>
            Descriptor identifying the properties and parameters for this particular variant
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildVariantDescriptor.VersionNumber">
            <summary>
            Version number that this variant corresponds to. Version numbers uniquely identify builds.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildVariantDescriptor.VersionString">
            <summary>
            Same as version number, but in string form
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BuildVariantDescriptor.Platform">
            <summary>
            Specific platform that this build will run on
            </summary>
        </member>
        <member name="M:SkyFrost.Base.BuildVariantDescriptor.GetIdString(System.Boolean,System.String)">
            <summary>
            Gets a unique identifier that for this particular variant. The descriptor can be built from this ID string
            </summary>
            <param name="includeVersion"></param>
            <param name="separator"></param>
            <returns></returns>
        </member>
        <member name="F:SkyFrost.Base.IssueAction.None">
            <summary>
            The issue is only referenced, but no action is taken
            </summary>
        </member>
        <member name="F:SkyFrost.Base.IssueAction.Close">
            <summary>
            The issue is closed by the change referencing it. This is typically when the issue is resolved
            </summary>
        </member>
        <member name="F:SkyFrost.Base.IssueAction.Update">
            <summary>
            The issue is updated, but kept open. This can be used when there's multiple changes needed to fully resolve issue
            </summary>
        </member>
        <member name="F:SkyFrost.Base.IssueAction.RequestResolveConfirmation">
            <summary>
            This is when we're not sure whether the change resolves the issue and requires the submitting user to check
            </summary>
        </member>
        <member name="P:SkyFrost.Base.IssueReference.IssueNumber">
            <summary>
            The number of the issue in given issue system
            </summary>
        </member>
        <member name="P:SkyFrost.Base.IssueReference.System">
            <summary>
            The issue/ticket tracking system that this corresponds to
            </summary>
        </member>
        <member name="P:SkyFrost.Base.IssueReference.Action">
            <summary>
            Any action to be taken for the given issue
            </summary>
        </member>
        <member name="T:SkyFrost.Base.CloudSessionMetadata">
            <summary>
            This contains basic metadata of the session without any private information,
            except for the URL's which can be used to resolve the SessionID
            This data is never directly shared and only used to compute session statistics.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.CloudSessionMetadata.SessionId">
            <summary>
            ID of this session
            </summary>
        </member>
        <member name="P:SkyFrost.Base.CloudSessionMetadata.HostUserId">
            <summary>
            ID of the user hosting this session
            </summary>
        </member>
        <member name="P:SkyFrost.Base.CloudSessionMetadata.JoinedUsers">
            <summary>
            Number of users joined to this session, including active and inactive
            </summary>
        </member>
        <member name="P:SkyFrost.Base.CloudSessionMetadata.ActiveUsers">
            <summary>
            Number of users in the session who are actually active (present)
            </summary>
        </member>
        <member name="P:SkyFrost.Base.CloudSessionMetadata.HostUserSessionId">
            <summary>
            ID of the user session of the user hosting this session
            </summary>
        </member>
        <member name="P:SkyFrost.Base.CloudSessionMetadata.AccessLevel">
            <summary>
            Access level of this session
            </summary>
        </member>
        <member name="P:SkyFrost.Base.CloudSessionMetadata.SessionHidden">
            <summary>
            Indicates if this session is hidden from listing
            </summary>
        </member>
        <member name="P:SkyFrost.Base.CloudSessionMetadata.SessionURLs">
            <summary>
            List of the URLs that this session is available at. This is necessary to be able to resolve SessionID into the URL's
            </summary>
        </member>
        <member name="T:SkyFrost.Base.Comment">
            <summary>
            This represents a comment posted by user to any applicable entity in the product. Allowing to create discussions for
            worlds, items, user/group profiles, builds (and individual features), posts and other stuff.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Comment.OwnerId">
            <summary>
            The owner of this comment is the entity that the comment is posted on. This can be nearly anything:
            - Record (using composite OwnerId:RecordId)
            - User (their profile)
            - Group (their profile)
            - Post
            - Build
            - Build Change
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Comment.CommentId">
            <summary>
            Unique ID identifying the comment
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Comment.PostedOn">
            <summary>
            Timestamp of when the comment was originally posted
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Comment.CommentSenderId">
            <summary>
            UserID of the user who posted this comment.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Comment.ReplyToCommentId">
            <summary>
            Optional ID of a comment that this comment is a reply to. Null otherwise
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Comment.Content">
            <summary>
            Actual Content of this comment
            </summary>
        </member>
        <!-- Badly formed XML comment ignored for member "T:SkyFrost.Base.EntityInterfacePreference" -->
        <member name="F:SkyFrost.Base.EntityInterfacePreference.UserPreferred">
            <summary>
            Default preference
            </summary>
            <remarks>Users > Universe's > Platform > Fallback</remarks>
        </member>
        <member name="F:SkyFrost.Base.EntityInterfacePreference.UniversePreferred">
            <summary>
            Prefer the universe's entities/facets over the user's
            </summary>
            <remarks>Universe's > Users > Platform > Fallback</remarks>
        </member>
        <member name="F:SkyFrost.Base.EntityInterfacePreference.UniverseOnly">
            <summary>
            Only load the Universe's Entities/Facets, Do not allow the user's to load or the platform's to load.
            </summary>
            <remarks>Universe's > Fallback</remarks>
        </member>
        <member name="T:SkyFrost.Base.AppConfig">
            <summary>
            Advanced options to configure a Client.
            </summary>
            <remarks>
            These options should be specified/stored in a JSON file and passed on startup with the -config command line argument.
            </remarks>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.Schema">
            <summary>
            JSONSchema for this file, used for external users to validate and test this file.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.UnsafeModeWhitelist">
            <summary>
            A list of World URLs which can be opened in Unsafe mode with the "OpenUnsafe" command line argument
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.Inputs">
            <summary>
            Configuration options for the controllers of this App Client.
            This will later be moved into in-game settings, as it doesn't make sanse as per-build configuration.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.UniverseId">
            <summary>
            Optionally, specifies which universe this Headless Server will be in.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.NodePreference">
            <summary>
            Optionally, specifies the relay connection preference.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.UniverseEntityPreference">
            <summary>
            Controls the loading of Facets and EntityInterfaces, when in a universe.
            </summary>
            <remarks>
            When in a universe controls the order of loading for EntityInterfaces, it tries each possible source in order moving on if the prior one fails.
            See <see cref="T:SkyFrost.Base.EntityInterfacePreference"/> for the exact order of loading.
            </remarks>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.UseUniverseDash">
            <summary>
            When true and within a valid universe, will use the Universe's Dash Facets instead of the user's.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.UniversePublicDashOnly">
            <summary>
            When true, only uses the public universe dash and not the private one, useful in more public demonstration universes, where logging in is optional.
            </summary>
            <remarks>See <see cref="!:FrooxEngine.UserspaceRadiantDash"/> for more information.</remarks>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.UseUniverseHomes">
            <summary>
            When true and within a valid Universe, will overide Cloud and Local home loading to use a universe's versions.
            </summary>
            <remarks>
            The homes loaded with this setting, will be read-only and they will not affect your non-universe homes.
            </remarks>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.Proxy">
            <summary>
            Specifies proxy settings to be utilized.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.AnnounceLocalIPs">
             <summary>
             Can override whether all local IPs are announced as part of session data or not. Announcing all local IP's
             is particularly helpful for larger corporate/university networks with flat hierarchy. On those networks the
             LAN broadcast might not reach the entire network, therefore local IP's won't be discovered by all clients.
             If the client simply includes all the known IP's with the session data, this allows direct connections within
             the network, which helps improve connectivity.
            
             By default, this is implicitly enabled when UniverseId is set - this is used as an indicator that Resonite is being
             used within some kind of organization. By explicitly setting this to false, this behavior can be disabled.
            
             Alternatively this can also be set to true when there's no UniverseId, which will enable this behavior.
             </summary>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.DisableAnnounceOnLAN">
            <summary>
            This allows overriding whether any hosted sessions will be broadcasted on the LAN via UDP broadcast.
            LAN broadcasting allows clients on the same network to discover local sessions and connected to them,
            without requiring to go through other mechanisms. However on some networks this might cause a lot of
            network noise, so this can be used to disable this.
            This setting will override all other settings - e.g. user settings.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.DisableIntroTutorial">
            <summary>
            When set to true, the intro tutorial sequence will always be skipped. This skips the initial setup as well
            as the tutorial world that user has to go through on the first launch. This setting will override all other
            conditions and ensure that the tutorial is always skipped.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.DisableCloudHomeAutoLoad">
            <summary>
            When set to true, the cloud home will never be automatically loaded after logging in. This overrides any other
            settings and can be used to ensure that this client will never load the cloud home on its own.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.AutoStartWorlds">
            <summary>
            A list of worlds/sessions to start/create when this App Client Starts.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.AutoJoinSessions">
            <summary>
            A list of rules/ids/urls to use to automatically join sessions when this client starts.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.NoUI">
            <summary>
            When true, will hide most standard UI from the user.
            </summary>
            <remarks>
            This option is usually used in combination with <see cref="P:SkyFrost.Base.AppConfig.AutoStartWorlds"/> or <see cref="P:SkyFrost.Base.AppConfig.AutoJoinSessions"/> to enable for Kiosk/Dedicated experiences that don't need our UI
            </remarks>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.DisableDesktop">
            <summary>
            Disables, the Desktop viewing functionality. Does not disable Desktop Input/Desktop Mode.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.AvailableLoginMethods">
            <summary>
            Configures the available login methods for the App.
            </summary>
            <remarks>
            It is recommended to ommit this from your configuration files unless you really need it. It is used in rare circumstances to control the login flow even more.
            </remarks>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.PathWhitelist">
            <summary>
            A list of paths which the App can browse in the FileBrowser. Set to an empty array to disable the FileBrowser.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.ForceStartMicrophoneMuted">
            <summary>
            When set, overrides VoiceSettings.MutePersistence, and mutes your microphone at startup.
            </summary>
            <remarks>It is recommended to use the settings system over this in most cases. But this can be useful in corporate scenarios,
            where corporate security wants to enforce this as a policy.</remarks>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.DisableProtocolRegistration">
            <summary>
            When set, prevents the checking of and the registering of Application protocols within the registry.
            </summary>
            <remarks>We recommend leaving this off. Registering Application protocols on your computer makes
            it easy to join and share sessions with users.</remarks>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.DisablePlatformInterfaces">
            <summary>
            When true, ALL platform interfaces won't be initialized
            </summary>
            <remarks>
            This is mostly useful for standalone utilities, like the standard asset uploader, which doesn't need to interface with any platform interfaces.
            We do not recommend enabling this option for regular app use.<br/><br/>
            When enabled it will prevent the following features from working:
            <list type="bullet">
            <item>Clipboard Based Operations</item>
            <item>Screenshot Operations</item>
            <item>Any Steam Functionality</item>
            <item>Any Discord Functionality</item>
            </list>
            If privacy is your goal, then see <see cref="P:SkyFrost.Base.AppConfig.DisallowedPlatformInterfaces"/>
            </remarks>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.DisallowedPlatformInterfaces">
             <summary>
             A list of Platform Interfaces which should be disallowed by this App.
             </summary>
             <remarks>Used primarily for Privacy related reasons, you can use this to completely disable Discord and Steam support. For example: ["Discord", "Steam"] would disable both.
             For the Allowlist version of this see <see cref="P:SkyFrost.Base.AppConfig.AllowedPlatformInterfaces"/>
             To disable ALL interfaces without using any lists <see cref="P:SkyFrost.Base.AppConfig.DisablePlatformInterfaces"/>
            
             While using both options, is possible, It is not recommended due to potential confusion.
             </remarks>
        </member>
        <member name="P:SkyFrost.Base.AppConfig.AllowedPlatformInterfaces">
             <summary>
             A list of Platform Interfaces which should be allowed by this App.
             </summary>
             <remarks>Used primarily for Privacy related reasons, you can use this to explicitly opt-in to new PlatformInterface related functionality. For example: ["Windows"] would just
             keep Clipboard related functionality enabled and disallow any new platform interfaces that might be added in the future.
            
             For the Blocklist version of this see <see cref="P:SkyFrost.Base.AppConfig.DisallowedPlatformInterfaces"/>.
             To disable ALL interfaces you may use [].
             To disable ALL interfaces without using any lists <see cref="P:SkyFrost.Base.AppConfig.DisablePlatformInterfaces"/>.
            
             While using both options, is possible, It is not recommended due to potential confusion
             </remarks>
        </member>
        <member name="T:SkyFrost.Base.InputConfig">
            <summary>
            Configuration options for a Client's input devices.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.InputConfig.TriggerDeadzone">
            <summary>
            Adds a deadzone to the triggers of all controllers used by this client.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.InputConfig.AxisDeadzone">
            <summary>
            Adds a deadzone to the joysticks of all controllers used by this client.
            </summary>
        </member>
        <member name="T:SkyFrost.Base.LNLConfig">
            <summary>
            LNL Specific Configuration for this copy of Resonite
            </summary>
        </member>
        <!-- Badly formed XML comment ignored for member "P:SkyFrost.Base.LNLConfig.Ports" -->
        <member name="P:SkyFrost.Base.ProxyConfig.AutoDetect">
            <summary>
            Whether to autodetect proxy settings using Internet Explorer's settings.  Defaults to false.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.ProxyConfig.LocalBypass">
            <summary>
            Whether to bypass the proxy on local domains.  Defaults to true.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.ProxyConfig.BypassDomains">
            <summary>
            List of domains to bypass the proxy with.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.ProxyConfig.Address">
            <summary>
            HTTP/S proxy to use for all web requests.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.ProxyConfig.CredentialStore">
            <summary>
            Determines the source of the proxy server's credentials.
            Valid options are:
            DefaultSystemCache
            NetworkCache
            UsernamePassword
            Defaults to the system cache.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.ProxyConfig.Username">
            <summary>
            Proxy server's username. Only used with UsernamePassword credential stores.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.ProxyConfig.Password">
            <summary>
            Proxy server's password. Only used with UsernamePassword credential stores.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.ProxyConfig.IsValid">
            <summary>
            Is this proxy configuration valid?
            </summary>
            For now this is absic, but could be more complex in the future.
        </member>
        <member name="P:SkyFrost.Base.ProxyConfig.Test">
            <summary>
            Should we test this proxy for you?
            </summary>
            <remarks>Set to true if <see cref="P:SkyFrost.Base.ProxyConfig.Required"/> is set.</remarks>
        </member>
        <member name="P:SkyFrost.Base.ProxyConfig.Required">
            <summary>
            Is using this proxy required/mandatory for Resonite?
            </summary>
        </member>
        <member name="P:SkyFrost.Base.ProxyConfig.ShouldUseAutoDetect">
            <summary>
            True if this configuration is compatible with our AutoDetect feature
            </summary>
            <remarks>This may become more complex in future, it original skipped AutoDetecting a proxy if an address and port were supplied, but this broke a client.</remarks>
        </member>
        <member name="T:SkyFrost.Base.SessionJoinParameters">
            <summary>
            Configuration for a session which should be automatically joined by this client.
            </summary>
            <remarks>
            This uses a number of checks and searches to find a matching session. The URL property is used first if specified which also ignores all other filters.
            </remarks>
        </member>
        <member name="P:SkyFrost.Base.SessionJoinParameters.URL">
            <summary>
            A direct session URL to join. When specified all other checks will be ignored.
            </summary>
            <example>
            {
                "url": "ever-session:///S-U-ProbablePrime:CheeseLand"
            }
            </example>
        </member>
        <member name="P:SkyFrost.Base.SessionJoinParameters.SessionID">
            <summary>
            A session ID to join, use "*" to use the other rules to find a session to join.
            </summary>
            <example>
            {
                "sessionId":"S-U-ProbablePrime:CheeseLand"
            }
            </example>
        </member>
        <member name="P:SkyFrost.Base.SessionJoinParameters.LanOnly">
            <summary>
            When set to true, will only join LAN sessions.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SessionJoinParameters.HeadlessOnly">
            <summary>
            When set to true, will only join Headless sessions.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SessionJoinParameters.OnlyUniverseID">
            <summary>
            When set, will only join sessions within this <see href="https://WIKILINK/Universes">Universe</see>.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SessionJoinParameters.AutoFocus">
            <summary>
            When set to true, it will automatically focus this session if it is found.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SessionJoinParameters.WaitForLogin">
            <summary>
            When set to true, will wait for an active Resonite User session before trying this auto-start session
            </summary>
            <remarks>Use this in cases where the auto-start session, might only be accessible after logging in.</remarks>
        </member>
        <member name="P:SkyFrost.Base.SessionJoinParameters.Processed">
            <summary>
            Used by Resonite to ensure that we only process this once. 
            </summary>
        </member>
        <member name="F:SkyFrost.Base.SaveAsOwner.LocalMachine">
            <summary>
            Save this world to the Local Machine of the Headless Server.
            </summary>
        </member>
        <member name="F:SkyFrost.Base.SaveAsOwner.CloudUser">
            <summary>
            Save this world to the cloud user this Headless Server is logged into.
            </summary>
        </member>
        <member name="T:SkyFrost.Base.WorldStartupParameters">
            <summary>
            These options are used to configure a startup world from a JSON configuration file.
            </summary>
            <remarks>
            There are two ways that these are used:
            <list type="bullet">
                <item>
                    <term>Startup Configuration Files</term>
                    <description>Used in: <code>autoStartWorlds</code> within the <see href="https://wiki.resonite.com/Startup_Config_File">Startup Configuration Files</see></description>
                    <term>Headless Configuration Files</term>
                    <description>Used in: <code>startWorlds</code> within the <see href="https://wiki.resonite.com/Headless_Client/Configuration_File">Headless Configuration Files</see>. Do see <see cref="!:Headless.WorldStartInfo"/> as there are extra options.</description>         
                </item>
            </list>
            </remarks>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.IsEnabled">
            <summary>
            When set to false, this will disable this world entry from starting.
            </summary>
            <remarks>This allows you to keep a world entry in your configuration file, while also disabling it. It allows for easy configuration swapping.</remarks>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.SessionName">
            <summary>
            The name of the session as shown in the World/Session Browser
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.CustomSessionId">
            <summary>
            An <b>optional</b> custom session id for this session.
            </summary>
            <remarks>
            This custom session id must be in the format <code>&lt;userID&gt;:&lt;customText&gt;</code>:
            <list type="table">
            <item>
            <term>userID</term>
            <description>This must be the userid of the account that is hosting this session. It cannot be anyone elses.</description>
            </item>
            <item>
            <term>custom text</term>
            <description>customText can only contain alphanumeric characters, "-" (dash) and "_" (underscore) but can be anything you'd like.</description>
            </item>
            </list>
            The ID it is always prefixed by "S-" e.g. <code>S-U-ProbablePrime:Cheese-Land</code>. It can be used with regular session connection strings and nodes.
            </remarks>
            <example>U-ProbablePrime:Cheese-Land</example>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.Description">
            <summary>
            An <b>optional</b> description of this session, displayed within the world/session browser.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.MaxUsers">
            <summary>
            The maximum number of users, allowed to join this session.
            </summary>
            <remarks>
            This defaults to 32.
            </remarks>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.AccessLevel">
            <summary>
            The Access Level for this session please see <see cref="T:SkyFrost.Base.SessionAccessLevel"/> for more information.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.UseCustomJoinVerifier">
            <summary>
            Determines whether custom join verifier should be enabled in this session
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.HideFromPublicListing">
            <summary>
            Determines if this session should be hidden from the world/session browser or not.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.Tags">
            <summary>
            A list of tags, to assist with searching or discovering sessions. 
            </summary>
            <example>cheese,world,game</example>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.MobileFriendly">
            <summary>
            Determines if this session is friendly for mobile/quest users.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.LoadWorldURL">
            <summary>
            When provided with a world URL this will load this world for the session.
            </summary>
            <remarks>
            You <b>cannot</b> use this with <see cref="P:SkyFrost.Base.WorldStartupParameters.LoadWorldPresetName"/>
            <example>resrec:///U-ProbablePrime/R-1234-1234-1234</example>
            </remarks>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.LoadWorldPresetName">
            <summary>
            When provided and valid, this will load the specified world preset into the session.
            </summary>
            <remarks>
            The options here, match the options you have when you start a normal session within the App. You <b>cannot</b> use this with <see cref="P:SkyFrost.Base.WorldStartupParameters.LoadWorldURL"/>.
            <list type="table">
                <listheader>
                    <term>Preset Name</term>
                    <description>Preset Description</description>
                </listheader>
                <item>
                    <term>Grid</term>
                    <description>A flat grid plane world with a standard skybox</description>
                </item>
                <item>
                    <term>Platform</term>
                    <description>A standard, "Earth-Like" skybox with a white cylinder platform to stand on.</description>
                </item>
                <item>
                    <term>Blank</term>
                    <description>Empty world with minimal contents.</description>
                </item>
            </list>
            </remarks>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.OverrideCorrespondingWorldId">
            <summary>
            Overrides the world id for this session allowing it to be grouped and displayed with other sessions with this world id.
            </summary>
            <remarks>
            Use this if you're hosting a specialized version of a public world, but you still want it to be grouped with the normal ones (and prevent people from starting sessions of the specialized one). 
            It is in the form of a record id. So see <see cref="T:SkyFrost.Base.RecordId"/> for more information on formatting.
            <example>
            <code>
            "overrideCorrespondingWorldId": {
                "recordId" : "R-xyz",
                "ownerId" : "U-Owner/G-Owner"
            }
            </code>
            </example>
            </remarks>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.ForcePort">
            <summary>
            <b>Optional</b>, If specified it will force this session to run on a specific network port.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.EnableResoniteLink">
            <summary>
            If specified ResoniteLink will be enabled for this world at startup.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.ForceResoniteLinkPort">
            <summary>
            <b>Optional</b>, If specified it will force ResoniteLink to run on a specific network port.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.KeepOriginalRoles">
            <summary>
            <b>Optional</b>, If specified will keep the original roles as saved in the world.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.DefaultUserRoles">
             <summary>
             When provided with a list of username and permission pairs it will grant those users the listed permissions when they join.
             </summary>
             <remarks>
             Permissions are the standard permission sets: "Admin", "Builder", "Moderator", "Guest", "Spectator".
             </remarks>
            <example>
                 <code>
                 ...
                 "defaultUserRoles":[
                     {
                         "User": "Admin"
                     }
                 ]
                 ...
                 </code>
            </example>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.RoleCloudVariable">
            <summary>
            An <b>optional</b> name of a cloud variable to use to determine the role of this user. 
            See <see href="https://wiki.resonite.com/Cloud_Variables">our wiki article</see> for more information.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.AllowUserCloudVariable">
            <summary>
            An <b>optional</b> name of a cloud variable to use to determine if this user is allowed in the session. 
            See <see href="https://wiki.resonite.com/Cloud_Variables">our wiki article</see> for more information.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.DenyUserCloudVariable">
            <summary>
            An <b>optional</b> name of a cloud variable to use to determine if this user is denied access to the session. 
            See <see href="https://wiki.resonite.com/Cloud_Variables">our wiki article</see> for more information.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.RequiredUserJoinCloudVariable">
            <summary>
            An <b>optional</b> name of a cloud variable to use to determine if this user is denied access to the session. 
            See <see href="https://wiki.resonite.com/Cloud_Variables">our wiki article</see> for more information.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.RequiredUserJoinCloudVariableDenyMessage">
            <summary>
            The name of a cloud variable whose value will be used, When a user is denied access by <see cref="P:SkyFrost.Base.WorldStartupParameters.RequiredUserJoinCloudVariable"/> this message will be displayed to them if present.
            See <see href="https://wiki.resonite.com/Cloud_Variables">our wiki article</see> for more information.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.AwayKickMinutes">
            <summary>
            Configures the number of minutes that a user can be away(shelled out) from a world before they are kicked. Setting this to -1 disables this option.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.ParentSessionIds">
            <summary>
            Provides a list of Parent Session Ids for this session. See <see href="https://wiki.resonite.com/Cloud_Variables">our wiki for more info</see>.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.AutoInviteUsernames">
            <summary>
            Users within this list will automatically be invited to this world when it starts.
            </summary>
            <example>
            <code>
            ...
            "autoInviteUsernames": [
            ]
            ...
            </code>
            </example>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.InviteRequestHandlerUsernames">
            <summary>
            When receiving an invite request, headless will forward it to all users within this list to handle.
            </summary>
            <example>
            <code>
            ...
            "inviteRequestHandlerUsernames": [
            ]
            ...
            </code>
            </example>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.AutoInviteMessage">
            <summary>
            An automatic message sent to the users on the <see cref="P:SkyFrost.Base.WorldStartupParameters.AutoInviteUsernames"/> list along with their invite.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.SaveAsOwner">
            <summary>
            Controls who saves this world when it is saved. See, <see cref="P:SkyFrost.Base.WorldStartupParameters.SaveAsOwner"/> for more information.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.AutoRecover">
            <summary>
            Headless only
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.IdleRestartInterval">
            <summary>
            If this is set(>0) and the world is empty, it will restart regularly using the value to determine the number of seconds between restarts.
            Headless only
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.ForcedRestartInterval">
            <summary>
            If this is set(>0), it will restart regularly using the value to determine the number of seconds between restarts.
            Headless only
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.SaveOnExit">
            <summary>
            If set to true will save this world on exit.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.AutoSaveInterval">
            <summary>
            If this is set(>0), it will automatically save using the value to determine the number of seconds between saves.
            Headless only
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.AutoSleep">
            <summary>
            If set to true, will prevent an empty(or filled with away users) world from running a full update cycle regularily.
            Headless only
            </summary>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.WaitForLogin">
            <summary>
            When set to true, will wait for an active Resonite User session before loading this auto-start world.
            </summary>
            <remarks>Use this in cases where the auto-start world, might be owned by a particular user or group and so not normally accessible without a user being logged in.</remarks>
        </member>
        <member name="P:SkyFrost.Base.WorldStartupParameters.Processed">
            <summary>
            Used by Resonite to ensure that we only process this once. 
            </summary>
        </member>
        <member name="T:SkyFrost.Base.ConfigFileData">
            <summary>
            This class represets a configuration file that should be automatically installed at a location.
            This allow for registration/login to add additional configuration files relevant to the particular user.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.ConfigFileData.Path">
            <summary>
            Relative path at which the file should be installed
            </summary>
        </member>
        <member name="P:SkyFrost.Base.ConfigFileData.Content">
            <summary>
            The content of the file - the actual configuration itself
            </summary>
        </member>
        <member name="P:SkyFrost.Base.DiscordIdentity.DiscordId">
            <summary>
            The unique ID of the Discord user.
            <see href="https://discord.com/developers/docs/resources/user">Discord's documentation</see> for more details.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.DiscordIdentity.OwnerId">
            <summary>
            The ID of the owner on this installation of the platform for this customer.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.GroupCreationEntitlement.GroupCount">
            <summary>
            How many groups is the user allowed to create
            </summary>
        </member>
        <member name="P:SkyFrost.Base.EntityId.Id">
            <summary>
            Unique id of this entity (for a given OwnerId).
            </summary>
        </member>
        <member name="P:SkyFrost.Base.EntityId.OwnerId">
            <summary>
            Owner of this entity. Typically user or a group
            </summary>
        </member>
        <member name="P:SkyFrost.Base.FundingEvent.Amount">
            <summary>
            The funding amount of this event in the specified currency
            </summary>
        </member>
        <member name="P:SkyFrost.Base.FundingEvent.Currency">
            <summary>
            The currency that the amount is in
            </summary>
        </member>
        <member name="P:SkyFrost.Base.FundingEvent.EventTimestamp">
            <summary>
            Timestamp of when the funding event was stored into database. This is usually after the funding
            event itself has occured and is for bookeeping reasons
            </summary>
        </member>
        <member name="P:SkyFrost.Base.FundingEvent.ValidityStart">
            <summary>
            Time when the funding event starts - this is usually from a 3rd party source, when the user pays
            the support service
            </summary>
        </member>
        <member name="P:SkyFrost.Base.FundingEvent.ValidityEnd">
            <summary>
            This is when this funding event expires (typically a month) and along with it all the granted perks
            </summary>
        </member>
        <member name="P:SkyFrost.Base.FundingEvent.IsInvalidated">
            <summary>
            Whether the funding event has been manually invalidated (should always be considered expired)
            </summary>
        </member>
        <member name="P:SkyFrost.Base.FundingEvent.Entitlements">
            <summary>
            The entitlements that this funding event grants during its duration
            </summary>
        </member>
        <member name="P:SkyFrost.Base.FundingEvent.TierName">
            <summary>
            The name of the tier (if available) of the funding event
            </summary>
        </member>
        <member name="P:SkyFrost.Base.FundingEvent.Note">
            <summary>
            Any additional note from the source, mostly useful for bookeeping and debugging
            </summary>
        </member>
        <member name="P:SkyFrost.Base.GlobalFundingStats.LastUpdated">
            <summary>
            Timestamp when this was last computed
            </summary>
        </member>
        <member name="P:SkyFrost.Base.GlobalFundingStats.Aggregate">
            <summary>
            These are aggregate numbers of all of the services
            </summary>
        </member>
        <member name="P:SkyFrost.Base.GlobalFundingStats.Patreon">
            <summary>
            Patreon funding stats
            </summary>
        </member>
        <member name="P:SkyFrost.Base.GlobalFundingStats.Stripe">
            <summary>
            Stripe funding stats
            </summary>
        </member>
        <member name="P:SkyFrost.Base.ServiceFundingStats.Current">
            <summary>
            These numbers are calculated only from the currently active support at the time of calculation of these stats
            </summary>
        </member>
        <member name="P:SkyFrost.Base.ServiceFundingStats.Historical">
            <summary>
            This includes all of the valid funding events over the whole history, serving as a total amount of support that was received
            </summary>
        </member>
        <member name="P:SkyFrost.Base.FundingStats.AllTiers">
            <summary>
            Stats for all of the tiers
            </summary>
        </member>
        <member name="P:SkyFrost.Base.FundingStats.PerTier">
            <summary>
            Individual stats for each tier
            </summary>
        </member>
        <member name="P:SkyFrost.Base.FundingNumbers.TotalAmountUSD">
            <summary>
            The sum of all the funds in USD - this is based on the tier
            </summary>
        </member>
        <member name="P:SkyFrost.Base.FundingNumbers.AverageAmountUSD">
            <summary>
            Average amount of support in USD over all the events
            </summary>
        </member>
        <member name="P:SkyFrost.Base.FundingNumbers.TotalAmountPerCurrency">
            <summary>
            The sum of all of these in each of the currencies
            </summary>
        </member>
        <member name="P:SkyFrost.Base.FundingNumbers.TotalUniqueSupporters">
            <summary>
            Total number of unique supporters
            </summary>
        </member>
        <member name="P:SkyFrost.Base.PatreonFundingEvent.PaymentTime">
            <summary>
            The external timestamp of when the payment occured
            </summary>
        </member>
        <member name="P:SkyFrost.Base.PatreonFundingEvent.TierAmountCents">
            <summary>
            The number of cents that the tier is at at the time of the funding event
            </summary>
        </member>
        <member name="P:SkyFrost.Base.PatreonFundingEvent.PatronId">
            <summary>
            Patreon specific ID of the user that is source of this event
            </summary>
        </member>
        <member name="P:SkyFrost.Base.PatreonFundingEvent.TierId">
            <summary>
            Patreon specific ID of the tier that this event stemmed from
            </summary>
        </member>
        <member name="P:SkyFrost.Base.StripeCustomerProperty.CustomerId">
            <summary>
            The unique ID of Stripe's Customer object that is associated with all other Stripe records for the user.
            See <see href="https://docs.stripe.com/api/customers">Stripe's documentation</see> for more details.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.StripeCustomerProperty.IsLive">
            <summary>
            Whether the Stripe Customer is part of the live dataset (not for test mode).
            See <see href="https://docs.stripe.com/testing-use-cases">Stripe's documentation</see> for more details.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.StripeCustomerProperty.OwnerId">
            <summary>
            The ID of the owner on this installation of the platform for this customer.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.StripeFundingEvent.CustomerId">
            <summary>
            The ID of the Stripe Customer object that this funding event was created for.
            A customer can technically have multiple subscriptions, but Stripe allows us to limit them to one per customer.
            See <see href="https://docs.stripe.com/api/customers">Stripe's documentation</see> for more details.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.StripeFundingEvent.SubscriptionId">
            <summary>
            The ID of the Stripe Subscription object that this funding event was created for.
            A single subscription lasts for as long as the customer continues making payments on it,
            and has multiple invoices created as a result of it.
            See <see href="https://docs.stripe.com/api/subscriptions">Stripe's documentation</see> for more details.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.StripeFundingEvent.InvoiceId">
            <summary>
            The ID of the Stripe Invoice object that this funding event was created for.
            Multiple invoices exist over time per subscription, but each one should always be tied to a unique funding
            event. Generally, a single invoice exists for each billing period.
            See <see href="https://docs.stripe.com/api/invoices">Stripe's documentation</see> for more details.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.StripeFundingEvent.TierId">
            <summary>
            The raw supporter tier ID that the user has paid for, supplied via metadata on Stripe's Product object
            </summary>
        </member>
        <member name="P:SkyFrost.Base.StripeFundingEvent.EventId">
            <summary>
            The ID of the Stripe Event object that this funding event was created as a response to.
            The event object holds all of the information that was sent to us via webhook, but is only guaranteed
            to be available for fetching after the fact for 30 days. This can be useful for debugging and support cases.
            See <see href="https://docs.stripe.com/api/events">Stripe's documentation</see> for more details.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.StripeFundingEvent.IsLive">
            <summary>
            Whether this funding event was created as a result of a live (not test mode) Stripe event.
            Responding to test mode events can be useful for development, testing, and training purposes.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.PlatformProfile.StudioNameShort">
            <inheritdoc cref="P:SkyFrost.Base.IPlatformProfile.StudioNameShort"/>
        </member>
        <member name="P:SkyFrost.Base.PlatformProfile.StudioNameLong">
            <inheritdoc cref="P:SkyFrost.Base.IPlatformProfile.StudioNameLong"/>
        </member>
        <member name="M:SkyFrost.Base.PlatformProfile.IsPlatformOwnerId(System.String)">
            <inheritdoc cref="M:SkyFrost.Base.IPlatformProfile.IsPlatformOwnerId(System.String)"/>
        </member>
        <member name="M:SkyFrost.Base.PlatformProfile.IsValidRecordUri(System.Uri)">
            <inheritdoc cref="M:SkyFrost.Base.IPlatformProfile.IsValidRecordUri(System.Uri)"/>
        </member>
        <member name="M:SkyFrost.Base.PlatformProfile.IsValidSessionUri(System.Uri)">
            <inheritdoc cref="M:SkyFrost.Base.IPlatformProfile.IsValidSessionUri(System.Uri)"/>
        </member>
        <member name="P:SkyFrost.Base.IPlatformProfile.PoliciesPage">
            <summary>
            A url to a page that provides access to Privacy Policy, Terms of Use etc.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.IPlatformProfile.StudioNameShort">
            <summary>
            The name of the studio/company making this Platform, in short form
            </summary>
            <example>YDMS</example>
        </member>
        <member name="P:SkyFrost.Base.IPlatformProfile.StudioNameLong">
            <summary>
            The name of the studio/company making this Platform, in long form.
            </summary>
            <example>Yellow Dog Man Studios</example>
        </member>
        <member name="M:SkyFrost.Base.IPlatformProfile.IsPlatformOwnerId(System.String)">
            <summary>
            Checks if a given OwnerID is the owner of this Platform Profile
            </summary>
            <param name="ownerId">OwnerID to check</param>
            <returns>true for owner, false for not owner</returns>
        </member>
        <member name="M:SkyFrost.Base.IPlatformProfile.GetRecordPath(System.String)">
            <summary>
            Used for records that exist Outside of the inventory, such as worlds saved using "World Path"
            </summary>
            <param name="recordPath"></param>
            <returns></returns>
        </member>
        <member name="M:SkyFrost.Base.IPlatformProfile.IsValidRecordUri(System.Uri)">
            <summary>
            Validates a given URL to see if it matches this Platform's specification for a record uri.
            </summary>
            <param name="recordUri">RecordUri to check</param>
            <returns>true for a valid record uri, false for invalid</returns>
        </member>
        <member name="M:SkyFrost.Base.IPlatformProfile.IsValidSessionUri(System.Uri)">
            <summary>
            Validates a given URL to see if it matches this Platform's specification for a session uri
            </summary>
            <param name="sessionUri">SessionUri to check</param>
            <returns>true for a valid session uri, false for invalid</returns>
        </member>
        <member name="F:SkyFrost.Base.Record.MAX_NAME_LENGTH">
            <summary>
            Character limit for a record's name
            </summary>
        </member>
        <member name="F:SkyFrost.Base.Record.MAX_DESCRIPTION_LENGTH">
            <summary>
            Character limit for a record's description
            </summary>
        </member>
        <member name="T:SkyFrost.Base.SessionAccessLevel">
            <summary>
            Used to determine the session access level for a session.
            </summary>
        </member>
        <member name="F:SkyFrost.Base.SessionAccessLevel.Private">
            <summary>
            This session cannot be joined without an invite.
            </summary>
        </member>
        <member name="F:SkyFrost.Base.SessionAccessLevel.LAN">
            <summary>
            This session can only be joined by users on the same LAN.
            </summary>
        </member>
        <member name="F:SkyFrost.Base.SessionAccessLevel.Contacts">
            <summary>
            Contacts(Friends) of the world host can join this session.
            </summary>
        </member>
        <member name="F:SkyFrost.Base.SessionAccessLevel.ContactsPlus">
            <summary>
            Contacts(Friends) of the world host and anyone who has already joined can join this session.
            </summary>
        </member>
        <member name="F:SkyFrost.Base.SessionAccessLevel.RegisteredUsers">
            <summary>
            Users who have an account and are logged in can join this session.
            </summary>
        </member>
        <member name="F:SkyFrost.Base.SessionAccessLevel.Anyone">
            <summary>
            Anyone can join the session.
            </summary>
        </member>
        <member name="F:SkyFrost.Base.SessionAccessLevel.Friends">
            <summary>
            Use <see cref="F:SkyFrost.Base.SessionAccessLevel.Contacts"/> instead.
            </summary>
        </member>
        <member name="F:SkyFrost.Base.SessionAccessLevel.FriendsOfFriends">
            <summary>
            Use <see cref="F:SkyFrost.Base.SessionAccessLevel.ContactsPlus"/> instead.
            </summary>
        </member>
        <member name="F:SkyFrost.Base.QuotaType.Base">
            <summary>
            Base quota type is only counted when there are no other quota types present
            </summary>
        </member>
        <member name="F:SkyFrost.Base.QuotaType.Normal">
            <summary>
            Normal quota type is counted as usual and grouped
            </summary>
        </member>
        <member name="F:SkyFrost.Base.QuotaType.Share">
            <summary>
            This indicates that the quota source is quota shared by another user/group
            </summary>
        </member>
        <member name="F:SkyFrost.Base.QuotaType.Unlimited">
            <summary>
            Unlimited storage. This is typically used for group members
            </summary>
        </member>
        <member name="P:SkyFrost.Base.QuotaSource.Id">
            <summary>
            Opaque unique identifier of this quota source. Can be potentially used for deduplication by systems that
            automatically grant storage quota (e.g. based on purchase) to make sure it doesn't get double-granted
            </summary>
        </member>
        <member name="P:SkyFrost.Base.QuotaSource.Bytes">
            <summary>
            How many bytes is this quota source worth
            </summary>
        </member>
        <member name="P:SkyFrost.Base.QuotaSource.ExpiresOn">
            <summary>
            When does this storage quota expire and will be removed. If null, it'll never expire.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.QuotaSource.ActivatesOn">
            <summary>
            When does this storage quota activate. It will not be counted if it has no activation date.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.QuotaSource.CreatedOn">
            <summary>
            When was this quota source created. This is purely for informational and doesn't affect activation.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.QuotaSource.Group">
            <summary>
            Group that this quota source belongs to. If there are multiple sources within same group overlapping,
            they are not summed up, only the biggest source is used
            </summary>
        </member>
        <member name="P:SkyFrost.Base.QuotaSource.Type">
            <summary>
            Indicates the broad category type of this quota
            </summary>
        </member>
        <member name="P:SkyFrost.Base.QuotaSource.MaximumShareLevel">
            <summary>
            Indicates how much can this storage be shared
            </summary>
        </member>
        <member name="P:SkyFrost.Base.QuotaSource.Name">
            <summary>
            Display name of this quota source. This is purely for user and doesn't affect functionality
            </summary>
        </member>
        <member name="P:SkyFrost.Base.QuotaSource.Description">
            <summary>
            Display description for this quota source. This can contain any details about how this quota source came to be.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.QuotaSource.IsExpired">
            <summary>
            Indicates if this quota source has expired
            </summary>
        </member>
        <member name="P:SkyFrost.Base.QuotaSource.IsActive">
            <summary>
            Indicates if this quota source is now active
            </summary>
        </member>
        <member name="P:SkyFrost.Base.QuotaShare.TargetOwnerId">
            <summary>
            Who is the quota being shared with (another user or group).
            Id of the Storage isn't necessary, because that's only needed for sharing with
            a member of a group, which isn't possible to do, since they only have portion of the quota of the group
            </summary>
        </member>
        <member name="P:SkyFrost.Base.QuotaShare.ShareRatio">
            <summary>
            Ratio (from 0.0 to 1.0) of the total quota to share with the target
            </summary>
        </member>
        <member name="P:SkyFrost.Base.QuotaShare.MaxShareBytes">
            <summary>
            Maximum number of bytes to share with the target. When ratio is set 1.0 this allows
            always sharing a fixed number of bytes.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.QuotaShare.CurrentShareBytes">
            <summary>
            How many bytes are being currently shared with the target
            This is computed automatically and should not be assigned.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Storage.Id">
            <summary>
            Id of the owner of this storage.
            If it's user, it's their UserId, same as OwnerId.
            If it's a group, it's the group Id, same as OwnerId
            If it's a group member, it's their user Id, with OwnerId being the group id
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Storage.OwnerId">
            <summary>
            Owner of this storage data. Can be user or group
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Storage.UsedBytes">
            <summary>
            How many bytes are currently used. Calculated from asset usages from pinned records.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Storage.QuotaBytes">
            <summary>
            How much storage does the owner have. Calculated from the quota sources and subtracted by quota shares
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Storage.FullQuotaBytes">
            <summary>
            How much storage would the owner have if none of the quota shares were in effect
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Storage.ShareableQuotaBytes">
            <summary>
            How much storage the owner has that's available for sharing with other users
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Storage.SharedQuotaBytes">
            <summary>
            Indicates how many bytes of the full storage are currently being shared
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Storage.QuotaSources">
            <summary>
            Sources of the quota bytes. These are actually authoritative sources and the QuotaBytes is
            always calculated from these.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.Storage.QuotaShares">
            <summary>
            Who is the owner's quota shared with. This allows sharing own storage quota with others
            </summary>
        </member>
        <member name="P:SkyFrost.Base.ThumbnailInfo.Signature">
            <summary>
            Base64 encoded RSA SHA-256 signature, which can be used to verify the Id and Timestamp of this thumbnail info
            for upload on the endpoint (Cloudflare) without having to contact the Azure API
            </summary>
            <remarks><see cref="P:SkyFrost.Base.ThumbnailInfo.SignatureDataString"/> for the unsigned data.</remarks>
        </member>
        <member name="P:SkyFrost.Base.ThumbnailInfo.UploadEndpoint">
            <summary>
            This is the URL where the thumbnail should be uploaded to and where it can be later fetched from
            </summary>
        </member>
        <member name="P:SkyFrost.Base.ThumbnailInfo.SignatureDataString">
            <summary>
            This is the string that the Signature will be generated on. These parameters are sensitive.
            Id determines the name of the thumbnail (which is generated to be unique by the API) and the
            timestamp is used to limit scope for how long this upload is valid, to ensure that users can't just
            request a thumbnail and upload it days later, after it already would've been deleted.
            Those two parameters must not change. Others the upload endpoint (Cloudflare) won't care about
            </summary>
        </member>
        <member name="P:SkyFrost.Base.ThumbnailInfo.SignatureData">
            <summary>
            Binary version of the SignatureString for signing.
            </summary>
            <remarks>
            <see cref="P:SkyFrost.Base.ThumbnailInfo.Signature"/> for the signed version.
            </remarks>
        </member>
        <member name="M:SkyFrost.Base.ThumbnailInfo.Sign(System.Security.Cryptography.RSAParameters)">
            <summary>
            This signs this thumbnail information with a private key, allowing the Id and Timestamp to be
            verified by the Cloudflare endpoint on upload, without having to contact the Azure API
            </summary>
            <param name="key"></param>
        </member>
        <member name="P:SkyFrost.Base.Universe.PrimaryGroupId">
            <summary>
            The primary group for this universe. Replaces Platform group in Universe specific features.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BroadcastTarget.Group">
            <summary>
            The general group that the information is being broadcasted to
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BroadcastTarget.TargetIds">
            <summary>
            List of ID's to which the information should be broadcasted to, when applicable.
            This is only valid for certain types of groups
            </summary>
        </member>
        <member name="P:SkyFrost.Base.PasswordLogin.Password">
            <summary>
            User's password that is being used to login into the account or to set new password
            </summary>
        </member>
        <member name="P:SkyFrost.Base.PasswordLogin.RecoveryCode">
            <summary>
            Recovery code which can be used to bypass the password requirement and set new password
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SessionTokenLogin.SessionToken">
            <summary>
            Use a session token to login
            </summary>
        </member>
        <member name="T:SkyFrost.Base.BadgeDefinition">
            <summary>
            Defines a badge that can be displayed on the user's name and on their profile
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BadgeDefinition.Id">
            <summary>
            Unique ID (per Owner) of the badge definition.
            This ID is used alongside OwnerId to reference the badge
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BadgeDefinition.OwnerId">
            <summary>
            Owner of this badge definition. This can be user or a group
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BadgeDefinition.Enabled">
            <summary>
            Indicates if this badge is enabled. Disabled badges will not show on user's profile
            or their nameplate, even if included. This adds a mechanism that allows globally disabling badges
            while preserving their data - e.g. badges disabled due to Patreon subscription expiring, or badges
            that end up deprecated.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BadgeDefinition.AssetURL">
            <summary>
            URL for the asset that represents the badge. This will depend on the type of badge.
            For Static2D, this is the URL of the texture
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BadgeDefinition.BadgeType">
            <summary>
            Type of the badge asset
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BadgeDefinition.PointFiltering">
            <summary>
            For Static2D badges. This will make the badge use point filtering, which is important for pixel art
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BadgeDefinition.Name">
            <summary>
            Name of this badge
            </summary>
        </member>
        <member name="P:SkyFrost.Base.BadgeDefinition.Description">
            <summary>
            Description of this badge
            </summary>
        </member>
        <member name="P:SkyFrost.Base.UserProfile.DisplayBadges">
            <summary>
            List of badges that the user has currently on display
            </summary>
        </member>
        <member name="T:SkyFrost.Base.RegistrationStatus">
            <summary>
            Basic status information for a registration. This is used to communicate the status of a registration with a client
            after it has submitted a registration request since they're queued.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.RegistrationStatus.Id">
            <summary>
            Unique identifier for the entity being registered
            </summary>
        </member>
        <member name="P:SkyFrost.Base.RegistrationStatus.Token">
            <summary>
            Secret token for the registration (to check status)
            </summary>
        </member>
        <member name="P:SkyFrost.Base.RegistrationStatus.State">
            <summary>
            Current state of the registration
            </summary>
        </member>
        <member name="P:SkyFrost.Base.RegistrationStatus.Error">
            <summary>
            Error encountered while processing the registration, if any.
            This should be populated when <see cref="P:SkyFrost.Base.RegistrationStatus.State">State</see> is <see cref="F:SkyFrost.Base.RegistrationState.Failed"/>.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.RegistrationStatus.IsDone">
            <summary>
            Whether <see cref="P:SkyFrost.Base.RegistrationStatus.State"/> is <see cref="F:SkyFrost.Base.RegistrationState.Done"/>
            </summary>
        </member>
        <member name="P:SkyFrost.Base.RegistrationStatus.IsFailed">
            <summary>
            Whether <see cref="P:SkyFrost.Base.RegistrationStatus.State"/> is <see cref="F:SkyFrost.Base.RegistrationState.Failed"/>
            </summary>
        </member>
        <member name="P:SkyFrost.Base.RegistrationStatus.IsResolved">
            <summary>
            Whether <see cref="P:SkyFrost.Base.RegistrationStatus.State"/> is <see cref="F:SkyFrost.Base.RegistrationState.Done"/> or <see cref="F:SkyFrost.Base.RegistrationState.Failed"/>
            </summary>
        </member>
        <member name="T:SkyFrost.Base.RegistrationState">
            <summary>
            Potential states of a registration
            </summary>
        </member>
        <member name="F:SkyFrost.Base.RegistrationState.Pending">
            <summary>
            The registration is waiting to be processed
            </summary>
        </member>
        <member name="F:SkyFrost.Base.RegistrationState.Processing">
            <summary>
            The registration is being processed
            </summary>
        </member>
        <member name="F:SkyFrost.Base.RegistrationState.Done">
            <summary>
            The registration was completed successfully
            </summary>
        </member>
        <member name="F:SkyFrost.Base.RegistrationState.Failed">
            <summary>
            The registration was aborted due to an error and will not be reattempted
            </summary>
        </member>
        <member name="T:SkyFrost.Base.PatreonSupporter">
            <summary>
            Patreon subscription support metadata
            </summary>
        </member>
        <member name="P:SkyFrost.Base.PatreonSupporter.Priority">
            <inheritdoc/>
        </member>
        <member name="P:SkyFrost.Base.PatreonSupporter.AccountNameOverride">
            <inheritdoc/>
        </member>
        <member name="P:SkyFrost.Base.PatreonSupporter.AccountNameColorOverride">
            <inheritdoc/>
        </member>
        <member name="P:SkyFrost.Base.PromoSupporter.Priority">
            <inheritdoc/>
        </member>
        <member name="P:SkyFrost.Base.PromoSupporter.AccountNameOverride">
            <inheritdoc/>
        </member>
        <member name="P:SkyFrost.Base.PromoSupporter.AccountNameColorOverride">
            <inheritdoc/>
        </member>
        <member name="T:SkyFrost.Base.StripeSupporter">
            <summary>
            Stripe subscription support metadata
            </summary>
        </member>
        <member name="P:SkyFrost.Base.StripeSupporter.Priority">
            <inheritdoc/>
        </member>
        <member name="P:SkyFrost.Base.StripeSupporter.AccountNameOverride">
            <inheritdoc/>
        </member>
        <member name="P:SkyFrost.Base.StripeSupporter.AccountNameColorOverride">
            <inheritdoc/>
        </member>
        <member name="T:SkyFrost.Base.SubscriptionSupporter">
            <summary>
            Subscription-based support metadata
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SubscriptionSupporter.IsActiveSupporter">
            <summary>
            Whether the user currently has an active subscription
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SubscriptionSupporter.TotalSupportMonths">
            <summary>
            Total number of months the user has been supporting
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SubscriptionSupporter.TotalSupportCents">
            <summary>
            Total monetary value of the user's support, in cents
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SubscriptionSupporter.LastTierCents">
            <summary>
            Most recent tier value, in cents
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SubscriptionSupporter.HighestTierCents">
            <summary>
            Highest tier value the user ever supported for, in cents
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SubscriptionSupporter.LowestTierCents">
            <summary>
            Lowest tier value the user ever supported for, in cents
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SubscriptionSupporter.FirstSupportTimestamp">
            <summary>
            First time the user supported
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SubscriptionSupporter.LastSupportTimestamp">
            <summary>
            Last time the user supported
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SubscriptionSupporter.IsValid">
            <summary>
            Whether the user has ever supported
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SubscriptionSupporter.IsSupporter">
            <summary>
            Whether the user has ever supported
            </summary>
        </member>
        <member name="M:SkyFrost.Base.SubscriptionSupporter.Sanitize">
            <summary>
            Sanitizes <see cref="P:SkyFrost.Base.SubscriptionSupporter.TotalSupportCents"/>, <see cref="P:SkyFrost.Base.SubscriptionSupporter.LastTierCents"/>, <see cref="P:SkyFrost.Base.SubscriptionSupporter.HighestTierCents"/>,
            and <see cref="P:SkyFrost.Base.SubscriptionSupporter.LowestTierCents"/>
            </summary>
        </member>
        <member name="T:SkyFrost.Base.SupporterMetadata">
            <summary>
            Metadata for a user's support for the project
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SupporterMetadata.AccountNameOverride">
            <summary>
            String to display for the user's account type
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SupporterMetadata.AccountNameColorOverride">
            <summary>
            Color to display for the user's account type
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SupporterMetadata.Priority">
            <summary>
            Priority for the account type
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SupporterMetadata.IsActive">
            <summary>
            Is the supporter data currently active
            </summary>
        </member>
        <member name="P:SkyFrost.Base.SupporterMetadata.ShowSupporterBadge">
            <summary>
            If supporter badge should be shown for this supporter
            </summary>
        </member>
        <member name="M:SkyFrost.Base.SupporterMetadata.Sanitize">
            <summary>
            Sanitizes data for API output
            </summary>
        </member>
        <member name="M:SkyFrost.Base.SupporterMetadata.CompareTo(SkyFrost.Base.SupporterMetadata)">
            <summary>
            Compares this metadata's priority to another's
            </summary>
            <param name="other"></param>
            <returns></returns>
        </member>
        <member name="P:SkyFrost.Base.OldCredential.Credential">
            <summary>
            Value of the old credential - username, email and such
            </summary>
        </member>
        <member name="P:SkyFrost.Base.OldCredential.ChangedOn">
            <summary>
            When it was changed to something different
            </summary>
        </member>
        <member name="P:SkyFrost.Base.OldCredential.ChangeSource">
            <summary>
            Optional description of the source that led to the credential being changed
            </summary>
        </member>
        <member name="P:SkyFrost.Base.User.HasSupported">
            <summary>
            Whether the user has ever supported the project with a subscription
            </summary>
        </member>
        <member name="M:SkyFrost.Base.User.HasSupporterMetadata``1(System.Predicate{``0})">
            <summary>
            Checks whether the user has any supporter metadata of a specific type and optionally matching a given predicate
            </summary>
            <typeparam name="T"></typeparam>
            <param name="filter"></param>
            <returns></returns>
        </member>
        <member name="T:SkyFrost.Base.UserSession">
            <summary>
            Represents an individual session for a user who is logged in. Lasts until the Token has expired, or invalidated.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.UserSession.UserId">
            <summary>
            User ID of the Logged In User
            </summary>
        </member>
        <member name="P:SkyFrost.Base.UserSession.SessionToken">
            <summary>
            Token for this session
            </summary>
        </member>
        <member name="P:SkyFrost.Base.UserSession.SessionCreated">
            <summary>
            Timestamp for when this session and token were created
            </summary>
        </member>
        <member name="P:SkyFrost.Base.UserSession.SessionExpire">
            <summary>
            Timestamp for when this session and token expire
            </summary>
        </member>
        <member name="P:SkyFrost.Base.UserSession.SecretMachineIdHash">
            <summary>
            Hash of the SecretMachineId used to create this session
            </summary>
        </member>
        <member name="P:SkyFrost.Base.UserSession.SecretMachineIdSalt">
            <summary>
            Salt used to produce the SecretMachineId hash
            </summary>
        </member>
        <member name="P:SkyFrost.Base.UserSession.RememberMe">
            <summary>
            True, if the user has elected for this Login Session to be "Remembered" in app.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.UserSession.IsMachineBound">
            <summary>
            Indicates that this token is bound to specific machine, meaning that the token needs to be hashed with the
            secret machine ID and UID, to produce raw token.
            </summary>
        </member>
        <member name="P:SkyFrost.Base.UserSession.LogoutUrl">
            <summary>
            URL that needs to be opened to finalize the logout. This is typically used with external authentication services
            </summary>
        </member>
        <member name="P:SkyFrost.Base.UserSession.LogoutUrlClientSide">
            <summary>
            Determines if the logout URL needs to be opened client side (typically opening in user's web browser)
            </summary>
        </member>
        <member name="P:SkyFrost.Base.UserSession.OriginalLoginType">
            <summary>
            The type of login (password, OAuth, SAML 2.0 ...) that this session was created from
            </summary>
        </member>
        <member name="P:SkyFrost.Base.UserSession.SessionLoginCounter">
            <summary>
            This is incremented each time a new user session is created from another one (for RememberMe logins)
            </summary>
        </member>
        <member name="F:SkyFrost.Base.UserTags.SuperAdmin">
            <remarks>
            On the main Universe, this is reserved for Froox.
            For others it might be many people.
            </remarks>
        </member>
        <member name="F:SkyFrost.Base.UserTags.EventTags">
            <summary>
            A Map of event names to User tags.
            </summary>
            <remarks>
            This is used for the command /addeventbadge and /removeeventbadge
            </remarks>
        </member>
        <member name="T:SkyFrost.Base.NewtonDefaultingStringEnumConverter`1">
             <summary>
             Converts a JSON string value into an Enum Value, if any issues occur the value is set to the provided default Value.
             </summary>
             <remarks>
             In our old infrastructure, we had some additional Enum values in some cases, during Migration to new infrastructures these were deleted,
             and so to properly de-serialize them for conversion or analysis we need to have a stand in to avoid Errors.
            
             Originally from: https://gist.github.com/gubenkoved/999eb73e227b7063a67a50401578c3a7?permalink_comment_id=3699666#gistcomment-3699666
             </remarks>
        </member>
        <!-- Badly formed XML comment ignored for member "T:SkyFrost.Base.JsonDefaultingStringEnumConverter`1" -->
        <!-- Badly formed XML comment ignored for member "T:SkyFrost.Base.JsonStringEnumConverterAttribute" -->
        <member name="M:SkyFrost.Base.JsonStringEnumConverterAttribute.CreateConverter(System.Type)">
            As this classes "ConverterType" is null, this method will be called when there needs to be a converter created.
            
            This allows us to inject the defaultValue into the construction of the converter.
            Again see: https://github.com/dotnet/runtime/issues/73984
            and: https://github.com/dotnet/runtime/blob/main/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/DefaultJsonTypeInfoResolver.Converters.cs#L173
        </member>
        <member name="T:SkyFrost.Base.PortRange">
            <summary>
            Port Range represents a list of ports available to use for networking. It can be used to restrict the port usage of an application.
            </summary>
            <example purpose="schema">
            <code>
            OnStartup:
            var success = _portRange.Try((int port) => _client.Start(port));
            if (!success) {
            throw new Exception("Failed to start LNL_Connection: Please check that the system has a port available. We're using: " + _portRange);
            }
            </code>
            OnStop:
            range.Free(port);
            </example>
            <remarks>It makes no attempt to discover if other applications/processes are using a port. It will just try it anyway.</remarks>
        </member>
        <member name="P:SkyFrost.Base.PortRange.Max">
            <summary>
            Maximum value for this range
            </summary>
        </member>
        <member name="P:SkyFrost.Base.PortRange.Min">
            <summary>
            Minimum value for this range
            </summary>
        </member>
        <member name="P:SkyFrost.Base.PortRange.Length">
            <summary>
            The length of this range
            </summary>
        </member>
        <member name="P:SkyFrost.Base.PortRange.AvailablePorts">
            <summary>
            Returns each port value in the range which allows for an easy for loop.
            </summary>
            <example>
            foreach (int i in range.AvailablePorts) {} gets you an automatic for loop.
            </example>
            <remarks>
            As under the hood this is entirely Enumerable based, it is quite efficient.
            </remarks>
            <returns></returns>
        </member>
        <member name="M:SkyFrost.Base.PortRange.#ctor(System.Int32,System.Int32)">
            <summary>
            Creates a new port range with a specified minimum and maximum value.
            </summary>
            <param name="min">minimum value for this range</param>
            <param name="max">maximum value for this range</param>
            <exception cref="T:System.ArgumentException"></exception>
        </member>
        <member name="M:SkyFrost.Base.PortRange.Contains(System.Int32)">
            <summary>
            Does the range contain this value?
            </summary>
            <param name="port"></param>
            <returns>True if the value is within the range, false if not.</returns>
        </member>
        <member name="M:SkyFrost.Base.PortRange.UseNext">
            <summary>
            Same as <see cref="M:SkyFrost.Base.PortRange.Next"/> but also marks port as used.
            </summary>
            <returns>Next available port or 0 for no available port.</returns>
        </member>
        <member name="M:SkyFrost.Base.PortRange.Next">
            <summary>
            Returns the next available port or 0 if there are no available ports
            </summary>
            <returns>Next available port or 0 for no available port.</returns>
            <remarks>0 means "any available" port, and so it is used as the fallback here as it allows.
            Things to continue trying to work, without this port range's involvement.
            </remarks>
        </member>
        <member name="M:SkyFrost.Base.PortRange.IsInUse(System.Int32)">
            <summary>
            Gets if a port is in use or not by this port range
            </summary>
            <param name="port">Port number to check</param>
            <returns>true if this port is in use, false if it is not.</returns>
        </member>
        <member name="M:SkyFrost.Base.PortRange.Use(System.Int32)">
            <summary>
            Explicitly mark a port as used, so it doesn't appear in the range
            </summary>
            <remarks>Avoid using this where possible and rely on <see cref="M:SkyFrost.Base.PortRange.UseNext"/>.
            Its intended for scenarios where we detect that a certain port is used or unavailable for another reason such as firewalls.</remarks>
            <param name="port"></param>
            <returns></returns>
        </member>
        <member name="M:SkyFrost.Base.PortRange.Free(System.Int32)">
            <summary>
            Marks a port that was used as free
            </summary>
            <param name="port">Port to free up</param>
            <returns>true if the port was freed, false if it was not used to begin with.</returns>
        </member>
        <member name="M:SkyFrost.Base.PortRange.ToString">
            <summary>
            Returns a nicely formatted string detailing this range
            </summary>
            <returns></returns>
        </member>
        <member name="M:SkyFrost.Base.PortRange.From(System.Int32,System.Int32)">
            <summary>
            Create a new port range, from min inclusive to max inclusive.
            </summary>
            <param name="minInclusive">inclusive minimum port for this range.</param>
            <param name="maxInclusive">inclusive maximum port this range.</param>
            <returns></returns>
        </member>
        <member name="M:SkyFrost.Base.PortRange.Try(System.Func{System.Int32,System.Boolean})">
            <summary>
            For each port in this range, call the startFunction with that port.
            </summary>
            <remarks>startFunction should try to use the port and then return a boolean indicating success.
            This method, is aimed to make things very simple for consumers but it does take away all of the control.
            </remarks>
            <param name="startFunction">A function that is called with each port in this port range. It should return true if it was able to use a given port.</param>
            <returns>true if a port was successful used and allocated, false otherwise</returns>
        </member>
        <member name="M:SkyFrost.Base.EnumerableExtensions.NotInHashSet``1(System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.HashSet{``0})">
            <summary>
            Creates an Iterator over <paramref name="first"/> which only includes elements not found in <paramref name="second"/>.
            </summary>
            <typeparam name="TSource">Type of the enumerable</typeparam>
            <param name="first">First set, with items to return.</param>
            <param name="second">Second set with items to exclude</param>
            <returns>An enumerable that includes elements from the first set, not found in the second</returns>
        </member>
        <member name="M:SkyFrost.Base.EnumerableExtensions.NotInHashSetIterator``1(System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.HashSet{``0})">
            <summary>
            Produces an <see cref="T:System.Collections.IEnumerable"/><typeparamref name="TSource"/> that includes elements from the first set that are not found in the second.
            </summary>
            <typeparam name="TSource">Type of the Enumerable</typeparam>
            <param name="first">First set, with items to return</param>
            <param name="second">Second set, with items to exclude</param>
            <returns>An enumerable that includes elements from the first set, not found in the second</returns>
        </member>
        <member name="T:SkyFrost.Base.SensitiveEntityAttribute">
            <summary>
            This indicates that a given entity is sensitive and should not be printed out to logs and console
            </summary>
        </member>
    </members>
</doc>
