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();
}