import { ExternalLoaderBody, ExternalLoaderHeaders, ExternalLoaderInterface, ExternalLoaderParams } from "../../ExternalLoader";
import { ErrorCallback, GeocodedResultsCallback, MapQuestGeocoded, MapQuestGeocodeQuery, MapQuestGeocodeQueryObject, ProviderInterface, ProviderOptionsInterface } from "./..";
import { ReverseQuery, ReverseQueryObject } from "../../query";
export interface MapQuestCoordinates {
    lat: number;
    lng: number;
}
export interface MapQuestResult {
    latLng: MapQuestCoordinates;
    displayLatLng: MapQuestCoordinates;
    street: string;
    sideOfStreet: string;
    adminArea1?: string;
    adminArea1Type?: string;
    adminArea3?: string;
    adminArea3Type?: string;
    adminArea4?: string;
    adminArea4Type?: string;
    adminArea5?: string;
    adminArea5Type?: string;
    adminArea6?: string;
    adminArea6Type?: string;
    postalCode: string;
    type: "s" | "v";
    linkId: string;
    dragPoint: boolean;
    geocodeQuality: "POINT" | "ADDRESS" | "INTERSECTION" | "STREET" | "COUNTRY" | "STATE" | "COUNTY" | "CITY" | "NEIGHBORHOOD" | "ZIP" | "ZIP_EXTENDED";
    geocodeQualityCode: string;
    mapUrl: string;
}
export interface MapQuestResponse {
    info: {
        statuscode: 0 | 400 | 403 | 500;
        copyright: {
            text: string;
            imageUrl: string;
            imageAltText: string;
        };
        messages: string[];
    };
    results: {
        providedLocation: {
            location?: string;
            latLng?: MapQuestCoordinates;
        };
        locations: MapQuestResult[];
    }[];
}
export interface MapQuestProviderOptionsInterface extends ProviderOptionsInterface {
    readonly apiKey: string;
    readonly method?: "GET" | "POST";
    readonly source?: "nominatim" | "mapquest";
}
export declare const defaultMapQuestProviderOptions: MapQuestProviderOptionsInterface;
declare type MapQuestGeocodedResultsCallback = GeocodedResultsCallback<MapQuestGeocoded>;
export default class MapQuestProvider implements ProviderInterface<MapQuestGeocoded> {
    private externalLoader;
    private options;
    constructor(_externalLoader: ExternalLoaderInterface, options?: MapQuestProviderOptionsInterface);
    geocode(query: string | MapQuestGeocodeQuery | MapQuestGeocodeQueryObject): Promise<MapQuestGeocoded[]>;
    geocode(query: string | MapQuestGeocodeQuery | MapQuestGeocodeQueryObject, callback: MapQuestGeocodedResultsCallback, errorCallback?: ErrorCallback): void;
    geodecode(query: ReverseQuery | ReverseQueryObject): Promise<MapQuestGeocoded[]>;
    geodecode(query: ReverseQuery | ReverseQueryObject, callback: MapQuestGeocodedResultsCallback, errorCallback?: ErrorCallback): void;
    geodecode(latitude: number | string, longitude: number | string): Promise<MapQuestGeocoded[]>;
    geodecode(latitude: number | string, longitude: number | string, callback: MapQuestGeocodedResultsCallback, errorCallback?: ErrorCallback): void;
    private withCommonParams;
    executeRequest(params: ExternalLoaderParams, callback: MapQuestGeocodedResultsCallback, headers?: ExternalLoaderHeaders, body?: ExternalLoaderBody, errorCallback?: ErrorCallback): void;
    static mapToGeocoded(result: MapQuestResult, attribution?: string): MapQuestGeocoded;
}
export {};
//# sourceMappingURL=MapQuestProvider.d.ts.map