using Robust.Shared.Player;
namespace Content.Server.Ghost.Roles.Raffles;
///
/// Chooses a winner of a ghost role raffle.
///
[ImplicitDataDefinitionForInheritors]
public partial interface IGhostRoleRaffleDecider
{
///
/// Chooses a winner of a ghost role raffle draw from the given pool of candidates.
///
/// The players in the session at the time of drawing.
///
/// Call this with the chosen winner as argument.
///
- If true is returned, your winner was able to take over the ghost role, and the drawing is complete.
/// Do not call again after true is returned.
/// - If false is returned, your winner was not able to take over the ghost role,
/// and you must choose another winner, and call with the new winner as argument.
///
///
/// If is not called, or only returns false, the raffle will end without a winner.
/// Do not call with the same player several times.
///
void PickWinner(IEnumerable candidates, Func tryTakeover);
}