export type GatewayErrorCode =
  | 'UNAUTHENTICATED'
  | 'APP_DISABLED'
  | 'CHANNEL_FORBIDDEN'
  | 'IP_FORBIDDEN'
  | 'INVALID_RECIPIENT'
  | 'VALIDATION_FAILED'
  | 'RATE_LIMITED'
  | 'DAILY_QUOTA_EXCEEDED'
  | 'ALL_PROVIDERS_FAILED'
  | 'NO_PROVIDER'
  | 'TIMEOUT'
  | 'QUEUE_FULL'
  | 'CIRCUIT_OPEN'
  | 'CREDENTIAL_ERROR'
  | 'INTERNAL_ERROR';

export type ProviderErrorCode =
  | 'PROVIDER_REJECTED'
  | 'PROVIDER_5XX'
  | 'PROVIDER_UNAVAILABLE'
  | 'TIMEOUT'
  | 'CREDENTIAL_ERROR';

export interface ZyphonErrorDetails {
  code: GatewayErrorCode;
  message: string;
  details?: unknown;
}

