using System;

// ReSharper disable ClassNeverInstantiated.Global
// ReSharper disable MemberCanBePrivate.Global

namespace NodePipeline.Engine.Abstractions.Validation;

public sealed class NodePortInfo(
    string name,
    Type type,
    bool isNullable,
    bool required,
    bool disallowNullableInput,
    bool input)
{
    public string Name { get; } = name ?? throw new ArgumentNullException(nameof(name));
    public Type Type { get; } = type ?? throw new ArgumentNullException(nameof(type));
    public bool IsNullable { get; } = isNullable;
    public bool Required { get; } = required;
    public bool DisallowNullableInput { get; } = disallowNullableInput;
    public bool Input { get; } = input;

    public override string ToString()
    {
        return
            $"{Name}:{Type.Name}{(IsNullable ? "?" : "")}, Req={Required}, DisallowNull={DisallowNullableInput}, {(Input ? "Input" : "Output")}";
    }
}