import { EventEmitter } from "../../stencil-public-runtime";
import { ForwardGeocodeOptions, ReverseGeocodeOptions, GeocodeResponse, geocodeClient, geocodeClientOptions } from "./geocode-interface";
export declare class GeocodeController {
  private static clients;
  /**
   * Default client used to perform the geocoding. It can be overridden in
   * the options provided to `forward()` and `reverse()`.
   */
  readonly defaultClient: string;
  /**
   * Emitted when a forward geocode request completes.
   */
  glForwardGeocode: EventEmitter;
  /**
   * Emitted when a reverse geocode request completes.
   */
  glReverseGeocode: EventEmitter;
  /**
   * Performs forward geocoding by converting an address to a geolocation.
   * @param options Forward geocoding options object.
   * @param clientOptions Additional client options object.
   */
  forward(options: ForwardGeocodeOptions, clientOptions?: geocodeClientOptions): Promise<GeocodeResponse[]>;
  /**
   * Performs reverse geocoding by converting a geolocation to an address.
   * @param options Reverse geocoding options object.
   * @param clientOptions Additional client options.
   */
  reverse(options: ReverseGeocodeOptions, clientOptions?: geocodeClientOptions): Promise<any>;
  private getClient;
  /**
   * Adds a client to the geocode controller
   * @param id The ide of the client
   * @param service A client able to handle nominatim results. For an example see {@link ./nominatim}
   */
  static addClient(id: string, service: geocodeClient): Promise<void>;
}
