using System.Collections.Generic;
namespace Unity.MLAgents.Actuators
{
///
/// Interface for writing a mask to disable discrete actions for agents for the next decision.
///
public interface IDiscreteActionMask
{
///
/// Modifies an action mask for discrete control agents.
///
///
/// When used, the agent will not be able to perform the actions passed as argument
/// at the next decision for the specified action branch. The actionIndices correspond
/// to the action options the agent will be unable to perform.
///
/// See [Agents - Actions] for more information on masking actions.
///
/// [Agents - Actions]: https://github.com/Unity-Technologies/ml-agents/blob/release_12_docs/docs/Learning-Environment-Design-Agents.md#actions
///
/// The branch for which the actions will be masked.
/// The indices of the masked actions.
void WriteMask(int branch, IEnumerable actionIndices);
///
/// Get the current mask for an agent.
///
/// A mask for the agent. A boolean array of length equal to the total number of
/// actions.
bool[] GetMask();
///
/// Resets the current mask for an agent.
///
void ResetMask();
}
}