using System.ComponentModel.DataAnnotations;
using static Managing.Common.Enums;

namespace Managing.Domain.Workflows;

public interface IFlow
{
    [Required]
    Guid Id { get; }
    [Required]
    string Name { get;   }
    [Required]
    FlowType Type { get; }
    [Required]
    string Description { get; }
    [Required]
    List<FlowOutput> AcceptedInputs { get; }
    List<IFlow> Children { get; set; }
    [Required]
    List<FlowParameter> Parameters { get; set; }
    Guid ParentId { get;   }
    string Output { get; set; }
    [Required]
    List<FlowOutput> OutputTypes { get; }
    Task Execute(string input);
}
