import { apiFetch, type ApiSettings } from "@govoplan/core-webui"; export type AccountSession = { id: string; tenant_id: string; current: boolean; status: "active" | "expired" | "revoked"; created_at: string; last_seen_at?: string | null; expires_at: string; revoked_at?: string | null; client?: string | null; }; export type AccountSessionList = { sessions: AccountSession[]; }; export function fetchAccountSessions( settings: ApiSettings ): Promise { return apiFetch(settings, "/api/v1/auth/sessions", { cache: "no-store" }); } export function revokeAccountSession( settings: ApiSettings, sessionId: string ): Promise<{ session: AccountSession; revoked: boolean }> { return apiFetch(settings, `/api/v1/auth/sessions/${encodeURIComponent(sessionId)}/revoke`, { method: "POST" }); } export function revokeOtherAccountSessions( settings: ApiSettings ): Promise<{ revoked_count: number }> { return apiFetch(settings, "/api/v1/auth/sessions/revoke-others", { method: "POST" }); } export function fetchAdminUserSessions( settings: ApiSettings, userId: string ): Promise { return apiFetch( settings, `/api/v1/admin/users/${encodeURIComponent(userId)}/sessions`, { cache: "no-store" } ); } export function revokeAdminUserSession( settings: ApiSettings, userId: string, sessionId: string, currentPassword: string ): Promise<{ session: AccountSession; revoked: boolean }> { return apiFetch( settings, `/api/v1/admin/users/${encodeURIComponent(userId)}/sessions/${encodeURIComponent(sessionId)}/revoke`, { method: "POST", body: JSON.stringify({ current_password: currentPassword }) } ); }