using System;
using System.Collections.Generic;
using Unity.MLAgents.Actuators;
using Unity.MLAgents.Sensors;
namespace Unity.MLAgents.Policies
{
///
/// IPolicy is connected to a single Agent. Each time the agent needs
/// a decision, it will request a decision to the Policy. The decision
/// will not be taken immediately but will be taken before or when
/// DecideAction is called.
///
internal interface IPolicy : IDisposable
{
///
/// Signals the Brain that the Agent needs a Decision. The Policy
/// will make the decision at a later time to allow possible
/// batching of requests.
///
///
///
void RequestDecision(AgentInfo info, List sensors);
///
/// Signals the Policy that if the Decision has not been taken yet,
/// it must be taken now. The Brain is expected to update the actions
/// of the Agents at this point the latest.
///
ref readonly ActionBuffers DecideAction();
}
}