import '../about/external/data/Commitment.dart';
import '../about/external/data/Program.dart';
import '../about/external/data/SystemResponse.dart';
import '../about/internal/application/CapacityProfile.dart';
import '../about/internal/application/MeDescription.dart';
import '../about/internal/application/Token.dart';
import '../about/internal/application/UserDetails.dart';

abstract class ConnectInternalMemory {
  Future<MeDescription> getMyDescription();

  Future setMyDescription(MeDescription description);

  Future<String> getNotToken();

  Future setNotToken(String token);

  Future<SystemResponse> getUserCreationDetails();

  Future setUserCreationDetails(SystemResponse response);

  Future<UserDetails> getUserDetails();

  Future setUserDetails(UserDetails details);

  Future<Token> getTokenEntry();

  Future setTokenEntry(Token token);

  Future<String> getRefreshAt();

  Future setRefreshAt(String refresher);

  Future<Commitment> getActiveCommitment();

  Future setActiveCommitment(Commitment commitment);

  Future<Program> getActiveProgram();

  Future setActiveProgram(Program program);

  Future<CapacityProfile> getCapacityProfile();

  Future setCapacityProfile(CapacityProfile profile);

  /// The last computed debt score, so the app can open with a number rather
  /// than a spinner.
  Future<double> getCachedDebtScore();

  Future setCachedDebtScore(double score);

  /// App opens this week, for the distress conjunction.
  Future<int> getEngagementCount();

  Future setEngagementCount(int count);

  /// Amnesty tokens spent this month.
  Future<int> getAmnestySpent();

  Future setAmnestySpent(int spent);

  Future<bool> showOnboarding();

  Future setOnboardingOption(bool value);
}
