import type Accessor from "./Accessor.js";

/**
 * JSONSupport provides an Accessor subclass,
 * which offers the capability of hydrating objects from a JSON object.
 *
 * It includes support methods for working with JSON.
 *
 * @since 4.0
 */
export abstract class JSONSupportMixin {
  constructor(...args: any[]);
  /**
   * Creates a new instance of this class and initializes it with values from a JSON object
   * generated from an ArcGIS product. The object passed into the input `json`
   * parameter often comes from a response to a query operation in the REST API or a
   * [toJSON()](https://pro.arcgis.com/en/pro-app/latest/tool-reference/conversion/features-to-json.htm)
   * method from another ArcGIS product. See the [Using fromJSON()](https://developers.arcgis.com/javascript/latest/using-fromjson)
   * topic in the Guide for details and examples of when and how to use this function.
   *
   * @param json - A JSON representation of the instance in the ArcGIS format. See
   *                      the [ArcGIS REST API documentation](https://developers.arcgis.com/documentation/common-data-types/overview-of-common-data-types.htm) for examples of the structure of
   *                       various input JSON objects.
   * @returns Returns a new instance of this class.
   */
  static fromJSON(json: any): any;
  /**
   * Converts an instance of this class to its [ArcGIS portal JSON](https://developers.arcgis.com/documentation/common-data-types/geometry-objects.htm) representation.
   * See the [Using fromJSON()](https://developers.arcgis.com/javascript/latest/using-fromjson) guide topic for more information.
   *
   * @returns The [ArcGIS portal JSON](https://developers.arcgis.com/documentation/common-data-types/geometry-objects.htm) representation of an instance of this class.
   */
  toJSON(): any;
}

export abstract class JSONSupport extends JSONSupportSuperclass {}
declare const JSONSupportSuperclass: & typeof Accessor & typeof JSONSupportMixin