import type { LinkedId, LinkedType, NoticeType } from "../types/common.js"; import type { ForumId } from "../types/forum.js"; import type { ApiRequestHandler } from "../types/auth-layer-api-options.js"; import type { TopicForum, TopicType, TopicData, TopicBasic, TopicId } from "../types/topic.js"; import type { UserId } from "../types/user.js"; import type { IdField } from "./common.js"; export interface TopicsListParams { page?: number; limit?: number; forum?: TopicForum; linked_id?: LinkedId; linked_type?: LinkedType; type?: TopicType; } export interface TopicsUpdatesParams { page: number; limit: number; } /** Интерфейс параметров для горячих тем */ export type TopicsHotParams = { limit: number; }; export interface TopicTemplate { body: string; forum_id: ForumId; linked_id?: LinkedId; linked_type?: LinkedType; title: string; type: TopicType; user_id: UserId; } /** Интерфейс параметров создания темы */ export type TopicsCreateParams = { topic: TopicTemplate; }; export interface TopicUpdateTemplate { body?: string; linked_id?: LinkedId; linked_type?: LinkedType; title?: string; } export interface TopicsUpdateParams { topic: TopicsUpdateParams; } /** * Темы (Topics) * @param methods - набор методов для выполнения API-запросов */ export declare class TopicsApi { constructor(req: ApiRequestHandler); /** * Список тем * @param params - параметры запроса (пагинация, фильтры) */ readonly list: (params: TopicsListParams) => Promise; /** * Список тем/новостей об обновлениях базы данных * @param params - параметры пагинации */ readonly updates: (params: TopicsUpdatesParams) => Promise; /** * Список популярных (hot) тем * @param params - параметры запроса (limit) */ readonly hot: (params: TopicsHotParams) => Promise; /** * Получить тему по `TopicId` * @param params - объект с полем id */ readonly byId: ({ id }: IdField) => Promise; /** * Создать тему * * Требует OAuth-скоупа `topics` * @param params - параметры создания (см. TopicsCreateParams) */ readonly create: (params: TopicsCreateParams) => Promise; /** * Обновить тему * * Требует OAuth-скоупа `topics` * @param params - параметры обновления (см. TopicsUpdateParams) */ readonly update: (params: TopicsUpdateParams) => Promise; /** * Удалить тему * * Требует OAuth-скоупа `topics` * @param params - объект с полем id */ readonly destroy: ({ id }: IdField) => Promise; }