// Version: 1.0.0 | Created: 2026-04-01
// Call state sealed hierarchy. LiveKit integration in Phase 2.

import 'package:freezed_annotation/freezed_annotation.dart';

part 'call_state.freezed.dart';

@freezed
sealed class CallState with _$CallState {
  const factory CallState.idle() = CallIdle;
  const factory CallState.connecting({required String roomId}) = CallConnecting;
  const factory CallState.active({
    required String roomId,
    required Duration duration,
    @Default(false) bool isVideoEnabled,
    @Default(true) bool isAudioEnabled,
  }) = CallActive;
  const factory CallState.ended({String? reason}) = CallEnded;
}
