import { ServiceHandler } from "@blockprotocol/core";
/**
 * There's an issue when importing useExternalApiEmbedderService from @blockprotocol/externalApi/react in hashintel/hash:
 * NextJS's output file tracing does not include externalApi-service.json, and yet an import statement for it is preserved.
 * This leads to a 'module cannot be found error'. For now, commenting out the import of the JSON from this file.
 * @todo restore this when module resolution issue resolved
 * @see https://app.asana.com/0/1202542409311090/1202614421149286/f
 */
import { BlockExternalApiMessageCallbacks, BlockExternalApiMessages, MapboxCanRetrieveAddressData, MapboxCanRetrieveAddressResponseData, MapboxForwardGeocodingData, MapboxRetrieveAddressData, MapboxRetrieveDirectionsData, MapboxRetrieveDirectionsResponseData, MapboxRetrieveIsochronesData, MapboxRetrieveIsochronesResponseData, MapboxRetrieveStaticMapData, MapboxReverseGeocodingData, MapboxSuggestAddressData } from "./types.js";
/**
 * Creates a handler for the externalApi service for the block.
 * Register callbacks in the constructor or afterwards using the 'on' method to react to messages from the embedder.
 * Call the relevant methods to send messages to the embedder.
 */
export declare class ExternalApiBlockHandler extends ServiceHandler implements BlockExternalApiMessages {
    constructor({ callbacks, element, }: {
        callbacks?: Partial<BlockExternalApiMessageCallbacks>;
        element?: HTMLElement | null;
    });
    getInitPayload(): Record<string, any>;
    /**
     * Registers multiple callbacks at once.
     * Useful for bulk updates to callbacks after the service is first initialised.
     */
    registerCallbacks(callbacks: Partial<BlockExternalApiMessageCallbacks>): void;
    /**
     * Removes multiple callbacks at once.
     * Useful when replacing previously registered callbacks
     */
    removeCallbacks(callbacks: Partial<BlockExternalApiMessageCallbacks>): void;
    /**
     * Call the provided function when the named message is received, passing the data/errors object from the message.
     * If the named message expects a response, the callback should provide the expected data/errors object as the return.
     * @param messageName the message name to listen for
     * @param handlerFunction the function to call when the message is received, with the message data / errors
     */
    on<K extends keyof BlockExternalApiMessageCallbacks>(this: ExternalApiBlockHandler, messageName: K, handlerFunction: BlockExternalApiMessageCallbacks[K]): void;
    /** Mapbox Geocoding API */
    mapboxForwardGeocoding({ data }: {
        data?: MapboxForwardGeocodingData;
    }): Promise<import("@blockprotocol/core").MessageData<import("./mapbox-types.js").GeocodeResponse, null>>;
    mapboxReverseGeocoding({ data }: {
        data?: MapboxReverseGeocodingData;
    }): Promise<import("@blockprotocol/core").MessageData<import("./mapbox-types.js").GeocodeResponse, null>>;
    /** Mapbox Directions API */
    mapboxRetrieveDirections({ data }: {
        data?: MapboxRetrieveDirectionsData;
    }): Promise<import("@blockprotocol/core").MessageData<MapboxRetrieveDirectionsResponseData, null>>;
    /** Mapbox Isochrone API */
    mapboxRetrieveIsochrones({ data }: {
        data?: MapboxRetrieveIsochronesData;
    }): Promise<import("@blockprotocol/core").MessageData<MapboxRetrieveIsochronesResponseData, null>>;
    /** Mapbox Autofill API */
    mapboxSuggestAddress({ data }: {
        data?: MapboxSuggestAddressData;
    }): Promise<import("@blockprotocol/core").MessageData<import("./mapbox-types.js").AutofillSuggestionResponse, null>>;
    mapboxRetrieveAddress({ data }: {
        data?: MapboxRetrieveAddressData;
    }): Promise<import("@blockprotocol/core").MessageData<import("./mapbox-types.js").AutofillRetrieveResponse, null>>;
    mapboxCanRetrieveAddress({ data }: {
        data?: MapboxCanRetrieveAddressData;
    }): Promise<import("@blockprotocol/core").MessageData<MapboxCanRetrieveAddressResponseData, null>>;
    /** Mapbox Static Maps API */
    mapboxRetrieveStaticMap({ data }: {
        data?: MapboxRetrieveStaticMapData;
    }): Promise<import("@blockprotocol/core").MessageData<string, null>>;
}
