import { ButtonMetadata } from '../../types';
import { SessionInfo } from '../../../services/auth/types';
import * as i0 from "@angular/core";
/**
 * `val-session-list-modal` — modal de "Ver todas las sesiones activas". Organism
 * compartido entre la vista Seguridad y la vista Cuenta del factory.
 *
 * Render reusa el mismo markup de la sección de sesiones inline (mismas clases
 * CSS) pero sin truncar la lista.
 *
 * Inputs (vienen de `componentProps` del ModalService):
 *  - `sessions` — snapshot inicial (mostrado al abrir)
 *  - `thisLabel` / `revokeLabel` — i18n strings ya resueltas
 *  - `onRevoke` — callback async que el parent ejecuta contra el backend; debe
 *    retornar la lista actualizada para que el modal refresque en sitio.
 *
 * `@Output` events NO funcionan con `modalController.create()` — por eso usamos
 * callback pasado por props + `_modalRef` para dismiss desde dentro.
 *
 * Header canónico (Regla #5): sin `ion-title`, botón Cerrar texto en `slot=end`,
 * título en el body con `val-display`.
 */
export declare class SessionListModalComponent {
    /** Snapshot inicial — el modal mantiene su propia copia y la refresca tras revoke. */
    set sessions(value: SessionInfo[]);
    /** Título del modal (ya traducido). */
    title: string;
    /** Label del botón cerrar del header (ya traducido). */
    closeLabel: string;
    /** Label "Esta sesión" (en idioma activo). */
    thisLabel: string;
    /** Label del botón revoke individual. */
    revokeLabel: string;
    /**
     * Callback que ejecuta el revoke contra el backend y retorna la lista
     * actualizada. Pasado por `componentProps` del ModalService.
     */
    onRevoke?: (sessionId: string) => Promise<SessionInfo[]>;
    /**
     * Inyectado por `ModalService.open` — referencia para cerrar desde dentro.
     * Cualquier componente abierto vía el service recibe este objeto en
     * `componentProps`.
     */
    _modalRef?: {
        dismiss: (data?: unknown, role?: string) => void;
    };
    close(): void;
    /** Lista local mutable — refrescada después de cada revoke confirmado. */
    protected readonly sessionsLocal: import("@angular/core").WritableSignal<SessionInfo[]>;
    handleRevoke(sessionId: string): Promise<void>;
    get revokeBtn(): Partial<ButtonMetadata>;
    deviceIcon(s: SessionInfo): string;
    formatMeta(s: SessionInfo): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<SessionListModalComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SessionListModalComponent, "val-session-list-modal", never, { "sessions": { "alias": "sessions"; "required": false; }; "title": { "alias": "title"; "required": false; }; "closeLabel": { "alias": "closeLabel"; "required": false; }; "thisLabel": { "alias": "thisLabel"; "required": false; }; "revokeLabel": { "alias": "revokeLabel"; "required": false; }; "onRevoke": { "alias": "onRevoke"; "required": false; }; "_modalRef": { "alias": "_modalRef"; "required": false; }; }, {}, never, never, true, never>;
}
