## Movement SDK

This documentation provides a comprehensive guide on the Movement SDK from Foursquare, detailing the various components available for developers.

### Foursquare Location
The `FoursquareLocation` class handles the geographic location context.

#### Key Classes and Interfaces
- **com.foursquare.api**: Contains fundamental classes related to the Foursquare API.
- **FoursquareLocation**: Represents a location with detailed attributes.
  - [FoursquareType](https://developer.foursquare.com/sdk-reference/movementsdk/android/4.0.0/movementsdk/com.foursquare.api.types/-foursquare-type/index.html)
  - [Category](https://developer.foursquare.com/sdk-reference/movementsdk/android/4.0.0/movementsdk/com.foursquare.api.types/-category/index.html)

### Journey
The `Journey` class encapsulates the user's journey.

#### Status Enum
- **PENDING**: The journey is pending.
- **IN_PROGRESS**: The journey is currently in progress.
- **APPROACHING**: The user is approaching a destination.
- **ARRIVED**: The user has arrived at the destination.
- **COMPLETED**: The journey is complete.
- **CANCELED**: The journey has been canceled.

### Journey Destination Type
- **VENUE**: Represents a location where a user is going.
- **GEOFENCE**: Defines a geographical boundary for events.

### Geofence Types
- **VENUE**: Signifies a venue as a geofence.
- **LATLNG**: Represents a geofence defined by latitude and longitude.
- **POLYGON**: Designates a geofence formed as a polygon.

### Logging
The SDK includes logging capabilities to help with debugging.
- **Log Level**: 
  - **ALL**: All events will be logged.
  - **DEBUG**: Debugging events will be logged.
  - **INFO**: Informational events will be logged.
  - **WARN**: Warning events will be logged.
  - **ERROR**: Error events will be logged.

### Notification Handlers
- **NotificationHandler**: Interfaces for managing notifications during geofencing or journey updates.

### User Info Class
Provides information regarding user taxonomy and identity attributes such as gender.
- **Gender Enum**:
  - **MALE**: Male gender.
  - **FEMALE**: Female gender.
  - **NOT_SPECIFIED**: Gender not specified.

### Error Handling
The SDK encapsulates various exceptions that can occur during operation such as `LocationNotAvailable`, `NetworkError`, and more.

### Feedback Mechanisms
Encapsulated feedback such as `VisitFeedback` and methods to confirm stops during journeys.
