import type EsriMap from "@arcgis/core/Map";
import type { EntityBaseProperties } from "../Entity.js";
import { EntityBase } from "../Entity.js";
import type { BasemapProperties } from "../mapping/BasemapExtension.js";
import type { MapExtension } from "../mapping/MapExtension.js";
import type { LayerReference } from "../mapping/_LayerExtension.js";
import type { SublayerReference } from "../mapping/_SublayerExtension.js";
import type { PropertyDefs } from "../support/Serializable.js";
import type { WellKnownBasemap } from "../support/esri.js";
import type { LayerPresetSettingProperties } from "./LayerPresetSettings.js";
import { LayerPresetSetting } from "./LayerPresetSettings.js";
/**
 * Layer preset properties with a layer reference.
 */
export type LayerPresetJson = {
    layer: string | LayerReference;
} & LayerPresetSettingProperties;
/**
 * Properties that can be passed into the constructor for
 * {@link layer-preset/LayerPreset!LayerPreset}.
 */
export interface LayerPresetProperties extends EntityBaseProperties {
    /**
     * See {@link layer-preset/LayerPreset!LayerPreset.icon}.
     */
    icon?: string;
    /**
     * See {@link layer-preset/LayerPreset!LayerPreset.iconUrl}.
     */
    iconUrl?: string;
    /**
     * See {@link layer-preset/LayerPreset!LayerPreset.description}.
     */
    description?: string;
    /**
     * See {@link layer-preset/LayerPreset!LayerPreset.title}.
     */
    title?: string;
    /**
     * See {@link layer-preset/LayerPreset!LayerPreset.layers}.
     */
    layers?: LayerPresetJson[];
    /**
     * See {@link layer-preset/LayerPreset!LayerPreset.basemap}.
     */
    basemap?: WellKnownBasemap | BasemapProperties;
    /**
     * See {@link layer-preset/LayerPreset!LayerPreset.basemapOptions}.
     */
    basemapOptions?: (WellKnownBasemap | BasemapProperties)[];
}
/**
 * A LayerPreset that can be applied to a map or a map extension.
 */
export declare class LayerPreset extends EntityBase<LayerPresetProperties> {
    /**
     * An optional icon that can be displayed when listing the LayerPreset.
     */
    icon: string;
    /**
     * An optional url to an image that can be displayed when listing the
     * LayerPreset.
     */
    iconUrl: string;
    /**
     * A human readable title for the LayerPreset.
     */
    title: string;
    /**
     * A human readable description of the LayerPreset.
     */
    description: string;
    /**
     * LayerPresetSettings that can be applied to the layers of a map.
     */
    layers: Map<string | LayerReference | SublayerReference, LayerPresetSetting>;
    /**
     * Current basemap of a map.
     */
    basemap: WellKnownBasemap | BasemapProperties;
    /**
     * Available basemap options of a map.
     */
    basemapOptions: (WellKnownBasemap | BasemapProperties)[];
    /**
     * @inheritDoc
     */
    protected readonly _itemType: string;
    /**
     * Creates a LayerPreset from an ESRI map or map extension.
     *
     * @param mapOrExtension The map or map extension to create a LayerPreset
     *   from.
     */
    static createFrom(mapOrExtension: EsriMap | MapExtension): LayerPreset;
    /**
     * Applies this LayerPreset to a map extension or a collection of map
     * extensions.
     *
     * @param mapOrExtension The map extension or collection of map extensions
     *   to apply the LayerPreset to.
     */
    applyTo(mapOrExtension: EsriMap | MapExtension | Iterable<EsriMap> | Iterable<MapExtension>): Promise<void>;
    protected _getSerializableProperties(): PropertyDefs<LayerPresetProperties>;
}
