namespace TagFighter.Effects.Steps
{
    using System.Collections.Generic;

    [System.Serializable]
    public class PortData
    {
        public CareBoo.Serially.SerializableType Type;
        public string DisplayName;
        public List<string> ConnectedNodesGuid;
    }

    public interface IPortData
    {
        public PortData ToData();
        public bool FromData(PortData portData, Dictionary<string, EffectStepNode> guidToNode);
    }

    public interface IPort : IPortData
    {
        public string DisplayName {
            get;
            set;
        }
        public void DisconnectAll();
        public bool IsAllowedConnect(EffectStepNode node);

        public PortCapacity Capacity { get; }
        public bool TryConnect(EffectStepNode node);
        public bool TryDisconnect(EffectStepNode node);

        public IEnumerable<EffectStepNode> Connections();
    }

}