import '../../about/external/data/Commitment.dart';
import '../../about/external/data/ExcuseCluster.dart';
import '../../about/internal/application/Standing.dart';
import '../../about/internal/application/UserDetails.dart';

abstract class ConnectHome {
  void onUserLoaded(UserDetails details);

  void onPlanLoaded(List<Commitment> plan);

  void onOverdueLoaded(List<Commitment> overdue);

  /// Standing arrives derived, with the debt it was derived from.
  void onStandingResolved(Standing standing, double debtScore);

  /// The one excuse pattern worth confronting the user with today.
  void onExcuseInsight(ExcuseCluster? cluster);

  /// Distress detected — the strict persona drops entirely.
  void onDistressDetected();

  /// Creating a commitment is refused at this standing.
  void onCreationBlocked(String reason);

  /// A tick landed. [late] is true when the window had already closed, so the
  /// row can show it was recorded as a late complete rather than a clean one.
  void onTicked(Commitment item, bool late);

  /// The tick failed and the row has to go back to unchecked.
  void onTickFailed(Commitment item);
}
