import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs'; import { ValtechAuthConfig, DeviceInfo, DeviceActionResult, DeviceActionResponse, ValidateActionResponse } from './types'; import * as i0 from "@angular/core"; /** * Servicio para gestión de dispositivos del usuario. * Permite listar, aprobar, bloquear y eliminar dispositivos registrados. * * @example * ```typescript * import { DeviceService } from 'valtech-components'; * * @Component({...}) * export class DevicesPage { * private deviceService = inject(DeviceService); * * devices = signal([]); * * async ngOnInit() { * const devices = await firstValueFrom(this.deviceService.listDevices()); * this.devices.set(devices); * } * * async blockDevice(deviceId: string) { * await firstValueFrom(this.deviceService.blockDevice(deviceId)); * // Recargar lista * } * } * ``` */ export declare class DeviceService { private config; private http; constructor(config: ValtechAuthConfig | null, http: HttpClient); private get baseUrl(); /** * Lista todos los dispositivos registrados del usuario. */ listDevices(): Observable; /** * Obtiene información de un dispositivo específico. */ getDevice(deviceId: string): Observable; /** * Bloquea un dispositivo. * Revoca todas las sesiones activas de ese dispositivo. */ blockDevice(deviceId: string): Observable; /** * Aprueba un dispositivo pendiente. * Cambia el estado de pending_approval a active. */ approveDevice(deviceId: string): Observable; /** * Elimina un dispositivo registrado. */ deleteDevice(deviceId: string): Observable; /** * Valida un token de acción SIN ejecutarlo. * Útil para mostrar confirmación al usuario antes de ejecutar. * Este endpoint NO requiere autenticación. * * @param token Token JWT de acción * @returns Información del token si es válido * * @example * ```typescript * const token = this.route.snapshot.queryParams['token']; * if (token) { * const validation = await firstValueFrom(this.deviceService.validateAction(token)); * if (validation.valid) { * // Mostrar confirmación al usuario * console.log(`Acción: ${validation.actionType}`); * } * } * ``` */ validateAction(token: string): Observable; /** * Ejecuta una acción de dispositivo desde un token de email. * Este endpoint NO requiere autenticación. * El token viene en la URL del email de alerta de nuevo inicio de sesión. * * @param token Token JWT de acción (24h, un solo uso) * * @example * ```typescript * // En la página de dispositivos, al detectar ?token=xxx en la URL: * const token = this.route.snapshot.queryParams['token']; * if (token) { * const result = await firstValueFrom(this.deviceService.executeAction(token)); * if (result.success) { * console.log(`Dispositivo bloqueado, ${result.sessionsRevoked} sesiones cerradas`); * } * } * ``` */ executeAction(token: string): Observable; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; }