import type ChronologicalLayoutSettings from "./ChronologicalLayoutSettings.js";
import type OrganicLayoutSettings from "./OrganicLayoutSettings.js";
import type RootedLayoutSettings from "./RootedLayoutSettings.js";
import type { ClonableMixin } from "../core/Clonable.js";
import type { JSONSupport } from "../core/JSONSupport.js";
import type { ChronologicalLayoutSettingsProperties } from "./ChronologicalLayoutSettings.js";
import type { OrganicLayoutSettingsProperties } from "./OrganicLayoutSettings.js";
import type { RootedLayoutSettingsProperties } from "./RootedLayoutSettings.js";

export interface LayoutSettingsProperties {
  /**
   * Settings for chronological layout calculations. Chronological layouts arrange entities and relationships using time.
   * These layouts include a time banner which shows the time intervals most appropriate for the data, the start and end of each event,
   * and the UTC offset. These settings allow you to customize the direction of the time axis, time zone, and the placement of entities and relationships.
   */
  chronologicalLayoutSettings?: ChronologicalLayoutSettingsProperties | null;
  /** Settings for organic layout calculations that allow you to customize how the entities are placed. */
  organicLayoutSettings?: OrganicLayoutSettingsProperties | null;
  /** Settings for tree and hierarchical layout calculations that allow you to customize how the entities are placed. */
  rootedLayoutSettings?: RootedLayoutSettingsProperties | null;
}

/**
 * Additional settings for chronological and organic link chart [layouts](https://developers.arcgis.com/javascript/latest/references/core/linkChart/LinkChartProperties/#layoutType).
 * These settings refine how entities and relationships are placed on the link chart. For chronological layouts these settings also
 * configure the graphical components of the layout.
 *
 * @since 4.32
 * @see [Web Map Specification | Link chart layout settings](https://developers.arcgis.com/web-map-specification/objects/linkChartLayoutSettings/)
 */
export default class LayoutSettings extends LayoutSettingsSuperclass {
  constructor(properties?: LayoutSettingsProperties);
  /**
   * Settings for chronological layout calculations. Chronological layouts arrange entities and relationships using time.
   * These layouts include a time banner which shows the time intervals most appropriate for the data, the start and end of each event,
   * and the UTC offset. These settings allow you to customize the direction of the time axis, time zone, and the placement of entities and relationships.
   */
  get chronologicalLayoutSettings(): ChronologicalLayoutSettings | null | undefined;
  set chronologicalLayoutSettings(value: ChronologicalLayoutSettingsProperties | null | undefined);
  /** Settings for organic layout calculations that allow you to customize how the entities are placed. */
  get organicLayoutSettings(): OrganicLayoutSettings | null | undefined;
  set organicLayoutSettings(value: OrganicLayoutSettingsProperties | null | undefined);
  /** Settings for tree and hierarchical layout calculations that allow you to customize how the entities are placed. */
  get rootedLayoutSettings(): RootedLayoutSettings | null | undefined;
  set rootedLayoutSettings(value: RootedLayoutSettingsProperties | null | undefined);
}
declare const LayoutSettingsSuperclass: typeof JSONSupport & typeof ClonableMixin