import 'package:krow_domain/krow_domain.dart';

/// Interface for the Client Create Order repository.
///
/// This repository is responsible for:
/// 1. Retrieving available order types for the client.
/// 2. Submitting different types of staffing orders (Rapid, One-Time).
///
/// It follows the KROW Clean Architecture by defining the contract in the
/// domain layer, to be implemented in the data layer.
abstract interface class ClientCreateOrderRepositoryInterface {
  /// Retrieves the list of available order types (e.g., Rapid, One-Time, Recurring).
  Future<List<OrderType>> getOrderTypes();

  /// Submits a one-time staffing order with specific details.
  ///
  /// [order] contains the date, location, and required positions.
  Future<void> createOneTimeOrder(OneTimeOrder order);

  /// Submits a rapid (urgent) staffing order via a text description.
  ///
  /// [description] is the text message (or transcribed voice) describing the need.
  Future<void> createRapidOrder(String description);
}
