/// Design Request Repository Interface
///
/// Defines contract for design request data operations.
library;

import 'package:worker/features/showrooms/domain/entities/design_request.dart';

/// Design Request Repository
///
/// Repository interface for design request operations.
abstract class DesignRequestRepository {
  /// Get list of design requests
  ///
  /// Returns list of design requests.
  /// [limitStart] - Pagination offset
  /// [limitPageLength] - Number of items per page (0 = all)
  Future<List<DesignRequest>> getDesignRequests({
    int limitStart = 0,
    int limitPageLength = 0,
  });

  /// Get detail of a design request by name
  ///
  /// Returns full design request detail with files_list.
  Future<DesignRequest> getDesignRequestDetail(String name);

  /// Create a new design request
  ///
  /// Returns created request ID (name).
  Future<String> createDesignRequest({
    required String subject,
    required String area,
    required String region,
    required String desiredStyle,
    String? estimatedBudget,
    required String detailedRequirements,
    required String dateline,
  });

  /// Upload file attachment for a design request
  Future<void> uploadDesignRequestFile({
    required String requestId,
    required String filePath,
    required String fileName,
  });
}
