import ApiClient from "../ApiClient.js"; import { User } from "./User.js"; /** * API orientée utilisateur pour gérer l'authentification et * récupérer l'utilisateur connecté. */ export declare class UserApi { client: ApiClient; loggedUser: User | null; /** * @param clientOrOptions - Soit une instance ApiClient, soit des options pour en créer une */ constructor(clientOrOptions: ApiClient | ConstructorParameters[0]); /** * Indique si un utilisateur est connecté. */ get isConnected(): boolean; /** * Retourne l'ID de l'utilisateur connecté ou `null` s'il n'y a pas de session. */ get userId(): string | null; /** * Authentifie un utilisateur et retourne l'instance `User` correspondante. * * @param email - Adresse email de l'utilisateur. * @param password - Mot de passe de l'utilisateur. * @returns {Promise} * @throws {ApiError} En cas d'échec de connexion réseau ou de problème interne. * @throws {ApiResponseError} Si l'API retourne une erreur d'authentification. */ login(email: string, password: string): Promise; /** * Récupère l'instance `User` correspondant à l'utilisateur actuellement connecté. * * @returns {Promise} * @throws {ApiError} Si aucun utilisateur n'est connecté (`isConnected` faux ou `userId` absent). */ meIsconnected(): Promise; /** * Enregistre un nouvel utilisateur. * * @param params * @param params.name - Nom complet. * @param params.username - Nom d'utilisateur. * @param params.email - Adresse email. * @param params.pwd - Mot de passe. * @param params.costumSlug - (option) slug du costum de déploiement → estampille `source.key` du citoyen * côté backend (port Person::insert). `costumId`/`costumType` = entité porteuse (requis si le slug n'est * pas un doc `costum`, ex. un site porté par une org). * @returns Réponse brute de l'API. * @throws {ApiResponseError} Si l'API retourne un échec (`result === false`). */ register({ name, username, email, pwd, costumSlug, costumId, costumType }: { name: string; username: string; email: string; pwd: string; costumSlug?: string; costumId?: string; costumType?: string; }): Promise; /** * Lance une procédure de récupération de mot de passe. * * @param email - Adresse email de l'utilisateur. * @returns Réponse brute de l'API. * @throws {ApiResponseError} Si l'API retourne un échec (`result === false`). */ recoverPassword(email: string): Promise; /** * Active (valide l'email) un compte via le lien reçu par email. * * Endpoint public (aucune authentification requise). La `validationKey` * correspond à `sha256(user + email)`. En cas de succès, le rôle * `tobeactivated` est retiré et le consentement `sendMail.source` posé. * * @param params * @param params.user - Identifiant (`_id`) du compte à activer. * @param params.validationKey - Clé de validation = `sha256(user + email)`. * @returns Réponse brute de l'API (`{ result: true, msg: string }`). * @throws {ApiError} En cas de mise en file (offline/circuit breaker). * @throws {ApiResponseError} Si l'API retourne un échec (`result === false`). */ activateAccount({ user, validationKey }: { user: string; validationKey: string; }): Promise; }