import type ColumnTemplateBase from "./ColumnTemplateBase.js";
import type { ColumnTemplateBaseProperties } from "./ColumnTemplateBase.js";
import type { EditableColumnTemplateMixinProperties, EditableColumnTemplateMixin } from "./EditableColumnTemplateMixin.js";

export interface ColumnTemplateProperties extends ColumnTemplateBaseProperties, EditableColumnTemplateMixinProperties {}

/**
 * A ColumnTemplate formats and defines the structure of a [Column](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FeatureTable-Grid-Column.html) within a
 * [FeatureTable](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FeatureTable.html) widget. It is set directly on the table's [template](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FeatureTable-support-TableTemplate.html) or its [view model](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FeatureTable-FeatureTableViewModel.html#tableTemplate).
 * The [FeatureTable's tableTemplate](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FeatureTable-support-TableTemplate.html) contains a collection of [column, field and/or group templates](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FeatureTable-support-TableTemplate.html#columnTemplates).
 *
 * @since 4.24
 * @see [FeatureTable](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FeatureTable.html)
 * @see [TableTemplate](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FeatureTable-support-TableTemplate.html)
 * @see [FieldColumnTemplate](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FeatureTable-support-FieldColumnTemplate.html)
 * @see [GroupColumnTemplate](https://developers.arcgis.com/javascript/latest/api-reference/esri-widgets-FeatureTable-support-GroupColumnTemplate.html)
 * @see [Sample - FeatureTable with custom content](https://developers.arcgis.com/javascript/latest/sample-code/widgets-featuretable-custom-content/)
 */
export default class ColumnTemplate extends ColumnTemplateSuperclass {
  constructor(properties?: ColumnTemplateProperties);
  /** The type of column that the template represents. */
  get type(): "column";
}
declare const ColumnTemplateSuperclass: typeof ColumnTemplateBase & typeof EditableColumnTemplateMixin