diff --git a/cordova-plugin-ibeacon/cordova-plugin-ibeacon-tests.ts b/cordova-plugin-ibeacon/cordova-plugin-ibeacon-tests.ts
new file mode 100644
index 0000000000..7520c39d52
--- /dev/null
+++ b/cordova-plugin-ibeacon/cordova-plugin-ibeacon-tests.ts
@@ -0,0 +1,62 @@
+///
+///
+
+function registerDelegates() {
+ cordova.plugins.locationManager.enableDebugLogs();
+
+ cordova.plugins.locationManager.delegate.didRangeBeaconsInRegion = (pluginResult) => didRangeBeaconsInRegion(pluginResult);
+ cordova.plugins.locationManager.delegate.didEnterRegion = (pluginResult) => didEnterRegion(pluginResult);
+ cordova.plugins.locationManager.delegate.didExitRegion = (pluginResult) => didExitRegion(pluginResult);
+ cordova.plugins.locationManager.delegate.didDetermineStateForRegion = (pluginResult) => didDetermineStateForRegion(pluginResult);
+ cordova.plugins.locationManager.delegate.didChangeAuthorizationStatus = (authorizationStatus) => didChangeAuthorizationStatus(authorizationStatus);
+ cordova.plugins.locationManager.delegate.didStartMonitoringForRegion = (pluginResult) => didStartMonitoringForRegion(pluginResult);
+ cordova.plugins.locationManager.delegate.monitoringDidFailForRegionWithError = (pluginResult) => monitoringDidFailForRegionWithError(pluginResult);
+
+ cordova.plugins.locationManager.onDomDelegateReady();
+}
+
+function didRangeBeaconsInRegion(pluginResult: BeaconPlugin.PluginResult): void {
+ for (var beacon of pluginResult.beacons) {
+ console.log(beacon.uuid, beacon.major, beacon.minor, beacon.accuracy, beacon.proximity, beacon.rssi, beacon.tx);
+ }
+}
+
+function didEnterRegion(pluginResult: BeaconPlugin.PluginResult): void {
+ var region: BeaconPlugin.Region = new cordova.plugins.locationManager.BeaconRegion("identifier", "uuid", 1, 2);;
+ cordova.plugins.locationManager.startRangingBeaconsInRegion(this.createBeaconRegionFromPluginResult(pluginResult))
+ .then(() => {
+ console.log("startRangingBeaconsInRegion succeeded");
+ })
+ .catch((reason: any) => {
+ console.error("startRangingBeaconsInRegion failed: " + reason);
+ });
+}
+
+function didExitRegion(pluginResult: BeaconPlugin.PluginResult): void {
+ var region: BeaconPlugin.Region;
+ cordova.plugins.locationManager.stopRangingBeaconsInRegion(region)
+ .then(() => {
+ console.log("stopRangingBeaconsInRegion succeeded");
+ })
+ .catch((reason: any) => {
+ console.error("stopRangingBeaconsInRegion failed: " + reason);
+ });
+}
+
+function didDetermineStateForRegion(pluginResult: BeaconPlugin.PluginResult): void {
+ if (pluginResult.state === "CLRegionStateInside") {
+ console.log(pluginResult.region.identifier);
+ }
+}
+
+function didChangeAuthorizationStatus(authorizationStatus: string): void {
+ console.log(authorizationStatus);
+}
+
+function didStartMonitoringForRegion(pluginResult: BeaconPlugin.PluginResult): void {
+ console.log(pluginResult.region.identifier);
+}
+
+function monitoringDidFailForRegionWithError(pluginResult: BeaconPlugin.PluginResult): void {
+ console.log(pluginResult.region.identifier);
+}
\ No newline at end of file
diff --git a/cordova-plugin-ibeacon/cordova-plugin-ibeacon.d.ts b/cordova-plugin-ibeacon/cordova-plugin-ibeacon.d.ts
new file mode 100644
index 0000000000..8f1f6af1a6
--- /dev/null
+++ b/cordova-plugin-ibeacon/cordova-plugin-ibeacon.d.ts
@@ -0,0 +1,95 @@
+// Type definitions for cordova-plugin-ibeacon v3.3.0
+// Project: https://github.com/petermetz/cordova-plugin-ibeacon
+// Definitions by: Markus Wagner
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+interface CordovaPlugins {
+ locationManager: BeaconPlugin.LocationManager;
+}
+
+declare module BeaconPlugin {
+ /**
+ * Beacon Plugin.
+ */
+ export interface LocationManager {
+ delegate: Delegate;
+ BeaconRegion: BeaconRegion;
+ onDomDelegateReady(): void;
+ startMonitoringForRegion(region: Region): Q.Promise;
+ stopMonitoringForRegion(region: Region): Q.Promise;
+ requestStateForRegion(region: Region): Q.Promise;
+ startRangingBeaconsInRegion(region: Region): Q.Promise;
+ stopRangingBeaconsInRegion(region: Region): Q.Promise;
+ getAuthorizationStatus(): Q.Promise;
+ requestWhenInUseAuthorization(): Q.Promise;
+ requestAlwaysAuthorization(): Q.Promise;
+ getMonitoredRegions(): Q.Promise;
+ getRangedRegions(): Q.Promise;
+ isRangingAvailable(): Q.Promise;
+ isMonitoringAvailableForClass(region: Region): Q.Promise;
+ startAdvertising(region: Region, measuredPower: boolean): Q.Promise;
+ stopAdvertising(): Q.Promise;
+ isAdvertisingAvailable(): Q.Promise;
+ isAdvertising(): Q.Promise;
+ disableDebugLogs(): Q.Promise;
+ enableDebugNotifications(): Q.Promise;
+ disableDebugNotifications(): Q.Promise;
+ enableDebugLogs(): Q.Promise;
+ isBluetoothEnabled(): Q.Promise;
+ enableBluetooth(): Q.Promise;
+ disableBluetooth(): Q.Promise;
+ appendToDeviceLog(message: string): Q.Promise;
+ }
+
+ export interface PluginResult {
+ eventType: string;
+ region: Region;
+ beacons: Beacon[];
+ authorizationStatus: string;
+ state: string;
+ }
+
+ export interface Delegate {
+ didDetermineStateForRegion(pluginResult: PluginResult): void;
+ didStartMonitoringForRegion(pluginResult: PluginResult): void;
+ didExitRegion(pluginResult: PluginResult): void;
+ didEnterRegion(pluginResult: PluginResult): void;
+ didRangeBeaconsInRegion(pluginResult: PluginResult): void;
+ peripheralManagerDidStartAdvertising(pluginResult: PluginResult): void;
+ peripheralManagerDidUpdateState(pluginResult: PluginResult): void;
+ didChangeAuthorizationStatus(authorizationStatus: string): void;
+ monitoringDidFailForRegionWithError(pluginResult: PluginResult): void;
+ }
+
+ export interface Region {
+ identifier: string;
+ new (identifier: string): Region;
+ }
+
+ export interface BeaconRegion extends Region {
+ uuid: string;
+ major: string;
+ minor: string;
+ notifyEntryStateOnDisplay: boolean;
+ new (identifier: string, uuid: string, major?: number, minor?: number, notifyEntryStateOnDisplay?: boolean): BeaconRegion;
+ }
+
+ export interface CircularRegion extends Region {
+ latitude: number;
+ longitude: number;
+ radius: number;
+ new (identifier: string, latitude: number, longitude: number, radius: number): CircularRegion;
+ }
+
+ export interface Beacon {
+ uuid: string;
+ major: string;
+ minor: string;
+ proximity: string;
+ tx: number;
+ rssi: number;
+ accuracy: number;
+ }
+}