Source: types/Quality.ts

import Intention from "./Intention";
import { QualityType } from "./qualityType";

/**
 * An interface representing a quality associated with an intentional element in the system.
 *
 * @interface
 * @extends Intention
 */
export default interface Quality extends Intention {
  /**
   * An enumeration representing the type of the quality.
   */
  qualityType: QualityType;
  /**
   * A string representing the direction of the quality, which can be incoming, outgoing, or both.
   */
  direction: QualityDirection;
}

/**
 * A type representing the direction of a quality associated with an intentional element in the system.
 *
 * @typedef {string} QualityDirection
 * @enum {string}
 * @property {string} INCOMING - The quality is incoming, meaning that it is associated with the intentional element that depends on the other intentional element.
 * @property {string} OUTGOING - The quality is outgoing, meaning that it is associated with the intentional element that the depender intentional element depends on.
 * @property {string} BOTH - The quality is related to another element in the sense of describing it further.
 */
export type QualityDirection = "incoming" | "outgoing" | "both";