/**
 * Expense processing errors — expenses-module.
 */

export type ErrorKind = 'terminal' | 'transient'

/**
 * Typed error thrown by the OCR/evaluation pipeline.
 * - 'terminal': AI parse failures — do not retry (marks FAILED)
 * - 'transient': infra failures (R2 fetch, network) — retry via queue backoff
 */
export class ExpenseProcessingError extends Error {
  readonly kind: ErrorKind

  constructor(message: string, kind: ErrorKind) {
    super(message)
    this.name = 'ExpenseProcessingError'
    this.kind = kind
  }
}
