using System; using System.Collections.Generic; using NodePipeline.Abstractions.Interfaces; using NodePipeline.Abstractions.Interfaces.Nodes; using NodePipeline.Configuration.Abstractions.Models.Execute; using NodePipeline.Engine.Abstractions.Validation; namespace NodePipeline.Engine.Abstractions; public interface INodeFactory { IPipelineLocalizationProvider PipelineLocalizationProvider { get; set; } Dictionary> NodeFactories { get; set; } INode CreateNode(string pipelineId, NodeConfig config); IEnumerable GetParameterCodes(string nodeType); /// /// Fetch all node ports /// /// Current pipeline Id /// Node types /// Node ids by node type /// Dictionary GetAllPorts(string pipelineId, HashSet nodeTypes, Dictionary> nodeList); IEnumerable GetNodeInputPorts(string pipelineId, string nodeType, string nodeId); object? ReadParameterValue(string pipelineId, string nodeId, string nodeType, string parameterName, string valueString); object? GetParameterDefaultValue(string nodeType, string parameterName); void SetNodeParametersValues(string pipelineId, TNode node, string nodeId, Dictionary parameters) where TNode : INode; void ConnectPorts(string pipelineId, TNode node, string nodeId, Dictionary inputs, IReadOnlyDictionary createdNodes) where TNode : INode; }