using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace AssetBank.Editor.SchemaConverter.Data.Output
{
    /// <summary>
    /// Represents a node in the final hierarchical structure (e.g., a GameObject).
    /// </summary>
    public class HierarchicalNode
    {
        [JsonProperty(Order = 1)]
        public string anchor_id;

        [JsonProperty(Order = 2)]
        public string type_id;

        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, Order = 3)]
        public bool? is_orphan;

        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, Order = 4)]
        public ulong? prefab_guid_index;

        [JsonProperty(Order = 99)]
        public List<HierarchicalNode> children = new List<HierarchicalNode>();

        [JsonExtensionData]
        public IDictionary<string, JToken> Fields { get; set; } = new Dictionary<string, JToken>();
    }
}
