/**
 * Provides utility methods for creating [VersioningStates](https://developers.arcgis.com/javascript/latest/references/core/versionManagement/VersioningState/).
 *
 * @since 4.30
 */
import type WebMap from "../WebMap.js";
import type Collection from "../core/Collection.js";
import type VersioningState from "./VersioningState.js";
import type View from "../views/View.js";
import type { VersionAdapter } from "./versionAdapters/types.js";

/**
 * Used to create a [Collection](https://developers.arcgis.com/javascript/latest/references/core/core/Collection/) of [VersioningStates](https://developers.arcgis.com/javascript/latest/references/core/versionManagement/VersioningState/).
 *
 * @param input - Input used to to create a [Collection](https://developers.arcgis.com/javascript/latest/references/core/core/Collection/) of [VersioningStates](https://developers.arcgis.com/javascript/latest/references/core/versionManagement/VersioningState/).
 * @param usePersistentReadSessions - If set to `true`, the current version will have a read lock. Additionally, when switching versions, the new current version will also have a read lock.
 * @returns When resolved, a [Collection](https://developers.arcgis.com/javascript/latest/references/core/core/Collection/) of [VersioningStates](https://developers.arcgis.com/javascript/latest/references/core/versionManagement/VersioningState/) is returned.
 * @example
 * const webmap = new WebMap({
 *   portalItem: { // autocasts as new PortalItem()
 *     id: "e691172598f04ea8881cd2a4adaa45ba"
 *   }
 * });
 * const versioningStates = await utils.createVersioningStates(webmap, false);
 */
export function createVersioningStates(input: WebMap | VersionAdapter[], usePersistentReadSessions: boolean): Promise<Collection<VersioningState>>;

/**
 * Used to get a [Collection](https://developers.arcgis.com/javascript/latest/references/core/core/Collection/) of [VersioningStates](https://developers.arcgis.com/javascript/latest/references/core/versionManagement/VersioningState/) from a [View](https://developers.arcgis.com/javascript/latest/references/core/views/View/)
 *
 * @param view - View used to get a [Collection](https://developers.arcgis.com/javascript/latest/references/core/core/Collection/) of [VersioningStates](https://developers.arcgis.com/javascript/latest/references/core/versionManagement/VersioningState/).
 * @param usePersistentReadSessions - If set to `true`, the current version will have a read lock. Additionally, when switching versions, the new current version will also have a read lock.
 * @returns When resolved, a [Collection](https://developers.arcgis.com/javascript/latest/references/core/core/Collection/) of [VersioningStates](https://developers.arcgis.com/javascript/latest/references/core/versionManagement/VersioningState/) is returned.
 * @example
 * const webmap = new WebMap({
 *     portalItem: { // autocasts as new PortalItem()
 *     id: "e691172598f04ea8881cd2a4adaa45ba"
 *   }
 * });
 * const view = new View({
 *     map: webmap,
 *     container: "viewDiv",
 * });
 * const versioningStates = await utils.getVersioningStates(view, false);
 */
export function getVersioningStates(view: View, usePersistentReadSessions?: boolean): Promise<Collection<VersioningState>>;