import { Activator } from "@geocortex/workflow/Activator";
export declare type Map = MapProvider | __esri.Map | __esri.View;
export interface MapViewLike {
    layers?: __esri.Collection;
    map?: __esri.Map;
}
/** Extension for ESRI map views which supports v3.x and v4.x of the ArcGIS API. */
export interface ViewExtension {
}
/** Extension for ESRI sublayers which supports v3.x and v4.x of the ArcGIS API. */
export interface SublayerExtension {
}
/** Extension for ESRI map which supports v3.x and v4.x of the ArcGIS API. */
export interface MapExtension {
}
/** Exposes map information. */
export interface MapInfo {
    /** Gets the extent. */
    getExtent(): __esri.Extent;
    /** Gets the center. */
    getCenter(): __esri.Point;
    /** Gets the scale. */
    getScale(): number;
    /** Gets the spatial reference. */
    getSpatialReference(): __esri.SpatialReference;
}
/** Provides functionality which affects the map. */
export declare class MapProvider implements MapInfo {
    static type: string;
    /** Indicates the map. */
    map: __esri.Map & MapExtension;
    /** Indicates the view. */
    view: __esri.View & ViewExtension;
    /** Indicates the layer. */
    layer: __esri.Layer;
    /** Indicates the sublayer. */
    sublayer: __esri.Sublayer & SublayerExtension;
    /** Indicates the map name. */
    mapName: string;
    /** Indicates the map name. */
    type: typeof MapProvider;
    /** Gets the output SR (or the default). */
    static getOutSR(sr: __esri.SpatialReference | number | string): __esri.SpatialReference;
    /** Creates an instance of this class. */
    static create(): MapProvider;
    /** Registers the provider class with the activator. */
    static register(activator: Activator): void;
    constructor(type: typeof MapProvider, mapView?: MapViewLike, mapName?: string);
    /** Loads the map if applicable. */
    protected loadMap(): PromiseLike<void>;
    /** Loads the view if applicable. */
    protected loadView(): PromiseLike<void>;
    /** Loads the layer if applicable. */
    protected loadLayer(): PromiseLike<void>;
    /** Loads the map/layer. */
    load(): PromiseLike<void>;
    /** Gets the extent. */
    getExtent(): __esri.Extent;
    /** Gets the center. */
    getCenter(): __esri.Point;
    /** Gets the scale. */
    getScale(): number;
    /** Gets the spatial reference. */
    getSpatialReference(): __esri.SpatialReference;
    /** Gets the viewpoint. */
    getViewpoint(): __esri.Viewpoint;
    /** Sets the extent. */
    setExtent(target: __esri.Geometry[], scale?: number): PromiseLike<void>;
    /** Sets the viewpoint. */
    setViewpoint(target: __esri.Geometry[], viewpoint?: __esri.Viewpoint): PromiseLike<void>;
    /** Finds the layer. */
    findLayer(id: string | number, parent?: __esri.Layer): MapProvider;
    /**
     * Finds a table in the map.
     * @param id The unique id of the table.
     * @param mapServiceId The unique id of the map service that the table belongs to.
     */
    findTable(id: string, mapServiceId?: string): MapProvider;
    /**
     * Allows sub classes to convert ids to a different format,
     * to suit their implementation.
     * @param id The unique id of a sublayer.
     */
    protected formatSubLayerId(id: any): any;
    /**
     * Returns true if the currently specified sublayer is visible, false otherwise.
     * This will only work with certain types of layer using the ArcGIS API v3.x.
     */
    private is3xSubLayerVisible;
    /**
     * Sets the visibility of the currently specified sublayer.
     * This will only work with certain types of layer using
     * the ArcGIS API v3.x.
     */
    private set3xSubLayerVisible;
    /** Gets the visibility for the map/layer. */
    getVisible(): boolean;
    /** Sets the visibility for the map/layer. */
    setVisible(visible: boolean): boolean;
    /** Gets the property's value for the map/layer. */
    getProperty(name: "mosaicRule"): __esri.MosaicRule;
    getProperty(name: "renderingRule"): __esri.RasterFunction;
    getProperty(name: "pixelFilter"): Function;
    getProperty(name: string): any;
    /** Sets the `mosaicRule` property on the current layer. */
    setProperty(name: "mosaicRule", value: __esri.MosaicRule): boolean;
    /** Sets the `renderingRule` property on the current layer. */
    setProperty(name: "renderingRule", value: __esri.RasterFunction): boolean;
    /** Sets the `pixelFilter` property on the current layer. */
    setProperty(name: "pixelFilter", value: Function): boolean;
    /** Sets the specified property on the current layer. */
    setProperty(name: string, value: any): boolean;
    /** Gets the definition expression for the map/layer. */
    getDefinitionExpression(): string;
    /** Sets the definition expression for the map/layer. */
    setDefinitionExpression(clause: string): boolean;
    /** Clears features from the map/layer. */
    clearFeatures(): boolean;
    /** Removes features from the map/layer. */
    removeFeatures(features: __esri.Graphic[]): boolean;
    /** Gets features from the map/layer. */
    getFeatures(): __esri.Graphic[];
    /** Adds features to the layer. */
    addFeatures(features: __esri.Graphic[], layerId: string | number): __esri.Graphic[];
    /** Removes the layer. */
    removeLayer(): boolean;
    /** Redraws the layer. */
    redraw(): void;
    /** Clones this provider. */
    clone(): MapProvider;
    /** Adds popup to the template. */
    static setPopup(template: object, features: __esri.Graphic[]): void;
    /** Adds popup to the map/layer. */
    setPopup(template: object): void;
    /** Shows a popup for a given feature collection */
    showPopup(features: __esri.Graphic[]): void;
}
