import type FeatureReferenceId from "./FeatureReferenceId.js";
import type { ObjectId } from "../../views/types.js";
import type { FeatureReferenceIdProperties } from "./FeatureReferenceId.js";

export interface FeatureReferenceObjectIdProperties extends FeatureReferenceIdProperties, Partial<Pick<FeatureReferenceObjectId, "value">> {}

/**
 * A unique identifier of a feature inside a layer by objectid value.
 *
 * @since 4.33
 */
export default class FeatureReferenceObjectId extends FeatureReferenceId {
  constructor(properties?: FeatureReferenceObjectIdProperties);
  /**
   * A string value representing the feature id type.
   *
   * @default "object-id"
   * @since 4.33
   */
  get type(): "object-id";
  /**
   * Feature object id value. This value identifies the feature by its object id attribute.
   * A FeatureReferenceObjectId is only valid when it has a value.
   *
   * @since 4.33
   * @see [FeatureLayer.objectIdField](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#objectIdField)
   */
  accessor value: ObjectId | null | undefined;
}