itd-api 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -97,6 +97,39 @@ declare const AttachmentType: Readonly<{
97
97
  readonly Audio: "audio";
98
98
  }>;
99
99
  type AttachmentType = (typeof AttachmentType)[keyof typeof AttachmentType];
100
+ /**
101
+ * Тип фрагмента разметки в тексте поста или комментария.
102
+ *
103
+ * Первые два сервер расставляет сам при разборе текста, остальные приходят от редактора.
104
+ * Тип открытый: набор может пополниться.
105
+ *
106
+ * @example
107
+ * ```ts
108
+ * await itd.posts.update(postId, {
109
+ * content: 'жирное слово',
110
+ * spans: [{ type: SpanType.Bold, offset: 0, length: 6 }],
111
+ * });
112
+ * ```
113
+ */
114
+ declare const SpanType: Readonly<{
115
+ /** Хэштег. Название без решётки лежит в `tag`. */
116
+ readonly Hashtag: "hashtag";
117
+ /** Упоминание. Имя пользователя лежит в `tag`. */
118
+ readonly Mention: "mention";
119
+ /** Ссылка. Адрес лежит в `url`, а не в `tag`. */
120
+ readonly Link: "link";
121
+ readonly Bold: "bold";
122
+ readonly Italic: "italic";
123
+ readonly Underline: "underline";
124
+ /** Зачёркнутый. */
125
+ readonly Strike: "strike";
126
+ /** Спойлер: текст скрыт до нажатия. */
127
+ readonly Spoiler: "spoiler";
128
+ /** Моноширинный. */
129
+ readonly Monospace: "monospace";
130
+ readonly Quote: "quote";
131
+ }>;
132
+ type SpanType = Loose<(typeof SpanType)[keyof typeof SpanType]>;
100
133
  /** На что подаётся жалоба. */
