import type AttributeTableElement from "./AttributeTableElement.js";
import type { ClonableMixin } from "../../core/Clonable.js";
import type { AttributeTableElementProperties } from "./AttributeTableElement.js";

export interface AttributeTableFieldElementProperties extends AttributeTableElementProperties, Partial<Pick<AttributeTableFieldElement, "fieldName">> {
  /** The table element's description which provides the purpose behind it. */
  description?: string | null;
  /** A string value containing the field alias. */
  label?: string | null;
}

/**
 * An `AttributeTableFieldElement` table element defines how a layer's [Field](https://developers.arcgis.com/javascript/latest/references/core/layers/support/Field/) displays in the [FeatureTable](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/).
 *
 * @since 4.31
 * @see [FeatureTable](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/)
 * @see [AttributeTableTemplate](https://developers.arcgis.com/javascript/latest/references/core/tables/AttributeTableTemplate/)
 */
export default class AttributeTableFieldElement extends AttributeTableFieldElementSuperclass {
  constructor(properties?: AttributeTableFieldElementProperties);
  /** The table element's description which provides the purpose behind it. */
  accessor description: string | null | undefined;
  /** The field name as defined by the feature layer. Set this property to indicate which field to display. */
  accessor fieldName: string | null | undefined;
  /** A string value containing the field alias. */
  accessor label: string | null | undefined;
  /** Indicates the type of attribute table [element](https://developers.arcgis.com/javascript/latest/references/core/tables/elements/AttributeTableElement/). */
  get type(): "field";
  /**
   * Creates a deep clone of the AttributeTableFieldElement class.
   *
   * @returns A deep clone of the AttributeTableFieldElement instance.
   */
  clone(): this;
}
declare const AttributeTableFieldElementSuperclass: typeof AttributeTableElement & typeof ClonableMixin