part of 'flush_mounted_presence_sensor_bloc.dart';

sealed class FlushMountedPresenceSensorEvent extends Equatable {
  const FlushMountedPresenceSensorEvent();

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

class FlushMountedPresenceSensorFetchStatusEvent
    extends FlushMountedPresenceSensorEvent {}

class FlushMountedPresenceSensorStatusUpdatedEvent
    extends FlushMountedPresenceSensorEvent {
  const FlushMountedPresenceSensorStatusUpdatedEvent(this.model);

  final FlushMountedPresenceSensorModel model;

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

class FlushMountedPresenceSensorChangeValueEvent
    extends FlushMountedPresenceSensorEvent {
  final int value;
  final String code;

  const FlushMountedPresenceSensorChangeValueEvent({
    required this.value,
    required this.code,
  });

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

class FlushMountedPresenceSensorFetchBatchStatusEvent
    extends FlushMountedPresenceSensorEvent {
  final List<String> devicesIds;
  const FlushMountedPresenceSensorFetchBatchStatusEvent(this.devicesIds);

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

class FlushMountedPresenceSensorGetDeviceReportsEvent
    extends FlushMountedPresenceSensorEvent {
  final String deviceUuid;
  final String code;
  const FlushMountedPresenceSensorGetDeviceReportsEvent({
    required this.deviceUuid,
    required this.code,
  });

  @override
  List<Object> get props => [deviceUuid, code];
}

class FlushMountedPresenceSensorShowDescriptionEvent
    extends FlushMountedPresenceSensorEvent {
  final String description;
  const FlushMountedPresenceSensorShowDescriptionEvent({required this.description});
}

class FlushMountedPresenceSensorBackToGridViewEvent
    extends FlushMountedPresenceSensorEvent {}

class FlushMountedPresenceSensorBatchControlEvent
    extends FlushMountedPresenceSensorEvent {
  final List<String> deviceIds;
  final String code;
  final dynamic value;

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

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

class FlushMountedPresenceSensorFactoryResetEvent
    extends FlushMountedPresenceSensorEvent {
  final String deviceId;
  final FactoryResetModel factoryReset;

  const FlushMountedPresenceSensorFactoryResetEvent({
    required this.deviceId,
    required this.factoryReset,
  });
}
