import type { Layer } from "./Layer.js";
/**
 * The applicationProperties object is one of the objects at the top level of
 * the JSON web map JSON schema. This is responsible for containing the viewing
 * and editing properties of the web map. There are specific objects within this
 * object that are applicable only to Collector and are explained within the
 * property descriptions.
 *
 * See
 * {@link https://developers.arcgis.com/web-map-specification/objects/applicationProperties/}.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface ApplicationProperties {
    /**
     * If locationTracking is set and enabled, the Collector application will
     * update the feature service at the defined interval with the current
     * location of the user logged into the Collector app. See
     * {@link https://developers.arcgis.com/web-map-specification/objects/editing/}.
     */
    editing?: {
        /**
         * If locationTracking is set and enabled, the collector app will update
         * the feature service at the defined interval with the current location
         * of the user logged into the collector application. See
         * {@link https://developers.arcgis.com/web-map-specification/objects/locationTracking/}.
         */
        locationTracking?: {
            /**
             * A boolean value indicating whether or not location tracking is
             * enabled on the webmap.
             */
            enabled?: boolean;
            /**
             * An object of additional information specifying layer and update
             * interval time. See
             * {@link https://developers.arcgis.com/web-map-specification/objects/info/}.
             */
            info?: {
                /**
                 * A string value indicating the given layer id specified in the
                 * web map.
                 */
                layerId?: string;
                /**
                 * A numeric value indicating the time interval used to update
                 * the feature service. Default value is 300 seconds.
                 */
                updateInterval?: number;
            };
        };
    };
    /**
     * Use if working with offline maps. See
     * {@link https://developers.arcgis.com/web-map-specification/objects/offline/}.
     */
    offline?: {
        /**
         * List of layers which should be included in an offline map as
         * connected online layers. See
         * {@link https://developers.arcgis.com/web-map-specification/objects/connectedOnlineLayer/}.
         */
        connectedOnlineLayers?: [
            {
                /**
                 * Identifies which layer or table in the web map is to remain
                 * online by specifying the value of its unique id property.
                 */
                id?: string;
            }
        ];
        /**
         * Object detailing the available offline editing options. See
         * {@link https://developers.arcgis.com/web-map-specification/objects/editableLayers/}.
         */
        editableLayers?: {
            /**
             * When editing layers, the edits are always sent to the server.
             * This string value indicates which data is retrieved. For example,
             * none indicates that only the schema is written since neither the
             * features nor attachments are retrieved. For a full sync without
             * downloading attachments, indicate features. Lastly, the default
             * behavior is to have a full sync using featuresAndAttachments
             * where both features and attachments are retrieved. See
             * {@link DownloadMode}.
             */
            download?: DownloadMode;
            /**
             * This string value indicates how the data is synced. See
             * {@link SyncMode}.
             */
            sync?: SyncMode;
        };
        /**
         * Object detailing offline basemap options. See
         * {@link https://developers.arcgis.com/web-map-specification/objects/offlinebasemap/}.
         */
        offlinebasemap?: {
            /**
             * The filename of a basemap that has been copied to a mobile
             * device. This can be used instead of the default basemap for the
             * map to reduce downloads.
             */
            referenceBasemapName?: string;
        };
        /**
         * Object indicating what to do with attachments in read-only layers.
         * See
         * {@link https://developers.arcgis.com/web-map-specification/objects/readonlyLayers/}.
         */
        readonlyLayers?: {
            /**
             * Indicates whether to include attachments with the read-only data.
             */
            downloadAttachments?: boolean;
        };
    };
    /**
     * An object containing all the viewing properties of the web map. If this
     * is null or not defined, the client should assume a logical default. See
     * {@link https://developers.arcgis.com/web-map-specification/objects/viewing/}.
     */
    viewing?: {
        /**
         * The basemap tool which will use the basemap group defined in the
         * Portal. See
         * {@link https://developers.arcgis.com/web-map-specification/objects/basemapGallery/}.
         */
        basemapGallery?: {
            /**
             * Indicates whether to display the baseMapGallery.
             */
            enabled?: boolean;
        };
        /**
         * Measure tool setting for the application properties. See
         * {@link https://developers.arcgis.com/web-map-specification/objects/measure/}.
         */
        measure?: {
            /**
             * Indicates if the measuring tool is enabled.
             */
            enabled?: boolean;
        };
        /**
         * The route tool which will leverage the Portals defined route service.
         * See
         * {@link https://developers.arcgis.com/web-map-specification/objects/routing/}.
         */
        routing?: {
            /**
             * Indicates whether to set the route service.
             */
            enabled?: boolean;
        };
        /**
         * An object specifying search parameters within the webmap. See
         * {@link https://developers.arcgis.com/web-map-specification/objects/search/}.
         */
        search?: {
            /**
             * A boolean value indicating whether or not to disable the place
             * finder.
             */
            disablePlaceFinder?: boolean;
            /**
             * A boolean value indicating whether search (find) functionality is
             * enabled in the web map.
             */
            enabled?: boolean;
            /**
             * A string value used to indicate the hint provided with the search
             * dialog.
             */
            hintText?: string;
            /**
             * An array of layer objects defining the styling, geometry, and
             * attribute information for the features.
             */
            layers?: Layer[];
        };
    };
}
/**
 * The data to download.
 *
 * @deprecated Use "json/*" modules instead.
 */
export type DownloadMode = "features" | "featuresAndAttachments" | "none";
/**
 * The data to sync.
 *
 * @deprecated Use "json/*" modules instead.
 */
export type SyncMode = "syncFeaturesAndAttachments" | "syncFeaturesUploadAttachments" | "uploadFeaturesAndAttachments";
