// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// All of the types that follow are simple mappings of the types defined by the
// "Google Maps JavaScript API v3" defined here:
// https://developers.google.com/maps/documentation/javascript/geocoding

module geocoder;

struct Location {
  float latitude;
  float longitude;
};

struct LocationType {
  const string ROOFTOP = "ROOFTOP";
  const string RANGE_INTERPOLATED = "RANGE_INTERPOLATED";
  const string GEOMETRIC_CENTER = "GEOMETRIC_CENTER";
  const string APPROXIMATE = "APPROXIMATE";
};

struct Bounds {
  Location northeast;
  Location southwest;
};

struct ComponentRestrictions {
  string? administrative_area; 
  string? country;
  string? locality;
  string? postal_code;
  string? route;
};

struct Options {
  ComponentRestrictions? restrictions;
  Location? location;
  string? region;
};

struct Geometry {
  Location location;
  LocationType location_type;
  Bounds viewport;
  Bounds? bounds;
};

struct Result {
  bool partial_match;
  Geometry geometry;
  string formatted_address;
  array<string> types;
  // TBD address_components
};

struct Status {
  const string OK = "OK";
  const string ZERO_RESULTS = "ZERO_RESULTS";
  const string OVER_QUERY_LIMIT = "OVER_QUERY_LIMIT";
  const string REQUEST_DENIED = "REQUEST_DENIED";
  const string INVALID_REQUEST = "INVALID_REQUEST";
};

interface Geocoder {
  AddressToLocation(string address, Options? options) => (string status, array<Result>? results);
  LocationToAddress(Location location, Options? options) => (string status, array<Result>? results);
};
