import {Plugin, Cordova} from './plugin';

export interface launchNavigatorOptions {

  /**
   * iOS, Android, Windows
   * If true, the plugin will NOT attempt to use the geolocation plugin to determine the current device position when the start location parameter is omitted. Defaults to false.
   */
  disableAutoGeolocation? : boolean,

  /**
   * iOS, Android, Windows
   * Transportation mode for navigation: "driving", "walking" or "transit". Defaults to "driving" if not specified.
   */
  transportMode? : string,

  /**
   * iOS
   * If true, plugin will attempt to launch Google Maps instead of Apple Maps. If Google Maps is not available, it will fall back to Apple Maps.
   */
  preferGoogleMaps? : boolean,

  /**
   * iOS
   * If using Google Maps and the app has a URL scheme, passing this to Google Maps will display a button which returns to the app.
   */
  urlScheme? : string,

  /**
   * iOS
   * If using Google Maps with a URL scheme, this specifies the text of the button in Google Maps which returns to the app. Defaults to "Back" if not specified.
   */
  backButtonText? : string,

  /**
   * iOS
   * If true, debug log output will be generated by the plugin. Defaults to false.
   */
  enableDebug? : boolean,

  /**
   * Android
   * Navigation mode in which to open Google Maps app: "maps" or "turn-by-turn". Defaults to "maps" if not specified.
   */
  navigationMode? : string,

}

/**
 * @name Launch Navigator
 * @description
 * Requires Cordova plugin: uk.co.workingedge.phonegap.plugin.launchnavigator. For more info, please see the [LaunchNavigator plugin docs](https://github.com/dpa99c/phonegap-launch-navigator).
 *
 * @usage
 * ```js
 * import {LaunchNavigator} from 'ionic-native';
 *
 *
 *
 * LaunchNavigator.navigate("Toronto, ON", "London, ON")
 *   .then(
 *     success => console.log("Launched navigator"),
 *     error => console.log("Error launching navigator", error)
 *   );
 * ```
 */
@Plugin({
  plugin: 'uk.co.workingedge.phonegap.plugin.launchnavigator',
  pluginRef: 'launchnavigator',
  repo: 'https://github.com/dpa99c/phonegap-launch-navigator.git'
})
export class LaunchNavigator {

  /**
   * Launches navigator app
   * @param destination Location name or coordinates
   * @param start Location name or coordinates
   * @param options
   * @returns {Promise<any>}
   */
  @Cordova({
    successIndex: 2,
    errorIndex: 3
  })
  static navigate(
    destination: any,
    start: any = null,
    options?: launchNavigatorOptions
  ): Promise<any> { return }

}