101
134
  declare const ReportTargetType: Readonly<{
102
135
  readonly Post: "post";
@@ -264,14 +297,16 @@ type UserRef = string;
264
297
  * поэтому при работе с эмодзи проверяйте результат.
265
298
  */
266
299
  interface Span {
267
- /** Тип фрагмента: `hashtag`, `mention`, `link` и другие. */
268
- type: Loose<'hashtag' | 'mention' | 'link'>;
300
+ /** Тип фрагмента см. {@link SpanType}. */
301
+ type: SpanType;
269
302
  /** Смещение от начала текста. */
270
303
  offset: number;
271
304
  /** Длина фрагмента. */
272
305
  length: number;
273
- /** Содержимое: имя хэштега без решётки, имя пользователя, адрес ссылки. */
306
+ /** Имя хэштега без решётки либо имя пользователя. */
274
307
  tag?: string;
308
+ /** Адрес ссылки. Только у `link`: у него вместо `tag` отдельное поле. */
309
+ url?: string;
275
310
  }
276
311
  /**
277
312
  * Значок-«пин» в профиле — награда или отметка платформы.
@@ -1439,7 +1474,7 @@ declare const DEFAULT_TIMEOUT = 30000;
1439
1474
  /**
1440
1475
  * Версия библиотеки — попадает в `User-Agent`.
1441
1476
  */
1442
- declare const LIBRARY_VERSION = "0.0.4";
1477
+ declare const LIBRARY_VERSION = "0.0.6";
1443
1478
  /**
1444
1479
  * `User-Agent` по умолчанию.
1445
1480
  *
@@ -1450,7 +1485,7 @@ declare const LIBRARY_VERSION = "0.0.4";
1450
1485
  * В браузере заголовок не выставляется — `User-Agent` там запрещён к изменению, и среда
1451
1486
  * молча его игнорирует.
1452
1487
  */
1453
- declare const DEFAULT_USER_AGENT = "Mozilla/5.0 (compatible; itd-api/0.0.4; +https://github.com/KiowDev/itd-api)";
1488
+ declare const DEFAULT_USER_AGENT = "Mozilla/5.0 (compatible; itd-api/0.0.6; +https://github.com/KiowDev/itd-api)";
1454
1489
  /**
1455
1490
  * Настройки повторов со всеми значениями по умолчанию.
1456
1491
  *
@@ -1610,6 +1645,108 @@ declare class Emitter<Events> {
1610
1645
  removeAllListeners(): void;
1611
1646
  }
1612
1647
 
1648
+ /**
1649
+ * Обёртка вокруг запроса.
1650
+ *
1651
+ * Получает описание запроса и продолжение цепочки. Может изменить запрос перед отправкой,
1652
+ * посмотреть и подменить разобранный ответ или вовсе не вызывать `next` и вернуть своё.
1653
+ *
1654
+ * @param request что уходит на сервер; изменять сам объект не нужно — передайте копию в `next`
1655
+ * @param next продолжение: либо следующая обёртка, либо настоящий запрос
1656
+ * @returns тело ответа в том виде, в каком его получит вызывающий код
1657
+ *
1658
+ * @example Дописать заголовок ко всем запросам
1659
+ * ```ts
1660
+ * const transformer: Transformer = (request, next) =>
1661
+ * next({ ...request, headers: { ...request.headers, 'X-Trace': trace() } });
1662
+ * ```
1663
+ */
1664
+ type Transformer = (request: RawRequestOptions, next: (request: RawRequestOptions) => Promise<unknown>) => Promise<unknown>;
1665
+ /** Что плагин получает при подключении. */
1666
+ interface PluginContext {
1667
+ /** Базовый URL клиента — например чтобы разобрать абсолютные ссылки из ответа. */
1668
+ baseUrl: string;
1669
+ /** Отладочный вывод клиента, если он включён. */
1670
+ logger: Logger | undefined;
1671
+ /** Добавляет обёртку запроса. Подключённые раньше оказываются снаружи. */
1672
+ use(transformer: Transformer): void;
1673
+ }
1674
+ /**
1675
+ * Плагин клиента.
1676
+ *
1677
+ * Подключается через `itd.use(plugin)` и работает на уровне транспорта: видит запрос
1678
+ * до отправки и разобранный ответ. Библиотека не знает, что именно делает плагин, —
1679
+ * ей достаточно списка обёрток и имён опций, которые он читает.
1680
+ *
1681
+ * @example
1682
+ * ```ts
1683
+ * const logging: ItdPlugin = {
1684
+ * name: 'logging',
1685
+ * install({ use, logger }) {
1686
+ * use(async (request, next) => {
1687
+ * logger?.info(`${request.method} ${request.path}`);
1688
+ * return next(request);
1689
+ * });
1690
+ * },
1691
+ * };
1692
+ *
1693
+ * itd.use(logging);
1694
+ * ```
1695
+ */
1696
+ interface ItdPlugin {
1697
+ /** Имя плагина. Должно быть уникальным: повторное подключение — ошибка. */
1698
+ name: string;
1699
+ /**
1700
+ * Имена опций запроса, которые плагин читает у методов ресурсов.
1701
+ *
1702
+ * Библиотека этих опций не понимает и ничего с ними не делает — только доносит
1703
+ * от вызова метода до обёртки нетронутыми. Без такого списка чужие поля отсеиваются,
1704
+ * чтобы случайная опечатка в параметрах не уезжала на сервер.
1705
+ *
1706
+ * Имена полей самого запроса (`path`, `body`, `headers`, `signal` и прочие из
1707
+ * `RawRequestOptions`) заявить нельзя: подключение такого плагина завершится ошибкой.
1708
+ *
1709
+ * Типы для них плагин объявляет сам, дополняя `RequestOptions`:
1710
+ * ```ts
1711
+ * declare module 'itd-api' {
1712
+ * interface RequestOptions { encrypt?: string | undefined }
1713
+ * }
1714
+ * ```
1715
+ */
1716
+ optionKeys?: readonly string[];
1717
+ /** Вызывается один раз при подключении. */
1718
+ install(context: PluginContext): void;
1719
+ }
1720
+ /**
1721
+ * Список подключённых плагинов и собранная из них цепочка обёрток.
1722
+ *
1723
+ * Живёт в клиенте, а работает в транспорте: {@link HttpClient} прогоняет через `run`
1724
+ * каждый запрос, если плагины есть.
1725
+ */
1726
+ declare class PluginRegistry {
1727
+ #private;
1728
+ /** Сколько обёрток подключено. Ноль означает, что запрос идёт прежним путём. */
1729
+ get size(): number;
1730
+ /** Имена опций запроса, заявленные плагинами. */
1731
+ get optionKeys(): ReadonlySet<string>;
1732
+ /**
1733
+ * Подключает плагин.
1734
+ *
1735
+ * @throws {ItdConfigError} если плагин задан неверно, уже подключён или заявил занятое
1736
+ * имя опции
1737
+ */
1738
+ add(plugin: ItdPlugin, context: Omit<PluginContext, 'use'>): void;
1739
+ /**
1740
+ * Прогоняет запрос через цепочку обёрток.
1741
+ *
1742
+ * Цепочка собирается на каждый запрос заново: плагин можно подключить в любой момент,
1743
+ * а обёрток единицы — экономить тут не на чем.
1744
+ *
1745
+ * @param execute настоящий запрос, вызывается самой внутренней обёрткой
1746
+ */
1747
+ run(request: RawRequestOptions, execute: (request: RawRequestOptions) => Promise<unknown>): Promise<unknown>;
1748
+ }
1749
+
1613
1750
  /**
1614
1751
  * Подключаемые части конвейера.
1615
1752
  *
@@ -1666,6 +1803,15 @@ declare class HttpClient {
1666
1803
  constructor(config: ResolvedConfig, collaborators?: HttpCollaborators);
1667
1804
  /** Базовый URL, к которому обращается клиент. */
1668
1805
  get baseUrl(): string;
1806
+ /**
1807
+ * Имена опций запроса, заявленные плагинами.
1808
+ *
1809
+ * Читается ресурсами: они переносят в транспорт только известные поля, а чужие,
1810
+ * если их никто не заявил, отсеивают.
1811
+ */
1812
+ get pluginOptionKeys(): ReadonlySet<string>;
1813
+ /** Подключает список плагинов. Реестр общий с клиентом и пополняется через `itd.use()`. */
1814
+ usePlugins(plugins: PluginRegistry): void;
1669
1815
  /**
1670
1816
  * Подключает недостающие части конвейера.
1671
1817
  *
@@ -2196,7 +2342,14 @@ declare class BaseResource {
2196
2342
  /** @internal */
2197
2343
  protected readonly http: HttpClient;
2198
2344
  constructor(http: HttpClient);
2199
- /** Переносит общие поля опций запроса в параметры транспорта. */
2345
+ /**
2346
+ * Переносит общие поля опций запроса в параметры транспорта.
2347
+ *
2348
+ * Поля перечислены поимённо, а не скопированы целиком: параметры методов наследуют
2349
+ * {@link RequestOptions} и приносят с собой `limit`, `cursor` и прочее, чему в описании
2350
+ * запроса делать нечего. Исключение — опции, заявленные плагинами: их библиотека
2351
+ * не понимает, но обязана донести до обёрток нетронутыми.
2352
+ */
2200
2353
  protected requestOptions(options: RequestOptions | undefined): Partial<RequestOptions>;
2201
2354
  /**
2202
2355
  * Собирает перебор страниц.
@@ -2918,9 +3071,18 @@ declare class PostsResource extends BaseResource {
2918
3071
  vote(postId: string, optionIds: string[], options?: RequestOptions): Promise<Poll>;
2919
3072
  /** Запрашивает счётчики сразу для нескольких постов. */
2920
3073
  stats(ids: string[], options?: RequestOptions): Promise<PostStats[]>;
2921
- /** Загружает страницу постов пользователя (его стену). */
3074
+ /**
3075
+ * Загружает страницу стены пользователя.
3076
+ *
3077
+ * Это **не только его собственные посты**: сюда попадают и записи, которые другие
3078
+ * оставили на его стене — у них `author` чужой, а `wallRecipient` указывает на владельца
3079
+ * стены. Поэтому число записей обычно больше, чем `postsCount` из профиля; чтобы
3080
+ * получить только авторские посты, отфильтруйте по `post.author.id`.
3081
+ *
3082
+ * Принимает и UUID, и имя пользователя.
3083
+ */
2922
3084
  byUser(user: UserRef, params?: UserPostsParams): Promise<Page<Post>>;
2923
- /** Перебирает посты пользователя. */
3085
+ /** Перебирает стену пользователя. Что именно в неё входит — см. {@link byUser}. */
2924
3086
  iterateByUser(user: UserRef, params?: UserPostsParams): Paginator<Post>;
2925
3087
  /** Загружает страницу постов, которые пользователь отметил реакцией. */
2926
3088
  likedByUser(user: UserRef, params?: UserPostsParams): Promise<Page<Post>>;
@@ -2959,9 +3121,16 @@ declare class PostsResource extends BaseResource {
2959
3121
  voiceComment(postId: string, audio: FileInput, options?: RequestOptions): Promise<Comment>;
2960
3122
  }
2961
3123
 
2962
- /** Постраничные параметры списков пользователей. */
3124
+ /**
3125
+ * Параметры списков пользователей.
3126
+ *
3127
+ * ⚠️ Списки подписчиков, подписок и заблокированных на сервере **не листаются**:
3128
+ * `page` он игнорирует, а `limit` зажимает на 20. Подробности — в {@link UsersResource.followers}.
3129
+ */
2963
3130
  interface UserListParams extends RequestOptions {
3131
+ /** Сколько записей вернуть. Значения больше 20 сервер молча уменьшает до 20. */
2964
3132
  limit?: number;
3133
+ /** Номер страницы. Сервер его игнорирует — оставлен на случай, если пагинацию починят. */
2965
3134
  page?: number;
2966
3135
  maxPages?: number;
2967
3136
  }
@@ -3028,13 +3197,28 @@ declare class UsersResource extends BaseResource {
3028
3197
  follow(user: UserRef, options?: RequestOptions): Promise<FollowResult>;
3029
3198
  /** Отписывается от пользователя. */
3030
3199
  unfollow(user: UserRef, options?: RequestOptions): Promise<void>;
3031
- /** Загружает страницу подписчиков. */
3200
+ /**
3201
+ * Загружает подписчиков пользователя.
3202
+ *
3203
+ * ⚠️ **Сервер этот список не листает.** Возвращаются первые 20 записей и только они:
3204
+ * параметр `page` игнорируется (любая страница отдаёт те же записи и `pagination.page: 1`),
3205
+ * `limit` больше 20 молча уменьшается, а `hasMore` всегда `false`. Последнее честно —
3206
+ * получить продолжение нечем.
3207
+ *
3208
+ * Числу `total` доверять тоже не стоит: оно расходится с `followersCount` из профиля —
3209
+ * на проверенных аккаунтах занижено примерно на 1–4%.
3210
+ */
3032
3211
  followers(user: UserRef, params?: UserListParams): Promise<Page<UserSummary>>;
3033
- /** Перебирает подписчиков. */
3212
+ /**
3213
+ * Перебирает подписчиков.
3214
+ *
3215
+ * ⚠️ Перебор закончится после первых 20 записей: сервер список не листает —
3216
+ * см. {@link followers}. Метод оставлен на случай, если пагинацию починят.
3217
+ */
3034
3218
  iterateFollowers(user: UserRef, params?: UserListParams): Paginator<UserSummary>;
3035
- /** Загружает страницу подписок. */
3219
+ /** Загружает подписки пользователя. Ограничения те же, что у {@link followers}. */
3036
3220
  following(user: UserRef, params?: UserListParams): Promise<Page<UserSummary>>;
3037
- /** Перебирает подписки. */
3221
+ /** Перебирает подписки. Закончится после первых 20 записей — см. {@link followers}. */
3038
3222
  iterateFollowing(user: UserRef, params?: UserListParams): Paginator<UserSummary>;
3039
3223
  /**
3040
3224
  * Проверяет, подписаны ли вы, сразу для нескольких пользователей.
@@ -3052,9 +3236,9 @@ declare class UsersResource extends BaseResource {
3052
3236
  block(user: UserRef, options?: RequestOptions): Promise<void>;
3053
3237
  /** Снимает блокировку. */
3054
3238
  unblock(user: UserRef, options?: RequestOptions): Promise<void>;
3055
- /** Загружает страницу заблокированных пользователей. */
3239
+ /** Загружает заблокированных пользователей. Ограничения те же, что у {@link followers}. */
3056
3240
  blocked(params?: UserListParams): Promise<Page<UserSummary>>;
3057
- /** Перебирает заблокированных пользователей. */
3241
+ /** Перебирает заблокированных. Закончится после первых 20 записей — см. {@link followers}. */
3058
3242
  iterateBlocked(params?: UserListParams): Paginator<UserSummary>;
3059
3243
  /** Загружает настройки приватности. */
3060
3244
  getPrivacy(options?: RequestOptions): Promise<PrivacySettings>;
@@ -3150,6 +3334,24 @@ declare class ItdClient {
3150
3334
  * ```
3151
3335
  */
3152
3336
  request<T = unknown>(options: RawRequestOptions): Promise<T>;
3337
+ /**
3338
+ * Подключает плагин.
3339
+ *
3340
+ * Плагин работает на уровне транспорта: видит запрос до отправки и разобранный ответ,
3341
+ * поэтому одна обёртка охватывает сразу все методы клиента. Подключать можно в любой
3342
+ * момент, но обычно это делают сразу после создания клиента.
3343
+ *
3344
+ * @throws {ItdConfigError} если плагин задан неверно или уже подключён
3345
+ *
3346
+ * @example
3347
+ * ```ts
3348
+ * import { crypt } from 'itd-api-crypto';
3349
+ *
3350
+ * itd.use(crypt());
3351
+ * await itd.posts.create({ content: 'секрет' }, { encrypt: 'invis' });
3352
+ * ```
3353
+ */
3354
+ use(plugin: ItdPlugin): this;
3153
3355
  /**
3154
3356
  * Подписывается на события авторизации.
3155
3357
  *
@@ -3580,4 +3782,4 @@ interface SseTransportOptions {
3580
3782
  idleTimeout?: number;
3581
3783
  }
3582
3784
 
3583
- export { IMAGE_MIME_TYPES as $, ALLOWED_MIME_TYPES as A, type BuilderInput as B, type CaptchaCredentials as C, type CreatePollInput as D, type CreatePostInput as E, type FileReader as F, type CreateReportInput as G, type Credentials as H, type ItdSession as I, type CredentialsAuth as J, DEFAULT_BASE_URL as K, DEFAULT_TIMEOUT as L, DEFAULT_USER_AGENT as M, DEVICE_ID_HEADER as N, DetectedRuntime as O, type DwellEntry as P, type ErrorContextHook as Q, type FeedParams as R, FeedTab as S, type TokenStorage as T, type FileInput as U, FilesResource as V, type FollowResult as W, type ForgotPasswordInput as X, type Hashtag as Y, type HashtagPostsParams as Z, HashtagsResource as _, ItdClient as a, type Profile as a$, type ImageMimeType as a0, type InteractionEntry as a1, type IsoDate as a2, ItdAbortError as a3, ItdApiError as a4, type ItdApiErrorInit as a5, ItdApiErrorKind as a6, ItdAuthError as a7, type ItdBuilder as a8, ItdConfigError as a9, type NotificationEvent as aA, type NotificationListParams as aB, type NotificationSettings as aC, NotificationType as aD, NotificationsResource as aE, OAuthProvider as aF, type Page as aG, type PageState as aH, PaginationMode as aI, Paginator as aJ, type PaymentMethod as aK, type Pin as aL, type PinPostResult as aM, type PinsResult as aN, PlatformResource as aO, type Poll as aP, PollBuilder as aQ, type PollInput as aR, type PollOption as aS, type PollTransportOptions as aT, type Portal as aU, type Post as aV, PostBuilder as aW, type PostInput as aX, type PostStats as aY, PostsResource as aZ, type PrivacySettings as a_, ItdConflictError as aa, ItdError as ab, ItdErrorCode as ac, ItdErrorKind as ad, type ItdFieldErrors as ae, ItdForbiddenError as af, ItdNetworkError as ag, ItdNotFoundError as ah, ItdPhoneVerificationError as ai, ItdRateLimitError as aj, ItdRealtime as ak, ItdServerError as al, ItdTimeoutError as am, ItdValidationError as an, LIBRARY_VERSION as ao, type LikeResult as ap, LikesVisibility as aq, type Listener as ar, LocalStorageTokenStorage as as, type Logger as at, type Loose as au, MAX_RECONNECT_ATTEMPTS as av, MemoryTokenStorage as aw, type MyProfile as ax, NOTIFICATION_TYPE_ALIASES as ay, type Notification as az, type ItdClientOptions as b, formatNotificationText as b$, type PublicProfile as b0, RECONNECT_BACKOFF as b1, RECONNECT_JITTER as b2, REFRESH_COOKIE as b3, REFRESH_COOKIE_PATH as b4, type RateLimitOptions as b5, type RawRequestOptions as b6, type RealtimeEvents as b7, type RealtimeOptions as b8, RealtimeStatus as b9, SubscriptionResource as bA, type SubscriptionState as bB, TURNSTILE_SITE_KEY as bC, TelemetryResource as bD, type TransportContext as bE, type TransportEvent as bF, UnauthorizedStreamError as bG, type Unsubscribe as bH, type UpdateNotificationSettingsInput as bI, type UpdatePrivacyInput as bJ, type UpdateProfileInput as bK, type UploadOptions as bL, type UploadedFile as bM, type UserId as bN, type UserListParams as bO, type UserPostsParams as bP, type UserRef as bQ, type UserSummary as bR, UsersResource as bS, VIDEO_MIME_TYPES as bT, VerificationResource as bU, type VerificationStatus as bV, type VideoMimeType as bW, WallAccess as bX, canonicalNotificationType as bY, comment as bZ, createTokenStorage as b_, type RealtimeTransport as ba, RealtimeTransportKind as bb, type ReconnectOptions as bc, type RepliesParams as bd, type Report as be, ReportBuilder as bf, type ReportInput as bg, ReportReason as bh, ReportTargetType as bi, ReportsResource as bj, type RequestContext as bk, type RequestOptions as bl, type ResetPasswordInput as bm, type ResponseContext as bn, type RetryContext as bo, type RetryOptions as bp, RuntimeMode as bq, STREAM_PATH as br, SearchResource as bs, type SearchResult as bt, type Session as bu, type SignInResult as bv, SignInStatus as bw, type Span as bx, type SseTransportOptions as by, type Subscription as bz, AUDIO_MIME_TYPES as c, isBuilder as c0, isItdApiError as c1, isItdAuthError as c2, isItdConflictError as c3, isItdError as c4, isItdForbiddenError as c5, isItdNotFoundError as c6, isItdPhoneVerificationError as c7, isItdRateLimitError as c8, isItdServerError as c9, isItdValidationError as ca, isKnownNotificationType as cb, isMyProfile as cc, normalizeNotification as cd, poll as ce, post as cf, readNotificationEvent as cg, readUnreadCountEvent as ch, report as ci, resolveNotificationUrl as cj, toDate as ck, createClient as cl, AUTH_FLAG_COOKIE as d, AUTH_PATHS as e, type Actor as f, type AllowedMimeType as g, type Announcement as h, type AnnouncementButton as i, type Attachment as j, AttachmentType as k, type AudioMimeType as l, type AuthInput as m, AuthResource as n, type Author as o, type ChangelogEntry as p, type Clan as q, type ClientHooks as r, type Comment as s, CommentBuilder as t, type CommentInput as u, type CommentReplyTo as v, CommentSort as w, type CommentsParams as x, CommentsResource as y, type CreateCommentInput as z };
3785
+ export { IMAGE_MIME_TYPES as $, ALLOWED_MIME_TYPES as A, type BuilderInput as B, type CaptchaCredentials as C, type CreatePollInput as D, type CreatePostInput as E, type FileReader as F, type CreateReportInput as G, type Credentials as H, type ItdSession as I, type CredentialsAuth as J, DEFAULT_BASE_URL as K, DEFAULT_TIMEOUT as L, DEFAULT_USER_AGENT as M, DEVICE_ID_HEADER as N, DetectedRuntime as O, type DwellEntry as P, type ErrorContextHook as Q, type FeedParams as R, FeedTab as S, type TokenStorage as T, type FileInput as U, FilesResource as V, type FollowResult as W, type ForgotPasswordInput as X, type Hashtag as Y, type HashtagPostsParams as Z, HashtagsResource as _, ItdClient as a, PostsResource as a$, type ImageMimeType as a0, type InteractionEntry as a1, type IsoDate as a2, ItdAbortError as a3, ItdApiError as a4, type ItdApiErrorInit as a5, ItdApiErrorKind as a6, ItdAuthError as a7, type ItdBuilder as a8, ItdConfigError as a9, type Notification as aA, type NotificationEvent as aB, type NotificationListParams as aC, type NotificationSettings as aD, NotificationType as aE, NotificationsResource as aF, OAuthProvider as aG, type Page as aH, type PageState as aI, PaginationMode as aJ, Paginator as aK, type PaymentMethod as aL, type Pin as aM, type PinPostResult as aN, type PinsResult as aO, PlatformResource as aP, type PluginContext as aQ, type Poll as aR, PollBuilder as aS, type PollInput as aT, type PollOption as aU, type PollTransportOptions as aV, type Portal as aW, type Post as aX, PostBuilder as aY, type PostInput as aZ, type PostStats as a_, ItdConflictError as aa, ItdError as ab, ItdErrorCode as ac, ItdErrorKind as ad, type ItdFieldErrors as ae, ItdForbiddenError as af, ItdNetworkError as ag, ItdNotFoundError as ah, ItdPhoneVerificationError as ai, type ItdPlugin as aj, ItdRateLimitError as ak, ItdRealtime as al, ItdServerError as am, ItdTimeoutError as an, ItdValidationError as ao, LIBRARY_VERSION as ap, type LikeResult as aq, LikesVisibility as ar, type Listener as as, LocalStorageTokenStorage as at, type Logger as au, type Loose as av, MAX_RECONNECT_ATTEMPTS as aw, MemoryTokenStorage as ax, type MyProfile as ay, NOTIFICATION_TYPE_ALIASES as az, type ItdClientOptions as b, WallAccess as b$, type PrivacySettings as b0, type Profile as b1, type PublicProfile as b2, RECONNECT_BACKOFF as b3, RECONNECT_JITTER as b4, REFRESH_COOKIE as b5, REFRESH_COOKIE_PATH as b6, type RateLimitOptions as b7, type RawRequestOptions as b8, type RealtimeEvents as b9, SpanType as bA, type SseTransportOptions as bB, type Subscription as bC, SubscriptionResource as bD, type SubscriptionState as bE, TURNSTILE_SITE_KEY as bF, TelemetryResource as bG, type Transformer as bH, type TransportContext as bI, type TransportEvent as bJ, UnauthorizedStreamError as bK, type Unsubscribe as bL, type UpdateNotificationSettingsInput as bM, type UpdatePrivacyInput as bN, type UpdateProfileInput as bO, type UploadOptions as bP, type UploadedFile as bQ, type UserId as bR, type UserListParams as bS, type UserPostsParams as bT, type UserRef as bU, type UserSummary as bV, UsersResource as bW, VIDEO_MIME_TYPES as bX, VerificationResource as bY, type VerificationStatus as bZ, type VideoMimeType as b_, type RealtimeOptions as ba, RealtimeStatus as bb, type RealtimeTransport as bc, RealtimeTransportKind as bd, type ReconnectOptions as be, type RepliesParams as bf, type Report as bg, ReportBuilder as bh, type ReportInput as bi, ReportReason as bj, ReportTargetType as bk, ReportsResource as bl, type RequestContext as bm, type RequestOptions as bn, type ResetPasswordInput as bo, type ResponseContext as bp, type RetryContext as bq, type RetryOptions as br, RuntimeMode as bs, STREAM_PATH as bt, SearchResource as bu, type SearchResult as bv, type Session as bw, type SignInResult as bx, SignInStatus as by, type Span as bz, AUDIO_MIME_TYPES as c, canonicalNotificationType as c0, comment as c1, createTokenStorage as c2, formatNotificationText as c3, isBuilder as c4, isItdApiError as c5, isItdAuthError as c6, isItdConflictError as c7, isItdError as c8, isItdForbiddenError as c9, isItdNotFoundError as ca, isItdPhoneVerificationError as cb, isItdRateLimitError as cc, isItdServerError as cd, isItdValidationError as ce, isKnownNotificationType as cf, isMyProfile as cg, normalizeNotification as ch, poll as ci, post as cj, readNotificationEvent as ck, readUnreadCountEvent as cl, report as cm, resolveNotificationUrl as cn, toDate as co, createClient as cp, AUTH_FLAG_COOKIE as d, AUTH_PATHS as e, type Actor as f, type AllowedMimeType as g, type Announcement as h, type AnnouncementButton as i, type Attachment as j, AttachmentType as k, type AudioMimeType as l, type AuthInput as m, AuthResource as n, type Author as o, type ChangelogEntry as p, type Clan as q, type ClientHooks as r, type Comment as s, CommentBuilder as t, type CommentInput as u, type CommentReplyTo as v, CommentSort as w, type CommentsParams as x, CommentsResource as y, type CreateCommentInput as z };