using System.Collections.Generic;
using Artemis.Core.Modules;
namespace Artemis.Core.Services;
///
/// A service that allows you to register and retrieve data models
///
public interface IDataModelService : IArtemisService
{
///
/// Add a data model to so that it is available to conditions and data bindings
///
///
DataModelRegistration RegisterDataModel(DataModel dataModel);
///
/// Remove a previously added data model so that it is no longer available
///
void RemoveDataModel(DataModelRegistration registration);
///
/// Returns a list of all registered data models
///
List GetDataModels();
///
/// If found, returns the registered data model of type
///
/// The type of the data model to find
T? GetDataModel() where T : DataModel;
///
/// If found, returns the data model of the provided plugin
///
/// The plugin to find the data model of
DataModel? GetPluginDataModel(PluginFeature pluginFeature);
}