using System;

namespace ExtensiblePortfolioSite.SDK.Git
{
    /// <summary>
    /// Git Reference Kind
    /// </summary>
    public enum GitReferenceKind
    {
        /// <summary>
        /// <see cref="IUser"/>
        /// </summary>
        User,
        /// <summary>
        /// <see cref="IRepository"/>
        /// </summary>
        Repository,
        /// <summary>
        /// <see cref="ICommit"/>
        /// </summary>
        Commit
    }

    /// <summary>
    /// Represents a Git Reference
    /// </summary>
    public readonly struct GitReference
    {
        public GitReference(GitReferenceKind Kind, String ReferenceString)
        {
            this.Kind = Kind;
            this.ReferenceString = ReferenceString;
        }
        /// <summary>
        /// Reference Kind
        /// </summary>
        public readonly GitReferenceKind Kind;
        /// <summary>
        /// Reference String
        /// </summary>
        public readonly String ReferenceString;
    }

    internal readonly struct GitStrongReference
    {
        public readonly String Plugin;
        public readonly String ServiceName;
        public readonly GitReference Reference;
    }
}
