Definitions
declare module "@sentiance-react-native/smart-geofences" {
import { EmitterSubscription } from "react-native";
import { SdkStatus } from "@sentiance-react-native/core";
export type SmartGeofenceEventType = "ENTRY" | "EXIT";
export interface SmartGeofencesRefreshFailureReason {
/**
* The feature is not enabled for your app.
*/
FEATURE_NOT_ENABLED: "FEATURE_NOT_ENABLED";
/**
* Failed to refresh the monitored geofences due to network usage being restricted.
* In most cases, this means the device is connected to a mobile data network, but you have disabled
* mobile data network usage using the {@link SentianceCore.setIsAllowedToUseMobileData core module's mobile usage API}.
*/
NETWORK_USAGE_RESTRICTED: "NETWORK_USAGE_RESTRICTED";
/**
* A network error was encountered when attempting to refresh the monitored geofences.
*/
NETWORK_ERROR: "NETWORK_ERROR";
/**
* A server error was encountered when attempting to refresh the monitored geofences.
*/
SERVER_ERROR: "SERVER_ERROR";
/**
* The application tried to refresh the list of monitored geofences more than once within
* the last 30 seconds.
*/
TOO_MANY_FREQUENT_CALLS: "TOO_MANY_FREQUENT_CALLS";
/**
* An unexpected error occurred. Check the corresponding {@link SmartGeofencesRefreshError#details} for more info.
*/
UNEXPECTED_ERROR: "UNEXPECTED_ERROR";
/**
* No Sentiance user is present on device. Call {@link SentianceCore.createUser} to create a user.
*/
NO_USER: "NO_USER";
/**
* The user is disabled remotely.
*/
USER_DISABLED_REMOTELY: "USER_DISABLED_REMOTELY";
}
export enum DetectionMode {
/**
* The Smart Geofences feature is not enabled for your app.
*/
FEATURE_NOT_ENABLED = "FEATURE_NOT_ENABLED",
/**
* Geofence entry/exit detections are disabled. Check the {@link SdkStatus } to find out why.
*/
DISABLED = "DISABLED",
/**
* Geofence entry/exit detections are limited to when the app is visible in the foreground,
* due to restricted location permission.
*/
FOREGROUND = "FOREGROUND",
/**
* Geofence entry/exit detections are running unrestricted in the background.
*/
BACKGROUND = "BACKGROUND"
}
export interface Location {
timestamp: number;
latitude: number;
longitude: number;
accuracy?: number;
altitude?: number;
provider?: string; // Android only
}
export interface SmartGeofence {
sentianceId: string;
latitude: number;
longitude: number;
radius: number;
externalId: string;
}
export interface SmartGeofenceEvent {
timestamp: number;
triggeringLocation: Location;
eventType: SmartGeofenceEventType;
geofences: SmartGeofence[];
}
export interface SmartGeofencesRefreshError {
reason: SmartGeofencesRefreshFailureReason;
details?: string;
}
export interface SentianceSmartGeofences {
/**
* Refreshes the list of geofences.
*
* @returns A Promise that resolves if the refresh was successful.
* The Promise does not return any value upon resolution.
*
* @throws {SmartGeofencesRefreshError} If the refresh fails, the Promise
* is rejected with an object of type `SmartGeofencesRefreshError`.
* This object contains a `reason` property detailing the nature of the error.
*
* @example
* try {
* await refreshGeofences();
* console.log("Geofences refreshed successfully.");
* } catch (error) {
* const refreshError = error.userInfo as SmartGeofencesRefreshError;
* console.error("Error refreshing geofences:", refreshError.reason);
* }
*/
refreshGeofences(): Promise<void>;
/**
* Registers a listener for smart geofence events.
*
* This function sets up an event listener that will execute the provided callback
* function whenever a smart geofence event occurs (could be an entry, or an exit event).
*
* @param {Function} onSmartGeofenceEvent - A callback function that is called whenever
* a smart geofence event is triggered. The function receives a single argument:
* a `SmartGeofenceEvent` object containing details about the event.
*
* @returns {Promise<EmitterSubscription>} A Promise that resolves to an EmitterSubscription.
* This subscription object can be used to unsubscribe from the event notifications
* in the future, by calling `remove()` on the returned subscription object.
*
* @example
* const subscription = await addSmartGeofenceEventListener(event => {
* console.log('Geofence event received:', event);
* });
* console.log('Listener registered, subscription:', subscription);
*/
addSmartGeofenceEventListener(onSmartGeofenceEvent: (smartGeofenceEvent: SmartGeofenceEvent) => void): Promise<EmitterSubscription>;
/**
* Retrieves the geofence entry/exit detection mode.
*
* @example
* const detectionMode = await getDetectionMode();
* console.log('Detection mode is currently:', detectionMode);
*/
getDetectionMode(): Promise<DetectionMode>;
}
const SentianceSmartGeofences: SentianceSmartGeofences;
export default SentianceSmartGeofences;
}
Last updated