using Nocturnis.DataStructures.Data; using Nocturnis.DataStructures.DataTypes; namespace Nocturnis.GlobalManagement.Providers; public interface IPolymorphismProvider { (object, DataType) Square(DataVariable a); (object, DataType) Neg(DataVariable a); (object, DataType) Add(DataVariable a, DataVariable b); (object, DataType) Sub(DataVariable a, DataVariable b); (object, DataType) Div(DataVariable a, DataVariable b); (object, DataType) Dot(DataVariable a, DataVariable b); (object, DataType) Mul(DataVariable a, DataVariable b); (object, DataType) Pow(DataVariable a, DataVariable b); (object, DataType) ScalarDiv(DataVariable a, DataVariable b); (object, DataType) ScalarMul(DataVariable a, DataVariable b); }