import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../database/database.dart'; import '../../services/telemetry_service.dart'; import '../garage/garage_providers.dart'; import '../records/records_service.dart'; import '../rides/ride_state_machine.dart'; import 'models/performance_launch_models.dart'; import 'services/monotonic_clock.dart'; import 'services/performance_launch_state_machine.dart'; /// Monotonic clock provider for performance timing domain. final monotonicClockProvider = Provider((ref) { return SystemMonotonicClock(); }); /// Authoritative provider for Performance Launch Mode state machine. final performanceLaunchProvider = StateNotifierProvider((ref) { final db = ref.watch(databaseProvider); final telemetryService = ref.watch(telemetryServiceProvider); final recordsService = ref.watch(recordsServiceProvider.notifier); final clock = ref.watch(monotonicClockProvider); return PerformanceLaunchStateMachine( db: db, telemetryStream: telemetryService.telemetryStream, recordsService: recordsService, clock: clock, activeRideIdReader: () { final rideState = ref.read(rideStateMachineProvider); return rideState.state == RideState.riding ? rideState.dbId : null; }, motorcycleIdReader: () { final defaultBike = ref.read(defaultMotorcycleProvider); return defaultBike?.id; }, ); });