import type Layer from "@arcgis/core/layers/Layer";
import type BuildingComponentSublayer from "@arcgis/core/layers/buildingSublayers/BuildingComponentSublayer";
import type BuildingGroupSublayer from "@arcgis/core/layers/buildingSublayers/BuildingGroupSublayer";
import type Sublayer from "@arcgis/core/layers/support/Sublayer";
import type SubtypeSublayer from "@arcgis/core/layers/support/SubtypeSublayer.js";
import type { PropertyDefs } from "../../support/Serializable.js";
import { SerializableBase } from "../../support/Serializable.js";
import type { ListMode } from "../../support/esri.js";
import type { LayerExtension } from "../_LayerExtension.js";
import type { SublayerExtension } from "../_SublayerExtension.js";
/**
 * Properties that can be used to initialize an instance of
 * {@link mapping/support/LayerListSettings!LayerListSettings}.
 */
export declare class LayerListSettingsProperties {
    /**
     * Whether this node is initially expanded to show children. No effect if
     * {@link included} is false. This value may not be set to true, if the
     * associated LayerExtension or SublayerExtension does not support
     * sublayers.
     */
    expanded?: boolean;
    /**
     * Whether this layer should be included in the layer list.
     */
    included?: boolean;
    /**
     * Whether child layers should be included in the layer list. This value may
     * not be set to true, if the associated LayerExtension or SublayerExtension
     * does not support sublayers.
     */
    childrenIncluded?: boolean;
}
declare const LayerListSettings_base: (abstract new (_properties?: LayerListSettingsProperties) => SerializableBase<LayerListSettingsProperties>) & (abstract new (...args: any[]) => import("../../support/observableUtils.js").ObservableMixin);
/**
 * Settings that affect the behavior and presentation of a layer in the layer
 * list.
 */
export declare class LayerListSettings extends LayerListSettings_base {
    /**
     * Whether this node is initially expanded to show children. No effect if
     * {@link included} is false. This value may not be set to true, if the
     * associated LayerExtension or SublayerExtension does not support
     * sublayers.
     */
    get expanded(): boolean;
    set expanded(value: boolean);
    /**
     * Whether this layer should be included in the layer list.
     */
    get included(): boolean;
    set included(value: boolean);
    /**
     * Whether this layer is effectively included in the layer list.
     */
    get effectivelyIncluded(): boolean;
    /**
     * Initial value of the expanded property.
     */
    get initialExpanded(): boolean;
    /**
     * Initial value of the childrenIncluded property.
     */
    get initialChildrenIncluded(): boolean;
    /**
     * Initial value of the included property.
     */
    get initialIncluded(): boolean;
    /**
     * Whether child layers should be included in the layer list. This value may
     * not be set to true, if the associated LayerExtension or SublayerExtension
     * does not support sublayers.
     */
    get childrenIncluded(): boolean;
    set childrenIncluded(value: boolean);
    protected _initialExpanded: boolean;
    protected _initialIncluded: boolean;
    protected _initialChildrenIncluded: boolean;
    private _childrenIncluded;
    private _expanded;
    private _included;
    protected _getSerializableProperties(): PropertyDefs<LayerListSettingsProperties>;
}
/**
 * LayerListSettings bound to a LayerExtension or SublayerExtension.
 */
export declare abstract class ExtensionBaseLayerListSettings extends LayerListSettings {
    /**
     * The LayerExtension or SublayerExtension to which the Layer List settings
     * apply.
     */
    protected readonly _extension: LayerExtension | SublayerExtension;
    /**
     * The Layer or Sublayer associated with the extension.
     */
    protected abstract get _esriLayer(): Layer | Sublayer | BuildingGroupSublayer | BuildingComponentSublayer | SubtypeSublayer;
    /**
     * The path to the listMode property, relative to the extension.
     */
    protected abstract get _listModePath(): string;
    /**
     * An optional default to use for the ChildrenIncluded setting if there is
     * no layer and the setting has been explicitly set on instantiation.
     */
    private readonly _defaultChildrenIncluded;
    /**
     * The initial LayerListMode of the layer. Used for determining the default
     * value for serialization.
     */
    private _initialEsriLayerListMode;
    constructor(properties: LayerListSettingsProperties, extension: LayerExtension | SublayerExtension, defaultChildrenIncluded?: boolean);
    get included(): boolean;
    set included(value: boolean);
    get effectivelyIncluded(): boolean;
    get childrenIncluded(): boolean;
    set childrenIncluded(value: boolean);
    get expanded(): boolean;
    set expanded(value: boolean);
    /**
     * Whether the corresponding Layer/Sublayer Extension supports children.
     */
    protected abstract get _supportsChildren(): boolean;
    /**
     * Invoked when the parent layer extension is initialized.
     */
    onLayerExtensionInitialized(): void;
    protected _getSerializableProperties(): PropertyDefs<LayerListSettingsProperties>;
    private _childrenIncludedSerializationDefault;
    /**
     * Set the layer's list mode to the closest matching value based on the
     * current values of included and childrenIncluded.
     */
    private _setListMode;
}
/**
 * Converts a ListMode into LayerListSettingsProperties.
 *
 * @param listMode A layer's listMode.
 */
export declare function fromLayerListMode(listMode: ListMode): LayerListSettingsProperties;
export {};
