namespace SequenceAuth.Lib; public enum SequenceState { Initialized, Active, Rotated, Compromised } public enum ValidationOutcome { Success, SequenceNotFound, LimitExceeded, CompromisedSequenceDetected, InternalError } public enum OptionState { Some, None } public record Option(T? Value, OptionState State) { public static Option Some(T value) => new(value, OptionState.Some); public static Option None() => new(default, OptionState.None); } public enum StoreOutcome { Success, Failure } public record SequenceData(string UserId, int RequestsRemaining, SequenceState State, string NextSequenceId);