import { DomainError } from "@repo/rdx-ddd";

/**
 * Error de dominio que indica que el documento no es una Proforma.
 *
 * @remarks
 * - Se lanza cuando una operación requiere explícitamente una Proforma
 *
 * @public
 */
export class EntityIsNotProformaError extends DomainError {
  /**
   * Crea una instancia del error con el identificador de la Proforma.
   *
   * @param id - Identificador de la Proforma.
   * @param options - Opciones nativas de Error (puedes pasar `cause`).
   */
  constructor(id: string, options?: ErrorOptions) {
    super(`Error. Entity with id '${id}' is not a proforma .`, options);
    this.name = "EntityIsNotProformaError";
  }
}

/**
 * *Type guard* para `EntityIsNotProformaError`.
 *
 * @param e - Error desconocido
 * @returns `true` si `e` es `EntityIsNotProformaError`
 */
export const isEntityIsNotProformaError = (e: unknown): e is EntityIsNotProformaError =>
  e instanceof EntityIsNotProformaError;
