import { z as zInfer, U as UiControlsOptions, V as ViewportCenterZoom, F as FeltController } from './controller-DXsOpGmy.js';
export { aC as AggregatedGridConfig, aD as AggregationConfig, aE as AggregationMethod, a as Basemap, B as BasemapsController, f as CircleElementCreate, g as CircleElementRead, h as CircleElementUpdate, bg as CircleToolSettings, C as ColorBasemap, b as ColorBasemapInput, bh as ConfigurableToolType, aF as CountGridConfig, bx as CreateActionTriggerParams, by as CreateFeatureActionParams, Y as CreateLayersFromGeoJsonParams, bz as CreateOrUpdatePanelParams, bA as CreatePanelElementsParams, c as CustomTileBasemap, d as CustomTileBasemapInput, Z as DataOnlyLayer, bB as DeletePanelElementsParams, E as Element, i as ElementChangeCallbackParams, j as ElementCreate, k as ElementGroup, l as ElementGroupChangeCallbackParams, aU as ElementGroupNode, aV as ElementNode, m as ElementUpdate, S as ElementsController, aW as EntityNode, aX as FeatureNode, aY as FeatureSelection, e as FeltBasemap, b0 as FeltBoundary, _ as FeltTiledVectorSource, b1 as FeltZoom, av as FilterExpression, aw as FilterLogicGate, ax as FilterTernary, ay as Filters, $ as GeoJsonDataVectorSource, b2 as GeoJsonFeature, a0 as GeoJsonFileVectorSource, b3 as GeoJsonGeometry, b4 as GeoJsonProperties, a1 as GeoJsonUrlVectorSource, az as GeometryFilter, G as GetElementGroupsConstraint, n as GetElementsConstraint, aG as GetLayerCalculationParams, aH as GetLayerCategoriesGroup, aI as GetLayerCategoriesParams, a2 as GetLayerGroupsConstraint, aJ as GetLayerHistogramBin, aK as GetLayerHistogramParams, aL as GetLayerPrecomputedCalculationParams, a3 as GetLayersConstraint, a4 as GetRenderedFeaturesConstraint, aM as GridConfig, aN as GridType, H as HighlighterElementCreate, o as HighlighterElementRead, p as HighlighterElementUpdate, bi as HighlighterToolSettings, I as ImageElementCreate, q as ImageElementRead, r as ImageElementUpdate, bj as InputToolSettings, X as InteractionsController, b5 as LatLng, a5 as Layer, aA as LayerBoundaries, a6 as LayerChangeCallbackParams, a7 as LayerCommon, al as LayerFeature, aB as LayerFilters, a8 as LayerGroup, a9 as LayerGroupChangeCallbackParams, aZ as LayerGroupNode, a_ as LayerNode, aa as LayerProcessingStatus, an as LayerSchema, ao as LayerSchemaAttribute, ap as LayerSchemaBooleanAttribute, aq as LayerSchemaCommonAttribute, ar as LayerSchemaDateAttribute, as as LayerSchemaDateTimeAttribute, at as LayerSchemaNumericAttribute, au as LayerSchemaTextAttribute, aR as LayersController, ab as LegendDisplay, ac as LegendItem, ad as LegendItemChangeCallbackParams, ae as LegendItemIdentifier, af as LegendItemsConstraint, b6 as LineStringGeometry, bk as LineToolSettings, L as LinkElementRead, b7 as LngLatTuple, aS as MapDetails, W as MapInteractionEvent, M as MarkerElementCreate, s as MarkerElementRead, t as MarkerElementUpdate, bl as MarkerToolSettings, aT as MiscController, aO as MultiAggregationConfig, b8 as MultiLineStringGeometry, b9 as MultiPointGeometry, ba as MultiPolygonGeometry, N as NoteElementCreate, u as NoteElementRead, v as NoteElementUpdate, bm as NoteToolSettings, bC as OnMapInteractionsOptions, P as PathElementCreate, w as PathElementRead, x as PathElementUpdate, bn as PinToolSettings, y as PlaceElementCreate, A as PlaceElementRead, D as PlaceElementUpdate, bo as PlaceFrame, bp as PlaceSymbol, bG as PlacementForUIElement, bb as PointGeometry, J as PolygonElementCreate, K as PolygonElementRead, O as PolygonElementUpdate, bc as PolygonGeometry, bq as PolygonToolSettings, aP as PrecomputedAggregationMethod, ag as RasterBand, ah as RasterLayer, ai as RasterLayerSource, am as RasterValue, br as RouteToolSettings, a$ as SelectionController, cp as SetViewportCenterZoomParams, bd as SetVisibilityRequest, be as SortConfig, bf as SortDirection, T as TextElementCreate, Q as TextElementRead, R as TextElementUpdate, bs as TextToolSettings, bt as ToolSettingsChangeEvent, bu as ToolSettingsMap, bv as ToolType, bw as ToolsController, cl as UIActionTriggerCreate, bJ as UIButtonElement, bK as UIButtonElementCreate, bL as UIButtonElementUpdate, c5 as UIButtonRowElement, c6 as UIButtonRowElementCreate, c7 as UIButtonRowElementUpdate, c8 as UICheckboxGroupElement, c9 as UICheckboxGroupElementCreate, ca as UICheckboxGroupElementUpdate, ck as UIControlElementOption, bS as UIDividerElement, bT as UIDividerElementCreate, bU as UIDividerElementUpdate, cm as UIFeatureAction, cn as UIFeatureActionCreate, bP as UIFlexibleSpaceElement, bQ as UIFlexibleSpaceElementCreate, bR as UIFlexibleSpaceElementUpdate, c2 as UIGridContainerElement, c3 as UIGridContainerElementCreate, c4 as UIGridContainerElementUpdate, ch as UIIframeElement, ci as UIIframeElementCreate, cj as UIIframeElementUpdate, bH as UIPanel, bI as UIPanelCreateOrUpdate, b$ as UIPanelElement, c0 as UIPanelElementCreate, c1 as UIPanelElementUpdate, cb as UIRadioGroupElement, cc as UIRadioGroupElementCreate, cd as UIRadioGroupElementUpdate, bY as UISelectElement, bZ as UISelectElementCreate, b_ as UISelectElementUpdate, bM as UITextElement, bN as UITextElementCreate, bO as UITextElementUpdate, bV as UITextInputElement, bW as UITextInputElementCreate, bX as UITextInputElementUpdate, ce as UIToggleGroupElement, cf as UIToggleGroupElementCreate, cg as UIToggleGroupElementUpdate, co as UiController, bD as UpdateActionTriggerParams, bE as UpdateFeatureActionParams, aj as UpdateLayerParams, bF as UpdatePanelElementsParams, aQ as ValueConfiguration, ak as VectorLayer, cq as ViewportConstraints, ct as ViewportController, cr as ViewportFitBoundsParams, cs as ViewportState } from './controller-DXsOpGmy.js';
import { z } from 'zod';

