export interface EditableColumnTemplateMixinProperties extends Partial<Pick<EditableColumnTemplateMixin, "editable" | "required">> {}

/** @since 4.24 */
export abstract class EditableColumnTemplateMixin {
  constructor(...args: any[]);
  /**
   * Indicates whether the field is editable. Editing permissions can be broken down
   * with the following levels of priority:
   *
   * 1. [Field](https://developers.arcgis.com/javascript/latest/references/core/layers/support/Field/) - This is derived
   * from the [FeatureLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/) or [SceneLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/SceneLayer/). It takes what is set in the
   * [Field.editable](https://developers.arcgis.com/javascript/latest/references/core/layers/support/Field/#editable) property. This
   * must always be `true` for editing to be enabled. This can be overridden using a
   * [field column template](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/support/FieldColumnTemplate/).
   * 2. [Template](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/support/FieldColumnTemplate/) - The editable
   * permissions on a field can be configured by setting the
   * [FieldColumnTemplate.editable](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/support/FieldColumnTemplate/#editable) property
   * of the [FieldColumnTemplate](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/support/FieldColumnTemplate/).
   * 3. [FeatureTable](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/) - The [FeatureTable.editingEnabled](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/#editingEnabled)
   * property must be set on the table in order for any type of editing to be enabled.
   *
   * For example, if table editing is disabled in the widget, i.e. `enableEditing` is not set,
   * it is still possible to enable editing for a specific column by setting the
   * [FieldColumnTemplate.editable](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/support/FieldColumnTemplate/#editable) property. Vice versa
   * is also true, if table editing is enabled, a field template can be used to disable editing for a specific column.
   *
   * > [!WARNING]
   * >
   * > Ultimately, if the service's field is not editable, it is not possible to override its permissions
   * > using one of the options above.
   *
   * @default true
   * @see [FieldColumnTemplate.editable](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureTable/support/FieldColumnTemplate/#editable)
   * @see [Sample - FeatureTable widget with editing enabled](https://developers.arcgis.com/javascript/latest/sample-code/widgets-featuretable-editing/)
   */
  accessor editable: boolean;
  /**
   * Indicates whether a field requires a value.
   *
   * @default false
   */
  accessor required: boolean;
}