import 'package:please_pay_me/data/models/auth_user.dart'; import 'package:please_pay_me/data/models/budget.dart'; import 'package:please_pay_me/data/models/expense.dart'; import 'package:please_pay_me/data/models/job.dart'; /// Contracts the UI depends on. Implemented by the REST backend and by the /// in-memory demo backend used for previews and tests. abstract interface class BudgetRepository { Future> list(); Future status({int? budgetId}); Future create({ required String name, required double totalAmount, required DateTime endDate, DateTime? startDate, }); Future update({ required int budgetId, String? name, double? totalAmount, DateTime? endDate, DateTime? startDate, bool resetExpenses = false, }); Future select(int budgetId); Future setActive(int budgetId, {required bool isActive}); Future delete(int budgetId); } abstract interface class ExpenseRepository { Future page({ required int page, int pageSize = 20, int? budgetId, bool all = false, }); Future create({ required double amount, String? note, DateTime? spentAt, int? budgetId, }); Future undoLast({int? budgetId}); } abstract interface class JobRepository { Future> list(); Future create({ required String name, required double salaryAmount, required List payDays, required double firstPayPercent, required WeekendPolicy weekendPolicy, }); Future update({ required int jobId, required String name, required double salaryAmount, required List payDays, required double firstPayPercent, required WeekendPolicy weekendPolicy, bool isActive = true, }); Future delete(int jobId); } abstract interface class UserRepository { Future me(); }