export interface CustomParametersMixinProperties extends Partial<Pick<CustomParametersMixin, "customParameters">> {}

export type CustomParameters = Record<string, string>;

/**
 * Mixin that adds a property to layer types backed by ArcGIS services for storing user-defined parameters to be sent with all requests related to the layer
 *
 * @since 4.18
 */
export abstract class CustomParametersMixin {
  constructor(...args: any[]);
  /**
   * A list of custom parameters appended to the URL of all resources fetched by the layer.
   * It's an object with key-value pairs where value is a string.
   * The layer's `refresh()` method needs to be called if the customParameters are updated at runtime.
   *
   * @since 4.18
   * @example
   * // send a custom parameter to your special service
   * let layer = new MapImageLayer({
   *   url: serviceUrl,
   *   customParameters: {
   *     "key": "my-special-key"
   *   }
   * });
   */
  accessor customParameters: CustomParameters | null | undefined;
}