/**
 * Type checking for v3.x of the ArcGIS API.
 */
export declare namespace V3 {
    interface GraphicsLayer {
    }
    /** Members common to all layers in v3.x of the ArcGIS API. */
    interface Layer {
    }
    /** Members present in layers containing sublayers in v3.x of the ArcGIS API. */
    interface LayerWithSublayers {
    }
    /** Members present in layers containing multiple definitions in v3.x of the ArcGIS API. */
    interface LayerWithDefinitions {
    }
    interface LayerWithInfoTemplate {
    }
    /** Members present in layers containing visible layers in v3.x of the ArcGIS API. */
    interface LayerWithVisibleLayers {
    }
    /** Members present in layers containing a definition expression in v3.x of the ArcGIS API. */
    interface LayerWithDefinitionExpression {
    }
    interface RefreshableLayer {
    }
    /**
     * In v3.x of the ArcGIS API, graphics layers are the only ones
     * that include `add` and `clear` methods. We could also inspect the
     * `graphics` property, but there's a risk it starts off undefined or
     * could be set to undefined and it shouldn't fail the test because of that.
     * @param layer The layer to be checked.
     */
    function isGraphicsLayer(layer: __esri.Layer): layer is __esri.Layer & GraphicsLayer;
    /**
     * In v3.x of the ArcGIS API, the only layers that contain the `layerInfos` property are:
     * esri.layers.ArcGISDynamicMapServiceLayer
     * esri.layers.ArcGISTiledMapServiceLayer
     * esri.layers.WMSLayer
     * esri.layers.WMTSLayer
     * @param layer The layer to be checked.
     */
    function isLayerWithSublayers(layer: __esri.Layer): layer is __esri.Layer & LayerWithSublayers;
    /**
     * In v3.x of the ArcGIS API, layer definitions are only
     * present in `ArcGISDynamicMapServiceLayer` layers.
     * We check for the `setLayerDefinitions()` export function,
     * rather than `layerDefinitions`, in case the latter is not defined yet.
     * @param layer The layer to be checked.
     */
    function isLayerWithDefinitions(layer: __esri.Layer): layer is __esri.Layer & LayerWithDefinitions;
    /**
     * In v3.x of the ArcGIS API, `setInfoTemplate` is only supported in
     * layers of type `ArcGISImageServiceLayer` and `FeatureLayer`.
     */
    function isLayerWithInfoTemplate(layer: __esri.Layer): layer is __esri.Layer & LayerWithInfoTemplate;
    /**
     * In v3.x of the ArcGIS API, the `visibleLayers` property
     * is only present in `ArcGISDynamicMapServiceLayer` layers
     * and `WMSLayer` layers.
     * @param layer The layer to be checked.
     */
    function isLayerWithVisibleLayers(layer: __esri.Layer): layer is __esri.Layer & LayerWithVisibleLayers;
    /**
     * In v3.x of the ArcGIS API, `getDefinitionExpression` is only supported in
     * layers of type `ArcGISImageServiceLayer` and `FeatureLayer`.
     * @param layer The layer to be checked.
     */
    function isLayerWithDefinitionExpression(layer: __esri.Layer): layer is __esri.Layer & LayerWithDefinitionExpression;
    /**
     * In v3.x of the ArcGIS API, `refresh` is only supported in layers of type
     * `DynamicMapServiceLayer`, `FeatureLayer`, `TiledMapServiceLayer`
     * and `WFSLayer`.
     * @param layer The layer to be checked.
     */
    function isRefreshableLayer(layer: __esri.Layer): layer is __esri.Layer & RefreshableLayer;
}
export declare namespace V4 {
    interface GraphicsLayer {
        addMany(graphics: __esri.Graphic[]): void;
        graphics: any;
        removeMany(graphics: __esri.Graphic[]): void;
        removeAll(): void;
    }
    interface LayerWithSublayers {
    }
    interface LayerWithDefinitionExpression {
    }
    interface LayerWithPopupTemplate {
    }
    interface LayerWithRedraw {
    }
    function isGraphicsLayer(layer: __esri.Layer): layer is __esri.Layer & GraphicsLayer;
    /**
     * In v4.x of the ArcGIS API, `definitionExpression` is only supported in
     * layers of type `FeatureLayer` and `ImageryLayer`.
     * @param layer The layer to be checked.
     */
    function isLayerWithDefinitionExpression(layer: __esri.Layer): layer is __esri.Layer & LayerWithDefinitionExpression;
    /**
     * In v4.x of the ArcGIS API, the `popupTemplate` property is supported in layers of type
     * `FeatureLayer`, `SceneLayer` and `ImageryLayer`.
     * @param layer The layer to be checked.
     */
    function isLayerWithPopupTemplate(layer: __esri.Layer): layer is __esri.Layer & LayerWithPopupTemplate;
    /**
     * In v4.x of the ArcGIS API, the only layer that contains the `findSublayerById` method is
     * `ArcGISDynamicService`.
     * @param layer The layer to be checked.
     */
    function isLayerWithSublayers(layer: __esri.Layer): layer is __esri.Layer & LayerWithSublayers;
    /**
     * In v4.x of the ArcGIS API, the only layer that contains the `redraw` method is
     * `ImageryLayer`.
     * @param layer
     */
    function isLayerWithRedraw(layer: __esri.Layer): layer is __esri.Layer & LayerWithRedraw;
    /**
     * @param sublayer The sublayer to be checked.
     */
    function isSublayerWithDefinitionExpression(sublayer: __esri.Sublayer): sublayer is __esri.Sublayer & LayerWithDefinitionExpression;
}
