namespace NeonSprawl.Server.Game.Contracts;
/// Append-only contract completion outcome audit log (NEO-146).
public interface IContractOutcomeStore
{
/// First append with a given row Id or IdempotencyKey returns true; duplicates return false.
bool TryAppend(ContractOutcomeRow row);
bool TryGetByIdempotencyKey(string idempotencyKey, out ContractOutcomeRow row);
/// Audit rows for one instance ordered by then Id ascending.
IReadOnlyList GetOutcomesForInstance(string contractInstanceId, int? limit = null);
/// Dev fixture only — removes outcome rows for one instance; idempotent when none match.
bool TryClearForInstance(string contractInstanceId);
}