part of 'three_gang_glass_switch_bloc.dart';

@immutable
abstract class ThreeGangGlassSwitchEvent extends Equatable {
  @override
  List<Object?> get props => [];
}

class ThreeGangGlassSwitchFetchDeviceEvent extends ThreeGangGlassSwitchEvent {
  final String deviceId;

  ThreeGangGlassSwitchFetchDeviceEvent(this.deviceId);
}

class ThreeGangGlassSwitchControl extends ThreeGangGlassSwitchEvent {
  final String deviceId;
  final String code;
  final bool value;

  ThreeGangGlassSwitchControl({
    required this.deviceId,
    required this.code,
    required this.value,
  });

  @override
  List<Object?> get props => [deviceId, code, value];
}

class ThreeGangGlassSwitchBatchControl extends ThreeGangGlassSwitchEvent {
  final List<String> deviceIds;
  final String code;
  final bool value;

  ThreeGangGlassSwitchBatchControl({
    required this.deviceIds,
    required this.code,
    required this.value,
  });

  @override
  List<Object?> get props => [deviceIds, code, value];
}

class ThreeGangGlassSwitchFetchBatchStatusEvent
    extends ThreeGangGlassSwitchEvent {
  final List<String> deviceIds;

  ThreeGangGlassSwitchFetchBatchStatusEvent(this.deviceIds);

  @override
  List<Object?> get props => [deviceIds];
}

class ThreeGangGlassFactoryReset extends ThreeGangGlassSwitchEvent {
  final String deviceId;
  final FactoryResetModel factoryReset;

  ThreeGangGlassFactoryReset({
    required this.deviceId,
    required this.factoryReset,
  });

  @override
  List<Object?> get props => [deviceId, factoryReset];
}

class StatusUpdated extends ThreeGangGlassSwitchEvent {
  final ThreeGangGlassStatusModel deviceStatus;
  StatusUpdated(this.deviceStatus);
  @override
  List<Object> get props => [deviceStatus];
}