/**
 * @group Instantiation
 * @public
 */
interface FeltEmbedOptions extends zInfer<typeof FeltEmbedOptionsSchema> {
    uiControls?: UiControlsOptions;
    initialViewport?: ViewportCenterZoom;
}
/**
 * @internal
 */
declare const FeltEmbedOptionsSchema: z.ZodObject<{
    /**
     * @hidden
     */
    origin: z.ZodOptional<z.ZodString>;
    /**
     * A short-lived (15 minutes) authentication token to use for showing embeds that are configured to be
     * private.
     */
    token: z.ZodOptional<z.ZodString>;
    uiControls: z.ZodOptional<z.ZodObject<{
        showLegend: z.ZodOptional<z.ZodBoolean>;
        cooperativeGestures: z.ZodOptional<z.ZodBoolean>;
        fullScreenButton: z.ZodOptional<z.ZodBoolean>;
        geolocation: z.ZodOptional<z.ZodBoolean>;
        zoomControls: z.ZodOptional<z.ZodBoolean>;
        scaleBar: z.ZodOptional<z.ZodBoolean>;
    }, "strip", z.ZodTypeAny, {
        showLegend?: boolean | undefined;
        cooperativeGestures?: boolean | undefined;
        fullScreenButton?: boolean | undefined;
        geolocation?: boolean | undefined;
        zoomControls?: boolean | undefined;
        scaleBar?: boolean | undefined;
    }, {
        showLegend?: boolean | undefined;
        cooperativeGestures?: boolean | undefined;
        fullScreenButton?: boolean | undefined;
        geolocation?: boolean | undefined;
        zoomControls?: boolean | undefined;
        scaleBar?: boolean | undefined;
    }>>;
    initialViewport: z.ZodOptional<z.ZodObject<{
        center: z.ZodObject<{
            latitude: z.ZodNumber;
            longitude: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            latitude: number;
            longitude: number;
        }, {
            latitude: number;
            longitude: number;
        }>;
        zoom: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        center: {
            latitude: number;
            longitude: number;
        };
        zoom: number;
    }, {
        center: {
            latitude: number;
            longitude: number;
        };
        zoom: number;
    }>>;
}, "strip", z.ZodTypeAny, {
    origin?: string | undefined;
    token?: string | undefined;
    uiControls?: {
        showLegend?: boolean | undefined;
        cooperativeGestures?: boolean | undefined;
        fullScreenButton?: boolean | undefined;
        geolocation?: boolean | undefined;
        zoomControls?: boolean | undefined;
        scaleBar?: boolean | undefined;
    } | undefined;
    initialViewport?: {
        center: {
            latitude: number;
            longitude: number;
        };
        zoom: number;
    } | undefined;
}, {
    origin?: string | undefined;
    token?: string | undefined;
    uiControls?: {
        showLegend?: boolean | undefined;
        cooperativeGestures?: boolean | undefined;
        fullScreenButton?: boolean | undefined;
        geolocation?: boolean | undefined;
        zoomControls?: boolean | undefined;
        scaleBar?: boolean | undefined;
    } | undefined;
    initialViewport?: {
        center: {
            latitude: number;
            longitude: number;
        };
        zoom: number;
    } | undefined;
}>;

