import type EsriMap from "@arcgis/core/Map";
import Collection from "@arcgis/core/core/Collection.js";
import type Layer from "@arcgis/core/layers/Layer";
import { MapExtension } from "../mapping/MapExtension.js";
import type { LayerExtension, LayerReference } from "../mapping/_LayerExtension.js";
import type { SublayerExtension, SublayerReference } from "../mapping/_SublayerExtension.js";
import type { SublayerLike } from "../support/esri.js";
/**
 * Creates a LayerReference or SublayerReference from various input types.
 *
 * @param ref The reference, which can be a string, number, LayerReference,
 *   SublayerReference, Layer, or SublayerLike.
 * @returns A LayerReference or SublayerReference object.
 */
export declare function createRef(ref: string | number | LayerReference | SublayerReference | Layer | SublayerLike): LayerReference | SublayerReference | undefined;
/**
 * Returns true if two LayerReference objects are considered equal.
 *
 * @param layerRef1 The first layer reference to compare.
 * @param layerRef2 The second layer reference to compare.
 * @param layerXList Optional to check group extensions.
 */
export declare function isLayerRefEqual(layerRef1: LayerReference, layerRef2: LayerReference, layerXList?: LayerExtension[]): boolean;
/**
 * Returns true if two SublayerReference objects are considered equal.
 *
 * Sublayers are considered equal if both their `id` and `title` properties
 * match.
 *
 * @param subLayerRef1 The first sublayer reference to compare.
 * @param sublayerRef2 The second sublayer reference to compare.
 * @returns True if the sublayer references are equal, otherwise false.
 */
export declare function isSublayerRefEqual(subLayerRef1: SublayerReference, sublayerRef2: SublayerReference): boolean;
/**
 * Flattens a MapExtension or a Collection of LayerExtensions into a single
 * Collection of LayerExtensions, including nested group layers.
 *
 * @param source The MapExtension or Collection of LayerExtensions to flatten.
 * @returns A flattened Collection of LayerExtensions.
 */
export declare function createFlattenedLayerXList(source: MapExtension | Collection<LayerExtension>): Collection<LayerExtension>;
/**
 * Returns the backing Layer or SublayerLike for a given LayerExtension or
 * SublayerExtension.
 *
 * @param extension The LayerExtension or SublayerExtension to get the backing
 *   layer from.
 * @returns The backing Layer or SublayerLike.
 */
export declare function getBackingLayer(extension: LayerExtension | SublayerExtension): Layer | SublayerLike;
/**
 * Converts an EsriMap or MapExtension to a MapExtension instance.
 *
 * @param mapOrExtension The EsriMap or MapExtension to convert.
 * @returns A MapExtension instance.
 */
export declare function toMapExtension(mapOrExtension: EsriMap | MapExtension): MapExtension;
/**
 * Checks if the provided value is iterable.
 *
 * @param value The value to check.
 * @returns True if the value is iterable, otherwise false.
 */
export declare function isIterable<T>(value: unknown): value is Iterable<T>;
