import 'dart:io'; import 'package:equatable/equatable.dart'; import '../../data/models/expense.dart'; abstract class CountEvent extends Equatable { const CountEvent(); @override List get props => []; } class LoadExpenses extends CountEvent { final String groupId; final bool includeArchived; const LoadExpenses(this.groupId, {this.includeArchived = false}); @override List get props => [groupId, includeArchived]; } class CreateExpense extends CountEvent { final Expense expense; final File? receiptImage; const CreateExpense({ required this.expense, this.receiptImage, }); @override List get props => [expense, receiptImage]; } class UpdateExpense extends CountEvent { final Expense expense; final File? newReceiptImage; const UpdateExpense({ required this.expense, this.newReceiptImage, }); @override List get props => [expense, newReceiptImage]; } class DeleteExpense extends CountEvent { final String groupId; final String expenseId; const DeleteExpense({ required this.groupId, required this.expenseId, }); @override List get props => [groupId, expenseId]; } class ArchiveExpense extends CountEvent { final String groupId; final String expenseId; const ArchiveExpense({ required this.groupId, required this.expenseId, }); @override List get props => [groupId, expenseId]; } class MarkSplitAsPaid extends CountEvent { final String groupId; final String expenseId; final String userId; const MarkSplitAsPaid({ required this.groupId, required this.expenseId, required this.userId, }); @override List get props => [groupId, expenseId, userId]; } class LoadExchangeRates extends CountEvent { const LoadExchangeRates(); }