using LocationTrackerApp.Models; namespace LocationTrackerApp.Services; /// /// Interface for location tracking service /// public interface ILocationService { /// /// Event fired when a new location is received /// event EventHandler? LocationChanged; /// /// Event fired when location tracking status changes /// event EventHandler? TrackingStatusChanged; /// /// Gets the current location tracking status /// bool IsTracking { get; } /// /// Gets the current session ID /// string? CurrentSessionId { get; } /// /// Starts location tracking /// /// Optional session ID for grouping location data /// Task representing the async operation Task StartTrackingAsync(string? sessionId = null); /// /// Stops location tracking /// /// Task representing the async operation Task StopTrackingAsync(); /// /// Gets the current location /// /// Current location data or null if not available Task GetCurrentLocationAsync(); /// /// Requests location permissions from the user /// /// True if permissions are granted, false otherwise Task RequestLocationPermissionsAsync(); /// /// Checks if location permissions are granted /// /// True if permissions are granted, false otherwise Task HasLocationPermissionsAsync(); }