/// <reference path="../../index.d.ts" />
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { Alignment, Layout, Scale, SelectionAppearance, SelectionMode } from "../interfaces.js";
import type { Tile } from "../calcite-tile/customElement.js";

/** @slot  - A slot for adding `calcite-tile` elements. */
export abstract class TileGroup extends LitElement {
  /**
   * Specifies the alignment of each `calcite-tile`'s content.
   *
   * @default "start"
   */
  accessor alignment: Exclude<Alignment, "end">;
  /**
   * When `true`, interaction is prevented and the component is displayed with lower opacity.
   *
   * @default false
   */
  accessor disabled: boolean;
  /**
   * Specifies an accessible label for the component.
   *
   * @required
   */
  accessor label: string;
  /**
   * Defines the layout of the component.
   *
   * Use `"horizontal"` for rows, and `"vertical"` for a single column.
   *
   * @default "horizontal"
   */
  accessor layout: Extract<Layout, "horizontal" | "vertical">;
  /**
   * Specifies the component's size.
   *
   * @default "m"
   */
  accessor scale: Scale;
  /** Specifies the component's selected items. */
  get selectedItems(): Tile[];
  /**
   * Specifies the selection appearance, where:
   *
   * - `"icon"` (displays a checkmark or dot),
   * - `"highlight"` (changes the background color), and
   * - `"border"` (displays a border). [Deprecated] The `"border"` value is deprecated in v5.0.0, removal target v6.0.0 - Use `"highlight"` instead.
   *
   * @default "icon"
   */
  accessor selectionAppearance: Extract<"icon" | "highlight" | "border", SelectionAppearance>;
  /**
   * Specifies the selection mode, where:
   *
   * - `"multiple"` (allows any number of selected items),
   * - `"single"` (allows only one selected item),
   * - `"single-persist"` (allows only one selected item and prevents de-selection), and
   * - `"none"` (allows no selected items).
   *
   * @default "none"
   */
  accessor selectionMode: Extract<"multiple" | "none" | "single" | "single-persist", SelectionMode>;
  /** Fires when the component's selection changes. */
  readonly calciteTileGroupSelect: import("@arcgis/lumina").TargetedEvent<this, void>;
  readonly "@eventTypes": {
    calciteTileGroupSelect: TileGroup["calciteTileGroupSelect"]["detail"];
  };
}