import { Answer } from "./api/Answer.js"; import { Classified } from "./api/Classified.js"; import EndpointApi from "./api/EndpointApi.js"; import { Event } from "./api/Event.js"; import { Form } from "./api/Form.js"; import { Organization } from "./api/Organization.js"; import { Poi } from "./api/Poi.js"; import { Project } from "./api/Project.js"; import { User } from "./api/User.js"; import { UserApi } from "./api/UserApi.js"; import type ApiClient from "./ApiClient.js"; import type { ApiClientOptions } from "./ApiClient.js"; import type { EntityData, EntityTypes } from "./types/entities.js"; export default class Api { private _loggedUser; private _client; private _endpointApi?; /** * Authentifie l'utilisateur et retourne une instance d'Api. */ static userLogin(email: string, password: string, options: ApiClientOptions | ApiClient): Promise; /** * Crée une instance de UserApi avec les options fournies. */ static userApi(options: ApiClientOptions | ApiClient): UserApi; /** * Connecte un utilisateur avec un UserApi existant. */ static userApiLogin(userApi: UserApi, email: string, password: string): Promise; /** * Construit une instance d'Api. */ constructor(loggedUser: User | null, client: ApiClient); /** * Retourne l'utilisateur connecté. */ me(): Promise; /** * Crée une instance User (autre que le connecté). */ user(userData: EntityData): Promise; /** * Creates an Organization object and optionally retrieves its profile. */ organization(organizationData: EntityData): Promise; /** * Creates a new Project instance and optionally retrieves its profile. */ project(projectData: EntityData): Promise; /** * Creates a new Event instance and optionally retrieves its profile. */ event(eventData: EntityData): Promise; /** * Creates a new Poi instance and optionally retrieves its profile. */ poi(poiData: EntityData): Promise; /** * Creates a new Answer instance and optionally retrieves answer data. */ answer(answerData: { id: string; }): Promise; /** * Creates a new Form instance and optionally retrieves form data. */ form(formData: { id: string; }): Promise
; classified(classifiedData: EntityData): Promise; /** * Retourne une entité à partir d'un slug. */ entitySlug(slug: string): Promise; /** * Retourne l'instance d'ApiClient. */ get client(): ApiClient; /** * Retourne l'instance d'EndpointApi. */ get endpointApi(): EndpointApi; /** * Recherche des tags correspondant à un mot-clé. * * Wrap de `SEARCH_TAGS` (auth=none) — accessible même non connecté. * Méthode exposée sur la facade `Api` (pas d'entité hôte naturelle pour * un index global de tags). * * @param q - Mot-clé de recherche (au moins 1 caractère). * @returns Tableau de résultats : soit `[{tag}]` si aucun match (echo du * terme), soit `[{_id, tag, field_length}, ...]` avec les tags * existants triés par `field_length`. * @throws {ApiError} 400 si `q` vide. * * @example * const results = await api.searchTags("permac"); * results.forEach(t => console.log(t.tag, t.field_length)); */ searchTags(q: string): Promise; /** * Déconnecte l'utilisateur et réinitialise la session. */ logout(): void; }