public override Money On(Timestamp time) => time.CompareTo(this.ValidBefore) >= 0 ? Amount.Zero(base.Currency) : this;
public int CompareTo(Timestamp other) => this.UtcTime.CompareTo(other.UtcTime);
public int CompareTo(Timestamp other) => - other.CompareTo(this.Value);
public override Money On(Timestamp time) => this;
public Money PayableAt(Money money, Amount expense, Timestamp time) => money is GiftCard gift && gift.ValidBefore.CompareTo(time) < 0 ? Amount.Zero(expense.Currency)
public (Amount paid, Wallet remaining) Pay(Amount expense, Timestamp time) => this.Moneys
public BankCard CardOn(Timestamp time) => time.CompareTo(this.ValidBefore) >= 0 ? (BankCard) new CardExpired(this.ValidBefore) : this;
public override Money On(Timestamp time) => this.CardOn(time);