// Version: 1.1.0 | Created: 2026-04-01
// Immutable Space and SpaceRoom models for the spaces navigation feature.

import 'package:freezed_annotation/freezed_annotation.dart';

part 'space_model.freezed.dart';

/// A Matrix space (a room with the m.space type).
@freezed
abstract class SpaceModel with _$SpaceModel {
  const factory SpaceModel({
    required String id,
    required String displayName,
    String? avatarUrl,
    @Default(0) int roomCount,
  }) = _SpaceModel;
}

/// A room that is a child of a Space.
@freezed
abstract class SpaceRoomModel with _$SpaceRoomModel {
  const factory SpaceRoomModel({
    required String id,
    required String displayName,
    String? avatarUrl,
    @Default(false) bool isDirect,
  }) = _SpaceRoomModel;
}
