using Newtonsoft.Json;
using System.Collections.Generic;
using static SOMDocManager;


public class Scroll
{
    public string @ref;
    public string label;
    public string description;
    public List<MMTDeclaration> requiredFacts;
    public List<MMTDeclaration> acquiredFacts;

    public class FilledScroll
    {
        public string scroll;
        public List<ScrollAssignment> assignments;

        public FilledScroll(string scroll, List<ScrollAssignment> assignments)
        {
            this.scroll = scroll;
            this.assignments = assignments;
        }
    }

    public class ScrollTheoryReference
    {
        public string problemTheory;
        public string solutionTheory;
    }

    public class UriReference
    {
        public string uri;

        public UriReference(string uri)
        {
            this.uri = uri;
        }
    }

    public class ScrollAssignment
    {
        public UriReference fact;
        public OMS assignment;

        [JsonConstructor]
        private ScrollAssignment() { }

        public ScrollAssignment(string fact_id, string assignment_id)
        {
            this.fact = new UriReference(fact_id);
            this.assignment = new OMS(assignment_id);
        }
    }

    public class ScrollApplicationInfo
    {
        public bool valid;
        public ScrollApplicationCheckingError[] errors;
        public List<MMTDeclaration> acquiredFacts;
    }

    public class ScrollDynamicInfo
    {
        public Scroll original;
        public Scroll rendered;
        public List<List<ScrollAssignment>> completions;
        public bool valid;
        public ScrollApplicationCheckingError[] errors;
    }

    public class ScrollApplicationCheckingError
    {
        public string kind;
        public string msg;
        public SOMDoc fact;
    }

}