diff --git a/sdk/src/main/kotlin/org/db3/airmq/sdk/auth/AuthService.kt b/sdk/src/main/kotlin/org/db3/airmq/sdk/auth/AuthService.kt new file mode 100644 index 0000000..4723178 --- /dev/null +++ b/sdk/src/main/kotlin/org/db3/airmq/sdk/auth/AuthService.kt @@ -0,0 +1,10 @@ +package org.db3.airmq.sdk.auth + +import org.db3.airmq.sdk.auth.model.Auth + +interface AuthService { + suspend fun getCurrentSession(): Auth? + suspend fun isAuthenticated(): Boolean + suspend fun signIn(provider: String, token: String? = null): Result + suspend fun signOut(): Result +} diff --git a/sdk/src/main/kotlin/org/db3/airmq/sdk/auth/model/Auth.kt b/sdk/src/main/kotlin/org/db3/airmq/sdk/auth/model/Auth.kt new file mode 100644 index 0000000..3d1ff5c --- /dev/null +++ b/sdk/src/main/kotlin/org/db3/airmq/sdk/auth/model/Auth.kt @@ -0,0 +1,8 @@ +package org.db3.airmq.sdk.auth.model + +data class Auth( + val userId: String, + val email: String?, + val displayName: String?, + val isAuthenticated: Boolean +) diff --git a/sdk/src/main/kotlin/org/db3/airmq/sdk/connectivity/ConnectivityService.kt b/sdk/src/main/kotlin/org/db3/airmq/sdk/connectivity/ConnectivityService.kt new file mode 100644 index 0000000..cde4341 --- /dev/null +++ b/sdk/src/main/kotlin/org/db3/airmq/sdk/connectivity/ConnectivityService.kt @@ -0,0 +1,11 @@ +package org.db3.airmq.sdk.connectivity + +import org.db3.airmq.sdk.connectivity.model.Connectivity + +interface ConnectivityService { + suspend fun getConnectivity(): Connectivity + suspend fun isInternetAvailable(): Boolean + suspend fun scanNetworks(): List + suspend fun connect(ssid: String, password: String): Result + suspend fun disconnect(ssid: String): Result +} diff --git a/sdk/src/main/kotlin/org/db3/airmq/sdk/connectivity/model/Connectivity.kt b/sdk/src/main/kotlin/org/db3/airmq/sdk/connectivity/model/Connectivity.kt new file mode 100644 index 0000000..4dc6b24 --- /dev/null +++ b/sdk/src/main/kotlin/org/db3/airmq/sdk/connectivity/model/Connectivity.kt @@ -0,0 +1,7 @@ +package org.db3.airmq.sdk.connectivity.model + +data class Connectivity( + val isWifiEnabled: Boolean, + val isConnected: Boolean, + val connectedSsid: String? +) diff --git a/sdk/src/main/kotlin/org/db3/airmq/sdk/device/DeviceService.kt b/sdk/src/main/kotlin/org/db3/airmq/sdk/device/DeviceService.kt new file mode 100644 index 0000000..d4426af --- /dev/null +++ b/sdk/src/main/kotlin/org/db3/airmq/sdk/device/DeviceService.kt @@ -0,0 +1,11 @@ +package org.db3.airmq.sdk.device + +import org.db3.airmq.sdk.device.model.Device + +interface DeviceService { + suspend fun fetchDevices(): List + suspend fun fetchDevice(deviceId: String): Device? + suspend fun saveDevice(device: Device): Result + suspend fun deleteDevice(deviceId: String): Result + suspend fun updateDeviceLocation(deviceId: String, latitude: Double, longitude: Double): Result +} diff --git a/sdk/src/main/kotlin/org/db3/airmq/sdk/device/model/Device.kt b/sdk/src/main/kotlin/org/db3/airmq/sdk/device/model/Device.kt new file mode 100644 index 0000000..be64521 --- /dev/null +++ b/sdk/src/main/kotlin/org/db3/airmq/sdk/device/model/Device.kt @@ -0,0 +1,10 @@ +package org.db3.airmq.sdk.device.model + +data class Device( + val id: String, + val name: String, + val model: String?, + val city: String?, + val isOnline: Boolean, + val lastSeenEpochMs: Long? +) diff --git a/sdk/src/main/kotlin/org/db3/airmq/sdk/notifications/NotificationService.kt b/sdk/src/main/kotlin/org/db3/airmq/sdk/notifications/NotificationService.kt new file mode 100644 index 0000000..b1ad8d3 --- /dev/null +++ b/sdk/src/main/kotlin/org/db3/airmq/sdk/notifications/NotificationService.kt @@ -0,0 +1,10 @@ +package org.db3.airmq.sdk.notifications + +import org.db3.airmq.sdk.notifications.model.Notification + +interface NotificationService { + suspend fun fetchNotificationSettings(): Notification + suspend fun updateNotificationSettings(settings: Notification): Result + suspend fun subscribeToTopic(topic: String): Result + suspend fun unsubscribeFromTopic(topic: String): Result +} diff --git a/sdk/src/main/kotlin/org/db3/airmq/sdk/notifications/model/Notification.kt b/sdk/src/main/kotlin/org/db3/airmq/sdk/notifications/model/Notification.kt new file mode 100644 index 0000000..cd31849 --- /dev/null +++ b/sdk/src/main/kotlin/org/db3/airmq/sdk/notifications/model/Notification.kt @@ -0,0 +1,6 @@ +package org.db3.airmq.sdk.notifications.model + +data class Notification( + val deviceStatusEnabled: Boolean, + val subscribedTopics: List +) diff --git a/sdk/src/main/kotlin/org/db3/airmq/sdk/settings/SettingsService.kt b/sdk/src/main/kotlin/org/db3/airmq/sdk/settings/SettingsService.kt new file mode 100644 index 0000000..f68cb46 --- /dev/null +++ b/sdk/src/main/kotlin/org/db3/airmq/sdk/settings/SettingsService.kt @@ -0,0 +1,10 @@ +package org.db3.airmq.sdk.settings + +import org.db3.airmq.sdk.settings.model.Settings + +interface SettingsService { + suspend fun fetchSettings(): Settings + suspend fun updateSettings(settings: Settings): Result + suspend fun setAdvancedEnabled(enabled: Boolean): Result + suspend fun setOfflineDevicesVisible(visible: Boolean): Result +} diff --git a/sdk/src/main/kotlin/org/db3/airmq/sdk/settings/model/Settings.kt b/sdk/src/main/kotlin/org/db3/airmq/sdk/settings/model/Settings.kt new file mode 100644 index 0000000..1a5baa7 --- /dev/null +++ b/sdk/src/main/kotlin/org/db3/airmq/sdk/settings/model/Settings.kt @@ -0,0 +1,8 @@ +package org.db3.airmq.sdk.settings.model + +data class Settings( + val city: String?, + val showOfflineDevices: Boolean, + val advancedEnabled: Boolean, + val deviceStatusNotificationsEnabled: Boolean +) diff --git a/sdk/src/main/kotlin/org/db3/airmq/sdk/telemetry/TelemetryService.kt b/sdk/src/main/kotlin/org/db3/airmq/sdk/telemetry/TelemetryService.kt new file mode 100644 index 0000000..b7341e8 --- /dev/null +++ b/sdk/src/main/kotlin/org/db3/airmq/sdk/telemetry/TelemetryService.kt @@ -0,0 +1,15 @@ +package org.db3.airmq.sdk.telemetry + +import org.db3.airmq.sdk.telemetry.model.Telemetry + +interface TelemetryService { + suspend fun fetchLatest(deviceId: String, metric: String): Telemetry? + suspend fun fetchHistory( + deviceId: String, + metric: String, + fromEpochMs: Long, + toEpochMs: Long + ): List + + suspend fun fetchLatestForDevices(deviceIds: List, metric: String): List +} diff --git a/sdk/src/main/kotlin/org/db3/airmq/sdk/telemetry/model/Telemetry.kt b/sdk/src/main/kotlin/org/db3/airmq/sdk/telemetry/model/Telemetry.kt new file mode 100644 index 0000000..93fe47f --- /dev/null +++ b/sdk/src/main/kotlin/org/db3/airmq/sdk/telemetry/model/Telemetry.kt @@ -0,0 +1,8 @@ +package org.db3.airmq.sdk.telemetry.model + +data class Telemetry( + val deviceId: String, + val metric: String, + val value: Double, + val timestampEpochMs: Long +)