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

import '../entities/user.dart';

/// 사용자 데이터를 다루는 도메인 저장소 인터페이스.
abstract class UserRepository {
  /// 사용자 목록을 조회한다.
  Future<PaginatedResult<UserAccount>> list({
    int page = 1,
    int pageSize = 20,
    String? query,
    int? groupId,
    bool? isActive,
  });

  /// 사용자를 생성한다.
  Future<UserAccount> create(UserInput input);

  /// 사용자 정보를 수정한다.
  Future<UserAccount> update(int id, UserInput input);

  /// 로그인한 본인 정보를 수정한다.
  Future<UserAccount> updateMe(UserProfileUpdateInput input);

  /// 특정 사용자의 비밀번호를 재설정한다.
  Future<UserAccount> resetPassword(int id);

  /// 사용자를 삭제한다.
  Future<void> delete(int id);

  /// 삭제된 사용자를 복구한다.
  Future<UserAccount> restore(int id);
}
