import 'entitlement_state.dart'; /// Strongly typed identifiers for all capabilities that can be gated or regulated. enum MotorSignalFeature { cloudBackup, unlimitedCloudHistory, multiDeviceRestore, advancedTelemetry, advancedAcceleration, advancedBraking, advancedLean, advancedAnalytics, unlimitedHistory, csvExport, pdfExport, useMultipleMotorcycles, planTrips, createGroupRides, useAdvancedGroupRideFeatures, } /// Centralized domain service determining access to MotorSignal features. /// UI and background operations check [canAccess] rather than inspecting raw plan or store fields. class FeatureAccessService { final EntitlementState _state; const FeatureAccessService(this._state); /// Current underlying entitlement state. EntitlementState get state => _state; /// Returns true if the requested [feature] is permitted under current entitlement. bool canAccess(MotorSignalFeature feature) { switch (feature) { case MotorSignalFeature.cloudBackup: return _state.canCloudBackup; case MotorSignalFeature.unlimitedCloudHistory: return _state.canUnlimitedCloudHistory; case MotorSignalFeature.multiDeviceRestore: return _state.canMultiDeviceRestore; case MotorSignalFeature.advancedTelemetry: return _state.canAdvancedTelemetry; case MotorSignalFeature.advancedAcceleration: return _state.canAdvancedAcceleration; case MotorSignalFeature.advancedBraking: return _state.canAdvancedBraking; case MotorSignalFeature.advancedLean: return _state.canAdvancedLean; case MotorSignalFeature.advancedAnalytics: return _state.canAdvancedAnalytics; case MotorSignalFeature.unlimitedHistory: return _state.canUnlimitedHistory; case MotorSignalFeature.csvExport: return _state.canExportCsv; case MotorSignalFeature.pdfExport: return _state.canExportPdf; case MotorSignalFeature.useMultipleMotorcycles: return _state.canUseMultipleMotorcycles; case MotorSignalFeature.planTrips: return _state.canPlanTrips; case MotorSignalFeature.createGroupRides: return _state.canCreateGroupRides; case MotorSignalFeature.useAdvancedGroupRideFeatures: return _state.canUseAdvancedGroupRideFeatures; } } }