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

import '../entities/customer.dart';

/// 고객 데이터를 다루는 도메인 저장소 인터페이스.
abstract class CustomerRepository {
  /// 고객 목록을 조회한다.
  Future<PaginatedResult<Customer>> list({
    int page = 1,
    int pageSize = 20,
    String? query,
    bool? isPartner,
    bool? isGeneral,
    bool? isActive,
  });

  /// 고객 단건 상세를 조회한다.
  Future<Customer> fetchDetail(int id, {bool includeZipcode = true});

  /// 고객을 생성한다.
  Future<Customer> create(CustomerInput input);

  /// 고객을 수정한다.
  Future<Customer> update(int id, CustomerInput input);

  /// 고객을 삭제한다.
  Future<void> delete(int id);

  /// 삭제된 고객을 복구한다.
  Future<Customer> restore(int id);
}
