import 'dart:typed_data';

/// 보고서 다운로드 요청 결과 모델.
class ReportDownloadResult {
  const ReportDownloadResult({
    this.downloadUrl,
    this.filename,
    this.mimeType,
    this.bytes,
    this.expiresAt,
  });

  /// 사전 서명된 다운로드 URL.
  final Uri? downloadUrl;

  /// 서버가 제안한 파일명.
  final String? filename;

  /// 응답 콘텐츠 타입.
  final String? mimeType;

  /// 서버가 직접 전송한 파일 데이터(옵션).
  final Uint8List? bytes;

  /// 다운로드 링크 또는 토큰의 만료 시각.
  final DateTime? expiresAt;

  /// URL 기반 다운로드가 가능한지 여부.
  bool get hasDownloadUrl => downloadUrl != null;

  /// 바이너리 데이터가 포함되어 있는지 여부.
  bool get hasBytes => bytes != null && bytes!.isNotEmpty;
}
