import FeatureType from "@arcgis/core/layers/support/FeatureType";
import type { Domain } from "./Domain.js";
import type { Template } from "./Template.js";
export declare namespace Type {
    /**
     * Converts an ArcGIS Portal JSON representation of feature type to its Esri
     * JavaScript API equivalent.
     *
     * @deprecated Use "json/*" modules instead.
     * @param json The feature type JSON to convert.
     */
    function toEsriApiFeatureType(json: Type): FeatureType;
    /**
     * Converts an Esri JavaScript API FeatureType object to its ArcGIS Portal
     * JSON representation.
     *
     * @deprecated Use "json/*" modules instead.
     * @param featureType The FeatureType object to convert.
     */
    function fromEsriApiFeatureType(featureType: FeatureType): Type;
}
/**
 * Types contain information about the combinations of attributes allowed for
 * features in the dataset. Each feature in the dataset can have a type,
 * indicated in its typeIdField, which is used in LayerDefinition.
 *
 * See {@link https://developers.arcgis.com/web-map-specification/objects/type/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/type/}.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface Type {
    /**
     * A set of domain objects for each domain in the type.
     */
    domains?: Record<string, Domain>;
    /**
     * A unique numerical ID for the type.
     */
    id?: number | string;
    /**
     * A string containing a user-friendly name for the type. This might be
     * shown on a menu of feature types that editors can create in the
     * collection.
     */
    name?: string;
    /**
     * An array of template objects describing features that can be created in
     * this layer. Templates are used with map notes, other feature collections,
     * and editable web-based CSV layers. They are not used with ArcGIS feature
     * services, which already have feature templates defined in the service.
     *
     * Templates are defined as a property of the layer definition when there
     * are no types defined; otherwise, templates are defined as properties of
     * the types.
     *
     * You might have more than one template per type if the attributes of
     * available features vary slightly. For example, you might have a type
     * named Copper pipe containing two templates: one whose DIAMETER property
     * is 12 and another whose DIAMETER property is 10.
     */
    templates?: Template[];
}
