import 'package:superport_v2/core/common/models/paginated_result.dart';

import '../entities/vendor.dart';

/// 벤더 리포지토리 인터페이스
///
/// - presentation → domain → data 방향을 보장하기 위해 domain에 위치
/// - 실제 구현은 data 레이어에서 제공한다.
abstract class VendorRepository {
  /// 벤더 목록 조회
  ///
  /// - 표준 쿼리 파라미터: page, page_size, q, include
  Future<PaginatedResult<Vendor>> list({
    int page = 1,
    int pageSize = 20,
    String? query,
    bool? isActive,
  });

  /// 벤더 생성
  Future<Vendor> create(VendorInput input);

  /// 벤더 수정 (부분 업데이트 포함)
  Future<Vendor> update(int id, VendorInput input);

  /// 벤더 소프트 삭제
  Future<void> delete(int id);

  /// 벤더 복구 (소프트 삭제 해제)
  Future<Vendor> restore(int id);
}
