import { StoredAuthState, GetPermissionsResponse, ValtechAuthConfig } from './types'; import * as i0 from "@angular/core"; /** * Nombre por defecto de la cookie-hint de sesión de familia (espejo JS-readable * del refresh token HttpOnly). Debe coincidir con `HintCookieName` del backend * (`backend/go/services/httpapi/hint_cookie.go`). Override por app vía * `ValtechAuthConfig.loggedInHintCookie`. */ export declare const LOGGED_IN_HINT_COOKIE = "valtech_logged_in"; /** * Servicio para persistencia de estado de autenticación en localStorage. */ export declare class AuthStorageService { private config; private keys; private readonly isBrowser; /** * H-05: modo cookie-only del refresh token. `true` cuando el frontend y la API * comparten site (mismo registrable domain) → la cookie HttpOnly es * first-party y confiable → NO se persiste el refresh en localStorage (un XSS * no puede robarlo). `false` en cross-site (dev `.web.app` vs `.myvaltech.com`) * donde los browsers bloquean la cookie de terceros (Safari ITP, Chrome * 3rd-party phase-out) → fallback transition-safe (refresh en localStorage). */ readonly cookieOnly: boolean; constructor(config: ValtechAuthConfig | null, platformId: Object); /** Same-site check: frontend host vs API host comparten registrable domain. */ private computeCookieOnly; /** * ¿Existe la cookie-hint JS-readable de "sesión activa en la familia"? * * La setea el backend en login/logout (`HttpOnly:false`, `Domain=.myvaltech.com`) * como espejo legible por JS del refresh token HttpOnly (`valtech_refresh`), que * JS no puede leer. Es un hint de UI, no una credencial. Lo usan `initialize()` * (bootstrap cross-origin, gated por `bootstrapSessionFromHint`) y el sitio * público para decidir landing-vs-app sin exponer el token. */ hasLoggedInHint(cookieName?: string): boolean; /** * Guarda el estado completo de autenticación. */ saveState(state: StoredAuthState): void; /** * Carga el estado de autenticación desde storage. */ loadState(): Partial; /** * Guarda solo el access token. */ saveAccessToken(token: string, expiresAt?: number): void; /** * Guarda el refresh token (token rotation). */ saveRefreshToken(token: string): void; /** * Guarda los permisos actualizados. */ savePermissions(response: GetPermissionsResponse): void; /** * Carga los permisos desde storage. */ loadPermissions(): { roles: string[]; permissions: string[]; isSuperAdmin: boolean; }; /** * Obtiene el refresh token. */ getRefreshToken(): string | null; /** * Limpia todo el estado de autenticación. */ clear(): void; /** * Verifica si hay estado guardado. */ hasStoredState(): boolean; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; }