import Collection from "@arcgis/core/core/Collection";
import Content from "@arcgis/core/popup/content/Content.js";
import type { EntityBaseProperties } from "../Entity.js";
import { EntityBase } from "../Entity.js";
import { type PopupElementJson } from "../json/PopupInfoJson.js";
import type { PropertyDefs } from "../support/Serializable.js";
import type { FeatureSettings } from "./FeatureSettings.js";
/**
 * Properties that can be passed into the constructor for
 * {@link PopupContentExtension}.
 */
export interface PopupContentExtensionProperties extends EntityBaseProperties {
    /**
     * The ESRI Content instance to be extended.
     */
    content?: Content | ContentProperties | null;
    /**
     * Whether the Content is visible when being displayed in a summary view.
     */
    visibleInSummary?: boolean;
    /**
     * Names of fields that will be hidden when displayed in the a summary view.
     * This property is only applied to "fields" Content types.
     */
    summaryHiddenFields?: string[];
}
/**
 * Properties that extend the ArcGis portal representation of a PopupContent.
 */
export interface ContentProperties extends PopupElementJson {
    /**
     * A popupContent name referring to an existing popupContent in a
     * featureSettings. The popupContent extension will attempt to find an
     * existing popupContent in its parent featureSettings.
     */
    $ref?: ContentRef;
}
/**
 * A set of properties used to reference an ESRI Content instance.
 */
export interface ContentRef {
    /**
     * The content type.
     */
    type: string;
    /**
     * The index of the content item within the popup's content list.
     */
    index?: number;
    /**
     * The title of the content. For "expression" content types, this is the
     * title of the expressionInfo. This property is invalid for "text" and
     * "custom" content types.
     */
    title?: string;
    /**
     * The text value of "text" content types. This property is invalid for all
     * other content types.
     */
    text?: string;
}
/**
 * Extends the capabilities of an Esri popup Content object.
 */
export declare class PopupContentExtension extends EntityBase<PopupContentExtensionProperties> {
    /**
     * The Esri PopupContent object being extended.
     */
    get content(): Content;
    /**
     * The parent featureSettings.
     */
    get featureSettings(): FeatureSettings;
    visibleInSummary: boolean;
    summaryHiddenFields: Collection<string>;
    /**
     * @inheritDoc
     */
    protected readonly _itemType: string;
    private _content;
    private _featureSettings;
    private _originalRef;
    private get _index();
    /**
     * Creates a new instance of {@link PopupContentExtension}.
     *
     * @param properties An object containing initial property values to set.
     */
    constructor(properties?: PopupContentExtensionProperties);
    /**
     * Checks to see if a popup Content item matches a popup Content reference.
     *
     * @param popupContent The popupContent or PopupContentExtension to match
     *   with a reference.
     * @param popupContentIndex The index of the Content or
     *   PopupContentExtension relative to the array of PopupContent.
     * @param popupContentRef The popupContent reference to match with a
     *   popupContent.
     */
    static matchesRef(popupContent: (PopupContentExtension | Content)[], popupContentIndex: number, popupContentRef: ContentProperties): boolean;
    protected _getSerializableProperties(): PropertyDefs<PopupContentExtensionProperties>;
    protected _onInitialize(): Promise<void>;
    private _setContent;
    private _getDefaultSummaryVisibility;
}
