import Collection from "@arcgis/core/core/Collection";
import type { SuggestLocationsParametersProperties as SuggestLocationsParametersPropertiesBase } from "@arcgis/core/rest/support/SuggestLocationsParameters.js";
import type { JSONSupport } from "@arcgis/core/core/JSONSupport";
import type Extent from "@arcgis/core/geometry/Extent.js";

declare module "@arcgis/core/layers/support/SubtypeSublayer.js" {
    export default interface SubtypeSublayer {
        layer: import("@arcgis/core/layers/SubtypeGroupLayer.js").default;
    }
}

declare module "@arcgis/core/layers/SceneLayer.js" {
    export default interface SceneLayer {
        associatedLayer: import("@arcgis/core/layers/FeatureLayer.js").default;
    }
}

declare module "@arcgis/core/layers/MapNotesLayer.js" {
    export default interface MapNotesLayer {
        associatedLayer: import("@arcgis/core/layers/FeatureLayer.js").default;
        sublayers: Collection<import("@arcgis/core/layers/GraphicsLayer.js").default>;

        add(graphic: import("@arcgis/core/Graphic.js").default): void;
        remove(graphic: import("@arcgis/core/Graphic.js").default): void;
        addMany(graphics: import("@arcgis/core/Graphic.js").default[]): void;
        removeMany(graphics: import("@arcgis/core/Graphic.js").default[]): void;
    }
}

declare module "@arcgis/core/layers/ogc/wfsUtils.js" {
    export interface WFSLayerInfo extends WFSLayerInfo {
        geometryField: string;
    }
}

declare module "@arcgis/core/views/layers/BuildingComponentSublayerView.js" {
    export default interface BuildingComponentSublayerView {
        view: import("@arcgis/core/views/MapView.js").default | import("@arcgis/core/views/SceneView.js").default;
    }
}

declare module "@arcgis/core/rest/support/SuggestLocationsParameters.js" {
    export interface SuggestLocationsParametersProperties extends SuggestLocationsParametersPropertiesBase {
        searchExtent: Extent;
        maxSuggestions: number;
        countryCode: string;
    }
}

declare module "@arcgis/core/layers/FeatureLayer.js" {
    export default interface FeatureLayer {
        mode: number;
    }
}

declare module "@arcgis/core/layers/WMSLayer.js" {
    export default interface WMSLayer {
        mapUrl?: string;
        resourceInfo?:
            | {
                  supportedImageFormatTypes: string[] | undefined;
              }
            | undefined;
    }
}

declare module "@arcgis/core/layers/buildingSublayers/BuildingComponentSublayer.js" {
    export interface BuildingComponentSublayerCapabilitiesData {
        isVersioned: boolean;
        supportsM: boolean;
        supportsZ: boolean;
    }

    export interface BuildingComponentSublayerCapabilities {
        /**
         * Describes characteristics of the data in the layer.
         *
         * [Read
         * more...](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-CSVLayer.html#capabilities)
         */
        data: BuildingComponentSublayerCapabilitiesData;
    }

    export default interface BuildingComponentSublayer {
        layer: import("@arcgis/core/layers/BuildingSceneLayer.js").default;
        geometryType: import("@arcgis/core/geometry/Geometry.js").default["type"];
        capabilities: BuildingComponentSublayerCapabilities;
    }
}

declare module "@arcgis/core/layers/buildingSublayers/BuildingSublayer.js" {
    export default interface BuildingSublayer {
        layer: import("@arcgis/core/layers/BuildingSceneLayer.js").default;
    }
}

declare module "@arcgis/core/networks/UtilityNetwork.js" {
    export default interface UtilityNetwork extends JSONSupport {}
}
