// Repository Interface（Domain）

import 'package:dio/dio.dart';
import 'package:networks_sdk/src/data/dto/api_requestable.dart';
import 'package:networks_sdk/src/presentation/wiring/api_config.dart';
import 'package:networks_sdk/src/presentation/wiring/network_callbacks.dart';

/// 网络层 Repository 接口
///
/// 定义两种请求入口：
/// - [executeRequest] — 统一请求入口（标准 / Upload / 流式）
/// - [executeDownload] — 带进度的文件下载（支持断点续传）
abstract class NetworksSdkRepository {
  Future<String?> platformVersion();

  void initialize(ApiConfig apiConfig);

  Future<T?> executeRequest<T>(
    ApiRequestable<T> request, {
    CancelToken? cancelToken,
  });

  /// 文件下载（支持进度回调和断点续传）
  Future<void> executeDownload({
    required String url,
    required String savePath,
    OnDownloadProgress? onProgress,
    CancelToken? cancelToken,
    bool resume = false,
    Map<String, String>? headers,
  });
}
