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

import '../entities/group_permission.dart';

/// 그룹-메뉴 권한을 다루는 도메인 저장소 인터페이스.
abstract class GroupPermissionRepository {
  /// 권한 목록을 조회한다.
  Future<PaginatedResult<GroupPermission>> list({
    int page = 1,
    int pageSize = 20,
    int? groupId,
    int? menuId,
    bool? isActive,
    bool includeDeleted = false,
  });

  /// 그룹 권한을 생성한다.
  Future<GroupPermission> create(GroupPermissionInput input);

  /// 그룹 권한을 수정한다.
  Future<GroupPermission> update(int id, GroupPermissionInput input);

  /// 그룹 권한을 삭제한다.
  Future<void> delete(int id);

  /// 삭제된 그룹 권한을 복구한다.
  Future<GroupPermission> restore(int id);
}
