import { ErrorCallback } from "./provider";
import { PartialSome } from "./types";
export interface ExternalLoaderOptions {
    readonly protocol: string;
    readonly host?: string;
    readonly pathname?: string;
    readonly method: "GET" | "POST";
}
export interface ExternalLoaderBody {
    [param: string]: ExternalLoaderBody | string | number | undefined;
}
export interface ExternalLoaderParams {
    [param: string]: string | undefined;
    jsonpCallback?: string;
}
export interface ExternalLoaderHeaders {
    [header: string]: string | undefined;
}
declare type ResponseCallback = (response: any) => void;
export interface ExternalLoaderInterface {
    setOptions(options: PartialSome<ExternalLoaderOptions, "method">): void;
    getOptions(): ExternalLoaderOptions;
    executeRequest(params: ExternalLoaderParams, callback: ResponseCallback, headers?: ExternalLoaderHeaders, body?: ExternalLoaderBody, errorCallback?: ErrorCallback): void;
}
/**
 * Load data from external geocoding engines.
 */
export default class ExternalLoader implements ExternalLoaderInterface {
    private options;
    constructor(options?: PartialSome<ExternalLoaderOptions, "method">);
    setOptions(options: PartialSome<ExternalLoaderOptions, "method">): void;
    getOptions(): ExternalLoaderOptions;
    executeRequest(params: ExternalLoaderParams, callback: ResponseCallback, externalLoaderHeaders?: ExternalLoaderHeaders, body?: ExternalLoaderBody, errorCallback?: ErrorCallback): void;
    private static runJsonpCallback;
    /**
     * Generates randomly-named function to use as a callback for JSONP requests.
     * @see https://github.com/OscarGodson/JSONP
     */
    private static generateJsonpCallback;
}
export {};
//# sourceMappingURL=ExternalLoader.d.ts.map