// eslint-disable-next-line @typescript-eslint/no-require-imports
require("../../styles/main.scss");

export * from "./customization/props";
export * from "./customization/templates";

export * from "./data/model";
export * from "./data/metadataApi";
export * from "./data/validationApi";
export * from "./data/provider";
export { PLACEHOLDER_ELEMENT_TYPE, PLACEHOLDER_LINK_TYPE } from "./data/schema";
export * from "./data/demo/provider";
export {
  RdfNode,
  RdfIri,
  RdfLiteral,
  Triple,
} from "./data/sparql/sparqlModels";
export * from "./data/sparql/sparqlDataProvider";
export * from "./data/composite/composite";
export * from "./data/sparql/sparqlDataProviderSettings";
export * from "./data/sparql/graphBuilder";
export * from "./data/sparql/sparqlGraphBuilder";
export { DIAGRAM_CONTEXT_URL_V1 } from "./data/schema";

export {
  RestoreGeometry,
  setElementExpanded,
  setElementData,
  setLinkData,
} from "./diagram/commands";
export {
  Element,
  ElementEvents,
  ElementTemplateState,
  Link,
  LinkEvents,
  LinkTemplateState,
  LinkVertex,
  Cell,
  LinkDirection,
} from "./diagram/elements";
export { EmbeddedLayer } from "./diagram/embeddedLayer";
export * from "./diagram/geometry";
export * from "./diagram/history";
export { DiagramModel, DiagramModelEvents } from "./diagram/model";
export * from "./diagram/view";
export {
  PointerEvent,
  PointerUpEvent,
  getContentFittingBox,
  ViewportOptions,
  ScaleOptions,
} from "./diagram/paperArea";

export * from "./editor/asyncModel";
export {
  AuthoredEntity,
  AuthoredEntityProps,
  AuthoredEntityContext,
} from "./editor/authoredEntity";
export * from "./editor/authoringState";
export {
  EditorOptions,
  EditorEvents,
  EditorController,
  PropertyEditor,
  PropertyEditorOptions,
} from "./editor/editorController";
export {
  ValidationState,
  ElementValidation,
  LinkValidation,
} from "./editor/validation";

export {
  LayoutData,
  LayoutElement,
  LayoutLink,
  SerializedDiagram,
  convertToSerializedDiagram,
  makeSerializedDiagram,
  LinkTypeOptions,
  makeLayoutData,
} from "./editor/serializedDiagram";
export {
  calculateLayout,
  removeOverlaps,
  CalculatedLayout,
  UnzippedCalculatedLayout,
  LayoutNode,
  applyLayout,
  forceLayout,
} from "./viewUtils/layout";

export {
  Cancellation,
  CancellationToken,
  CancelledError,
} from "./viewUtils/async";
export * from "./viewUtils/events";

export {
  PropertySuggestionParams,
  PropertyScore,
} from "./widgets/connectionsMenu";

export { DefaultToolbar, ToolbarProps } from "./workspace/toolbar";
export {
  Workspace,
  WorkspaceProps,
  WorkspaceState,
  WorkspaceLanguage,
  renderTo,
} from "./workspace/workspace";
export {
  WorkspaceEventHandler,
  WorkspaceEventKey,
} from "./workspace/workspaceContext";
export { DraggableHandle } from "./workspace/draggableHandle";
export * from "./workspace/layout/layout";

import * as InternalApi from "./internalApi";
export { InternalApi };
