{
  "api": {
    "name": "BackgroundGeolocationPlugin",
    "slug": "backgroundgeolocationplugin",
    "docs": "Main plugin interface for background geolocation functionality.\nProvides methods to manage location updates and access device settings.",
    "tags": [
      {
        "text": "7.0.0",
        "name": "since"
      }
    ],
    "methods": [
      {
        "name": "start",
        "signature": "(options: StartOptions, callback: (position?: Location | undefined, error?: CallbackError | undefined) => void) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "The configuration options",
            "type": "StartOptions"
          },
          {
            "name": "callback",
            "docs": "The callback function invoked when a new location is available or an error occurs",
            "type": "(position?: Location | undefined, error?: CallbackError | undefined) => void"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options The configuration options"
          },
          {
            "name": "param",
            "text": "callback The callback function invoked when a new location is available or an error occurs"
          },
          {
            "name": "returns",
            "text": "A promise that resolves when the method is successfully called"
          },
          {
            "name": "since",
            "text": "7.0.9"
          },
          {
            "name": "example",
            "text": "await BackgroundGeolocation.start(\n  {\n    backgroundMessage: \"App is using your location in the background\",\n    backgroundTitle: \"Location Service\",\n    requestPermissions: true,\n    stale: false,\n    distanceFilter: 10\n  },\n  (location, error) => {\n    if (error) {\n      console.error('Location error:', error);\n      return;\n    }\n    if (location) {\n      console.log('New location:', location.latitude, location.longitude);\n    }\n  }\n);"
          }
        ],
        "docs": "To start listening for changes in the device's location, call this method.\nA Promise is returned to indicate that it finished the call. The callback will be called every time a new location\nis available, or if there was an error when calling this method. Don't rely on promise rejection for this.",
        "complexTypes": [
          "StartOptions",
          "Location",
          "CallbackError"
        ],
        "slug": "start"
      },
      {
        "name": "stop",
        "signature": "() => Promise<void>",
        "parameters": [],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "returns",
            "text": "A promise that resolves when the plugin stops successfully removed"
          },
          {
            "name": "since",
            "text": "7.0.9"
          },
          {
            "name": "example",
            "text": "await BackgroundGeolocation.stop();"
          }
        ],
        "docs": "Stops location updates.",
        "complexTypes": [],
        "slug": "stop"
      },
      {
        "name": "updateHeaders",
        "signature": "(options: UpdateHeadersOptions) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "The replacement headers",
            "type": "UpdateHeadersOptions"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options The replacement headers"
          },
          {
            "name": "returns",
            "text": "A promise that resolves when headers are updated"
          },
          {
            "name": "since",
            "text": "8.3.3"
          },
          {
            "name": "example",
            "text": "await BackgroundGeolocation.updateHeaders({\n  headers: { Authorization: \"Bearer <new-token>\" },\n});"
          }
        ],
        "docs": "Replaces HTTP headers used by native POSTs without restarting tracking.\n\nUse this when an access token expires while `url` delivery is active.\nHeaders apply to the running location watcher and to geofence setup when\nthose features have a configured `url`.",
        "complexTypes": [
          "UpdateHeadersOptions"
        ],
        "slug": "updateheaders"
      },
      {
        "name": "openSettings",
        "signature": "() => Promise<void>",
        "parameters": [],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "returns",
            "text": "A promise that resolves when the settings page is opened"
          },
          {
            "name": "since",
            "text": "7.0.0"
          },
          {
            "name": "example",
            "text": "// Direct user to location settings\nawait BackgroundGeolocation.openSettings();"
          }
        ],
        "docs": "Opens the device's location settings page.\nUseful for directing users to enable location services or adjust permissions.",
        "complexTypes": [],
        "slug": "opensettings"
      },
      {
        "name": "setPlannedRoute",
        "signature": "(options: SetPlannedRouteOptions) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "The options for setting the planned route and sound file",
            "type": "SetPlannedRouteOptions"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options The options for setting the planned route and sound file"
          },
          {
            "name": "returns",
            "text": "A promise that resolves when the route is set successfully"
          },
          {
            "name": "since",
            "text": "7.0.11"
          },
          {
            "name": "example",
            "text": "await BackgroundGeolocation.setPlannedRoute({\n  soundFile: \"notification.mp3\",\n  route: [[-74.0060, 40.7128], [-118.2437, 34.0522]]\n});"
          }
        ],
        "docs": "Plays a sound file when the user deviates from the planned route.\nThis should be used to play a sound (in the background too, only for native).",
        "complexTypes": [
          "SetPlannedRouteOptions"
        ],
        "slug": "setplannedroute"
      },
      {
        "name": "setupGeofencing",
        "signature": "(options: GeofenceSetupOptions) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "The geofence configuration options",
            "type": "GeofenceSetupOptions"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options The geofence configuration options"
          },
          {
            "name": "returns",
            "text": "A promise that resolves once geofencing is configured"
          },
          {
            "name": "since",
            "text": "8.0.30"
          },
          {
            "name": "example",
            "text": "await BackgroundGeolocation.setupGeofencing({\n  notifyOnEntry: true,\n  notifyOnExit: true,\n  payload: { userId: \"123\" }\n});"
          }
        ],
        "docs": "Configures native geofence transition handling.\n\nCall this before adding geofences when you need default entry/exit settings\nor native background POSTs. Android background POSTs require\n`backgroundLocation: true`.",
        "complexTypes": [
          "GeofenceSetupOptions"
        ],
        "slug": "setupgeofencing"
      },
      {
        "name": "addGeofence",
        "signature": "(options: AddGeofenceOptions) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "The geofence region options",
            "type": "AddGeofenceOptions"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options The geofence region options"
          },
          {
            "name": "returns",
            "text": "A promise that resolves when native monitoring starts"
          },
          {
            "name": "since",
            "text": "8.0.30"
          },
          {
            "name": "example",
            "text": "await BackgroundGeolocation.addGeofence({\n  identifier: \"office\",\n  latitude: 40.7128,\n  longitude: -74.006,\n  radius: 150\n});"
          }
        ],
        "docs": "Starts monitoring a circular native geofence.",
        "complexTypes": [
          "AddGeofenceOptions"
        ],
        "slug": "addgeofence"
      },
      {
        "name": "removeGeofence",
        "signature": "(options: RemoveGeofenceOptions) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "The geofence identifier",
            "type": "RemoveGeofenceOptions"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options The geofence identifier"
          },
          {
            "name": "returns",
            "text": "A promise that resolves when native monitoring stops"
          },
          {
            "name": "since",
            "text": "8.0.30"
          },
          {
            "name": "example",
            "text": "await BackgroundGeolocation.removeGeofence({ identifier: \"office\" });"
          }
        ],
        "docs": "Stops monitoring one geofence.",
        "complexTypes": [
          "RemoveGeofenceOptions"
        ],
        "slug": "removegeofence"
      },
      {
        "name": "removeAllGeofences",
        "signature": "() => Promise<void>",
        "parameters": [],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "returns",
            "text": "A promise that resolves when all native geofences are removed"
          },
          {
            "name": "since",
            "text": "8.0.30"
          },
          {
            "name": "example",
            "text": "await BackgroundGeolocation.removeAllGeofences();"
          }
        ],
        "docs": "Stops monitoring every geofence registered by this plugin.",
        "complexTypes": [],
        "slug": "removeallgeofences"
      },
      {
        "name": "getMonitoredGeofences",
        "signature": "() => Promise<MonitoredGeofencesResult>",
        "parameters": [],
        "returns": "Promise<MonitoredGeofencesResult>",
        "tags": [
          {
            "name": "returns",
            "text": "A promise with monitored geofence identifiers"
          },
          {
            "name": "since",
            "text": "8.0.30"
          },
          {
            "name": "example",
            "text": "const { regions } = await BackgroundGeolocation.getMonitoredGeofences();"
          }
        ],
        "docs": "Lists the geofence identifiers currently monitored by this plugin.",
        "complexTypes": [
          "MonitoredGeofencesResult"
        ],
        "slug": "getmonitoredgeofences"
      },
      {
        "name": "addListener",
        "signature": "(eventName: 'geofenceTransition', listenerFunc: (event: GeofenceTransitionEvent) => void) => Promise<PluginListenerHandle>",
        "parameters": [
          {
            "name": "eventName",
            "docs": "",
            "type": "'geofenceTransition'"
          },
          {
            "name": "listenerFunc",
            "docs": "",
            "type": "(event: GeofenceTransitionEvent) => void"
          }
        ],
        "returns": "Promise<PluginListenerHandle>",
        "tags": [
          {
            "name": "since",
            "text": "8.0.30"
          },
          {
            "name": "example",
            "text": "const handle = await BackgroundGeolocation.addListener(\n  \"geofenceTransition\",\n  (event) => console.log(event.identifier, event.transition)\n);"
          }
        ],
        "docs": "Listens for geofence enter/exit transitions while the WebView is alive.\n\nNative `url` delivery configured through `setupGeofencing` is used for\nbackground-safe delivery.",
        "complexTypes": [
          "PluginListenerHandle",
          "GeofenceTransitionEvent"
        ],
        "slug": "addlistenergeofencetransition-"
      },
      {
        "name": "addListener",
        "signature": "(eventName: 'geofenceError', listenerFunc: (event: GeofenceErrorEvent) => void) => Promise<PluginListenerHandle>",
        "parameters": [
          {
            "name": "eventName",
            "docs": "",
            "type": "'geofenceError'"
          },
          {
            "name": "listenerFunc",
            "docs": "",
            "type": "(event: GeofenceErrorEvent) => void"
          }
        ],
        "returns": "Promise<PluginListenerHandle>",
        "tags": [
          {
            "name": "since",
            "text": "8.0.30"
          },
          {
            "name": "example",
            "text": "const handle = await BackgroundGeolocation.addListener(\n  \"geofenceError\",\n  (event) => console.error(event.identifier, event.message)\n);"
          }
        ],
        "docs": "Listens for native geofence monitoring errors while the WebView is alive.",
        "complexTypes": [
          "PluginListenerHandle",
          "GeofenceErrorEvent"
        ],
        "slug": "addlistenergeofenceerror-"
      },
      {
        "name": "checkPermissions",
        "signature": "() => Promise<BackgroundGeolocationPermissionStatus>",
        "parameters": [],
        "returns": "Promise<BackgroundGeolocationPermissionStatus>",
        "tags": [
          {
            "name": "returns",
            "text": "Current permission status for this plugin"
          },
          {
            "name": "since",
            "text": "8.0.43"
          },
          {
            "name": "example",
            "text": "const status = await BackgroundGeolocation.checkPermissions();\nif (status.backgroundLocation === 'when_in_use') {\n  // Show UI explaining why Always access is needed\n}"
          }
        ],
        "docs": "Read current location authorization without prompting or side effects.\n\nOn iOS this maps `CLAuthorizationStatus` so you can distinguish Always from\nWhile Using App. On Android this reports foreground location,\n`ACCESS_BACKGROUND_LOCATION`, and notification permission where relevant.",
        "complexTypes": [
          "BackgroundGeolocationPermissionStatus"
        ],
        "slug": "checkpermissions"
      },
      {
        "name": "requestPermissions",
        "signature": "(options?: RequestBackgroundGeolocationPermissionsOptions | undefined) => Promise<BackgroundGeolocationPermissionStatus>",
        "parameters": [
          {
            "name": "options",
            "docs": "Optional subset of permissions to request",
            "type": "RequestBackgroundGeolocationPermissionsOptions | undefined"
          }
        ],
        "returns": "Promise<BackgroundGeolocationPermissionStatus>",
        "tags": [
          {
            "name": "param",
            "text": "options Optional subset of permissions to request"
          },
          {
            "name": "returns",
            "text": "Permission status after the request flow completes"
          },
          {
            "name": "since",
            "text": "8.0.43"
          },
          {
            "name": "example",
            "text": "const status = await BackgroundGeolocation.requestPermissions({\n  permissions: ['backgroundLocation'],\n});"
          }
        ],
        "docs": "Request location-related permissions from the user.\n\nPrefer {@link BackgroundGeolocationPlugin.checkPermissions} for read-only\nstatus in settings screens. Call this only when the user has opted in.",
        "complexTypes": [
          "BackgroundGeolocationPermissionStatus",
          "RequestBackgroundGeolocationPermissionsOptions"
        ],
        "slug": "requestpermissions"
      },
      {
        "name": "getPluginVersion",
        "signature": "() => Promise<{ version: string; }>",
        "parameters": [],
        "returns": "Promise<{ version: string; }>",
        "tags": [
          {
            "name": "returns",
            "text": "an Promise with version for this device"
          },
          {
            "name": "throws",
            "text": "An error if the something went wrong"
          }
        ],
        "docs": "Get the native Capacitor plugin version",
        "complexTypes": [],
        "slug": "getpluginversion"
      }
    ],
    "properties": []
  },
  "interfaces": [
    {
      "name": "StartOptions",
      "slug": "startoptions",
      "docs": "The options for configuring for location updates.",
      "tags": [
        {
          "text": "7.0.9",
          "name": "since"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "backgroundMessage",
          "tags": [
            {
              "text": "7.0.9",
              "name": "since"
            },
            {
              "text": "\"Getting your location to provide better service\"",
              "name": "example"
            }
          ],
          "docs": "If the \"backgroundMessage\" option is defined, the plugin will\nprovide location updates whether the app is in the background or the\nforeground. If it is not defined, location updates are only\nguaranteed in the foreground. This is true on both platforms.\n\nOn Android, a notification must be shown to continue receiving\nlocation updates in the background. This option specifies the text of\nthat notification.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "backgroundTitle",
          "tags": [
            {
              "text": "7.0.9",
              "name": "since"
            },
            {
              "text": "\"Using your location\"",
              "name": "default"
            },
            {
              "text": "\"Location Service\"",
              "name": "example"
            }
          ],
          "docs": "The title of the notification mentioned above.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "requestPermissions",
          "tags": [
            {
              "text": "7.0.9",
              "name": "since"
            },
            {
              "text": "true",
              "name": "default"
            },
            {
              "text": "// Auto-request permissions\nrequestPermissions: true\n\n// Don't auto-request, handle manually\nrequestPermissions: false",
              "name": "example"
            }
          ],
          "docs": "Whether permissions should be requested from the user automatically,\nif they are not already granted.",
          "complexTypes": [],
          "type": "boolean | undefined"
        },
        {
          "name": "stale",
          "tags": [
            {
              "text": "7.0.9",
              "name": "since"
            },
            {
              "text": "false",
              "name": "default"
            },
            {
              "text": "// Allow stale locations for faster initial response\nstale: true\n\n// Only fresh locations\nstale: false",
              "name": "example"
            }
          ],
          "docs": "If \"true\", stale locations may be delivered while the device\nobtains a GPS fix. You are responsible for checking the \"time\"\nproperty. If \"false\", locations are guaranteed to be up to date.",
          "complexTypes": [],
          "type": "boolean | undefined"
        },
        {
          "name": "distanceFilter",
          "tags": [
            {
              "text": "7.0.9",
              "name": "since"
            },
            {
              "text": "0",
              "name": "default"
            },
            {
              "text": "// Update every 10 meters\ndistanceFilter: 10\n\n// Update on any movement\ndistanceFilter: 0",
              "name": "example"
            }
          ],
          "docs": "The distance in meters that the device must move before a new location update is triggered.\nThis is used to filter out small movements and reduce the number of updates.\n\nA non-zero value suppresses updates while the device is stationary (for\nexample a parked vehicle). Use {@link StartOptions.minIntervalMs} when you\nneed a lower update rate but still want periodic points without movement.",
          "complexTypes": [],
          "type": "number | undefined"
        },
        {
          "name": "url",
          "tags": [
            {
              "text": "8.2.0",
              "name": "since"
            },
            {
              "text": "\"https://api.example.com/locations\"",
              "name": "example"
            }
          ],
          "docs": "When set, each location update is additionally delivered by POSTing it as\nJSON to this URL directly from native code, in parallel with the\nJavaScript callback. The request body matches the `Location` object, plus\nan extra `\"source\": \"native\"` field so the server can tell native POSTs\napart from updates forwarded by the JavaScript layer.\n\nNative delivery does not depend on the WebView. On Android, the foreground\nservice is kept alive and restarted by the system (`START_STICKY`), so\nlocation POSTs continue even after the user swipes the app away from the\nrecents list and its process is killed. On iOS, locations are POSTed\nnatively for as long as the system keeps the app running; iOS itself stops\nlocation updates when the user terminates the app (an OS restriction — iOS\nhas no equivalent of Android's restartable foreground service).\n\nDelivery is best-effort: there is no on-disk queue and no automatic retry.\nFailed POSTs are logged and dropped. A flaky network can delay in-flight\nrequests, but points are not persisted across process death.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "headers",
          "tags": [
            {
              "text": "8.3.3",
              "name": "since"
            },
            {
              "text": "{ \"Authorization\": \"Bearer <token>\" }",
              "name": "example"
            }
          ],
          "docs": "Extra HTTP headers for the native POST described by {@link StartOptions.url}.\nIgnored when `url` is not set.\n\nOn Android these headers are persisted next to `url` so a sticky service\nrestart can keep authenticating. Prefer a narrowly scoped, long-lived token\nfor this path, or call {@link BackgroundGeolocationPlugin.updateHeaders}\nwhen credentials rotate. On iOS location headers stay in memory for the\ntracking session.",
          "complexTypes": [
            "Record"
          ],
          "type": "Record<string, string>"
        },
        {
          "name": "minIntervalMs",
          "tags": [
            {
              "text": "8.3.3",
              "name": "since"
            },
            {
              "text": "0",
              "name": "default"
            },
            {
              "text": "120000",
              "name": "example"
            }
          ],
          "docs": "Minimum interval between native location POSTs, in milliseconds.\n`0` or unset keeps the current behaviour (every provider update).\n\nApplied as the Android `requestLocationUpdates` interval (advisory) and as a\nhard gate immediately before each native POST on both platforms. A point\nolder than the last one sent still passes through (late update, not a\nfaster one).\n\nNote: a non-zero {@link StartOptions.distanceFilter} suppresses updates while\nthe device is stationary, so it cannot substitute for a time interval when\nyou still need periodic parked-vehicle heartbeats.",
          "complexTypes": [],
          "type": "number | undefined"
        }
      ]
    },
    {
      "name": "Location",
      "slug": "location",
      "docs": "Represents a geographical location with various attributes.\nContains all the standard location properties returned by GPS/network providers.",
      "tags": [
        {
          "text": "7.0.0",
          "name": "since"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "latitude",
          "tags": [
            {
              "text": "7.0.0",
              "name": "since"
            },
            {
              "text": "40.7128",
              "name": "example"
            }
          ],
          "docs": "Latitude in degrees.\nRange: -90.0 to +90.0",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "longitude",
          "tags": [
            {
              "text": "7.0.0",
              "name": "since"
            },
            {
              "text": "-74.0060",
              "name": "example"
            }
          ],
          "docs": "Longitude in degrees.\nRange: -180.0 to +180.0",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "accuracy",
          "tags": [
            {
              "text": "7.0.0",
              "name": "since"
            },
            {
              "text": "5.0",
              "name": "example"
            }
          ],
          "docs": "Radius of horizontal uncertainty in metres, with 68% confidence.\nLower values indicate more accurate location.",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "altitude",
          "tags": [
            {
              "text": "7.0.0",
              "name": "since"
            },
            {
              "text": "10.5",
              "name": "example"
            }
          ],
          "docs": "Metres above sea level (or null if not available).",
          "complexTypes": [],
          "type": "number | null"
        },
        {
          "name": "altitudeAccuracy",
          "tags": [
            {
              "text": "7.0.0",
              "name": "since"
            },
            {
              "text": "3.0",
              "name": "example"
            }
          ],
          "docs": "Vertical uncertainty in metres, with 68% confidence (or null if not available).",
          "complexTypes": [],
          "type": "number | null"
        },
        {
          "name": "simulated",
          "tags": [
            {
              "text": "7.0.0",
              "name": "since"
            },
            {
              "text": "false",
              "name": "example"
            }
          ],
          "docs": "`true` if the location was simulated by software, rather than GPS.\nUseful for detecting mock locations in development or testing.",
          "complexTypes": [],
          "type": "boolean"
        },
        {
          "name": "bearing",
          "tags": [
            {
              "text": "7.0.0",
              "name": "since"
            },
            {
              "text": "45.5",
              "name": "example"
            }
          ],
          "docs": "Deviation from true north in degrees (or null if not available).\nRange: 0.0 to 360.0",
          "complexTypes": [],
          "type": "number | null"
        },
        {
          "name": "speed",
          "tags": [
            {
              "text": "7.0.0",
              "name": "since"
            },
            {
              "text": "2.5",
              "name": "example"
            }
          ],
          "docs": "Speed in metres per second (or null if not available).",
          "complexTypes": [],
          "type": "number | null"
        },
        {
          "name": "time",
          "tags": [
            {
              "text": "7.0.0",
              "name": "since"
            },
            {
              "text": "1640995200000",
              "name": "example"
            }
          ],
          "docs": "Time the location was produced, in milliseconds since the unix epoch.\nUse this to check if a location is stale when using stale: true.",
          "complexTypes": [],
          "type": "number | null"
        }
      ]
    },
    {
      "name": "CallbackError",
      "slug": "callbackerror",
      "docs": "Error object that may be passed to the location start callback.\nExtends the standard Error with optional error codes.",
      "tags": [
        {
          "text": "7.0.0",
          "name": "since"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "code",
          "tags": [
            {
              "text": "7.0.0",
              "name": "since"
            },
            {
              "text": "\"PERMISSION_DENIED\"",
              "name": "example"
            }
          ],
          "docs": "Optional error code for more specific error handling.",
          "complexTypes": [],
          "type": "string | undefined"
        }
      ]
    },
    {
      "name": "UpdateHeadersOptions",
      "slug": "updateheadersoptions",
      "docs": "Options for {@link BackgroundGeolocationPlugin.updateHeaders}.",
      "tags": [
        {
          "text": "8.3.3",
          "name": "since"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "headers",
          "tags": [
            {
              "text": "8.3.3",
              "name": "since"
            },
            {
              "text": "{ \"Authorization\": \"Bearer <token>\" }",
              "name": "example"
            }
          ],
          "docs": "Replacement HTTP headers for native POSTs configured via `url`.\n\nApplies to an active location watcher and to geofence setup when those\nfeatures have a `url`. Pass an empty object to clear custom headers.",
          "complexTypes": [
            "Record"
          ],
          "type": "Record<string, string>"
        }
      ]
    },
    {
      "name": "SetPlannedRouteOptions",
      "slug": "setplannedrouteoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "soundFile",
          "tags": [
            {
              "text": "7.0.10",
              "name": "since"
            },
            {
              "text": "\"notification.mp3\"",
              "name": "example"
            }
          ],
          "docs": "The name of the sound file to play.\nMust be a valid sound relative path in the app's public folder to work for both web and native platforms.\nThere's no need to include the public folder in the path.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "route",
          "tags": [
            {
              "text": "7.0.11",
              "name": "since"
            },
            {
              "text": "[[-74.0060, 40.7128], [-118.2437, 34.0522]]",
              "name": "example"
            }
          ],
          "docs": "The planned route as an array of longitude and latitude pairs.\nEach pair represents a point on the route.\nThis is used to define a route that the user can follow.\nThe route is used to play a sound when the user deviates from it.",
          "complexTypes": [],
          "type": "[number, number][]"
        },
        {
          "name": "distance",
          "tags": [
            {
              "text": "7.0.11",
              "name": "since"
            },
            {
              "text": "50",
              "name": "default"
            },
            {
              "text": "50",
              "name": "example"
            }
          ],
          "docs": "The distance in meters that the user must deviate from the planned route to trigger the sound.\nThis is used to determine how far off the route the user can be before the sound is played.\nIf not specified, a default value of 50 meters is used.",
          "complexTypes": [],
          "type": "number"
        }
      ]
    },
    {
      "name": "GeofenceSetupOptions",
      "slug": "geofencesetupoptions",
      "docs": "Options for configuring native geofence transition handling.\n\nWhen `url` is provided, native code can send a JSON `POST` whenever a\nmonitored region is entered or exited. Android background POST delivery\nrequires `backgroundLocation: true`.",
      "tags": [
        {
          "text": "8.0.30",
          "name": "since"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "url",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "\"https://api.example.com/geofences\"",
              "name": "example"
            }
          ],
          "docs": "Endpoint that receives geofence transition payloads.\n\nOn Android, native background POST delivery requires `backgroundLocation: true`.\n\nDelivery is best-effort: there is no on-disk queue and no automatic retry.\nFailed POSTs are logged and dropped.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "headers",
          "tags": [
            {
              "text": "8.3.3",
              "name": "since"
            },
            {
              "text": "{ \"Authorization\": \"Bearer <token>\" }",
              "name": "example"
            }
          ],
          "docs": "Extra HTTP headers for the native POST described by {@link GeofenceSetupOptions.url}.\nIgnored when `url` is not set.\n\nHeaders are persisted with the geofence setup so transitions that fire after\nprocess restart can still authenticate. Prefer a narrowly scoped token, or\ncall {@link BackgroundGeolocationPlugin.updateHeaders} when credentials rotate.",
          "complexTypes": [
            "Record"
          ],
          "type": "Record<string, string>"
        },
        {
          "name": "notifyOnEntry",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "true",
              "name": "default"
            },
            {
              "text": "true",
              "name": "example"
            }
          ],
          "docs": "Whether entry transitions should be monitored.",
          "complexTypes": [],
          "type": "boolean | undefined"
        },
        {
          "name": "notifyOnExit",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "true",
              "name": "default"
            },
            {
              "text": "true",
              "name": "example"
            }
          ],
          "docs": "Whether exit transitions should be monitored.",
          "complexTypes": [],
          "type": "boolean | undefined"
        },
        {
          "name": "payload",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "{ \"userId\": \"123\" }",
              "name": "example"
            }
          ],
          "docs": "Base JSON payload merged into every native transition POST and listener event.",
          "complexTypes": [
            "Record"
          ],
          "type": "Record<string, unknown>"
        },
        {
          "name": "requestPermissions",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "true",
              "name": "default"
            },
            {
              "text": "true",
              "name": "example"
            }
          ],
          "docs": "Whether the plugin should request the native location permission needed for geofencing.\n\niOS geofencing needs Always location authorization. Android geofencing requests\nforeground location by default. Android background location is only requested when\n`backgroundLocation` is enabled.",
          "complexTypes": [],
          "type": "boolean | undefined"
        },
        {
          "name": "backgroundLocation",
          "tags": [
            {
              "text": "8.0.34",
              "name": "since"
            },
            {
              "text": "false",
              "name": "default"
            },
            {
              "text": "false",
              "name": "example"
            }
          ],
          "docs": "Whether Android geofencing should opt into background location permission.\n\nThe plugin does not add `ACCESS_BACKGROUND_LOCATION` to your app manifest.\nLeave this disabled if your app does not have Google Play approval for Android\nbackground location. Enable it only after adding `ACCESS_BACKGROUND_LOCATION`\nto your app manifest and when you need Android geofence transitions while the\napp is in the background.\n\nThis option only affects Android. Android versions below 10 do not request\nan extra background-location runtime permission, but the option still gates\nnative Android background geofence delivery.",
          "complexTypes": [],
          "type": "boolean | undefined"
        }
      ]
    },
    {
      "name": "AddGeofenceOptions",
      "slug": "addgeofenceoptions",
      "docs": "A circular geofence region.",
      "tags": [
        {
          "text": "8.0.30",
          "name": "since"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "latitude",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "40.7128",
              "name": "example"
            }
          ],
          "docs": "Latitude in degrees for the region center.",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "longitude",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "-74.006",
              "name": "example"
            }
          ],
          "docs": "Longitude in degrees for the region center.",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "radius",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "50",
              "name": "default"
            },
            {
              "text": "150",
              "name": "example"
            }
          ],
          "docs": "Region radius in meters.",
          "complexTypes": [],
          "type": "number | undefined"
        },
        {
          "name": "identifier",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "\"office\"",
              "name": "example"
            }
          ],
          "docs": "Stable identifier for the geofence.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "notifyOnEntry",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            }
          ],
          "docs": "Overrides the setup-level entry setting for this region.",
          "complexTypes": [],
          "type": "boolean | undefined"
        },
        {
          "name": "notifyOnExit",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            }
          ],
          "docs": "Overrides the setup-level exit setting for this region.",
          "complexTypes": [],
          "type": "boolean | undefined"
        },
        {
          "name": "payload",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "{ \"storeId\": \"nyc-1\" }",
              "name": "example"
            }
          ],
          "docs": "Region-specific payload merged over the setup payload.",
          "complexTypes": [
            "Record"
          ],
          "type": "Record<string, unknown>"
        }
      ]
    },
    {
      "name": "RemoveGeofenceOptions",
      "slug": "removegeofenceoptions",
      "docs": "Options for removing a monitored geofence.",
      "tags": [
        {
          "text": "8.0.30",
          "name": "since"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "identifier",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "\"office\"",
              "name": "example"
            }
          ],
          "docs": "Identifier passed to `addGeofence`.",
          "complexTypes": [],
          "type": "string"
        }
      ]
    },
    {
      "name": "MonitoredGeofencesResult",
      "slug": "monitoredgeofencesresult",
      "docs": "Result returned when listing monitored geofences.",
      "tags": [
        {
          "text": "8.0.30",
          "name": "since"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "regions",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "[\"office\", \"warehouse\"]",
              "name": "example"
            }
          ],
          "docs": "Identifiers for all geofences currently monitored by this plugin.",
          "complexTypes": [],
          "type": "string[]"
        }
      ]
    },
    {
      "name": "PluginListenerHandle",
      "slug": "pluginlistenerhandle",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "remove",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "() => Promise<void>"
        }
      ]
    },
    {
      "name": "GeofenceTransitionEvent",
      "slug": "geofencetransitionevent",
      "docs": "Event emitted when a monitored geofence is entered or exited.\n\nThe same data is also sent to the configured `url`, when one is set.",
      "tags": [
        {
          "text": "8.0.30",
          "name": "since"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "identifier",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "\"office\"",
              "name": "example"
            }
          ],
          "docs": "Identifier of the geofence that changed state.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "transition",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "\"enter\"",
              "name": "example"
            }
          ],
          "docs": "Transition name.",
          "complexTypes": [],
          "type": "'enter' | 'exit'"
        },
        {
          "name": "enter",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "true",
              "name": "example"
            }
          ],
          "docs": "`true` for entry transitions, `false` for exit transitions.",
          "complexTypes": [],
          "type": "boolean"
        },
        {
          "name": "latitude",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "40.7128",
              "name": "example"
            }
          ],
          "docs": "Latitude in degrees for the monitored region center, when available.",
          "complexTypes": [],
          "type": "number | undefined"
        },
        {
          "name": "longitude",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "-74.006",
              "name": "example"
            }
          ],
          "docs": "Longitude in degrees for the monitored region center, when available.",
          "complexTypes": [],
          "type": "number | undefined"
        },
        {
          "name": "radius",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "150",
              "name": "example"
            }
          ],
          "docs": "Region radius in meters, when available.",
          "complexTypes": [],
          "type": "number | undefined"
        },
        {
          "name": "payload",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            }
          ],
          "docs": "Merged setup and region payload.",
          "complexTypes": [
            "Record"
          ],
          "type": "Record<string, unknown>"
        }
      ]
    },
    {
      "name": "GeofenceErrorEvent",
      "slug": "geofenceerrorevent",
      "docs": "Event emitted when native geofence monitoring fails.",
      "tags": [
        {
          "text": "8.0.30",
          "name": "since"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "identifier",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "\"office\"",
              "name": "example"
            }
          ],
          "docs": "Identifier of the geofence that failed, when native APIs provide it.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "code",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            },
            {
              "text": "5",
              "name": "example"
            }
          ],
          "docs": "Native platform error code.",
          "complexTypes": [],
          "type": "number | undefined"
        },
        {
          "name": "message",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            }
          ],
          "docs": "Native platform error message.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "domain",
          "tags": [
            {
              "text": "8.0.30",
              "name": "since"
            }
          ],
          "docs": "Native error domain, when available.",
          "complexTypes": [],
          "type": "string | undefined"
        }
      ]
    },
    {
      "name": "BackgroundGeolocationPermissionStatus",
      "slug": "backgroundgeolocationpermissionstatus",
      "docs": "Permission map returned by {@link BackgroundGeolocationPlugin.checkPermissions}\nand {@link BackgroundGeolocationPlugin.requestPermissions}.\n\nUse `checkPermissions()` to read authorization without prompting. Use\n`requestPermissions()` when you intentionally want to show the system dialog.\nPair `@capacitor/geolocation` for foreground location and this plugin for\nbackground / Always authorization.",
      "tags": [
        {
          "text": "8.0.43",
          "name": "since"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "location",
          "tags": [
            {
              "text": "8.0.43",
              "name": "since"
            }
          ],
          "docs": "Foreground location permission.",
          "complexTypes": [
            "PermissionState"
          ],
          "type": "PermissionState"
        },
        {
          "name": "backgroundLocation",
          "tags": [
            {
              "text": "8.0.43",
              "name": "since"
            }
          ],
          "docs": "Background / Always location authorization.\n\nOn iOS, `when_in_use` means While Using App only and `granted` / `always`\nmeans Always authorization was granted.",
          "complexTypes": [
            "BackgroundLocationPermissionState"
          ],
          "type": "BackgroundLocationPermissionState"
        },
        {
          "name": "notification",
          "tags": [
            {
              "text": "8.0.43",
              "name": "since"
            }
          ],
          "docs": "Android foreground-service notification permission (API 33+).",
          "complexTypes": [
            "PermissionState"
          ],
          "type": "PermissionState"
        }
      ]
    },
    {
      "name": "RequestBackgroundGeolocationPermissionsOptions",
      "slug": "requestbackgroundgeolocationpermissionsoptions",
      "docs": "Options for {@link BackgroundGeolocationPlugin.requestPermissions}.",
      "tags": [
        {
          "text": "8.0.43",
          "name": "since"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "permissions",
          "tags": [
            {
              "text": "8.0.43",
              "name": "since"
            },
            {
              "text": "['backgroundLocation']",
              "name": "example"
            }
          ],
          "docs": "Subset of permissions to request. Defaults to all supported permissions.",
          "complexTypes": [],
          "type": "('location' | 'backgroundLocation' | 'notification')[] | undefined"
        }
      ]
    }
  ],
  "enums": [],
  "typeAliases": [
    {
      "name": "Record",
      "slug": "record",
      "docs": "Construct a type with a set of properties K of type T",
      "types": [
        {
          "text": "{\r\n    [P in K]: T;\r\n}",
          "complexTypes": [
            "K",
            "T"
          ]
        }
      ]
    },
    {
      "name": "PermissionState",
      "slug": "permissionstate",
      "docs": "",
      "types": [
        {
          "text": "'prompt'",
          "complexTypes": []
        },
        {
          "text": "'prompt-with-rationale'",
          "complexTypes": []
        },
        {
          "text": "'granted'",
          "complexTypes": []
        },
        {
          "text": "'denied'",
          "complexTypes": []
        }
      ]
    },
    {
      "name": "BackgroundLocationPermissionState",
      "slug": "backgroundlocationpermissionstate",
      "docs": "Background location authorization on iOS distinguishes Always from While Using.\nOn Android this field uses standard {@link PermissionState} values.",
      "types": [
        {
          "text": "PermissionState",
          "complexTypes": [
            "PermissionState"
          ]
        },
        {
          "text": "'when_in_use'",
          "complexTypes": []
        },
        {
          "text": "'always'",
          "complexTypes": []
        }
      ]
    }
  ],
  "pluginConfigs": []
}