/* eslint-disable */
/* tslint:disable */
/**
 * This is an autogenerated file created by the Stencil compiler.
 * It contains typing information for all components that exist in this project.
 */
import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
import { Color, Mode } from "@ionic/core";
import { attributeOptions } from "./components/attribute-values/attribute-values";
import { MapGeoJSONFeature, StyleSpecification } from "maplibre-gl";
import { Feature, FeatureCollection } from "geojson";
import { DrawOptions } from "./components/draw-controller/interface";
import { limitedGeometry } from "./components/feature-list/feature-list";
import { FormOptions } from "./components/form-controller/interface";
import { ForwardGeocodeOptions, geocodeClient, geocodeClientOptions, GeocodeResponse, ReverseGeocodeOptions } from "./components/geocode-controller/geocode-interface";
import { LikeProxy } from "./components/like-controller/like-proxy";
import { LikeOptions } from "./components/like-controller/interface";
import { RestOptions } from "./components/rest-controller/interface";
import { styleEvent } from "./components/style/style";
import { TableExportOptions } from "./components/table-export-controller/interfaces";
export { Color, Mode } from "@ionic/core";
export { attributeOptions } from "./components/attribute-values/attribute-values";
export { MapGeoJSONFeature, StyleSpecification } from "maplibre-gl";
export { Feature, FeatureCollection } from "geojson";
export { DrawOptions } from "./components/draw-controller/interface";
export { limitedGeometry } from "./components/feature-list/feature-list";
export { FormOptions } from "./components/form-controller/interface";
export { ForwardGeocodeOptions, geocodeClient, geocodeClientOptions, GeocodeResponse, ReverseGeocodeOptions } from "./components/geocode-controller/geocode-interface";
export { LikeProxy } from "./components/like-controller/like-proxy";
export { LikeOptions } from "./components/like-controller/interface";
export { RestOptions } from "./components/rest-controller/interface";
export { styleEvent } from "./components/style/style";
export { TableExportOptions } from "./components/table-export-controller/interfaces";
export namespace Components {
    interface GlAddressSearch {
        /**
          * Bounding box for the search in the format [west, south, east, north].
         */
        "bbox": [number, number, number, number] | string;
        /**
          * Identifier for the geocode operation.
         */
        "jobId": string;
        /**
          * Maximum number of results to display.
         */
        "limit": number;
        /**
          * Maximum level the map will zoom to when a result is selected (e.g., for point results).
         */
        "maxZoom": number;
        /**
          * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
         */
        "mode": Mode;
        /**
          * Placeholder text displayed in the input element.
         */
        "placeholder": string;
        /**
          * URL of the geocoding endpoint.
         */
        "url": string;
        /**
          * Padding in pixels used when zooming to a selected result.
         */
        "zoomPadding": number;
    }
    interface GlApp {
        /**
          * Application name in the main title bar.
         */
        "label": string;
        /**
          * Menu type. A value of `false` disables the menu, while a `custom` menu type creates a menu slot.
         */
        "menu": "custom" | boolean;
        /**
          * Heading text for the menu.
         */
        "menuLabel": string;
        /**
          * What type of side menu to use, valid options are `push`, `overlay`, and `reveal`.
         */
        "menuType": "push" | "overlay" | "reveal";
        /**
          * Should the application use `ion-split-pane` to display the menu?
         */
        "splitPane": boolean;
    }
    interface GlAttributeValues {
        /**
          * An array of attribute configuration objects, or a stringified version of the array. See the section above for option details.
         */
        "attributeOptions": string | attributeOptions[];
        /**
          * An array of GeoJSON features for which to display attributes.
         */
        "features": MapGeoJSONFeature[];
        /**
          * Header text for the attributes list. It is ignored if `headerAttribute` is specified.
         */
        "header": string;
        /**
          * The name of an attribute that should be displayed in the list header.
         */
        "headerAttribute": string;
        /**
          * Position property for `ion-label` elements.
         */
        "labelPosition": "fixed" | "floating" | "stacked";
        /**
          * Maximum number of features to display.
         */
        "limit": number;
        /**
          * Maximum width of the `ion-note` element used to display attribute values.
         */
        "valueMaxWidth": string;
    }
    interface GlBasemapSwitcher {
    }
    interface GlBasemaps {
    }
    interface GlDownloadButton {
    }
    interface GlDownloadFile {
        /**
          * File format (e.g., PDF).
         */
        "format": string;
        /**
          * Human-readable name of the file.
         */
        "label": string;
        /**
          * Human-readable file size (e.g., 2.5 MB).
         */
        "size": string;
        /**
          * URL of the file.
         */
        "url": string;
    }
    interface GlDownloadList {
        /**
          * Array of [gl-download-file](../download-file) elements to be included in the list.
         */
        "files": HTMLGlDownloadFileElement[];
    }
    interface GlDrawController {
        /**
          * Starts a drawing session.
          * @param featureCollection Features with which the session will be initialized.
          * @param options Drawing session options.
         */
        "create": (featureCollection: FeatureCollection, options: DrawOptions) => Promise<any>;
    }
    interface GlDrawToolbar {
        /**
          * Text for the cancel button.
         */
        "cancelText": string;
        /**
          * Background color for the toolbar.
         */
        "color": Color;
        /**
          * Text for the confirm button.
         */
        "confirmText": string;
        /**
          * Label for the toolbar.
         */
        "label": string;
        /**
          * ID of the map with the drawing session.  This defaults to the empty string as when a gl-map element is created without an id, the mapId passed along the glDraw events defaults to the empty string.
         */
        "mapId": string;
        /**
          * Maximum number of features the user can draw.
         */
        "maxFeatures": number;
        /**
          * Minimum number of features the user must draw before confirming.
         */
        "minFeatures": number;
    }
    interface GlDrawer {
        /**
          * Title of the drawer displayed in the toolbar.
         */
        "drawerTitle": string;
        /**
          * Map ID of the map that should be resized when the drawer is opened or closed.
         */
        "mapId": string;
        /**
          * The drawer is currently open.
         */
        "open": boolean;
        /**
          * Opens the drawer if it is closed and closes the drawer if it is open
         */
        "toggle": () => Promise<void>;
    }
    interface GlDrawerToggle {
        /**
          * Text to display in the button.
         */
        "buttonTitle": string;
        /**
          * Whether the button is enabled
         */
        "disabled": boolean;
        /**
          * Icon to display in the button.
         */
        "icon": string;
    }
    interface GlFacet {
        /**
          * Show the detail arrow in the item.
         */
        "detail": boolean;
        /**
          * Image URL for the item.
         */
        "image": string;
        /**
          * Text for the item.
         */
        "label": string;
        /**
          * The value of the facet used to refer to it in fields and other facets. When the facet is selected, the value is emitted as part of the `glFormFacet` event.
         */
        "value": string;
        /**
          * Widget to use for displaying the facet. A value of `header` renders an `ion-list-header` instead of an `ion-item`.
         */
        "widget": "header" | "item";
    }
    interface GlFeatureList {
        /**
          * The number of features to render in each batch. Additional batches are added as needed using `ion-infinite-scroll`.
         */
        "batchSize": number;
        /**
          * The component used to render the features in the list.
         */
        "component": string;
        /**
          * Options passed to the component as properties.
         */
        "componentOptions": { [key: string]: any };
        /**
          * Which features to display: all features from the source, or just those currently within the map extent.
         */
        "display": "all" | "visible";
        /**
          * An array of GeoJSON features to display. Currently only point features are supported.
         */
        "features": Array<Feature<limitedGeometry>>;
        /**
          * Wrap the component in an `ion-item`.
         */
        "item": boolean;
        /**
          * The type of spinner used in the `ion-infinite-scroll-content`.
         */
        "loadingSpinner": string;
        /**
          * Text to display while features are loading in the `ion-infinite-scroll-content`.
         */
        "loadingText": string;
        /**
          * ID of the `gl-map`.
         */
        "mapId": string;
        /**
          * Order in which to sort features.
         */
        "order": "asc" | "desc" | "none";
        /**
          * Property by which features should be sorted.
         */
        "orderBy": string;
        /**
          * ID of the source containing the features.
         */
        "sourceId": string;
        /**
          * ID of the `gl-style` element containing the feature source.
         */
        "styleId": string;
    }
    interface GlField {
        /**
          * The feature property that corresponds to the form field.
         */
        "attribute": string;
        /**
          * Returns the value of the attribute of the feature this form is editing
          * @returns value of the attribute of the feature
         */
        "getValue": () => Promise<any>;
        /**
          * Image URL for the field item.
         */
        "image": string;
        /**
          * Returns whether this field is valid
          * @returns
         */
        "isValid": () => Promise<boolean>;
        /**
          * Label text for the field item.
         */
        "label": string;
        /**
          * A placeholder prompt text to display to the user, valid only for textarea and input fields.
         */
        "placeholder": string;
        /**
          * The field must be filled out before the form can be submitted.
         */
        "required": boolean;
        /**
          * Field type. It is not currently used.
         */
        "type": any;
        /**
          * Checks whether the value is required and also present If it is not returns an error text, if it is valid returns null
          * @returns
         */
        "validate": () => Promise<string>;
        /**
          * Widget used to render the field.
         */
        "widget": | "input"
    | "radio"
    | "select"
    | "textarea"
    | "instructions";
    }
    interface GlForm {
        /**
          * Cancels and closes the form
         */
        "cancel": () => Promise<void>;
        /**
          * Text for the cancel button.
         */
        "cancelText": string;
        /**
          * The feature being modified by the form. The form sets values in the 'properties' object of the feature.
         */
        "feature": { properties: { [key: string]: any } };
        /**
          * ID of the form.
         */
        "formId": string;
        /**
          * The label displayed in the toolbar of the `gl-form-page`.
         */
        "label": string;
        /**
          * The URL of the form schema JSON.
         */
        "schema": string;
        /**
          * Submits the form and passes the feature that has been edited along to glFormSubmit
         */
        "submit": () => Promise<void>;
        /**
          * Text for the submit button.
         */
        "submitText": string;
        /**
          * Treat labels in the form as i18n keys.
         */
        "translateText": boolean;
    }
    interface GlFormController {
        /**
          * Display a form in a modal. If the form is canceled, it resolves to `undefined`. If the form is submitted, it resolves to the GeoJSON feature updated by the form.
          * @param feature The GeoJSON feature that the form will edit.
          * @param options Option object used to set the properties of the `gl-form`.
         */
        "create": (feature: { properties: { [key: string]: any; }; }, options: FormOptions) => Promise<any>;
    }
    interface GlFormPage {
        /**
          * Text for the back button.
         */
        "backText": string;
        /**
          * Text for the cancel button.
         */
        "cancelText": string;
        /**
          * Facets for the page.
         */
        "facets": any[];
        /**
          * Fields for the page.
         */
        "fields": any[];
        /**
          * Currently-selected facet. It is used the set the CSS class of the page.
         */
        "formFacet": string;
        /**
          * Label text displayed in the form toolbar.
         */
        "label": string;
        /**
          * This is the root page in the form. If it is `true`, the back button is not displayed.
         */
        "root": boolean;
        /**
          * Text for the submit button.
         */
        "submitText": string;
    }
    interface GlFullscreen {
    }
    interface GlGeocodeController {
        /**
          * Adds a client to the geocode controller
          * @param id The ide of the client
          * @param service A client able to handle nominatim results. For an example see {@link ./nominatim}
         */
        "addClient": (id: string, service: geocodeClient) => Promise<void>;
        /**
          * Default client used to perform the geocoding. It can be overridden in the options provided to `forward()` and `reverse()`.
         */
        "defaultClient": string;
        /**
          * Performs forward geocoding by converting an address to a geolocation.
          * @param options Forward geocoding options object.
          * @param clientOptions Additional client options object.
         */
        "forward": (options: ForwardGeocodeOptions, clientOptions?: geocodeClientOptions) => Promise<GeocodeResponse[]>;
        /**
          * Performs reverse geocoding by converting a geolocation to an address.
          * @param options Reverse geocoding options object.
          * @param clientOptions Additional client options.
         */
        "reverse": (options: ReverseGeocodeOptions, clientOptions?: geocodeClientOptions) => Promise<any>;
    }
    interface GlLegend {
    }
    interface GlLegendItem {
        /**
          * The URL of the image for the legend item.
         */
        "image": string;
        /**
          * The IDs of the style layers controlled by this legend item. If controls which layers are toggled or on off by this legend item.
         */
        "layers": string | string[];
        /**
          * ID of the `gl-style` containing the layers referenced in `layers`.
         */
        "styleId": string;
        /**
          * Show a toggle switch to turn the corresponding layer on and off. If it is `true`, `layers` and `styleId` must be provided.
         */
        "toggle": boolean;
        /**
          * Widget used to render the legend item. The `divider` value renders an `ion-list-divider` component suitable for grouping subsequent legend items.
         */
        "widget": "divider" | "item";
    }
    interface GlLikeButton {
        /**
          * The attribute which stores the number of likes this feature has received
         */
        "attribute": string;
        /**
          * Whether or not this like button is disabled
         */
        "disabled": boolean;
        /**
          * The feature this like button is for
         */
        "feature": Feature | MapGeoJSONFeature;
        /**
          * The icon for the like button if the user has not liked the feature
         */
        "iconNo": string;
        /**
          * The icon for the like button if the user
         */
        "iconYes": string;
        /**
          * The HTTP method this like button uses to communicate a like
         */
        "method": "GET" | "POST" | "PATCH" | "PUT" | "DELETE";
        /**
          * The cors mode this like button uses to communicate
         */
        "requestMode": RequestMode;
        /**
          * The authentication token this like button uses when communicating
         */
        "token": string;
        /**
          * The url to the endpoint which which the like button communicates. Most likely this will be the end point of a features-api instance.
         */
        "url": string;
    }
    interface GlLikeController {
        /**
          * Creates a proxy to communicate likes
          * @param feature The feature whose likes to change. Can be either just a geojson Feature or a MapboxGeoJSONFeature with extra layer information
          * @param options Extra options for the like controller
          * @returns
         */
        "create": (feature: Feature | MapGeoJSONFeature, options?: LikeOptions) => Promise<LikeProxy>;
    }
    interface GlMap {
        /**
          * Milliseconds to wait before opening the popup. This delay allows for handling multiple feature click events in a single popup. Multiple events can be fired in quick succession when the user clicks on multiple overlapping features.
         */
        "clickEventDelay": number;
        /**
          * How many, and what, feature to return should the user click on the map
         */
        "clickMode": "all" | "top-layer" | "top-feature";
        /**
          * Webmapgl uses the mapbox-gl-draw plugin for drawing features. This property is a reference to the `MapboxDraw` instance when a draw session is active.
         */
        "draw": MapboxDraw;
        /**
          * Options object used to initialize `MapboxDraw`.
         */
        "drawOptions"?: MapboxDraw.MapboxDrawOptions;
        /**
          * There is an active draw session. It is usually set by `gl-draw-controller`.
         */
        "drawing": boolean;
        /**
          * Default glyphs URL. It can be overridden by child `gl-style` components.
         */
        "glyphs": string;
        /**
          * Store the map location and zoom level in the URL hash. If the value is a string, that value will be used as the key in the URL hash.
         */
        "hash": string | boolean;
        /**
          * Initial center latitude of the map.
         */
        "latitude": number;
        /**
          * Initial center longitude of the map.
         */
        "longitude": number;
        /**
          * Reference to the `maplibregl.Map` object. It can be used to customize map properties and behaviors beyond those exposed by `gl-map`.
         */
        "map": maplibregl.Map;
        /**
          * Maximum zoom level.
         */
        "maxzoom": number;
        /**
          * Minimum zoom level.
         */
        "minzoom": number;
        /**
          * Informs Mapbox GL that the map canvas has been resized. It uses a timeout and can be called repeatedly (e.g., in an event handler) without a performance penalty. For a synchronous resize, use `.map.resize()`.
         */
        "resizeMap": () => Promise<void>;
        /**
          * Default sprite URL. It can be overridden by child `gl-style` components.
         */
        "sprite": string;
        /**
          * Initial zoom level of the map.
         */
        "zoom": number;
    }
    interface GlOption {
        /**
          * Thumbnail image URL.
         */
        "image": string;
        /**
          * Option label. It is displayed to the user.
         */
        "label": string;
        /**
          * Option value. If this option is selected, it is used to set the value of the property corresponding to the parent field.
         */
        "value": any;
    }
    interface GlPopup {
        /**
          * Milliseconds to wait before opening the popup. This delay allows for handling multiple feature click events in a single popup. Multiple events can be fired in quick succession when the user clicks on multiple overlapping features.
         */
        "clickEventDelay": number;
        /**
          * Key code of the key used to close the popup. By default, it is the `Esc` key.
         */
        "closeKey": string;
        /**
          * Which popups to close when a new popup is opened. `self` removes popups opened by this `gl-popup` element, and `all` closes all open popups.
         */
        "closeMode": "none" | "self" | "all";
        /**
          * Name of the component containing the content for the popup (e.g., `gl-attribute-values`). If the popup content is dynamic, the component should accept a `features` property, which will be set to the GeoJSON features clicked by the user.
         */
        "component": string;
        /**
          * Additional options, which are passed to the content component as properties.
         */
        "componentOptions": string | { [key: string]: any };
        /**
          * Returns a boolean indicating whether the popup is currently open.
         */
        "isOpen": () => Promise<boolean>;
        /**
          * IDs of the layers that can activate this popup when clicked. These layer IDs should also be included in the `clickableLayers` property of the parent style.
         */
        "layers": string[] | string;
        /**
          * Maximum width of the popup element. It can be any valid CSS width value.
         */
        "maxWidth": string;
        /**
          * Removes the popup from the map.
         */
        "removePopup": () => Promise<void>;
    }
    interface GlRestController {
        /**
          * Makes a request to a features REST API. It resolves to the server response object.
          * @param feature GeoJSON feature to be sent to the API.
          * @param options Options object.
         */
        "create": (feature: any, options: RestOptions) => Promise<Response>;
    }
    interface GlShare {
        /**
          * Height of the popup window in pixels.
         */
        "popupHeight": number;
        /**
          * Width of the popup window in pixels.
         */
        "popupWidth": number;
        /**
          * Hashtags for the post. It is used for sharing on Twitter.
         */
        "shareHashtags": string;
        /**
          * Title of the item being shared.
         */
        "shareTitle": string;
        /**
          * URL to share. If a URL is not provided, the current page URL is used.
         */
        "shareUrl": string;
        /**
          * User attribution. It is used for sharing on Twitter.
         */
        "shareUser": string;
    }
    interface GlShareButton {
        /**
          * Icon from the Ionicons set used in the button.
         */
        "icon": string;
    }
    interface GlStory {
        /**
          * What 'step' of the story is currently the active one
         */
        "step": number;
        /**
          * The total number of steps in the story
         */
        "steps": number;
    }
    interface GlStoryButton {
        /**
          * Where in the story this button will take you
         */
        "action": "first" | "last" | "next" | "previous" | "close";
        /**
          * The icon for the button
         */
        "icon": string;
        /**
          * An alternative name for this button
         */
        "label": string;
        /**
          * The id of the story which this button acts upon
         */
        "storyId": string;
    }
    interface GlStoryStep {
        /**
          * Whether this step in the story is active
         */
        "active": boolean;
        /**
          * Whether or not to click after the map has moved
         */
        "clickAfterIdle": boolean;
        /**
          * Whether or not to try to locate the click feature before the map moves
         */
        "clickBeforeHash": boolean;
        /**
          * Number of milliseconds to wait before clicking the map
         */
        "clickDelay": number;
        /**
          * What layer the click should be fired on
         */
        "clickLayer": string;
        /**
          * The attribute name of the feature you are clicking on In essence you will be clicking on the features whose [clickProperty] = clickValue
         */
        "clickProperty": string;
        /**
          * The value the feature will have in the clickProperty attribute. In essence you will be clicking on the features whose [clickProperty] = clickValue  Alternatively if clickProperty is not set, clickValue refers to the featureID of what you are clicking on.
         */
        "clickValue": number;
        /**
          * Whether this is the first step in the story
         */
        "first": boolean;
        /**
          * The 'hash' that represents the location of the story Visible in the browser url when the 'hash' property of {@link ../map} is set to true.
         */
        "hash": string;
        /**
          * Whether this is the last step in the story
         */
        "last": boolean;
        /**
          * The ID of the map this story step works with
         */
        "mapId": string;
    }
    interface GlStyle {
        /**
          * This style represents a basemap and should be included in `gl-basemap-switcher`.
         */
        "basemap": boolean;
        /**
          * Array of layers that should be clickable.
         */
        "clickableLayers": string | string[];
        /**
          * Include this style in the combined style for the parent `gl-map`.
         */
        "enabled": boolean;
        /**
          * Name of the specific layer under which to insert this style's layers.
         */
        "insertBeneathLayer"?: string;
        /**
          * ID of the style in which to insert this style's layers Note: The style you are inserting into must precede this style in the DOM.
         */
        "insertIntoStyle"?: string;
        /**
          * Style JSON object. If `url` is set, it is loaded from that URL.
         */
        "json": StyleSpecification;
        /**
          * Human readable name. It is used by `gl-basemap-switcher`.
         */
        "name": string;
        /**
          * URL of the thumbnail image. It is used by `gl-basemap-switcher`.
         */
        "thumbnail": string;
        /**
          * Access token for sources GeoJSON sources. If set, it is used to replace the `${TOKEN}` placeholder in the style's `data` property.
         */
        "token": string;
        /**
          * URL of the style JSON.
         */
        "url": string;
    }
    interface GlTable {
        /**
          * Whether or not to disable the default sorting options
         */
        "disableDefaultSort": boolean;
        /**
          * The features this table displays
         */
        "features": { properties: { [key: string]: any } }[];
        /**
          * Returns the contents of a cell
          * @param feature
          * @param column
          * @param format
          * @returns
         */
        "getCellContents": (feature: { properties: { [key: string]: any; }; }, column: HTMLGlTableColumnElement, format: "pdf" | "text") => Promise<any>;
        /**
          * Returns the features the table displays in sorted order
          * @returns
         */
        "getSortedFeatures": () => Promise<{ properties: { [key: string]: any; }; }[]>;
        /**
          * The name of the attribute whose value to use as the css class of the row.
         */
        "rowClassAttribute": string;
        /**
          * What attribute to sort on
         */
        "sortAttribute": string;
        /**
          * What order to use for sorting
         */
        "sortOrder": "asc" | "desc";
    }
    interface GlTableColumn {
        /**
          * What attribute in the data this specific column represents
         */
        "attribute": string;
        /**
          * The name of the attribute which holds the css class name for the cells of this column.
         */
        "cellClassAttribute": string;
        /**
          * The name of the JSX component which is used to render this cell, if any
         */
        "component": string;
        /**
          * Additional properties passed to a JSX component used to render this cell
         */
        "componentProps": any;
        /**
          * Whether or not this column will be exported if the user exports the table as a csv document. In effect setting this option to false is a way to exclude this column from csv exports.
         */
        "csv": boolean;
        /**
          * If the contents of this column are text based, the format of that text. This could either be the strings "currency", "decimal", "percent", or an object that represents the options sent to a toLocaleString call.  E.g. format="currency" or format={style:"decimal", notation:"scientific"}
         */
        "format": string | any;
        /**
          * A label for this column, used in the toggle-visibility button and when choosing ascending or descending sort order.
         */
        "label": string;
        /**
          * Whether or not this column will be exported if the user exports the table as a pdf document. In effect setting this option to false is a way to exclude this column from pdf exports.
         */
        "pdf": boolean;
        /**
          * Whether or not the data can be sorted by the contents of this column.
         */
        "sortable": boolean;
        /**
          * Whether or not this column is rendered and visible to the user.
         */
        "visible": boolean;
    }
    interface GlTableColumnVisibility {
        /**
          * The title of the column.
         */
        "label": string;
        /**
          * The id of the table this column is a part of.
         */
        "tableId": string;
    }
    interface GlTableColumnVisibilityButton {
        /**
          * A label for the button. In english it defaults to 'Column Visibility'.
         */
        "label": string;
        /**
          * An id for the table.
         */
        "tableId": string;
    }
    interface GlTableColumnVisibilityToggle {
        /**
          * The column this visibility toggle works on.
         */
        "column": HTMLGlTableColumnElement;
        /**
          * When the column is currently visible or invisible.
         */
        "enabled": boolean;
    }
    interface GlTableExportButton {
        /**
          * If this is for a pdf export, the author variable of the pdf document.
         */
        "author"?: string;
        /**
          * If true the JSX component for the table-export-button will expose a <slot /> for a custom button whereas otherwise it is this.format.toUpperCase() aka CSV or PDF
         */
        "customButton": boolean;
        /**
          * When the document is exported, what file name it should be saved as.
         */
        "filename": string;
        /**
          * The format in which the document should be exported, either csv or pdf.
         */
        "format": "csv" | "pdf";
        /**
          * The orientation of the exported document
         */
        "pageOrientation"?: "landscape" | "portrait";
        /**
          * The subtitle of the document if the document is exported as a pdf
         */
        "pageSubtitle"?: string;
        /**
          * The title of the document if the document is exported as a pdf.
         */
        "pageTitle"?: string;
        /**
          * The id of the [table]{@link ../table} this export button is for.
         */
        "tableId"?: string;
        /**
          * If this value is defined the application will attempt to send the contents of the pdf in a POST request to the specified url when the export button is clicked, in addition to presenting it to the user for download.
         */
        "url"?: string;
    }
    interface GlTableExportController {
        /**
          * Exports the table specified by options
          * @param options
         */
        "create": (options: TableExportOptions) => Promise<void>;
    }
}
export interface GlDrawToolbarCustomEvent<T> extends CustomEvent<T> {
    detail: T;
    target: HTMLGlDrawToolbarElement;
}
export interface GlDrawerCustomEvent<T> extends CustomEvent<T> {
    detail: T;
    target: HTMLGlDrawerElement;
}
export interface GlFacetCustomEvent<T> extends CustomEvent<T> {
    detail: T;
    target: HTMLGlFacetElement;
}
export interface GlFieldCustomEvent<T> extends CustomEvent<T> {
    detail: T;
    target: HTMLGlFieldElement;
}
export interface GlFormCustomEvent<T> extends CustomEvent<T> {
    detail: T;
    target: HTMLGlFormElement;
}
export interface GlGeocodeControllerCustomEvent<T> extends CustomEvent<T> {
    detail: T;
    target: HTMLGlGeocodeControllerElement;
}
export interface GlLikeButtonCustomEvent<T> extends CustomEvent<T> {
    detail: T;
    target: HTMLGlLikeButtonElement;
}
export interface GlMapCustomEvent<T> extends CustomEvent<T> {
    detail: T;
    target: HTMLGlMapElement;
}
export interface GlOptionCustomEvent<T> extends CustomEvent<T> {
    detail: T;
    target: HTMLGlOptionElement;
}
export interface GlStoryCustomEvent<T> extends CustomEvent<T> {
    detail: T;
    target: HTMLGlStoryElement;
}
export interface GlStoryStepCustomEvent<T> extends CustomEvent<T> {
    detail: T;
    target: HTMLGlStoryStepElement;
}
export interface GlStyleCustomEvent<T> extends CustomEvent<T> {
    detail: T;
    target: HTMLGlStyleElement;
}
export interface GlTableCustomEvent<T> extends CustomEvent<T> {
    detail: T;
    target: HTMLGlTableElement;
}
export interface GlTableColumnCustomEvent<T> extends CustomEvent<T> {
    detail: T;
    target: HTMLGlTableColumnElement;
}
declare global {
    interface HTMLGlAddressSearchElement extends Components.GlAddressSearch, HTMLStencilElement {
    }
    var HTMLGlAddressSearchElement: {
        prototype: HTMLGlAddressSearchElement;
        new (): HTMLGlAddressSearchElement;
    };
    interface HTMLGlAppElement extends Components.GlApp, HTMLStencilElement {
    }
    var HTMLGlAppElement: {
        prototype: HTMLGlAppElement;
        new (): HTMLGlAppElement;
    };
    interface HTMLGlAttributeValuesElement extends Components.GlAttributeValues, HTMLStencilElement {
    }
    var HTMLGlAttributeValuesElement: {
        prototype: HTMLGlAttributeValuesElement;
        new (): HTMLGlAttributeValuesElement;
    };
    interface HTMLGlBasemapSwitcherElement extends Components.GlBasemapSwitcher, HTMLStencilElement {
    }
    var HTMLGlBasemapSwitcherElement: {
        prototype: HTMLGlBasemapSwitcherElement;
        new (): HTMLGlBasemapSwitcherElement;
    };
    interface HTMLGlBasemapsElement extends Components.GlBasemaps, HTMLStencilElement {
    }
    var HTMLGlBasemapsElement: {
        prototype: HTMLGlBasemapsElement;
        new (): HTMLGlBasemapsElement;
    };
    interface HTMLGlDownloadButtonElement extends Components.GlDownloadButton, HTMLStencilElement {
    }
    var HTMLGlDownloadButtonElement: {
        prototype: HTMLGlDownloadButtonElement;
        new (): HTMLGlDownloadButtonElement;
    };
    interface HTMLGlDownloadFileElement extends Components.GlDownloadFile, HTMLStencilElement {
    }
    var HTMLGlDownloadFileElement: {
        prototype: HTMLGlDownloadFileElement;
        new (): HTMLGlDownloadFileElement;
    };
    interface HTMLGlDownloadListElement extends Components.GlDownloadList, HTMLStencilElement {
    }
    var HTMLGlDownloadListElement: {
        prototype: HTMLGlDownloadListElement;
        new (): HTMLGlDownloadListElement;
    };
    interface HTMLGlDrawControllerElement extends Components.GlDrawController, HTMLStencilElement {
    }
    var HTMLGlDrawControllerElement: {
        prototype: HTMLGlDrawControllerElement;
        new (): HTMLGlDrawControllerElement;
    };
    interface HTMLGlDrawToolbarElement extends Components.GlDrawToolbar, HTMLStencilElement {
    }
    var HTMLGlDrawToolbarElement: {
        prototype: HTMLGlDrawToolbarElement;
        new (): HTMLGlDrawToolbarElement;
    };
    interface HTMLGlDrawerElement extends Components.GlDrawer, HTMLStencilElement {
    }
    var HTMLGlDrawerElement: {
        prototype: HTMLGlDrawerElement;
        new (): HTMLGlDrawerElement;
    };
    interface HTMLGlDrawerToggleElement extends Components.GlDrawerToggle, HTMLStencilElement {
    }
    var HTMLGlDrawerToggleElement: {
        prototype: HTMLGlDrawerToggleElement;
        new (): HTMLGlDrawerToggleElement;
    };
    interface HTMLGlFacetElement extends Components.GlFacet, HTMLStencilElement {
    }
    var HTMLGlFacetElement: {
        prototype: HTMLGlFacetElement;
        new (): HTMLGlFacetElement;
    };
    interface HTMLGlFeatureListElement extends Components.GlFeatureList, HTMLStencilElement {
    }
    var HTMLGlFeatureListElement: {
        prototype: HTMLGlFeatureListElement;
        new (): HTMLGlFeatureListElement;
    };
    interface HTMLGlFieldElement extends Components.GlField, HTMLStencilElement {
    }
    var HTMLGlFieldElement: {
        prototype: HTMLGlFieldElement;
        new (): HTMLGlFieldElement;
    };
    interface HTMLGlFormElement extends Components.GlForm, HTMLStencilElement {
    }
    var HTMLGlFormElement: {
        prototype: HTMLGlFormElement;
        new (): HTMLGlFormElement;
    };
    interface HTMLGlFormControllerElement extends Components.GlFormController, HTMLStencilElement {
    }
    var HTMLGlFormControllerElement: {
        prototype: HTMLGlFormControllerElement;
        new (): HTMLGlFormControllerElement;
    };
    interface HTMLGlFormPageElement extends Components.GlFormPage, HTMLStencilElement {
    }
    var HTMLGlFormPageElement: {
        prototype: HTMLGlFormPageElement;
        new (): HTMLGlFormPageElement;
    };
    interface HTMLGlFullscreenElement extends Components.GlFullscreen, HTMLStencilElement {
    }
    var HTMLGlFullscreenElement: {
        prototype: HTMLGlFullscreenElement;
        new (): HTMLGlFullscreenElement;
    };
    interface HTMLGlGeocodeControllerElement extends Components.GlGeocodeController, HTMLStencilElement {
    }
    var HTMLGlGeocodeControllerElement: {
        prototype: HTMLGlGeocodeControllerElement;
        new (): HTMLGlGeocodeControllerElement;
    };
    interface HTMLGlLegendElement extends Components.GlLegend, HTMLStencilElement {
    }
    var HTMLGlLegendElement: {
        prototype: HTMLGlLegendElement;
        new (): HTMLGlLegendElement;
    };
    interface HTMLGlLegendItemElement extends Components.GlLegendItem, HTMLStencilElement {
    }
    var HTMLGlLegendItemElement: {
        prototype: HTMLGlLegendItemElement;
        new (): HTMLGlLegendItemElement;
    };
    interface HTMLGlLikeButtonElement extends Components.GlLikeButton, HTMLStencilElement {
    }
    var HTMLGlLikeButtonElement: {
        prototype: HTMLGlLikeButtonElement;
        new (): HTMLGlLikeButtonElement;
    };
    interface HTMLGlLikeControllerElement extends Components.GlLikeController, HTMLStencilElement {
    }
    var HTMLGlLikeControllerElement: {
        prototype: HTMLGlLikeControllerElement;
        new (): HTMLGlLikeControllerElement;
    };
    interface HTMLGlMapElement extends Components.GlMap, HTMLStencilElement {
    }
    var HTMLGlMapElement: {
        prototype: HTMLGlMapElement;
        new (): HTMLGlMapElement;
    };
    interface HTMLGlOptionElement extends Components.GlOption, HTMLStencilElement {
    }
    var HTMLGlOptionElement: {
        prototype: HTMLGlOptionElement;
        new (): HTMLGlOptionElement;
    };
    interface HTMLGlPopupElement extends Components.GlPopup, HTMLStencilElement {
    }
    var HTMLGlPopupElement: {
        prototype: HTMLGlPopupElement;
        new (): HTMLGlPopupElement;
    };
    interface HTMLGlRestControllerElement extends Components.GlRestController, HTMLStencilElement {
    }
    var HTMLGlRestControllerElement: {
        prototype: HTMLGlRestControllerElement;
        new (): HTMLGlRestControllerElement;
    };
    interface HTMLGlShareElement extends Components.GlShare, HTMLStencilElement {
    }
    var HTMLGlShareElement: {
        prototype: HTMLGlShareElement;
        new (): HTMLGlShareElement;
    };
    interface HTMLGlShareButtonElement extends Components.GlShareButton, HTMLStencilElement {
    }
    var HTMLGlShareButtonElement: {
        prototype: HTMLGlShareButtonElement;
        new (): HTMLGlShareButtonElement;
    };
    interface HTMLGlStoryElement extends Components.GlStory, HTMLStencilElement {
    }
    var HTMLGlStoryElement: {
        prototype: HTMLGlStoryElement;
        new (): HTMLGlStoryElement;
    };
    interface HTMLGlStoryButtonElement extends Components.GlStoryButton, HTMLStencilElement {
    }
    var HTMLGlStoryButtonElement: {
        prototype: HTMLGlStoryButtonElement;
        new (): HTMLGlStoryButtonElement;
    };
    interface HTMLGlStoryStepElement extends Components.GlStoryStep, HTMLStencilElement {
    }
    var HTMLGlStoryStepElement: {
        prototype: HTMLGlStoryStepElement;
        new (): HTMLGlStoryStepElement;
    };
    interface HTMLGlStyleElement extends Components.GlStyle, HTMLStencilElement {
    }
    var HTMLGlStyleElement: {
        prototype: HTMLGlStyleElement;
        new (): HTMLGlStyleElement;
    };
    interface HTMLGlTableElement extends Components.GlTable, HTMLStencilElement {
    }
    var HTMLGlTableElement: {
        prototype: HTMLGlTableElement;
        new (): HTMLGlTableElement;
    };
    interface HTMLGlTableColumnElement extends Components.GlTableColumn, HTMLStencilElement {
    }
    var HTMLGlTableColumnElement: {
        prototype: HTMLGlTableColumnElement;
        new (): HTMLGlTableColumnElement;
    };
    interface HTMLGlTableColumnVisibilityElement extends Components.GlTableColumnVisibility, HTMLStencilElement {
    }
    var HTMLGlTableColumnVisibilityElement: {
        prototype: HTMLGlTableColumnVisibilityElement;
        new (): HTMLGlTableColumnVisibilityElement;
    };
    interface HTMLGlTableColumnVisibilityButtonElement extends Components.GlTableColumnVisibilityButton, HTMLStencilElement {
    }
    var HTMLGlTableColumnVisibilityButtonElement: {
        prototype: HTMLGlTableColumnVisibilityButtonElement;
        new (): HTMLGlTableColumnVisibilityButtonElement;
    };
    interface HTMLGlTableColumnVisibilityToggleElement extends Components.GlTableColumnVisibilityToggle, HTMLStencilElement {
    }
    var HTMLGlTableColumnVisibilityToggleElement: {
        prototype: HTMLGlTableColumnVisibilityToggleElement;
        new (): HTMLGlTableColumnVisibilityToggleElement;
    };
    interface HTMLGlTableExportButtonElement extends Components.GlTableExportButton, HTMLStencilElement {
    }
    var HTMLGlTableExportButtonElement: {
        prototype: HTMLGlTableExportButtonElement;
        new (): HTMLGlTableExportButtonElement;
    };
    interface HTMLGlTableExportControllerElement extends Components.GlTableExportController, HTMLStencilElement {
    }
    var HTMLGlTableExportControllerElement: {
        prototype: HTMLGlTableExportControllerElement;
        new (): HTMLGlTableExportControllerElement;
    };
    interface HTMLElementTagNameMap {
        "gl-address-search": HTMLGlAddressSearchElement;
        "gl-app": HTMLGlAppElement;
        "gl-attribute-values": HTMLGlAttributeValuesElement;
        "gl-basemap-switcher": HTMLGlBasemapSwitcherElement;
        "gl-basemaps": HTMLGlBasemapsElement;
        "gl-download-button": HTMLGlDownloadButtonElement;
        "gl-download-file": HTMLGlDownloadFileElement;
        "gl-download-list": HTMLGlDownloadListElement;
        "gl-draw-controller": HTMLGlDrawControllerElement;
        "gl-draw-toolbar": HTMLGlDrawToolbarElement;
        "gl-drawer": HTMLGlDrawerElement;
        "gl-drawer-toggle": HTMLGlDrawerToggleElement;
        "gl-facet": HTMLGlFacetElement;
        "gl-feature-list": HTMLGlFeatureListElement;
        "gl-field": HTMLGlFieldElement;
        "gl-form": HTMLGlFormElement;
        "gl-form-controller": HTMLGlFormControllerElement;
        "gl-form-page": HTMLGlFormPageElement;
        "gl-fullscreen": HTMLGlFullscreenElement;
        "gl-geocode-controller": HTMLGlGeocodeControllerElement;
        "gl-legend": HTMLGlLegendElement;
        "gl-legend-item": HTMLGlLegendItemElement;
        "gl-like-button": HTMLGlLikeButtonElement;
        "gl-like-controller": HTMLGlLikeControllerElement;
        "gl-map": HTMLGlMapElement;
        "gl-option": HTMLGlOptionElement;
        "gl-popup": HTMLGlPopupElement;
        "gl-rest-controller": HTMLGlRestControllerElement;
        "gl-share": HTMLGlShareElement;
        "gl-share-button": HTMLGlShareButtonElement;
        "gl-story": HTMLGlStoryElement;
        "gl-story-button": HTMLGlStoryButtonElement;
        "gl-story-step": HTMLGlStoryStepElement;
        "gl-style": HTMLGlStyleElement;
        "gl-table": HTMLGlTableElement;
        "gl-table-column": HTMLGlTableColumnElement;
        "gl-table-column-visibility": HTMLGlTableColumnVisibilityElement;
        "gl-table-column-visibility-button": HTMLGlTableColumnVisibilityButtonElement;
        "gl-table-column-visibility-toggle": HTMLGlTableColumnVisibilityToggleElement;
        "gl-table-export-button": HTMLGlTableExportButtonElement;
        "gl-table-export-controller": HTMLGlTableExportControllerElement;
    }
}
declare namespace LocalJSX {
    interface GlAddressSearch {
        /**
          * Bounding box for the search in the format [west, south, east, north].
         */
        "bbox"?: [number, number, number, number] | string;
        /**
          * Identifier for the geocode operation.
         */
        "jobId"?: string;
        /**
          * Maximum number of results to display.
         */
        "limit"?: number;
        /**
          * Maximum level the map will zoom to when a result is selected (e.g., for point results).
         */
        "maxZoom"?: number;
        /**
          * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
         */
        "mode"?: Mode;
        /**
          * Placeholder text displayed in the input element.
         */
        "placeholder"?: string;
        /**
          * URL of the geocoding endpoint.
         */
        "url"?: string;
        /**
          * Padding in pixels used when zooming to a selected result.
         */
        "zoomPadding"?: number;
    }
    interface GlApp {
        /**
          * Application name in the main title bar.
         */
        "label"?: string;
        /**
          * Menu type. A value of `false` disables the menu, while a `custom` menu type creates a menu slot.
         */
        "menu"?: "custom" | boolean;
        /**
          * Heading text for the menu.
         */
        "menuLabel"?: string;
        /**
          * What type of side menu to use, valid options are `push`, `overlay`, and `reveal`.
         */
        "menuType"?: "push" | "overlay" | "reveal";
        /**
          * Should the application use `ion-split-pane` to display the menu?
         */
        "splitPane"?: boolean;
    }
    interface GlAttributeValues {
        /**
          * An array of attribute configuration objects, or a stringified version of the array. See the section above for option details.
         */
        "attributeOptions"?: string | attributeOptions[];
        /**
          * An array of GeoJSON features for which to display attributes.
         */
        "features"?: MapGeoJSONFeature[];
        /**
          * Header text for the attributes list. It is ignored if `headerAttribute` is specified.
         */
        "header"?: string;
        /**
          * The name of an attribute that should be displayed in the list header.
         */
        "headerAttribute"?: string;
        /**
          * Position property for `ion-label` elements.
         */
        "labelPosition"?: "fixed" | "floating" | "stacked";
        /**
          * Maximum number of features to display.
         */
        "limit"?: number;
        /**
          * Maximum width of the `ion-note` element used to display attribute values.
         */
        "valueMaxWidth"?: string;
    }
    interface GlBasemapSwitcher {
    }
    interface GlBasemaps {
    }
    interface GlDownloadButton {
    }
    interface GlDownloadFile {
        /**
          * File format (e.g., PDF).
         */
        "format"?: string;
        /**
          * Human-readable name of the file.
         */
        "label"?: string;
        /**
          * Human-readable file size (e.g., 2.5 MB).
         */
        "size"?: string;
        /**
          * URL of the file.
         */
        "url"?: string;
    }
    interface GlDownloadList {
        /**
          * Array of [gl-download-file](../download-file) elements to be included in the list.
         */
        "files"?: HTMLGlDownloadFileElement[];
    }
    interface GlDrawController {
    }
    interface GlDrawToolbar {
        /**
          * Text for the cancel button.
         */
        "cancelText"?: string;
        /**
          * Background color for the toolbar.
         */
        "color"?: Color;
        /**
          * Text for the confirm button.
         */
        "confirmText"?: string;
        /**
          * Label for the toolbar.
         */
        "label"?: string;
        /**
          * ID of the map with the drawing session.  This defaults to the empty string as when a gl-map element is created without an id, the mapId passed along the glDraw events defaults to the empty string.
         */
        "mapId"?: string;
        /**
          * Maximum number of features the user can draw.
         */
        "maxFeatures"?: number;
        /**
          * Minimum number of features the user must draw before confirming.
         */
        "minFeatures"?: number;
        /**
          * Emitted when the user cancels the draw session.
         */
        "onGlDrawCancel"?: (event: GlDrawToolbarCustomEvent<any>) => void;
        /**
          * Emitted when the user confirms the drawn features.
         */
        "onGlDrawConfirm"?: (event: GlDrawToolbarCustomEvent<any>) => void;
    }
    interface GlDrawer {
        /**
          * Title of the drawer displayed in the toolbar.
         */
        "drawerTitle"?: string;
        /**
          * Map ID of the map that should be resized when the drawer is opened or closed.
         */
        "mapId"?: string;
        /**
          * Emitted when the drawer is opened or closed.
         */
        "onGlDrawerToggle"?: (event: GlDrawerCustomEvent<any>) => void;
        /**
          * The drawer is currently open.
         */
        "open"?: boolean;
    }
    interface GlDrawerToggle {
        /**
          * Text to display in the button.
         */
        "buttonTitle"?: string;
        /**
          * Whether the button is enabled
         */
        "disabled"?: boolean;
        /**
          * Icon to display in the button.
         */
        "icon"?: string;
    }
    interface GlFacet {
        /**
          * Show the detail arrow in the item.
         */
        "detail"?: boolean;
        /**
          * Image URL for the item.
         */
        "image"?: string;
        /**
          * Text for the item.
         */
        "label"?: string;
        /**
          * Emitted when the facet is selected by the user.
         */
        "onGlFormFacet"?: (event: GlFacetCustomEvent<any>) => void;
        /**
          * The value of the facet used to refer to it in fields and other facets. When the facet is selected, the value is emitted as part of the `glFormFacet` event.
         */
        "value"?: string;
        /**
          * Widget to use for displaying the facet. A value of `header` renders an `ion-list-header` instead of an `ion-item`.
         */
        "widget"?: "header" | "item";
    }
    interface GlFeatureList {
        /**
          * The number of features to render in each batch. Additional batches are added as needed using `ion-infinite-scroll`.
         */
        "batchSize"?: number;
        /**
          * The component used to render the features in the list.
         */
        "component"?: string;
        /**
          * Options passed to the component as properties.
         */
        "componentOptions"?: { [key: string]: any };
        /**
          * Which features to display: all features from the source, or just those currently within the map extent.
         */
        "display"?: "all" | "visible";
        /**
          * An array of GeoJSON features to display. Currently only point features are supported.
         */
        "features"?: Array<Feature<limitedGeometry>>;
        /**
          * Wrap the component in an `ion-item`.
         */
        "item"?: boolean;
        /**
          * The type of spinner used in the `ion-infinite-scroll-content`.
         */
        "loadingSpinner"?: string;
        /**
          * Text to display while features are loading in the `ion-infinite-scroll-content`.
         */
        "loadingText"?: string;
        /**
          * ID of the `gl-map`.
         */
        "mapId"?: string;
        /**
          * Order in which to sort features.
         */
        "order"?: "asc" | "desc" | "none";
        /**
          * Property by which features should be sorted.
         */
        "orderBy"?: string;
        /**
          * ID of the source containing the features.
         */
        "sourceId"?: string;
        /**
          * ID of the `gl-style` element containing the feature source.
         */
        "styleId"?: string;
    }
    interface GlField {
        /**
          * The feature property that corresponds to the form field.
         */
        "attribute"?: string;
        /**
          * Image URL for the field item.
         */
        "image"?: string;
        /**
          * Label text for the field item.
         */
        "label"?: string;
        /**
          * Emitted when the field value is changed by the user.
         */
        "onGlFieldValueChanged"?: (event: GlFieldCustomEvent<any>) => void;
        /**
          * A placeholder prompt text to display to the user, valid only for textarea and input fields.
         */
        "placeholder"?: string;
        /**
          * The field must be filled out before the form can be submitted.
         */
        "required"?: boolean;
        /**
          * Field type. It is not currently used.
         */
        "type"?: any;
        /**
          * Widget used to render the field.
         */
        "widget"?: | "input"
    | "radio"
    | "select"
    | "textarea"
    | "instructions";
    }
    interface GlForm {
        /**
          * Text for the cancel button.
         */
        "cancelText"?: string;
        /**
          * The feature being modified by the form. The form sets values in the 'properties' object of the feature.
         */
        "feature"?: { properties: { [key: string]: any } };
        /**
          * ID of the form.
         */
        "formId"?: string;
        /**
          * The label displayed in the toolbar of the `gl-form-page`.
         */
        "label"?: string;
        /**
          * Emitted when the user cancels a form submission.
         */
        "onGlFormCancel"?: (event: GlFormCustomEvent<any>) => void;
        /**
          * Emitted when the feature properties are updated due to a field value change.
         */
        "onGlFormFeatureChanged"?: (event: GlFormCustomEvent<any>) => void;
        /**
          * Emitted when the user submits the form.
         */
        "onGlFormSubmit"?: (event: GlFormCustomEvent<any>) => void;
        /**
          * The URL of the form schema JSON.
         */
        "schema"?: string;
        /**
          * Text for the submit button.
         */
        "submitText"?: string;
        /**
          * Treat labels in the form as i18n keys.
         */
        "translateText"?: boolean;
    }
    interface GlFormController {
    }
    interface GlFormPage {
        /**
          * Text for the back button.
         */
        "backText"?: string;
        /**
          * Text for the cancel button.
         */
        "cancelText"?: string;
        /**
          * Facets for the page.
         */
        "facets"?: any[];
        /**
          * Fields for the page.
         */
        "fields"?: any[];
        /**
          * Currently-selected facet. It is used the set the CSS class of the page.
         */
        "formFacet"?: string;
        /**
          * Label text displayed in the form toolbar.
         */
        "label"?: string;
        /**
          * This is the root page in the form. If it is `true`, the back button is not displayed.
         */
        "root"?: boolean;
        /**
          * Text for the submit button.
         */
        "submitText"?: string;
    }
    interface GlFullscreen {
    }
    interface GlGeocodeController {
        /**
          * Default client used to perform the geocoding. It can be overridden in the options provided to `forward()` and `reverse()`.
         */
        "defaultClient"?: string;
        /**
          * Emitted when a forward geocode request completes.
         */
        "onGlForwardGeocode"?: (event: GlGeocodeControllerCustomEvent<any>) => void;
        /**
          * Emitted when a reverse geocode request completes.
         */
        "onGlReverseGeocode"?: (event: GlGeocodeControllerCustomEvent<any>) => void;
    }
    interface GlLegend {
    }
    interface GlLegendItem {
        /**
          * The URL of the image for the legend item.
         */
        "image"?: string;
        /**
          * The IDs of the style layers controlled by this legend item. If controls which layers are toggled or on off by this legend item.
         */
        "layers"?: string | string[];
        /**
          * ID of the `gl-style` containing the layers referenced in `layers`.
         */
        "styleId"?: string;
        /**
          * Show a toggle switch to turn the corresponding layer on and off. If it is `true`, `layers` and `styleId` must be provided.
         */
        "toggle"?: boolean;
        /**
          * Widget used to render the legend item. The `divider` value renders an `ion-list-divider` component suitable for grouping subsequent legend items.
         */
        "widget"?: "divider" | "item";
    }
    interface GlLikeButton {
        /**
          * The attribute which stores the number of likes this feature has received
         */
        "attribute"?: string;
        /**
          * Whether or not this like button is disabled
         */
        "disabled"?: boolean;
        /**
          * The feature this like button is for
         */
        "feature"?: Feature | MapGeoJSONFeature;
        /**
          * The icon for the like button if the user has not liked the feature
         */
        "iconNo"?: string;
        /**
          * The icon for the like button if the user
         */
        "iconYes"?: string;
        /**
          * The HTTP method this like button uses to communicate a like
         */
        "method"?: "GET" | "POST" | "PATCH" | "PUT" | "DELETE";
        /**
          * An event emitted when the user presses the like button
         */
        "onGlLike"?: (event: GlLikeButtonCustomEvent<{
    success: boolean;
    feature: Feature | MapGeoJSONFeature;
    action: "like" | "unlike";
    client_id: string;
  }>) => void;
        /**
          * The cors mode this like button uses to communicate
         */
        "requestMode"?: RequestMode;
        /**
          * The authentication token this like button uses when communicating
         */
        "token"?: string;
        /**
          * The url to the endpoint which which the like button communicates. Most likely this will be the end point of a features-api instance.
         */
        "url"?: string;
    }
    interface GlLikeController {
    }
    interface GlMap {
        /**
          * Milliseconds to wait before opening the popup. This delay allows for handling multiple feature click events in a single popup. Multiple events can be fired in quick succession when the user clicks on multiple overlapping features.
         */
        "clickEventDelay"?: number;
        /**
          * How many, and what, feature to return should the user click on the map
         */
        "clickMode"?: "all" | "top-layer" | "top-feature";
        /**
          * Webmapgl uses the mapbox-gl-draw plugin for drawing features. This property is a reference to the `MapboxDraw` instance when a draw session is active.
         */
        "draw"?: MapboxDraw;
        /**
          * Options object used to initialize `MapboxDraw`.
         */
        "drawOptions"?: MapboxDraw.MapboxDrawOptions;
        /**
          * There is an active draw session. It is usually set by `gl-draw-controller`.
         */
        "drawing"?: boolean;
        /**
          * Default glyphs URL. It can be overridden by child `gl-style` components.
         */
        "glyphs"?: string;
        /**
          * Store the map location and zoom level in the URL hash. If the value is a string, that value will be used as the key in the URL hash.
         */
        "hash"?: string | boolean;
        /**
          * Initial center latitude of the map.
         */
        "latitude"?: number;
        /**
          * Initial center longitude of the map.
         */
        "longitude"?: number;
        /**
          * Reference to the `maplibregl.Map` object. It can be used to customize map properties and behaviors beyond those exposed by `gl-map`.
         */
        "map"?: maplibregl.Map;
        /**
          * Maximum zoom level.
         */
        "maxzoom"?: number;
        /**
          * Minimum zoom level.
         */
        "minzoom"?: number;
        /**
          * Emitted after one or more features has been clicked
         */
        "onGlClickedFeaturesGathered"?: (event: GlMapCustomEvent<any>) => void;
        /**
          * Emitted when a new feature is created in a drawing session.
         */
        "onGlDrawCreate"?: (event: GlMapCustomEvent<any>) => void;
        /**
          * Emitted when a feature is deleted in a drawing session.
         */
        "onGlDrawDelete"?: (event: GlMapCustomEvent<any>) => void;
        /**
          * Emitted when a draw session starts.
         */
        "onGlDrawEnter"?: (event: GlMapCustomEvent<any>) => void;
        /**
          * Emitted when a draw session ends.
         */
        "onGlDrawExit"?: (event: GlMapCustomEvent<any>) => void;
        /**
          * Emitted after the map style has been updated.
         */
        "onGlStyleUpdated"?: (event: GlMapCustomEvent<any>) => void;
        /**
          * Default sprite URL. It can be overridden by child `gl-style` components.
         */
        "sprite"?: string;
        /**
          * Initial zoom level of the map.
         */
        "zoom"?: number;
    }
    interface GlOption {
        /**
          * Thumbnail image URL.
         */
        "image"?: string;
        /**
          * Option label. It is displayed to the user.
         */
        "label"?: string;
        /**
          * Emitted when the option is selected or deselected.
         */
        "onGlOptionChanged"?: (event: GlOptionCustomEvent<any>) => void;
        /**
          * Option value. If this option is selected, it is used to set the value of the property corresponding to the parent field.
         */
        "value"?: any;
    }
    interface GlPopup {
        /**
          * Milliseconds to wait before opening the popup. This delay allows for handling multiple feature click events in a single popup. Multiple events can be fired in quick succession when the user clicks on multiple overlapping features.
         */
        "clickEventDelay"?: number;
        /**
          * Key code of the key used to close the popup. By default, it is the `Esc` key.
         */
        "closeKey"?: string;
        /**
          * Which popups to close when a new popup is opened. `self` removes popups opened by this `gl-popup` element, and `all` closes all open popups.
         */
        "closeMode"?: "none" | "self" | "all";
        /**
          * Name of the component containing the content for the popup (e.g., `gl-attribute-values`). If the popup content is dynamic, the component should accept a `features` property, which will be set to the GeoJSON features clicked by the user.
         */
        "component"?: string;
        /**
          * Additional options, which are passed to the content component as properties.
         */
        "componentOptions"?: string | { [key: string]: any };
        /**
          * IDs of the layers that can activate this popup when clicked. These layer IDs should also be included in the `clickableLayers` property of the parent style.
         */
        "layers"?: string[] | string;
        /**
          * Maximum width of the popup element. It can be any valid CSS width value.
         */
        "maxWidth"?: string;
    }
    interface GlRestController {
    }
    interface GlShare {
        /**
          * Height of the popup window in pixels.
         */
        "popupHeight"?: number;
        /**
          * Width of the popup window in pixels.
         */
        "popupWidth"?: number;
        /**
          * Hashtags for the post. It is used for sharing on Twitter.
         */
        "shareHashtags"?: string;
        /**
          * Title of the item being shared.
         */
        "shareTitle"?: string;
        /**
          * URL to share. If a URL is not provided, the current page URL is used.
         */
        "shareUrl"?: string;
        /**
          * User attribution. It is used for sharing on Twitter.
         */
        "shareUser"?: string;
    }
    interface GlShareButton {
        /**
          * Icon from the Ionicons set used in the button.
         */
        "icon"?: string;
    }
    interface GlStory {
        /**
          * Event emitted when the number of steps in the story changes
         */
        "onGlStoryChange"?: (event: GlStoryCustomEvent<any>) => void;
        /**
          * What 'step' of the story is currently the active one
         */
        "step"?: number;
        /**
          * The total number of steps in the story
         */
        "steps"?: number;
    }
    interface GlStoryButton {
        /**
          * Where in the story this button will take you
         */
        "action"?: "first" | "last" | "next" | "previous" | "close";
        /**
          * The icon for the button
         */
        "icon"?: string;
        /**
          * An alternative name for this button
         */
        "label"?: string;
        /**
          * The id of the story which this button acts upon
         */
        "storyId"?: string;
    }
    interface GlStoryStep {
        /**
          * Whether this step in the story is active
         */
        "active"?: boolean;
        /**
          * Whether or not to click after the map has moved
         */
        "clickAfterIdle"?: boolean;
        /**
          * Whether or not to try to locate the click feature before the map moves
         */
        "clickBeforeHash"?: boolean;
        /**
          * Number of milliseconds to wait before clicking the map
         */
        "clickDelay"?: number;
        /**
          * What layer the click should be fired on
         */
        "clickLayer"?: string;
        /**
          * The attribute name of the feature you are clicking on In essence you will be clicking on the features whose [clickProperty] = clickValue
         */
        "clickProperty"?: string;
        /**
          * The value the feature will have in the clickProperty attribute. In essence you will be clicking on the features whose [clickProperty] = clickValue  Alternatively if clickProperty is not set, clickValue refers to the featureID of what you are clicking on.
         */
        "clickValue"?: number;
        /**
          * Whether this is the first step in the story
         */
        "first"?: boolean;
        /**
          * The 'hash' that represents the location of the story Visible in the browser url when the 'hash' property of {@link ../map} is set to true.
         */
        "hash"?: string;
        /**
          * Whether this is the last step in the story
         */
        "last"?: boolean;
        /**
          * The ID of the map this story step works with
         */
        "mapId"?: string;
        /**
          * An event emitter that, when fired, emulates a user clicking on the map
         */
        "onGlFeatureClick"?: (event: GlStoryStepCustomEvent<{
    features: MapGeoJSONFeature[];
  }>) => void;
    }
    interface GlStyle {
        /**
          * This style represents a basemap and should be included in `gl-basemap-switcher`.
         */
        "basemap"?: boolean;
        /**
          * Array of layers that should be clickable.
         */
        "clickableLayers"?: string | string[];
        /**
          * Include this style in the combined style for the parent `gl-map`.
         */
        "enabled"?: boolean;
        /**
          * Name of the specific layer under which to insert this style's layers.
         */
        "insertBeneathLayer"?: string;
        /**
          * ID of the style in which to insert this style's layers Note: The style you are inserting into must precede this style in the DOM.
         */
        "insertIntoStyle"?: string;
        /**
          * Style JSON object. If `url` is set, it is loaded from that URL.
         */
        "json"?: StyleSpecification;
        /**
          * Human readable name. It is used by `gl-basemap-switcher`.
         */
        "name"?: string;
        /**
          * Emitted when a feature is clicked. Only features in layers listed in `clickableLayers` trigger this event when clicked.
         */
        "onGlFeatureClick"?: (event: GlStyleCustomEvent<{
    features: MapGeoJSONFeature[];
  }>) => void;
        /**
          * Emitted when a style component is initialized.
         */
        "onGlStyleElementAdded"?: (event: GlStyleCustomEvent<styleEvent>) => void;
        /**
          * Emitted when the style JSON changes.
         */
        "onGlStyleElementModified"?: (event: GlStyleCustomEvent<styleEvent>) => void;
        /**
          * Emitted when a style component unloads.
         */
        "onGlStyleElementRemoved"?: (event: GlStyleCustomEvent<styleEvent>) => void;
        /**
          * URL of the thumbnail image. It is used by `gl-basemap-switcher`.
         */
        "thumbnail"?: string;
        /**
          * Access token for sources GeoJSON sources. If set, it is used to replace the `${TOKEN}` placeholder in the style's `data` property.
         */
        "token"?: string;
        /**
          * URL of the style JSON.
         */
        "url"?: string;
    }
    interface GlTable {
        /**
          * Whether or not to disable the default sorting options
         */
        "disableDefaultSort"?: boolean;
        /**
          * The features this table displays
         */
        "features"?: { properties: { [key: string]: any } }[];
        /**
          * Event emitted when the table sort order is changed
         */
        "onGlTableSort"?: (event: GlTableCustomEvent<any>) => void;
        /**
          * The name of the attribute whose value to use as the css class of the row.
         */
        "rowClassAttribute"?: string;
        /**
          * What attribute to sort on
         */
        "sortAttribute"?: string;
        /**
          * What order to use for sorting
         */
        "sortOrder"?: "asc" | "desc";
    }
    interface GlTableColumn {
        /**
          * What attribute in the data this specific column represents
         */
        "attribute"?: string;
        /**
          * The name of the attribute which holds the css class name for the cells of this column.
         */
        "cellClassAttribute"?: string;
        /**
          * The name of the JSX component which is used to render this cell, if any
         */
        "component"?: string;
        /**
          * Additional properties passed to a JSX component used to render this cell
         */
        "componentProps"?: any;
        /**
          * Whether or not this column will be exported if the user exports the table as a csv document. In effect setting this option to false is a way to exclude this column from csv exports.
         */
        "csv"?: boolean;
        /**
          * If the contents of this column are text based, the format of that text. This could either be the strings "currency", "decimal", "percent", or an object that represents the options sent to a toLocaleString call.  E.g. format="currency" or format={style:"decimal", notation:"scientific"}
         */
        "format"?: string | any;
        /**
          * A label for this column, used in the toggle-visibility button and when choosing ascending or descending sort order.
         */
        "label"?: string;
        /**
          * An event emitted when the column updates for any reason, including when it is disconnected
         */
        "onGlTableColumnChanged"?: (event: GlTableColumnCustomEvent<any>) => void;
        /**
          * Whether or not this column will be exported if the user exports the table as a pdf document. In effect setting this option to false is a way to exclude this column from pdf exports.
         */
        "pdf"?: boolean;
        /**
          * Whether or not the data can be sorted by the contents of this column.
         */
        "sortable"?: boolean;
        /**
          * Whether or not this column is rendered and visible to the user.
         */
        "visible"?: boolean;
    }
    interface GlTableColumnVisibility {
        /**
          * The title of the column.
         */
        "label"?: string;
        /**
          * The id of the table this column is a part of.
         */
        "tableId"?: string;
    }
    interface GlTableColumnVisibilityButton {
        /**
          * A label for the button. In english it defaults to 'Column Visibility'.
         */
        "label"?: string;
        /**
          * An id for the table.
         */
        "tableId"?: string;
    }
    interface GlTableColumnVisibilityToggle {
        /**
          * The column this visibility toggle works on.
         */
        "column"?: HTMLGlTableColumnElement;
        /**
          * When the column is currently visible or invisible.
         */
        "enabled"?: boolean;
    }
    interface GlTableExportButton {
        /**
          * If this is for a pdf export, the author variable of the pdf document.
         */
        "author"?: string;
        /**
          * If true the JSX component for the table-export-button will expose a <slot /> for a custom button whereas otherwise it is this.format.toUpperCase() aka CSV or PDF
         */
        "customButton"?: boolean;
        /**
          * When the document is exported, what file name it should be saved as.
         */
        "filename"?: string;
        /**
          * The format in which the document should be exported, either csv or pdf.
         */
        "format"?: "csv" | "pdf";
        /**
          * The orientation of the exported document
         */
        "pageOrientation"?: "landscape" | "portrait";
        /**
          * The subtitle of the document if the document is exported as a pdf
         */
        "pageSubtitle"?: string;
        /**
          * The title of the document if the document is exported as a pdf.
         */
        "pageTitle"?: string;
        /**
          * The id of the [table]{@link ../table} this export button is for.
         */
        "tableId"?: string;
        /**
          * If this value is defined the application will attempt to send the contents of the pdf in a POST request to the specified url when the export button is clicked, in addition to presenting it to the user for download.
         */
        "url"?: string;
    }
    interface GlTableExportController {
    }
    interface IntrinsicElements {
        "gl-address-search": GlAddressSearch;
        "gl-app": GlApp;
        "gl-attribute-values": GlAttributeValues;
        "gl-basemap-switcher": GlBasemapSwitcher;
        "gl-basemaps": GlBasemaps;
        "gl-download-button": GlDownloadButton;
        "gl-download-file": GlDownloadFile;
        "gl-download-list": GlDownloadList;
        "gl-draw-controller": GlDrawController;
        "gl-draw-toolbar": GlDrawToolbar;
        "gl-drawer": GlDrawer;
        "gl-drawer-toggle": GlDrawerToggle;
        "gl-facet": GlFacet;
        "gl-feature-list": GlFeatureList;
        "gl-field": GlField;
        "gl-form": GlForm;
        "gl-form-controller": GlFormController;
        "gl-form-page": GlFormPage;
        "gl-fullscreen": GlFullscreen;
        "gl-geocode-controller": GlGeocodeController;
        "gl-legend": GlLegend;
        "gl-legend-item": GlLegendItem;
        "gl-like-button": GlLikeButton;
        "gl-like-controller": GlLikeController;
        "gl-map": GlMap;
        "gl-option": GlOption;
        "gl-popup": GlPopup;
        "gl-rest-controller": GlRestController;
        "gl-share": GlShare;
        "gl-share-button": GlShareButton;
        "gl-story": GlStory;
        "gl-story-button": GlStoryButton;
        "gl-story-step": GlStoryStep;
        "gl-style": GlStyle;
        "gl-table": GlTable;
        "gl-table-column": GlTableColumn;
        "gl-table-column-visibility": GlTableColumnVisibility;
        "gl-table-column-visibility-button": GlTableColumnVisibilityButton;
        "gl-table-column-visibility-toggle": GlTableColumnVisibilityToggle;
        "gl-table-export-button": GlTableExportButton;
        "gl-table-export-controller": GlTableExportController;
    }
}
export { LocalJSX as JSX };
declare module "@stencil/core" {
    export namespace JSX {
        interface IntrinsicElements {
            "gl-address-search": LocalJSX.GlAddressSearch & JSXBase.HTMLAttributes<HTMLGlAddressSearchElement>;
            "gl-app": LocalJSX.GlApp & JSXBase.HTMLAttributes<HTMLGlAppElement>;
            "gl-attribute-values": LocalJSX.GlAttributeValues & JSXBase.HTMLAttributes<HTMLGlAttributeValuesElement>;
            "gl-basemap-switcher": LocalJSX.GlBasemapSwitcher & JSXBase.HTMLAttributes<HTMLGlBasemapSwitcherElement>;
            "gl-basemaps": LocalJSX.GlBasemaps & JSXBase.HTMLAttributes<HTMLGlBasemapsElement>;
            "gl-download-button": LocalJSX.GlDownloadButton & JSXBase.HTMLAttributes<HTMLGlDownloadButtonElement>;
            "gl-download-file": LocalJSX.GlDownloadFile & JSXBase.HTMLAttributes<HTMLGlDownloadFileElement>;
            "gl-download-list": LocalJSX.GlDownloadList & JSXBase.HTMLAttributes<HTMLGlDownloadListElement>;
            "gl-draw-controller": LocalJSX.GlDrawController & JSXBase.HTMLAttributes<HTMLGlDrawControllerElement>;
            "gl-draw-toolbar": LocalJSX.GlDrawToolbar & JSXBase.HTMLAttributes<HTMLGlDrawToolbarElement>;
            "gl-drawer": LocalJSX.GlDrawer & JSXBase.HTMLAttributes<HTMLGlDrawerElement>;
            "gl-drawer-toggle": LocalJSX.GlDrawerToggle & JSXBase.HTMLAttributes<HTMLGlDrawerToggleElement>;
            "gl-facet": LocalJSX.GlFacet & JSXBase.HTMLAttributes<HTMLGlFacetElement>;
            "gl-feature-list": LocalJSX.GlFeatureList & JSXBase.HTMLAttributes<HTMLGlFeatureListElement>;
            "gl-field": LocalJSX.GlField & JSXBase.HTMLAttributes<HTMLGlFieldElement>;
            "gl-form": LocalJSX.GlForm & JSXBase.HTMLAttributes<HTMLGlFormElement>;
            "gl-form-controller": LocalJSX.GlFormController & JSXBase.HTMLAttributes<HTMLGlFormControllerElement>;
            "gl-form-page": LocalJSX.GlFormPage & JSXBase.HTMLAttributes<HTMLGlFormPageElement>;
            "gl-fullscreen": LocalJSX.GlFullscreen & JSXBase.HTMLAttributes<HTMLGlFullscreenElement>;
            "gl-geocode-controller": LocalJSX.GlGeocodeController & JSXBase.HTMLAttributes<HTMLGlGeocodeControllerElement>;
            "gl-legend": LocalJSX.GlLegend & JSXBase.HTMLAttributes<HTMLGlLegendElement>;
            "gl-legend-item": LocalJSX.GlLegendItem & JSXBase.HTMLAttributes<HTMLGlLegendItemElement>;
            "gl-like-button": LocalJSX.GlLikeButton & JSXBase.HTMLAttributes<HTMLGlLikeButtonElement>;
            "gl-like-controller": LocalJSX.GlLikeController & JSXBase.HTMLAttributes<HTMLGlLikeControllerElement>;
            "gl-map": LocalJSX.GlMap & JSXBase.HTMLAttributes<HTMLGlMapElement>;
            "gl-option": LocalJSX.GlOption & JSXBase.HTMLAttributes<HTMLGlOptionElement>;
            "gl-popup": LocalJSX.GlPopup & JSXBase.HTMLAttributes<HTMLGlPopupElement>;
            "gl-rest-controller": LocalJSX.GlRestController & JSXBase.HTMLAttributes<HTMLGlRestControllerElement>;
            "gl-share": LocalJSX.GlShare & JSXBase.HTMLAttributes<HTMLGlShareElement>;
            "gl-share-button": LocalJSX.GlShareButton & JSXBase.HTMLAttributes<HTMLGlShareButtonElement>;
            "gl-story": LocalJSX.GlStory & JSXBase.HTMLAttributes<HTMLGlStoryElement>;
            "gl-story-button": LocalJSX.GlStoryButton & JSXBase.HTMLAttributes<HTMLGlStoryButtonElement>;
            "gl-story-step": LocalJSX.GlStoryStep & JSXBase.HTMLAttributes<HTMLGlStoryStepElement>;
            "gl-style": LocalJSX.GlStyle & JSXBase.HTMLAttributes<HTMLGlStyleElement>;
            "gl-table": LocalJSX.GlTable & JSXBase.HTMLAttributes<HTMLGlTableElement>;
            "gl-table-column": LocalJSX.GlTableColumn & JSXBase.HTMLAttributes<HTMLGlTableColumnElement>;
            "gl-table-column-visibility": LocalJSX.GlTableColumnVisibility & JSXBase.HTMLAttributes<HTMLGlTableColumnVisibilityElement>;
            "gl-table-column-visibility-button": LocalJSX.GlTableColumnVisibilityButton & JSXBase.HTMLAttributes<HTMLGlTableColumnVisibilityButtonElement>;
            "gl-table-column-visibility-toggle": LocalJSX.GlTableColumnVisibilityToggle & JSXBase.HTMLAttributes<HTMLGlTableColumnVisibilityToggleElement>;
            "gl-table-export-button": LocalJSX.GlTableExportButton & JSXBase.HTMLAttributes<HTMLGlTableExportButtonElement>;
            "gl-table-export-controller": LocalJSX.GlTableExportController & JSXBase.HTMLAttributes<HTMLGlTableExportControllerElement>;
        }
    }
}
