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<DeviceInfo[]>([]);
 *
 *   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<DeviceInfo[]>;
    /**
     * Obtiene información de un dispositivo específico.
     */
    getDevice(deviceId: string): Observable<DeviceInfo>;
    /**
     * Bloquea un dispositivo.
     * Revoca todas las sesiones activas de ese dispositivo.
     */
    blockDevice(deviceId: string): Observable<DeviceActionResult>;
    /**
     * Aprueba un dispositivo pendiente.
     * Cambia el estado de pending_approval a active.
     */
    approveDevice(deviceId: string): Observable<DeviceActionResult>;
    /**
     * Elimina un dispositivo registrado.
     */
    deleteDevice(deviceId: string): Observable<DeviceActionResult>;
    /**
     * 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<ValidateActionResponse>;
    /**
     * 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<DeviceActionResponse>;
    static ɵfac: i0.ɵɵFactoryDeclaration<DeviceService, [{ optional: true; }, null]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DeviceService>;
}
