import type Basemap from "../../../Basemap.js";
import type Accessor from "../../../core/Accessor.js";
import type EsriError from "../../../core/Error.js";
import type { IdentifiableMixin, IdentifiableMixinProperties } from "../../../core/Identifiable.js";
import type { MapViewOrSceneView } from "../../../views/MapViewOrSceneView.js";

export interface BasemapGalleryItemProperties extends IdentifiableMixinProperties, Partial<Pick<BasemapGalleryItem, "basemap" | "view">> {}

export type BasemapGalleryItemState = "ready" | "loading" | "error";

/**
 * The BasemapGalleryItem class represents one of the [BasemapGalleryViewModel.items](https://developers.arcgis.com/javascript/latest/references/core/widgets/BasemapGallery/BasemapGalleryViewModel/#items)
 * in the [BasemapGallery](https://developers.arcgis.com/javascript/latest/references/core/widgets/BasemapGallery/).
 *
 * @since 4.3
 * @see [BasemapGalleryViewModel.items](https://developers.arcgis.com/javascript/latest/references/core/widgets/BasemapGallery/BasemapGalleryViewModel/#items)
 */
export default class BasemapGalleryItem extends BasemapGalleryItemSuperclass {
  constructor(properties?: BasemapGalleryItemProperties);
  /** The item's associated basemap. */
  accessor basemap: Basemap;
  /** The Error object returned if an error occurred. */
  get error(): EsriError | null | undefined;
  /**
   * The item's state.
   *
   * @default "loading"
   */
  get state(): BasemapGalleryItemState;
  /** The view associated with this item. */
  accessor view: MapViewOrSceneView | null | undefined;
}
declare const BasemapGalleryItemSuperclass: typeof Accessor & typeof IdentifiableMixin