import type PortalItem from "@arcgis/core/portal/PortalItem";
import type { Source } from "../../app-config/web/PortalModelProperties.js";
import type { Event } from "../Event.js";
import { EventRegistry } from "../EventRegistry.js";
import type { Operation } from "../Operation.js";
import { OperationRegistry } from "../OperationRegistry.js";
import type { HasMaps, HasUITarget, LayersLike } from "../common.js";
/**
 * Corresponds to `VertiGIS.Mobile.Infrastructure.Portal.ArcGISPortalExtension`
 * in the VertiGIS.Mobile SDK.
 */
export interface ArcGISPortalExtension {
}
/**
 * Arguments for the "portal.choose-layers" operation.
 */
export interface ChooseLayersOptions extends HasMaps, HasUITarget {
    /**
     * Whether the user can choose multiple layers, or just one. Default is
     * `false`.
     */
    allowMultiple?: boolean;
    /**
     * Optionally specify the tags by which the Choose Layer modal will filter
     * out the displayed layers. If specified this will overwrite the configured
     * default in the Portal Model.
     */
    layerFilterTags?: string[];
    /**
     * Optionally specify the source that will be initially selected. If
     * specified this will overwrite the configured default in the Portal
     * Model.
     */
    initialSource?: Source;
    /**
     * Optionally specify the sources that we want to expose. If specified this
     * will overwrite the configured default in the Portal Model.
     */
    sources?: Source[];
}
/**
 * Result of the "portal.choose-layers" operation.
 */
export interface ChooseLayersResult extends HasMaps {
    /**
     * The layer(s) chosen by the user.
     */
    layers?: LayersLike;
}
/**
 * Information about a portal item to be saved.
 */
export interface PortalItemData {
    /**
     * The JSON data associated with the item.
     */
    data: unknown;
    /**
     * The portal type of the item.
     */
    type: string;
    /**
     * The URL of a thumbnail for the item.
     */
    thumbnail?: string;
}
/**
 * Arguments for the 'portal.create-or-update-item' operation.
 */
export interface CreateOrUpdateItemArgs extends PortalItemData {
    /**
     * The title of the resulting portal item. Must be provided if `showUI` is
     * `false`.
     */
    title?: string;
    /**
     * Whether to show UI elements associated with this operation. Defaults to
     * `true`.
     */
    showUI?: boolean;
    /**
     * Whether to prompt before overwriting an existing item. This must be set
     * to `false` to allow overwriting if `showUI` is also `false`. Defaults to
     * `true`.
     */
    promptForOverwrite?: boolean;
}
export declare class PortalEvents extends EventRegistry {
    protected readonly _prefix = "portal";
    /**
     * Raised when an ArcGIS Portal is initialized. Mobile only.
     *
     * @mobileOnly
     */
    get initialized(): Event<ArcGISPortalExtension>;
}
export declare class PortalOperations extends OperationRegistry {
    protected readonly _prefix = "portal";
    /**
     * Allows the user to browse/search the application's associated portal for
     * one or more layers. Web only.
     *
     * @webOnly
     */
    get chooseLayers(): Operation<ChooseLayersOptions, ChooseLayersResult>;
    /**
     * Creates or updates a portal item from the supplied data. Web only.
     *
     * @webOnly
     */
    get createOrUpdateItem(): Operation<CreateOrUpdateItemArgs, PortalItem>;
}
