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

import '../entities/approval_step_input.dart';
import '../entities/approval_step_record.dart';

/// 결재 단계 목록/상세를 다루는 도메인 저장소 인터페이스.
abstract class ApprovalStepRepository {
  /// 결재 단계 목록을 조회한다.
  Future<PaginatedResult<ApprovalStepRecord>> list({
    int page = 1,
    int pageSize = 20,
    String? query,
    int? statusId,
    int? approverId,
    int? approvalId,
  });

  /// 결재 단계 상세를 조회한다.
  Future<ApprovalStepRecord> fetchDetail(int id);

  /// 결재 단계를 생성한다.
  Future<ApprovalStepRecord> create(ApprovalStepInput input);

  /// 결재 단계를 수정한다.
  Future<ApprovalStepRecord> update(int id, ApprovalStepInput input);

  /// 결재 단계를 삭제(비활성화)한다.
  Future<void> delete(int id);

  /// 삭제된 결재 단계를 복구한다.
  Future<ApprovalStepRecord> restore(int id);
}
