using System; using System.Collections.Generic; using System.Linq; using BoundaryLab.Domain; namespace BoundaryLab.Application; public interface IOrderCommit { void Commit(OrderState state, OrderAccepted message); } public sealed class AcceptOrder(IOrderCommit store) { public bool Execute(OrderState state) { var transition = state.Accept(); if (transition is null) return false; store.Commit(transition.State, transition.Event); return true; } }