using System.Threading.Tasks;
using static Data.Models.Client.EFClient;
using static SharedLibraryCore.Server;
namespace SharedLibraryCore.Interfaces
{
///
/// Defines the basic properties of a command
///
public interface IManagerCommand
{
///
/// Name of the command
///
string Name { get; }
///
/// Description of the command
///
string Description { get; }
///
/// Alternative name of the command
///
string Alias { get; }
///
/// Minimum permission required to execute the command
///
Permission Permission { get; }
///
/// Games the command is supported on
///
Game[] SupportedGames { get; }
///
/// Syntax for using the command
///
string Syntax { get; }
///
/// Indicates if target is required
///
bool RequiresTarget { get; }
///
/// Indicates if the commands can be run as another client
///
bool AllowImpersonation { get; }
///
/// Indicates if the command result should be broadcasted to all clients
///
bool IsBroadcast { get; set; }
///
/// Executes the command
///
/// event corresponding to the command
///
Task ExecuteAsync(GameEvent gameEvent);
}
}