/**
 * Use the {@link Felt} object to embed a new iframe, or connect to an existing embedded
 * iframe.
 *
 * Once you have connected to a Felt map (either by embedding or connecting to an existing
 * iframe), you can use the {@link FeltController} object to control the map.
 *
 * To see what you can do with the map, see the documentation for the {@link FeltController}
 * interface and its constituent controllers.
 *
 * @example
 * ```typescript
 * // embed the map
 * const map = await Felt.embed(container, "felt-map-abc-123");
 *
 * // now the map is loaded and connected, you can use the FeltController interface
 * // to control the map. For instance, to get information about the layers
 * const layers = await map.getLayers();
 *
 * // Or to set the viewport to a specific location and zoom level
 * await map.setViewport({
 *   center: { latitude: 37.8113, longitude: -122.2682 },
 *   zoom: 10,
 * });
 * ```
 *
 * @module Main
 */

/**
 * The Felt SDK is a library for embedding Felt maps into your website,
 * allowing you to control and inspect the map programmatically.
 *
 * @public
 *
 * @group Instantiation
 */
declare const Felt: {
    /**
     * Embeds a Felt map into the provided container, returning a promise that resolves
     * to a {@link FeltController} object that you can use to control the map.
     *
     * @param container - The container element to embed the map into.
     * @param mapId - The ID of the map to embed.
     * @param options - The options to configure the map.
     * @returns A promise for a {@link FeltController}.
     */
    embed(container: HTMLElement, mapId: string, options?: FeltEmbedOptions): Promise<FeltController>;
    /**
     * Binds to an existing Felt map iframe.
     *
     * @param feltWindow - The iframe element containing the Felt map.
     * @returns
     */
    connect(feltWindow: Pick<Window, "postMessage">): Promise<FeltController>;
};

export { Felt, FeltController, type FeltEmbedOptions, UiControlsOptions, ViewportCenterZoom };
