using AIMA.Agent.Action; using AIMA.Agent.Percept; using System.Collections.Generic; namespace AIMA.Agent.Environment { public interface IEnvironment where T1 : IAction where T2 : IPercept { IReadOnlyDictionary, double> ReadOnlyPerformanceMeasures { get; } IList> GetAgents(); void AddAgent(IAgent agent); void RemoveAgent(IAgent agent); IList GetEnvironmentObjects(); void AddEnvironmentObject(IEnvironmentObject environmentObject); void RemoveEnvironmentObject(IEnvironmentObject environmentObject); void Step(); void Step(int n); void StepUntilDone(); bool IsDone(); double GetPerformanceMeasure(IAgent agent); void AddEnvironmentView(IEnvironmentView environmentView); void RemoveEnvironmentView(IEnvironmentView environmentView); void NotifyViews(string message); } }