import { ApplicationError, IErrorDetail } from '@somma/node-errors';

export class ConciliationInternalError extends ApplicationError {
  public resolved = false;

  constructor(message?: string, details?: IErrorDetail, causedBy?: any) {
    super(500, 'INTERNAL_ERROR', message ?? 'Conciliation internal error', details, causedBy);
  }
}

export class InvoiceInCancellationPeriod extends ApplicationError {
  public resolved = true;

  constructor(message?: string, details?: IErrorDetail, causedBy?: any) {
    super(425, 'INVOICE_IN_CANCELLATION_PERIOD', message ?? 'Invoice in cancellation period', details, causedBy);
  }
}

export class MultipleInvoices extends ApplicationError {
  public resolved = false;

  constructor(message?: string, details?: IErrorDetail, causedBy?: any) {
    super(509, 'MULTIPLE_INVOICES', message ?? 'Conciliation found multiple candidate invoices', details, causedBy);
  }
}
