import type { SublayerReference } from "../mapping/_SublayerExtension.js";
import type { PropertyDefs } from "../support/Serializable.js";
import { SerializableBase } from "../support/Serializable.js";
import { ObservableMap } from "../utilities/ObservableMap.js";
/**
 * Sublayer preset properties with a sublayer reference.
 */
export type SublayerPresetJson = {
    sublayer: string | number | SublayerReference;
} & LayerPresetSettingProperties;
/**
 * Properties that can be passed into the constructor for
 * {@link layer-preset/LayerPresetSettings!LayerPresetSetting}.
 */
export interface LayerPresetSettingProperties {
    /**
     * See
     * {@link layer-preset/LayerPresetSettings!LayerPresetSetting.definitionExpression}.
     */
    definitionExpression?: string | undefined;
    /**
     * See {@link layer-preset/LayerPresetSettings!LayerPresetSetting.visible}.
     */
    visible?: boolean;
    /**
     * See {@link layer-preset/LayerPresetSettings!LayerPresetSetting.opacity}.
     */
    opacity?: number;
    /**
     * See {@link layer-preset/LayerPresetSettings!LayerPresetSetting.expanded}.
     */
    expanded?: boolean;
    /**
     * See {@link layer-preset/LayerPresetSettings!LayerPresetSetting.minScale}.
     */
    minScale?: number;
    /**
     * See {@link layer-preset/LayerPresetSettings!LayerPresetSetting.maxScale}.
     */
    maxScale?: number;
    /**
     * See
     * {@link layer-preset/LayerPresetSettings!LayerPresetSetting.childrenIncludedInLayerList}.
     */
    childrenIncludedInLayerList?: boolean;
    /**
     * See
     * {@link layer-preset/LayerPresetSettings!LayerPresetSetting.includedInLayerList}.
     */
    includedInLayerList?: boolean;
    /**
     * See {@link layer-preset/LayerPresetSettings!LayerPresetSetting.sublayers}.
     */
    readonly sublayers?: SublayerPresetJson[];
}
/**
 * Layer preset settings for an individual layer or sublayer.
 */
export declare class LayerPresetSetting extends SerializableBase<LayerPresetSettingProperties> {
    /**
     * DefinitionExpression of the layer.
     */
    definitionExpression?: string | undefined;
    /**
     * Visibility of the layer.
     */
    visible?: boolean;
    /**
     * If set, overrides the opacity of the layer or sublayer when the preset is
     * applied. No effect if the type of layer or sublayer does not allow
     * changing opacity.
     */
    opacity?: number;
    /**
     * Whether the layer is expanded in the layer list.
     */
    expanded?: boolean;
    /**
     * If set, overrides the minimum scale of the layer or sublayer when the
     * preset is applied. No effect if the type of layer or sublayer does not
     * allow changing scale.
     */
    minScale?: number;
    /**
     * If set, overrides the maximum scale of the layer or sublayer when the
     * preset is applied. No effect if the type of layer or sublayer does not
     * allow changing scale.
     */
    maxScale?: number;
    /**
     * Controls whether sublayers are included or hidden in the layer list.
     */
    childrenIncludedInLayerList?: boolean;
    /**
     * Controls whether this layer should be included in the layer list.
     */
    includedInLayerList?: boolean;
    /**
     * LayerPresetSetting that can be applied to the sublayers of the layer this
     * LayerPreset is applied to.
     */
    sublayers: ObservableMap<string | number | SublayerReference, LayerPresetSetting>;
    constructor(properties?: LayerPresetSettingProperties);
    protected _getSerializableProperties(): PropertyDefs<LayerPresetSettingProperties>;
}
