import type { ClonableMixin, ClonableMixinProperties } from "../../core/Clonable.js";
import type { JSONSupport, JSONSupportMixinProperties } from "../../core/JSONSupport.js";

export interface FeatureLayerSourceProperties extends JSONSupportMixinProperties, ClonableMixinProperties, Partial<Pick<FeatureLayerSource, "layerId" | "layerUrl">> {}

/**
 * The source for a feature layer to be used as fences for Geotriggers.
 *
 * @since 4.24
 * @example
 * let source = new FeatureLayerSource({
 *   // If layerUrl is present, layerId is unnecessary (and vice-versa)
 *   layerUrl: "http://sampleserver6.arcgisonline.com/arcgis/rest/services/Recreation/MapServer/0"
 * })
 */
export default class FeatureLayerSource extends FeatureLayerSourceSuperclass {
  constructor(properties?: FeatureLayerSourceProperties);
  /** A unique identifying string that must match the `id` property of a feature layer in an associated map. The fence parameters will use the same underlying data as the feature layer in the map. */
  accessor layerId: string | null | undefined;
  /** A URL to a service that will be used for all queries against the layer. */
  accessor layerUrl: string | null | undefined;
  /** String indicating the type of source. */
  readonly type: "feature-layer";
}
declare const FeatureLayerSourceSuperclass: typeof JSONSupport & typeof ClonableMixin