import 'package:krow/features/invoice/domain/invoice_entity.dart';

enum InvoiceStatusFilterType {
  all,
  open,
  disputed,
  resolved,
  paid,
  overdue,
  verified
}

abstract class InvoicesRepository {
  Stream<dynamic> get statusStream;

  Future<List<InvoiceListEntity>> getInvoices(
      {String? lastItemId, required InvoiceStatusFilterType statusFilter});

  void dispose();

  Future<void> approveInvoice({required String invoiceId});

  Future<void> disputeInvoice({
    required String invoiceId,
    required String reason,
    required String comment,
  });
}
