@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
575 lines (573 loc) • 32.5 kB
TypeScript
import type Extent from "../../geometry/Extent.js";
import type SpatialReference from "../../geometry/SpatialReference.js";
import type EditFieldsInfo from "../support/EditFieldsInfo.js";
import type Field from "../support/Field.js";
import type FieldsIndex from "../support/FieldsIndex.js";
import type GeometryFieldsInfo from "../support/GeometryFieldsInfo.js";
import type LayerFloorInfo from "../support/LayerFloorInfo.js";
import type Relationship from "../support/Relationship.js";
import type Subtype from "../support/Subtype.js";
import type ElevationInfo from "../../symbols/support/ElevationInfo.js";
import type { EditingInfo, FeatureLayerCapabilities, FieldDomainOptions } from "../types.js";
import type { DomainUnion } from "../support/types.js";
import type { TimeZone } from "../../time/types.js";
import type { ElevationInfoProperties } from "../../symbols/support/ElevationInfo.js";
import type { LayerFloorInfoProperties } from "../support/LayerFloorInfo.js";
import type { ExtentProperties } from "../../geometry/Extent.js";
import type { SpatialReferenceProperties } from "../../geometry/SpatialReference.js";
export interface FeatureLayerBaseProperties extends Partial<Pick<FeatureLayerBase, "copyright" | "dateFieldsTimeZone" | "definitionExpression" | "displayField" | "gdbVersion" | "geometryType" | "globalIdField" | "hasM" | "hasZ" | "layerId" | "objectIdField" | "returnM" | "returnZ" | "sourceJSON" | "url">> {
/**
* Specifies how features are placed on the vertical axis (z). This property may only be used
* in a [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). See the [ElevationInfo sample](https://developers.arcgis.com/javascript/latest/sample-code/scene-elevationinfo/)
* for an example of how this property may be used.
*
* > [!WARNING]
* >
* > If the elevation info is not specified, the effective elevation depends on the context and could vary per graphic.
*/
elevationInfo?: ElevationInfoProperties | null;
/**
* When a feature layer is configured as floor-aware, it has a floorInfo property defined.
* A floor-aware layer is a layer that contains indoor GIS data representing features that
* can be located on a specific floor of a building.
*
* @since 4.19
*/
floorInfo?: LayerFloorInfoProperties | null;
/** The full extent of the layer. */
fullExtent?: ExtentProperties | null;
/**
* The historic moment to query. If historicMoment is not specified, the query
* will apply to the current features.
*/
historicMoment?: (Date | number | string) | null;
/**
* The spatial reference of the layer. When creating the layer from a
* [url](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#url), the spatial reference is read from the service.
*
* When creating a FeatureLayer from client-side features, this property is
* inferred from the geometries of the features provided in the layer's [source](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#source)
* property.
*/
spatialReference?: SpatialReferenceProperties;
/**
* The title of the layer used to identify it in places such as the [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-legend/)
* and [LayerList](https://developers.arcgis.com/javascript/latest/references/core/widgets/LayerList/).
*
* When loading a layer by service url, the title is derived from the service name.
* If the service has several layers, then the title of each layer will be the concatenation of the service name
* and the layer name.
* When the layer is loaded from a portal item, the title of the portal item will be used instead.
* Finally, if a layer is loaded as part of a webmap or a webscene, then the title of the layer as stored in the webmap/webscene will be used.
*/
title?: string | null;
}
/**
* FeatureLayerBase is a mixin that adds common properties and methods to [FeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/), [SubtypeGroupLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/SubtypeGroupLayer/) and [CatalogLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/CatalogLayer/).
*
* @since 4.25
*/
export abstract class FeatureLayerBase {
constructor(...args: any[]);
/**
* Describes the layer's supported capabilities.
*
* @example
* // Once the layer loads, check if the
* // supportsAdd operations is enabled on the layer
* await featureLayer.load();
* if (featureLayer.capabilities.operations.supportsAdd) {
* // if new features can be created in the layer
* // set up the UI for editing
* setupEditing();
* }
*/
get capabilities(): FeatureLayerCapabilities;
/** Copyright information for the layer. */
accessor copyright: string | null | undefined;
/**
* The time zone that dates are stored in. This property does not apply to date fields referenced by
* [timeInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#timeInfo) or [editFieldsInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#editFieldsInfo).
*
* Even though dates are transmitted as UTC epoch values, this property may be useful when constructing date or time [where clauses for querying](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#date-query).
* If constructing date or time where clauses, use [FieldsIndex.getTimeZone()](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FieldsIndex/#getTimeZone) to get the
* time zone for the given date field.
*
* Set this property in the layer constructor if you are creating [client-side](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#client-side) feature layers
* to indicate the time zone of the date fields. The [date field](https://developers.arcgis.com/javascript/latest/references/core/layers/support/Field/#type) must exist in the layer's `fields` array for client-side
* [feature layers](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#client-side) if the `dateFieldsTimeZone` is specified.
*
* @since 4.28
* @see [Wikipedia - List of tz database time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
* @see [Date and time queries](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/#date-query)
* @see [Date-time queries | Time zone properties](https://developers.arcgis.com/rest/services-reference/enterprise/query-feature-service-layer/#time-zone-properties)
* @example
* const layer = new FeatureLayer({
* // layer's fields definition
* fields: [
* {
* name: "ObjectID",
* alias: "ObjectID",
* type: "oid"
* }, {
* name: "type",
* alias: "Type",
* type: "string"
* }, {
* name: "recordedDate",
* alias: "recordedDate",
* type: "date"
* }],
* dateFieldsTimeZone: "America/New_York", // date field values in are eastern time zone
* objectIdField: "ObjectID", // inferred from fields array if not specified
* geometryType: "point", // geometryType and spatialReference are inferred from the first feature
* // in the source array if they are not specified.
* spatialReference: { wkid: 4326 },
* source: graphics // an array of graphics with geometry and attributes
* });
* map.add(layer);
*/
accessor dateFieldsTimeZone: TimeZone | null | undefined;
/**
* This property is set by the service publisher and indicates that dates should be considered without the local timezone.
* This applies to both requests and responses.
*
* > [!WARNING]
* >
* > **Known Limitations**
* >
* > - This capability is only available with services published with ArcGIS Enterprise 10.9 or greater.
* > - Editing is not supported for FeatureLayers if `datesInUnknownTimezone` is true. The layer's [editingEnabled](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#editingEnabled) property will be set to `false`.
* > - When setting `timeExtent` in a [Query](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/), the layer view's [filter.timeExtent](https://developers.arcgis.com/javascript/latest/references/core/views/layers/FeatureLayerView/#filter) or
* > layer's [timeExtent](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#timeExtent), dates must be defined in terms of UTC as illustrated in the code below.
* > When using `layer.timeInfo.fullTimeExtent` in conjunction with [TimeSlider](https://developers.arcgis.com/javascript/latest/references/core/widgets/TimeSlider/), the local timezone offset must be removed. See the code snippet below.
*
* @default false
* @since 4.21
* @see [ArcGIS REST API - New in 10.9](https://developers.arcgis.com/rest/services-reference/enterprise/layer-table/#new-in-109)
* @see [What's new in ArcGIS Server](https://enterprise.arcgis.com/en/server/latest/get-started/windows/what-s-new-in-arcgis-for-server.htm)
* @see [Edit map service settings](https://enterprise.arcgis.com/en/server/latest/publish-services/windows/edit-map-service-settings.htm#LI_A5825E4A9A3A42E991C662CD7B76A860)
* @example
* // Only download data for the year 2020.
* // if the layer supports unknown time zone then create
* // the dates in UTC
* if (layer.datesInUnknownTimezone) {
* layer.timeExtent = new TimeExtent({
* start: new Date(Date.UTC(2020, 0, 1)),
* end: new Date(Date.UTC(2021, 0, 1))
* });
* }
* else {
* layer.timeExtent = new TimeExtent({
* start: new Date(2020, 0, 1),
* end: new Date(2021, 0, 1)
* });
* }
* @example
* // set up the timeslider for a service with an unknown timezone
* if (layer.datesInUnknownTimezone) {
* const timeSlider = new TimeSlider({
* view: view,
* container: "timeSliderDiv",
* timeVisible: true,
* });
* view.ui.add(timeSlider, "bottom-left");
*
* view.whenLayerView(layer).then((layerView) => {
* // get the layer's fullTimeExtent and remove the local
* // time zone offset
* const timExtent = new TimeExtent({
* start: removeLocalOffset(layer.timeInfo.fullTimeExtent.start),
* end: removeLocalOffset(layer.timeInfo.fullTimeExtent.end)
* });
*
* timeSlider.fullTimeExtent = timExtent;
* timeSlider.stops = {
* interval: layer.timeInfo.interval;
* };
* });
* }
*
* // Remove the local time zone offset from dates
* function removeLocalOffset(localTime) {
* return new Date(
* localTime.getUTCFullYear(),
* localTime.getUTCMonth(),
* localTime.getUTCDate(),
* localTime.getUTCHours(),
* localTime.getUTCMinutes(),
* localTime.getUTCSeconds(),
* localTime.getUTCMilliseconds()
* );
* }
*/
get datesInUnknownTimezone(): boolean;
/**
* The SQL where clause used to filter features on the client. Only the features that satisfy the definition
* expression are displayed in the [View](https://developers.arcgis.com/javascript/latest/references/core/views/View/). Setting a definition expression is useful
* when the dataset is large and you don't want to bring all features to the client for analysis.
* Definition expressions may be set when a layer is constructed prior to it loading in the view or
* after it has been added to the map. If the definition expression is set after the layer has been added to the map, the view will
* automatically refresh itself to display the features that satisfy the new definition expression.
*
* @example
* // Set definition expression in constructor to only display trees with scientific name Ulmus pumila
* const layer = new FeatureLayer({
* url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Landscape_Trees/FeatureServer/0",
* definitionExpression: "Sci_Name = 'Ulmus pumila'"
* });
* @example
* // Set the definition expression directly on layer instance to only display trees taller than 50ft
* layer.definitionExpression = "HEIGHT > 50";
*/
accessor definitionExpression: string | null | undefined;
/** The name of the layer's primary display field. The value of this property matches the name of one of the fields of the layer. */
accessor displayField: string | null | undefined;
/**
* The editor tracking fields, which record who adds or edits the data through the feature service
* and when edits are made.
*/
get editFieldsInfo(): EditFieldsInfo | null | undefined;
/** Specifies information about editing. */
get editingInfo(): EditingInfo | null | undefined;
/**
* Describes effective capabilities of the layer taking in to consideration privileges of the currently signed-in user.
*
* @since 4.26
*/
get effectiveCapabilities(): FeatureLayerCapabilities | null | undefined;
/**
* Indicates whether the layer is editable taking in to consideration privileges of the
* currently signed-in user.
*
* @since 4.26
*/
get effectiveEditingEnabled(): boolean;
/**
* Specifies how features are placed on the vertical axis (z). This property may only be used
* in a [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). See the [ElevationInfo sample](https://developers.arcgis.com/javascript/latest/sample-code/scene-elevationinfo/)
* for an example of how this property may be used.
*
* > [!WARNING]
* >
* > If the elevation info is not specified, the effective elevation depends on the context and could vary per graphic.
*/
get elevationInfo(): ElevationInfo | null | undefined;
set elevationInfo(value: ElevationInfoProperties | null | undefined);
/**
* A convenient property that can be used to make case-insensitive lookups for a field by name.
* It can also provide a list of the [date fields](https://developers.arcgis.com/javascript/latest/references/core/layers/support/FieldsIndex/#dateFields) in a layer.
*
* @since 4.12
* @example
* // lookup a field by name. name is case-insensitive
* const field = layer.fieldsIndex.get("SoMeFiEld");
*
* if (field) {
* console.log(field.name); // SomeField
* }
*/
get fieldsIndex(): FieldsIndex<Field>;
/**
* When a feature layer is configured as floor-aware, it has a floorInfo property defined.
* A floor-aware layer is a layer that contains indoor GIS data representing features that
* can be located on a specific floor of a building.
*
* @since 4.19
*/
get floorInfo(): LayerFloorInfo | null | undefined;
set floorInfo(value: LayerFloorInfoProperties | null | undefined);
/** The full extent of the layer. */
get fullExtent(): Extent | null | undefined;
set fullExtent(value: ExtentProperties | null | undefined);
/**
* The version of the geodatabase of the feature service data. Read
* the [Overview of versioning](https://pro.arcgis.com/en/pro-app/latest/help/data/geodatabases/overview/overview-of-versioning-in-arcgis-pro.htm) topic for more details
* about this capability.
*/
accessor gdbVersion: string | null | undefined;
/**
* Provides information on the system maintained area and length fields along with their respective units.
*
* @since 4.19
* @see [ArcGIS REST API documentation](https://developers.arcgis.com/rest/services-reference/layer-feature-service-.htm)
*/
get geometryFieldsInfo(): GeometryFieldsInfo | null | undefined;
/**
* The geometry type of features in the layer. All features must be of the same type.
* This property is read-only when the layer is created from a [url](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#url).
*
* When creating a FeatureLayer from [client-side features](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#client-side), this property is
* inferred by the geometryType of the features provided in the layer's [source](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#source)
* property. If the layer's [source](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#source) is an empty array at the time of initialization,
* this property must be set.
*
* @see [Add an array of client-side features](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#client-side)
*/
accessor geometryType: "point" | "polygon" | "polyline" | "multipoint" | "multipatch" | "mesh";
/**
* The name of a `gid` field containing a globally unique identifier for each
* feature in the layer. This may be null or undefined if the layer does not have a
* globally unique identifier field.
*
* @since 4.33
* @see [FeatureLayer.fields](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#fields)
*/
accessor globalIdField: string | null | undefined;
/**
* Indicates whether the client-side features in the layer have `M` (measurement) values.
* Use the `supportsM` property in the FeatureLayer's [capabilities.data](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#capabilities)
* object to verify if `M` values are supported on [feature service](https://developers.arcgis.com/rest/services-reference/feature-service.htm) features.
*/
accessor hasM: boolean;
/**
* Indicates whether the client-side features in the layer have `Z` (elevation) values.
* Refer to [elevationInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#elevationInfo) for details regarding placement and rendering
* of features with z-values in 3D [SceneViews](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/).
* Use the `supportsZ` property in the FeatureLayer's [capabilities.data](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#capabilities)
* object to verify if `Z` values are supported on [feature service](https://developers.arcgis.com/rest/services-reference/feature-service.htm) features.
*/
accessor hasZ: boolean;
/**
* The historic moment to query. If historicMoment is not specified, the query
* will apply to the current features.
*/
get historicMoment(): Date | null | undefined;
set historicMoment(value: (Date | number | string) | null | undefined);
/**
* Returns `true` if the layer is loaded from a non-spatial table in a service. Non-spatial tables do not have
* a spatial column that represent geographic features.
*
* @default false
* @since 4.11
* @see [Map.tables](https://developers.arcgis.com/javascript/latest/references/core/Map/#tables)
* @see [WebMap.tables](https://developers.arcgis.com/javascript/latest/references/core/WebMap/#tables)
* @see [Map.allTables](https://developers.arcgis.com/javascript/latest/references/core/Map/#allTables)
* @see [WebMap.allTables](https://developers.arcgis.com/javascript/latest/references/core/WebMap/#allTables)
*/
get isTable(): boolean;
/**
* The layer ID, or layer index, of a Feature Service layer. This is particularly useful when
* loading a single feature layer with the [portalItem](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#portalItem) property from a service containing
* multiple layers. You can specify this value in one of two scenarios:
*
* * When loading the layer via the [portalItem](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#portalItem) property.
* * When pointing the layer's [url](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#url) directly to a feature service.
*
* If a layerId is not specified in either of the above scenarios, then the first layer
* in the service (`layerId = 0`) is selected.
*
* @example
* // loads the third layer in the given Portal Item
* const layer = new FeatureLayer({
* portalItem: {
* id: "8d26f04f31f642b6828b7023b84c2188"
* },
* layerId: 2
* });
* @example
* // If not specified, the first layer (layerId: 0) will be returned
* const layer = new FeatureLayer({
* portalItem: {
* id: "8d26f04f31f642b6828b7023b84c2188"
* }
* });
* @example
* // Can also be used if URL points to service and not layer
* const layer = new FeatureLayer({
* // Notice that the url doesn't end with /2
* url: "http://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/MonterreyBayCanyon_WFL/FeatureServer",
* layerId: 2
* });
* @example
* // This code returns the same layer as the previous snippet
* const layer = new FeatureLayer({
* // The layer id is specified in the URL
* url: "http://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/MonterreyBayCanyon_WFL/FeatureServer/2",
* });
*/
accessor layerId: number;
/**
* The name of the object id [Field](https://developers.arcgis.com/javascript/latest/references/core/layers/support/Field/) containing a unique identifier for each feature in the layer.
* The object id field for a [FeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/) can contain either numeric or string values.
* Some [feature layers](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/) use one or more [unique id fields](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#uniqueIdFields)
* to uniquely identify features.
* Due to the complexity of object ids and unique ids, it is strongly recommended to use [Graphic.getObjectId()](https://developers.arcgis.com/javascript/latest/references/core/Graphic/#getObjectId)
* method to obtain a feature's unique identifier.
*
* If this property is not defined when creating a [client-side feature layer](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#client-side),
* the object-id field will be automatically inferred from the layer's `fields` array.
*
* @see [Add an array of client-side features](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#client-side)
* @example
* // See the sample snippet for the source and fields properties
* const layer = new FeatureLayer({
* source: features,
* fields: fields,
* objectIdField: "ObjectID", // field name of the Object IDs
* geometryType: "point",
* renderer: <renderer>
* });
*/
accessor objectIdField: string;
/**
* The IANA time zone the author of the service intended data from date fields to be viewed in.
*
* @since 4.28
*/
get preferredTimeZone(): TimeZone | null | undefined;
/**
* Array of [relationships](https://developers.arcgis.com/javascript/latest/references/core/layers/support/Relationship/) set up for the layer. Each object in the array describes the layer's
* [Relationship](https://developers.arcgis.com/javascript/latest/references/core/layers/support/Relationship/) with another layer or table.
*
* @since 4.9
* @see [FeatureLayer.queryRelatedFeatures()](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#queryRelatedFeatures)
* @example
* // print out layer's relationship length and each relationship info to console
* layer.when(function () {
* console.log("layer relationships", layer.relationships.length);
*
* layer.relationships.forEach(function (relationship) {
* console.log("relationship id:", relationship.id)
* console.log("relationship cardinality:", relationship.cardinality)
* console.log("relationship key field:", relationship.keyField)
* console.log("relationship name:", relationship.name)
* console.log("relationship relatedTableId:", relationship.relatedTableId)
* });
* });
*/
get relationships(): Relationship[] | null | undefined;
/**
* When `true`, indicates that M values will be returned. When
* `false`, indicates that M values will never be returned. The layer view
* determines whether to include M values in feature queries when the
* property value is `undefined`.
*/
accessor returnM: boolean | null | undefined;
/**
* When `true`, indicates that z-values will always be returned. When
* `false`, indicates that z-values will never be returned. The layer view
* determines whether to include z-values in feature queries when the
* property value is `undefined`.
*/
accessor returnZ: boolean | null | undefined;
/**
* The service definition expression limits the features available for display and query. You can define additional filters on the layer in addition to the service definition expression
* by setting layer's [definitionExpression](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#definitionExpression). For example, if the service definition expression is set to display data where `"STATE_NAME = 'California'"`
* you could use `definitionExpression` to only display a subset of the features in California, for example using `"COUNTY='San Diego'"`.
*
* @since 4.16
* @see [Set hosted feature layer view definition](https://doc.arcgis.com/en/arcgis-online/manage-data/set-view-definition.htm)
*/
get serviceDefinitionExpression(): string | null | undefined;
/**
* Indicates the portal item of the hosted feature service that contains this layer.
*
* @since 5.0
*/
get serviceItemId(): string | null | undefined;
/**
* The [feature service's metadata JSON](https://developers.arcgis.com/rest/services-reference/layer-feature-service-.htm)
* exposed by the ArcGIS REST API. While most commonly used properties
* are exposed on the FeatureLayer class directly, this property gives access to all information returned
* by the feature service. This property is useful if working in an application built using an older version of the API
* which requires access to feature service properties from a more recent version.
*
* @since 4.13
*/
accessor sourceJSON: Record<string, any> | null | undefined;
/**
* The spatial reference of the layer. When creating the layer from a
* [url](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#url), the spatial reference is read from the service.
*
* When creating a FeatureLayer from client-side features, this property is
* inferred from the geometries of the features provided in the layer's [source](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#source)
* property.
*/
get spatialReference(): SpatialReference;
set spatialReference(value: SpatialReferenceProperties);
/** The name of the field which holds the id of the [subtypes](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#subtypes). */
get subtypeField(): string;
/**
* An array of [subtypes](https://developers.arcgis.com/javascript/latest/references/core/layers/support/Subtype/) defined in the layer.
*
* @see [Introduction to subtypes](https://pro.arcgis.com/en/pro-app/latest/help/data/geodatabases/overview/an-overview-of-subtypes.htm)
*/
get subtypes(): Subtype[] | null | undefined;
/**
* The title of the layer used to identify it in places such as the [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/components/arcgis-legend/)
* and [LayerList](https://developers.arcgis.com/javascript/latest/references/core/widgets/LayerList/).
*
* When loading a layer by service url, the title is derived from the service name.
* If the service has several layers, then the title of each layer will be the concatenation of the service name
* and the layer name.
* When the layer is loaded from a portal item, the title of the portal item will be used instead.
* Finally, if a layer is loaded as part of a webmap or a webscene, then the title of the layer as stored in the webmap/webscene will be used.
*/
accessor title: string | null | undefined;
/**
* The absolute URL of the REST endpoint of the layer, non-spatial table or service. The URL may either point to a
* resource on ArcGIS Enterprise or ArcGIS Online.
*
* If the url points directly to a service, then the layer must be specified in the
* [layerId](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#layerId) property. If no [layerId](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/FeatureLayerBase/#layerId) is given, then the first layer in the service will be loaded.
*
* @example
* // Hosted Feature Service on ArcGIS Online
* layer.url = "http://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/origins/FeatureServer/0";
* @example
* // Layer from Map Service on ArcGIS Server
* layer.url = "http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/2";
* @example
* // Can also be used if URL points to service and not layer
* const layer = new FeatureLayer({
* // Notice that the url doesn't end with /2
* url: "http://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/MonterreyBayCanyon_WFL/FeatureServer",
* layerId: 2
* });
* @example
* // Non-spatial table in San Francisco incidents service.
* const table = new FeatureLayer({
* url: "https://sampleserver6.arcgisonline.com/arcgis/rest/services/SF311/FeatureServer/1"
* });
* // table must be loaded so it can be used in the app.
* table.load().then(function() {
* // table is loaded. ready to be queried.
* });
*/
accessor url: string | null | undefined;
/**
* The version of ArcGIS Server in which the layer is published.
*
* @example
* // Prints the version number to the console - e.g. 10.91, 11.2, 11.3.
* console.log(layer.version);
*/
get version(): number | null | undefined;
/**
* Returns the [Field](https://developers.arcgis.com/javascript/latest/references/core/layers/support/Field/) instance for a field name (case-insensitive).
*
* @param fieldName - Name of the field.
* @returns the matching field or `undefined`
* @since 4.11
* @see [FeatureLayer.fields](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#fields)
*/
getField(fieldName: string): Field | null | undefined;
/**
* Returns the [Domain](https://developers.arcgis.com/javascript/latest/references/core/layers/support/Domain/) associated with the given field name. The domain can be either a
* [CodedValueDomain](https://developers.arcgis.com/javascript/latest/references/core/layers/support/CodedValueDomain/) or [RangeDomain](https://developers.arcgis.com/javascript/latest/references/core/layers/support/RangeDomain/).
*
* @param fieldName - Name of the field.
* @param options - An object specifying additional options. See the
* object specification table below for the required properties of this object.
* @returns The Domain object associated with the given field name for the given feature.
* @example
* // Get a range domain associated with the first feature
* // returned from queryFeatures().
* layer.queryFeatures(query).then(function(results){
* const domain = layer.getFieldDomain("Height", {feature: results.features[0]});
* console.log("domain", domain)
* });
*/
getFieldDomain(fieldName: string, options?: FieldDomainOptions): DomainUnion | null | undefined;
}