/**
 * Error interpretation helper for the Valtech factory.
 *
 * Todos los frontends del factory consumen la misma API (backend Go) y la misma
 * librería. La lógica de interpretar errores debe vivir una sola vez, acá.
 *
 * El backend Go (`apperrors`) SIEMPRE devuelve errores como JSON:
 *   { "code": string, "message": string, "operationId": string }
 * donde `message` ya viene en español y es user-friendly.
 *
 * En Angular un error HTTP llega como `HttpErrorResponse` (body en `.error`).
 * Un fallo de red es un `HttpErrorResponse` con `status === 0`.
 *
 * Además `AuthService.handleAuthError` aplana el `HttpErrorResponse` a un
 * `AuthError { code, message }` (code/message al nivel superior). Por eso este
 * helper acepta AMBAS formas — el crudo y el aplanado.
 */
/**
 * Resultado normalizado de cualquier error. Garantiza una forma estable y
 * predecible para que las webapps no tengan que hacer narrowing manual.
 */
export interface InterpretedError {
    /** Código del backend, o el sentinel `'NETWORK'` / `'UNKNOWN'`. */
    code: string;
    /** Mensaje del backend (español, user-friendly) o un genérico en español. */
    message: string;
    /** `operationId` del backend, si vino. Útil para soporte / tracing. */
    operationId?: string;
    /** HTTP status, si aplica (`0` para fallos de red). */
    status?: number;
    /** `true` si fue un fallo de red (status 0 / sin respuesta). */
    isNetwork: boolean;
}
/**
 * Normaliza CUALQUIER error a un `InterpretedError`.
 *
 * Función pura — sin dependencias de Angular DI, testeable y usable desde
 * cualquier lado (componentes, servicios, interceptores, scripts).
 *
 * Nunca lanza: siempre devuelve un `InterpretedError` válido.
 *
 * Casos cubiertos:
 * - `HttpErrorResponse` con `status === 0` (o sin respuesta) → fallo de red.
 * - `HttpErrorResponse` con body `{ code, message, operationId }` del backend.
 * - `AuthError` aplanado `{ code, message }` (code/message top-level).
 * - `Error` plano de JS → `code: 'UNKNOWN'`, `message: err.message`.
 * - Cualquier otra cosa (string, null, undefined, objeto raro) → genérico.
 *
 * @example
 * ```ts
 * try {
 *   await firstValueFrom(this.http.get(url));
 * } catch (err) {
 *   const e = interpretError(err);
 *   if (e.isNetwork) {
 *     this.toast.show({ message: e.message, color: 'dark' });
 *   } else {
 *     this.errorCode.set(e.code);
 *   }
 * }
 * ```
 */
export declare function interpretError(err: unknown): InterpretedError;
