///
import { RequestInfo, RequestInit, Response } from "node-fetch";
declare namespace node_geocoder {
type Providers =
| "freegeoip"
| "datasciencetoolkit"
| "locationiq"
| "mapquest"
| "mapbox"
| "openmapquest"
| "tomtom"
| "nominatimmapquest"
| "opencage"
| "geocodio"
| "yandex"
| "teleport"
| "pickpoint"
| "virtualearth";
interface BaseOptions {
provider: string;
fetch?: (url: RequestInfo, init?: RequestInit) => Promise | undefined;
timeout?: number | undefined;
formatterPattern?: string | undefined;
formatter?: any;
}
interface HereOptions {
provider: "here";
appId: string;
apiKey: string;
appCode?: string;
language?: string | undefined;
politicalView?: string | undefined;
country?: string | undefined;
state?: string | undefined;
production?: boolean | undefined;
}
interface OpenStreetMapOptions {
provider: "openstreetmap";
language?: string | undefined;
email?: string | undefined;
apiKey?: string | undefined;
osmServer?: string | undefined;
}
interface OpenDataFranceOptions {
provider: "opendatafrance";
language?: string | undefined;
email?: string | undefined;
apiKey?: string | undefined;
}
interface AgolOptions {
provider: "agol";
client_id?: string | undefined;
client_secret?: string | undefined;
}
interface SmartyStreetsOptions {
provider: "smartyStreet";
auth_id: string;
auth_token: string;
}
interface GoogleOptions {
provider: "google";
clientId?: string | undefined;
apiKey?: string | undefined;
language?: string | undefined;
region?: string | undefined;
excludePartialMatches?: boolean | undefined;
channel?: string | undefined;
}
interface GenericOptions {
provider: Providers;
apiKey?: string | undefined;
language?: string | undefined;
host?: string | undefined;
}
type Options =
& BaseOptions
& (
| GenericOptions
| HereOptions
| OpenStreetMapOptions
| OpenDataFranceOptions
| AgolOptions
| SmartyStreetsOptions
| GoogleOptions
);
interface Location {
lat: number;
lon: number;
}
interface Entry {
formattedAddress?: string | undefined;
latitude?: number | undefined;
longitude?: number | undefined;
extra?:
| {
googlePlaceId?: string | undefined;
confidence?: number | undefined;
}
| undefined;
administrativeLevels?:
| {
level1long?: string | undefined;
level1short?: string | undefined;
level2long?: string | undefined;
level2short?: string | undefined;
}
| undefined;
city?: string | undefined;
streetName?: string | undefined;
streetNumber?: string | undefined;
country?: string | undefined;
countryCode?: string | undefined;
zipcode?: string | undefined;
provider?: string | undefined;
state?: string | undefined;
stateCode?: string | undefined;
county?: string | undefined;
district?: string | undefined;
building?: string | undefined;
}
interface Query {
address?: string | undefined;
country?: string | undefined;
countryCode?: string | undefined;
zipcode?: string | undefined;
minConfidence?: number | undefined;
limit?: number | undefined;
}
interface BatchResult {
error: any;
value: Entry[];
}
class Geocoder {
geocode(query: string | Query, cb?: (err: any, data: Entry[]) => void): Promise;
batchGeocode(queries: string[] | Query[], cb?: (err: any, data: BatchResult[]) => void): Promise;
reverse(loc: Location, cb?: (err: any, data: Entry[]) => void): Promise;
}
}
declare function node_geocoder(options: node_geocoder.Options): node_geocoder.Geocoder;
export = node_geocoder;