/// <reference types="@arcgis/core/interfaces.d.ts" />
/// <reference types="../../index.d.ts" />
import { Use } from '@arcgis/components-controllers';
import { Nil } from '@arcgis/components-utils';
import { default as VersionManagementViewModel } from '@arcgis/core/widgets/VersionManagement/VersionManagementViewModel.js';
import { JsxNode, ToEvents, PublicLitElement as LitElement, TargetedEvent } from '@arcgis/lumina';
import { ArcgisReferenceElement } from '../../utils/component-utils';
import { ArcgisVersionManagementServiceItem } from '../arcgis-version-management-service-item/customElement.js';

export type VersionManagementViewModelWidget = InstanceType<typeof VersionManagementViewModel>;
declare const useVersionManagementViewModel: (component: import('@arcgis/components-controllers').StencilLifecycles & {
    manager: import('@arcgis/components-controllers').ControllerManager;
    el: HTMLElement;
    autoDestroyDisabled?: boolean;
    destroy?: () => Promise<void>;
} & Pick<VersionManagementViewModel, never> & {
    reactiveUtils?: typeof __esri.reactiveUtils;
    state?: "ready" | "loading" | "failed" | "disabled" | "executing" | "success" | undefined;
    icon: Nil | string;
    label: Nil | string;
    referenceElement: ArcgisReferenceElement | Nil | string;
    arcgisReady: import('@arcgis/components-controllers').EventEmitter;
    position: __esri.UIPosition;
    arcgisPropertyChange: import('@arcgis/components-controllers').EventEmitter<{
        name: string;
    }> | undefined;
    el: HTMLElement & {
        childElem?: HTMLElement & {
            ownedBy?: HTMLElement;
        };
        view?: __esri.MapView | __esri.SceneView | undefined;
    };
    autoDestroyDisabled: boolean;
    destroy: () => Promise<void>;
}, options?: {
    editConstructorProperties(props: unknown): unknown;
} | undefined) => VersionManagementViewModel;
type VersioningStateEventType = "version-changed" | "version-created" | "version-deleted" | "version-switched";
export interface VersioningStateEvent {
    type?: VersioningStateEventType;
    versionIdentifier?: __esri.VersionInfoVersionIdentifier;
    versioningState?: __esri.VersioningState;
}
export type InitialVersionInfo = {
    url: string;
    name: string;
};
/** The Version Management Component allows users to view available versions, change versions, delete versions, and alter versions.
The [View](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-View.html) will update to match the features on the selected version.
To learn more about version management please visit the [versioning guide doc](https://developers.arcgis.com/javascript/latest/utility-network/version-management-service/).

> The VersionManagement Component does not support proxied feature services or feature services that utilize stored credentials.

Note: Sign in to access the data in this sample, U/P: `viewer01`/`I68VGU^nMurF`
 */
export declare class ArcgisVersionManagement extends LitElement {
    private messages: {
        label: string;
        actions: {
            cancelSave: string;
            deleteVersion: string;
            editVersion: string;
            newVersion: string;
            refreshVersions: string;
            saveVersion: string;
            searchVersions: string;
            switchToVersion: string;
        };
        accessLevels: {
            private: string;
            protected: string;
            public: string;
        };
        executionErrors: {
            invalidVersionName: string;
            noAdvancedEditingUserTypeExtension: string;
            noFeatureServiceFound: string;
            notValidEnterpriseVersion: string;
            noVersionManagementServiceFound: string;
        };
        headers: {
            currentVersion: string;
            manageVersions: string;
            filterVersions: string;
            versionProperties: string;
            invalidInitialVersion: string;
            invalidInitialFeatureService: string;
        };
        input: {
            versionAccess: string;
            versionDescription: string;
            versionName: string;
            versionOwner: string;
        };
        loadErrors: {
            invalidInitialVersion: string;
            invalidInitialFeatureService: string;
            noFeatureServices: string;
            noViewProperty: string;
        };
    } & import('@arcgis/components-controllers').T9nMeta<{
        label: string;
        actions: {
            cancelSave: string;
            deleteVersion: string;
            editVersion: string;
            newVersion: string;
            refreshVersions: string;
            saveVersion: string;
            searchVersions: string;
            switchToVersion: string;
        };
        accessLevels: {
            private: string;
            protected: string;
            public: string;
        };
        executionErrors: {
            invalidVersionName: string;
            noAdvancedEditingUserTypeExtension: string;
            noFeatureServiceFound: string;
            notValidEnterpriseVersion: string;
            noVersionManagementServiceFound: string;
        };
        headers: {
            currentVersion: string;
            manageVersions: string;
            filterVersions: string;
            versionProperties: string;
            invalidInitialVersion: string;
            invalidInitialFeatureService: string;
        };
        input: {
            versionAccess: string;
            versionDescription: string;
            versionName: string;
            versionOwner: string;
        };
        loadErrors: {
            invalidInitialVersion: string;
            invalidInitialFeatureService: string;
            noFeatureServices: string;
            noViewProperty: string;
        };
    }>;
    allowEditingDisabled: boolean;
    /**
     * If true, the component will not be destroyed automatically when it is
     * disconnected from the document. This is useful when you want to move the
     * component to a different place on the page, or temporarily hide it. If this
     * is set, make sure to call the \`destroy\` method when you are done to prevent
     * memory leaks.
     */
    autoDestroyDisabled: boolean;
    closable: boolean;
    get initialVersionInfos(): InitialVersionInfo[];
    /**
     * The `initialVersionInfos` property enables users to initialize the Version Management Component with a predefined set of versions.
     * By providing an array of `InitialVersionInfo`, the component displays a specified version for each feature service upon initialization.
     */
    set initialVersionInfos(value: InitialVersionInfo[]);
    icon: Nil | string;
    label: string | undefined;
    /** Replace localized message strings with your own strings. */
    messageOverrides?: typeof this.messages._overrides;
    mode: Nil | string;
    /**
     * Specifies the number of versions displayed on each page of the Version Management Component.
     */
    pageSize: number;
    position: __esri.UIPosition;
    referenceElement: ArcgisReferenceElement | Nil | string;
    readonly state: "ready" | "loading" | "failed" | "disabled" | "executing" | "success";
    /**
     * This class provides functionality for managing versions in a versioned geodatabase.
     * In the event that the Version Management component is destroyed, the VersioningStates can be utilized to maintain the current state of the Version Management Component.
     * The Version Management Component can be reinitialized using a `Collection<VersioningState>`, or a predefined `Collection<VersioningState>` can be provided during the initial instantiation of the Version Management Component.
     */
    versioningStates: __esri.Collection<__esri.VersioningState>;
    view: __esri.MapView;
    /** Permanently destroy the component */
    destroy(): Promise<void>;
    readonly arcgisReady: TargetedEvent<this, undefined>;
    readonly arcgisVersioningStateChanged: TargetedEvent<this, VersioningStateEvent>;
}
export {};
