// 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; }