/**
 * Provides utility methods for creating [VersionAdapters](https://developers.arcgis.com/javascript/latest/references/core/versionManagement/versionAdapters/types/#VersionAdapter).
 *
 * @since 4.30
 */
import type FeatureLayer from "../../layers/FeatureLayer.js";
import type GroupLayer from "../../layers/GroupLayer.js";
import type SubtypeGroupLayer from "../../layers/SubtypeGroupLayer.js";
import type Network from "../../networks/Network.js";
import type { VersionAdapter } from "./types.js";

/**
 * Used to create an instance of [VersionAdapter](https://developers.arcgis.com/javascript/latest/references/core/versionManagement/versionAdapters/types/#VersionAdapter).
 *
 * @param input - Input used to create an instance of [VersionAdapter](https://developers.arcgis.com/javascript/latest/references/core/versionManagement/versionAdapters/types/#VersionAdapter).
 * @returns Returns an instance of [VersionAdapter](https://developers.arcgis.com/javascript/latest/references/core/versionManagement/versionAdapters/types/#VersionAdapter).
 * @example
 * const layer = new FeatureLayer({
 *     url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Wildfire/FeatureServer/12"
 * });
 * const adapter = utils.createVersionAdapter(layer);
 */
export function createVersionAdapter(input: Network | FeatureLayer | SubtypeGroupLayer): VersionAdapter | null | undefined;

/**
 * Used to create an array of [VersionAdapters](https://developers.arcgis.com/javascript/latest/references/core/versionManagement/versionAdapters/types/#VersionAdapter).
 *
 * @param inputs - Input used to create an array of [VersionAdapters](https://developers.arcgis.com/javascript/latest/references/core/versionManagement/versionAdapters/types/#VersionAdapter).
 * @returns Returns an array of [VersionAdapters](https://developers.arcgis.com/javascript/latest/references/core/versionManagement/versionAdapters/types/#VersionAdapter).
 * @example
 * const layer1 = new FeatureLayer({
 *     url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Wildfire/FeatureServer/12"
 * });
 * const layer2 = new FeatureLayer({
 *     url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/Wildfire/FeatureServer/13"
 * });
 * const adapters = utils.createVersionAdapters([layer1, layer2]);
 */
export function createVersionAdapters(inputs: (Network | FeatureLayer | SubtypeGroupLayer | GroupLayer)[]): VersionAdapter[];