import type { ClonableMixin } from "../../core/Clonable.js";
import type { JSONSupport } from "../../core/JSONSupport.js";
import type { OccludedVisibilityMode } from "./types.js";

/** @since 5.0 */
export interface OccludedVisibilityProperties extends Partial<Pick<OccludedVisibility, "mode">> {}

/**
 * Specifies the occluded visibility mode for an icon or text symbol layer.
 *
 * @since 5.0
 */
export default class OccludedVisibility extends OccludedVisibilitySuperclass {
  /** @since 5.0 */
  constructor(properties: OccludedVisibilityProperties);
  /**
   * Occluded visibility mode.
   *
   * Mode | Description
   * ------|------------
   * adaptive | Occluded elements are still visible up to some tolerance.
   * hidden | Occluded elements are not shown.
   * visible | Elements are always visible, independent of their occlusion.
   *
   * @default "adaptive"
   * @since 5.0
   */
  accessor mode: OccludedVisibilityMode;
}
declare const OccludedVisibilitySuperclass: typeof JSONSupport & typeof ClonableMixin