namespace NeonSprawl.Server.Game.Contracts;
/// Id normalization and idempotency keys for contract outcome audit rows (NEO-146).
public static class ContractOutcomeIds
{
/// Stable idempotency key for contract completion delivery.
public static string MakeIdempotencyKey(string? playerId, string? contractInstanceId)
{
var p = ContractInstanceIds.NormalizePlayerId(playerId);
var i = ContractInstanceIds.NormalizeContractInstanceId(contractInstanceId);
if (p.Length == 0 || i.Length == 0)
{
return string.Empty;
}
return $"{p}:contract_complete:{i}";
}
}