import type Input from "./Input.js";
import type { TimeResolutionMS } from "../../../portal/jsonTypes.js";

export interface DateTimeOffsetPickerInputProperties extends Partial<Pick<DateTimeOffsetPickerInput, "includeTimeOffset" | "max" | "min" | "timeResolution">> {}

/**
 * The `DateTimeOffsetPickerInput` class defines the desired user interface for editing `timestamp-offset` field [Field.type](https://developers.arcgis.com/javascript/latest/references/core/layers/support/Field/#type) input. This input is used in [field elements](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/) that are set within a [feature layer's](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#formTemplate) or [FeatureForm's](https://developers.arcgis.com/javascript/latest/references/core/widgets/FeatureForm/#formTemplate) `formTemplate`. This is displayed within the [Editor](https://developers.arcgis.com/javascript/latest/references/core/widgets/Editor/) widget.
 *
 * @since 4.28
 * @see [FieldElement](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/)
 * @see [inputs](https://developers.arcgis.com/javascript/latest/references/core/form/elements/FieldElement/#input)
 * @example
 * const dateTimeOffsetPickerInput = new DateTimeOffsetPickerInput({
 *   min: "2020-03-15T14:30-05:00", // the minimum date/time input allowed, this equates to March 15, 2020, at 2:30 PM in the Eastern time zone, which is UTC-5.
 *   max: "2020-04-15T24:00-08:00", // the maximum date/time input allowed, this equates to midnight (00:00) on April 15, 2020, in the Pacific time zone with a UTC offset of -8 hours.
 *   includeTimeOffset: true
 * });
 */
export default class DateTimeOffsetPickerInput extends Input {
  constructor(properties?: DateTimeOffsetPickerInputProperties);
  /**
   * Indicates if the input should provide an option to select the time offset. The time offset represents the difference in hours and minutes between UTC and the local system time. If not provided, the default value is `true`.
   *
   * @default true
   */
  accessor includeTimeOffset: boolean;
  /** The maximum date/time offset to allow. The string represents an [ISO-8601 time](https://www.iso.org/iso-8601-date-and-time-format.html) with a time offset. */
  accessor max: string | null | undefined;
  /** The minimum date/time offset to allow. The string represents an [ISO-8601 time](https://www.iso.org/iso-8601-date-and-time-format.html) with a time offset. */
  accessor min: string | null | undefined;
  /**
   * The level of detail used to represent time.
   *
   * @default "minutes"
   */
  accessor timeResolution: TimeResolutionMS;
  /** The type of form element input. */
  get type(): "timestampoffset-picker";
  /**
   * Creates a deep clone of the `DateTimeOffsetPickerInput` class.
   *
   * @returns A deep clone of the `DateTimeOffsetPickerInput` instance.
   */
  clone(): DateTimeOffsetPickerInput;
}