import EsriLabelClass from "@arcgis/core/layers/support/LabelClass";
import type { LabelPlacement as EsriApiLabelPlacement } from "../support/esri.js";
import type { LabelSymbol3D } from "./LabelSymbol3D.js";
import type { TextSymbol } from "./TextSymbol.js";
export declare namespace LabelingInfo {
    /**
     * Converts an ArcGIS Portal JSON representation of a label class to its
     * Esri JavaScript API equivalent.
     *
     * @deprecated Use "json/*" modules instead.
     * @param labelingInfo The label class JSON to convert.
     */
    function toEsriApiLabelClass(labelingInfo: LabelingInfo): EsriLabelClass;
    /**
     * Converts a LabelClass object to its ArcGIS Portal JSON representation.
     *
     * @deprecated Use "json/*" modules instead.
     * @param labelClass The LabelClass object to convert.
     */
    function fromEsriApiLabelClass(labelClass: EsriLabelClass): LabelingInfo;
}
/**
 * The labelingInfo object specifies the label definition for a layer.
 *
 * See
 * {@link https://developers.arcgis.com/web-map-specification/objects/labelingInfo/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/labelingInfo/}.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface LabelingInfo {
    /**
     * This read-only web map property allows formatting of labels. Use
     * labelExpressionInfo instead.
     */
    labelExpression?: string;
    /**
     * This object allows label text to be read similar to that of the
     * popupInfo's description property. See
     * {@link https://developers.arcgis.com/web-map-specification/objects/labelExpressionInfo/}
     * {@link https://developers.arcgis.com/web-scene-specification/objects/labelExpressionInfo/}.
     */
    labelExpressionInfo?: {
        /**
         * The title of the expression.
         */
        title?: string;
        /**
         * Represents a simple template string. This property is deprecated as
         * of version 2.7 of the web map in favor of 'expression'.
         */
        value?: string;
        /**
         * An Arcade expression evaluating to either a string or a number.
         */
        expression?: string;
    };
    /**
     * This string property specifies the label placement with respect to that
     * of its feature. A list of label placement values categorized by feature
     * geometry types. See {@link LabelPlacement}.
     */
    labelPlacement?: LabelPlacement;
    /**
     * Represents the maximum scale at which the layer definition will be
     * applied.
     */
    maxScale?: number;
    /**
     * Represents the minimum scale at which the layer definition will be
     * applied.
     */
    minScale?: number;
    /**
     * The name of the label class.
     */
    name?: string;
    /**
     * The text symbol used to label.
     */
    symbol?: TextSymbol | LabelSymbol3D;
    /**
     * Boolean value indicating whether to display the coded values for the
     * specified field name(s).
     */
    useCodedValues?: boolean;
    /**
     * String template used to determine which features to label.
     */
    where?: string;
}
/**
 * Possible values used with {@link LabelingInfo.labelPlacement}.
 *
 * @deprecated Use "json/*" modules instead.
 */
export type LabelPlacement = "esriServerLinePlacementAboveAfter" | "esriServerLinePlacementAboveAlong" | "esriServerLinePlacementAboveBefore" | "esriServerLinePlacementAboveEnd" | "esriServerLinePlacementAboveStart" | "esriServerLinePlacementBelowAfter" | "esriServerLinePlacementBelowAlong" | "esriServerLinePlacementBelowBefore" | "esriServerLinePlacementBelowEnd" | "esriServerLinePlacementBelowStart" | "esriServerLinePlacementCenterAfter" | "esriServerLinePlacementCenterAlong" | "esriServerLinePlacementCenterBefore" | "esriServerLinePlacementCenterEnd" | "esriServerLinePlacementCenterStart" | "esriServerPointLabelPlacementAboveCenter" | "esriServerPointLabelPlacementAboveLeft" | "esriServerPointLabelPlacementAboveRight" | "esriServerPointLabelPlacementBelowCenter" | "esriServerPointLabelPlacementBelowLeft" | "esriServerPointLabelPlacementBelowRight" | "esriServerPointLabelPlacementCenterCenter" | "esriServerPointLabelPlacementCenterLeft" | "esriServerPointLabelPlacementCenterRight" | "esriServerPolygonPlacementAlwaysHorizontal";
export declare namespace LabelPlacement {
    /**
     * Converts from api label placement constants used in the ArcGIS JavaScript
     * API to their web map equivalents.
     *
     * @deprecated Use "json/*" modules instead.
     * @param type The ArcGIS JavaScript API label placement constant.
     */
    function fromEsriApiLabelPlacement(type: string): LabelPlacement;
    /**
     * Converts from ArcGIS REST/web map label placement constants to their Esri
     * JavaScript API equivalents.
     *
     * @deprecated Use "json/*" modules instead.
     * @param type The Portal JSON label placement constant.
     */
    function toEsriApiLabelPlacement(type: string): EsriApiLabelPlacement;
}
