import type { JSONSupport } from "../../../../core/JSONSupport.js";

export interface CIMKGTraversalDirectionProperties extends Partial<Pick<CIMKGTraversalDirection, "relationshipTypeName" | "traversalDirectionType">> {}

/**
 * The [traversal directions](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/toolService/findPaths/CIMFilteredFindPathsConfiguration/#traversalDirections)
 * that specify how relationships are traversed along paths between the
 * [origin](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/toolService/findPaths/CIMFilteredFindPathsConfiguration/#originEntities)
 * and [destination](https://developers.arcgis.com/javascript/latest/references/core/rest/knowledgeGraph/toolService/findPaths/CIMFilteredFindPathsConfiguration/#destinationEntities).
 *  When no traversal direction is defined for a specific relationship type, the default traversal direction is used.
 *
 * @beta
 * @since 4.32
 */
export default class CIMKGTraversalDirection extends JSONSupport {
  constructor(properties?: CIMKGTraversalDirectionProperties);
  /** Specifies the relationship type name for which to use specific traversal direction settings. */
  accessor relationshipTypeName: string | null | undefined;
  /**
   * Specifies the direction which the algorithm uses to traverse relationships in the path.
   * |Direction| Description|
   * |---------|------------|
   * |Any|The filtered find paths algorithm considers all relationships independent of their direction.|
   * |Forward|The filtered find paths algorithm considers only the relationships that are traversed in forward direction, `origin --> destination`. |
   * |Backward|The filtered find paths algorithm considers only the relationships that are traversed in backward direction, `origin <-- destination`.|
   *
   * @default "Any"
   */
  accessor traversalDirectionType: "Any" | "Forward" | "Backward";
  get type(): "CIMKGTraversalDirection";
}