import '../../domain/models/sensor.dart'; abstract class SensorRepository { Future createSensor(String sensorId, {String? name}); Future> getSensors(); Future> getUnplacedSensors(); Future getSensor(int id); Future updateSensor(int id, {String? name}); Future deleteSensor(int id); Future placeSensor(int id, {required int roomId, required double x, required double y}); Future unplaceSensor(int id); Future getVersion(int id); /// Stream of raw SensorsChannel messages. Each map contains an `event` key /// (`sensor_announced` or `sensor_enrollment_timeout`) plus the payload. Stream> sensorEvents(); // --------------------------------------------------------------------------- // Calibration // --------------------------------------------------------------------------- /// Enters calibration mode on the sensor. Returns the number of samples the /// server will collect per stage. Future beginCalibration(int id); /// Starts a collection stage at [distance] metres. Future startStage(int id, double distance); /// Runs least-squares regression over all completed stages and persists the /// result. Returns the fitted (rssiRef, pathLossExp) pair. Future<({double rssiRef, double pathLossExp})> finishCalibration(int id); /// Aborts calibration and discards all accumulated stage data. Future cancelCalibration(int id); /// Real-time events from the server's CalibrationChannel. /// Topic: `calibration:{sensorDeviceId}` (the string BLE device ID). Stream<({String event, Map payload})> calibrationEvents( String sensorDeviceId); /// Leaves the calibration Phoenix channel for [sensorDeviceId]. void leaveCalibrationChannel(String sensorDeviceId); }