diff --git a/CHANGELOG.md b/CHANGELOG.md
index 013332ee91..fc73c770af 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,5 @@
+- add missing main stream types
+
 # 0.0.10
 - add consts
 
diff --git a/etc/misskey-js.api.md b/etc/misskey-js.api.md
index 72b9dcf92b..09ee5f3ae9 100644
--- a/etc/misskey-js.api.md
+++ b/etc/misskey-js.api.md
@@ -1,2469 +1,2469 @@
-## API Report File for "misskey-js"
-
-> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
-
-```ts
-
-import { EventEmitter } from 'eventemitter3';
-
-// @public (undocumented)
-export type Acct = {
-    username: string;
-    host: string | null;
-};
-
-// Warning: (ae-forgotten-export) The symbol "TODO" needs to be exported by the entry point index.d.ts
-//
-// @public (undocumented)
-type Ad = TODO_2;
-
-// @public (undocumented)
-type Announcement = {
-    id: ID;
-    createdAt: DateString;
-    updatedAt: DateString | null;
-    text: string;
-    title: string;
-    imageUrl: string | null;
-    isRead?: boolean;
-};
-
-// @public (undocumented)
-type Antenna = {
-    id: ID;
-    createdAt: DateString;
-    name: string;
-    keywords: string[][];
-    excludeKeywords: string[][];
-    src: 'home' | 'all' | 'users' | 'list' | 'group';
-    userListId: ID | null;
-    userGroupId: ID | null;
-    users: string[];
-    caseSensitive: boolean;
-    notify: boolean;
-    withReplies: boolean;
-    withFile: boolean;
-    hasUnreadNote: boolean;
-};
-
-declare namespace api {
-    export {
-        isAPIError,
-        APIError,
-        FetchLike,
-        APIClient
-    }
-}
-export { api }
-
-// @public (undocumented)
-class APIClient {
-    constructor(opts: {
-        origin: APIClient['origin'];
-        credential?: APIClient['credential'];
-        fetch?: APIClient['fetch'] | null | undefined;
-    });
-    // (undocumented)
-    credential: string | null | undefined;
-    // (undocumented)
-    fetch: FetchLike;
-    // (undocumented)
-    origin: string;
-    // Warning: (ae-forgotten-export) The symbol "IsCaseMatched" needs to be exported by the entry point index.d.ts
-    // Warning: (ae-forgotten-export) The symbol "GetCaseResult" needs to be exported by the entry point index.d.ts
-    //
-    // (undocumented)
-    request<E extends keyof Endpoints, P extends Endpoints[E]['req']>(endpoint: E, params?: P, credential?: string | null | undefined): Promise<Endpoints[E]['res'] extends {
-        $switch: {
-            $cases: [any, any][];
-            $default: any;
-        };
-    } ? IsCaseMatched<E, P, 0> extends true ? GetCaseResult<E, P, 0> : IsCaseMatched<E, P, 1> extends true ? GetCaseResult<E, P, 1> : IsCaseMatched<E, P, 2> extends true ? GetCaseResult<E, P, 2> : IsCaseMatched<E, P, 3> extends true ? GetCaseResult<E, P, 3> : IsCaseMatched<E, P, 4> extends true ? GetCaseResult<E, P, 4> : IsCaseMatched<E, P, 5> extends true ? GetCaseResult<E, P, 5> : IsCaseMatched<E, P, 6> extends true ? GetCaseResult<E, P, 6> : IsCaseMatched<E, P, 7> extends true ? GetCaseResult<E, P, 7> : IsCaseMatched<E, P, 8> extends true ? GetCaseResult<E, P, 8> : IsCaseMatched<E, P, 9> extends true ? GetCaseResult<E, P, 9> : Endpoints[E]['res']['$switch']['$default'] : Endpoints[E]['res']>;
-}
-
-// @public (undocumented)
-type APIError = {
-    id: string;
-    code: string;
-    message: string;
-    kind: 'client' | 'server';
-    info: Record<string, any>;
-};
-
-// @public (undocumented)
-type App = TODO_2;
-
-// @public (undocumented)
-type AuthSession = {
-    id: ID;
-    app: App;
-    token: string;
-};
-
-// @public (undocumented)
-type Blocking = {
-    id: ID;
-    createdAt: DateString;
-    blockeeId: User['id'];
-    blockee: UserDetailed;
-};
-
-// @public (undocumented)
-type Channel = {
-    id: ID;
-};
-
-// @public (undocumented)
-type Clip = TODO_2;
-
-// @public (undocumented)
-type CustomEmoji = {
-    id: string;
-    name: string;
-    url: string;
-    category: string;
-    aliases: string[];
-};
-
-// @public (undocumented)
-type DateString = string;
-
-// @public (undocumented)
-type DetailedInstanceMetadata = LiteInstanceMetadata & {
-    features: Record<string, any>;
-};
-
-// @public (undocumented)
-type DriveFile = {
-    id: ID;
-    createdAt: DateString;
-    isSensitive: boolean;
-    name: string;
-    thumbnailUrl: string;
-    url: string;
-    type: string;
-    size: number;
-    md5: string;
-    blurhash: string;
-    properties: Record<string, any>;
-};
-
-// @public (undocumented)
-type DriveFolder = TODO_2;
-
-// @public (undocumented)
-export type Endpoints = {
-    'admin/abuse-user-reports': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/delete-all-files-of-a-user': {
-        req: {
-            userId: User['id'];
-        };
-        res: null;
-    };
-    'admin/delete-logs': {
-        req: NoParams;
-        res: null;
-    };
-    'admin/get-index-stats': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/get-table-stats': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/invite': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/logs': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/reset-password': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/resolve-abuse-user-report': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/resync-chart': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/send-email': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/server-info': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/show-moderation-logs': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/show-user': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/show-users': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/silence-user': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/suspend-user': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/unsilence-user': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/unsuspend-user': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/update-meta': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/vacuum': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/accounts/create': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/ad/create': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/ad/delete': {
-        req: {
-            id: Ad['id'];
-        };
-        res: null;
-    };
-    'admin/ad/list': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/ad/update': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/announcements/create': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/announcements/delete': {
-        req: {
-            id: Announcement['id'];
-        };
-        res: null;
-    };
-    'admin/announcements/list': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/announcements/update': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/drive/clean-remote-files': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/drive/cleanup': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/drive/files': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/drive/show-file': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/emoji/add': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/emoji/copy': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/emoji/list-remote': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/emoji/list': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/emoji/remove': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/emoji/update': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/federation/delete-all-files': {
-        req: {
-            host: string;
-        };
-        res: null;
-    };
-    'admin/federation/refresh-remote-instance-metadata': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/federation/remove-all-following': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/federation/update-instance': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/moderators/add': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/moderators/remove': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/promo/create': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/queue/clear': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/queue/deliver-delayed': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/queue/inbox-delayed': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/queue/jobs': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/queue/stats': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/relays/add': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/relays/list': {
-        req: TODO;
-        res: TODO;
-    };
-    'admin/relays/remove': {
-        req: TODO;
-        res: TODO;
-    };
-    'announcements': {
-        req: {
-            limit?: number;
-            withUnreads?: boolean;
-            sinceId?: Announcement['id'];
-            untilId?: Announcement['id'];
-        };
-        res: Announcement[];
-    };
-    'antennas/create': {
-        req: TODO;
-        res: Antenna;
-    };
-    'antennas/delete': {
-        req: {
-            antennaId: Antenna['id'];
-        };
-        res: null;
-    };
-    'antennas/list': {
-        req: NoParams;
-        res: Antenna[];
-    };
-    'antennas/notes': {
-        req: {
-            antennaId: Antenna['id'];
-            limit?: number;
-            sinceId?: Note['id'];
-            untilId?: Note['id'];
-        };
-        res: Note[];
-    };
-    'antennas/show': {
-        req: {
-            antennaId: Antenna['id'];
-        };
-        res: Antenna;
-    };
-    'antennas/update': {
-        req: TODO;
-        res: Antenna;
-    };
-    'ap/get': {
-        req: {
-            uri: string;
-        };
-        res: Record<string, any>;
-    };
-    'ap/show': {
-        req: {
-            uri: string;
-        };
-        res: {
-            type: 'Note';
-            object: Note;
-        } | {
-            type: 'User';
-            object: UserDetailed;
-        };
-    };
-    'app/create': {
-        req: TODO;
-        res: App;
-    };
-    'app/show': {
-        req: {
-            appId: App['id'];
-        };
-        res: App;
-    };
-    'auth/accept': {
-        req: {
-            token: string;
-        };
-        res: null;
-    };
-    'auth/session/generate': {
-        req: {
-            appSecret: string;
-        };
-        res: {
-            token: string;
-            url: string;
-        };
-    };
-    'auth/session/show': {
-        req: {
-            token: string;
-        };
-        res: AuthSession;
-    };
-    'auth/session/userkey': {
-        req: {
-            appSecret: string;
-            token: string;
-        };
-        res: {
-            accessToken: string;
-            user: User;
-        };
-    };
-    'blocking/create': {
-        req: {
-            userId: User['id'];
-        };
-        res: UserDetailed;
-    };
-    'blocking/delete': {
-        req: {
-            userId: User['id'];
-        };
-        res: UserDetailed;
-    };
-    'blocking/list': {
-        req: {
-            limit?: number;
-            sinceId?: Blocking['id'];
-            untilId?: Blocking['id'];
-        };
-        res: Blocking[];
-    };
-    'channels/create': {
-        req: TODO;
-        res: TODO;
-    };
-    'channels/featured': {
-        req: TODO;
-        res: TODO;
-    };
-    'channels/follow': {
-        req: TODO;
-        res: TODO;
-    };
-    'channels/followed': {
-        req: TODO;
-        res: TODO;
-    };
-    'channels/owned': {
-        req: TODO;
-        res: TODO;
-    };
-    'channels/pin-note': {
-        req: TODO;
-        res: TODO;
-    };
-    'channels/show': {
-        req: TODO;
-        res: TODO;
-    };
-    'channels/timeline': {
-        req: TODO;
-        res: TODO;
-    };
-    'channels/unfollow': {
-        req: TODO;
-        res: TODO;
-    };
-    'channels/update': {
-        req: TODO;
-        res: TODO;
-    };
-    'charts/active-users': {
-        req: {
-            span: 'day' | 'hour';
-            limit?: number;
-            offset?: number | null;
-        };
-        res: {
-            local: {
-                users: number[];
-            };
-            remote: {
-                users: number[];
-            };
-        };
-    };
-    'charts/drive': {
-        req: {
-            span: 'day' | 'hour';
-            limit?: number;
-            offset?: number | null;
-        };
-        res: {
-            local: {
-                decCount: number[];
-                decSize: number[];
-                incCount: number[];
-                incSize: number[];
-                totalCount: number[];
-                totalSize: number[];
-            };
-            remote: {
-                decCount: number[];
-                decSize: number[];
-                incCount: number[];
-                incSize: number[];
-                totalCount: number[];
-                totalSize: number[];
-            };
-        };
-    };
-    'charts/federation': {
-        req: {
-            span: 'day' | 'hour';
-            limit?: number;
-            offset?: number | null;
-        };
-        res: {
-            instance: {
-                dec: number[];
-                inc: number[];
-                total: number[];
-            };
-        };
-    };
-    'charts/hashtag': {
-        req: {
-            span: 'day' | 'hour';
-            limit?: number;
-            offset?: number | null;
-        };
-        res: TODO;
-    };
-    'charts/instance': {
-        req: {
-            span: 'day' | 'hour';
-            limit?: number;
-            offset?: number | null;
-            host: string;
-        };
-        res: {
-            drive: {
-                decFiles: number[];
-                decUsage: number[];
-                incFiles: number[];
-                incUsage: number[];
-                totalFiles: number[];
-                totalUsage: number[];
-            };
-            followers: {
-                dec: number[];
-                inc: number[];
-                total: number[];
-            };
-            following: {
-                dec: number[];
-                inc: number[];
-                total: number[];
-            };
-            notes: {
-                dec: number[];
-                inc: number[];
-                total: number[];
-                diffs: {
-                    normal: number[];
-                    renote: number[];
-                    reply: number[];
-                };
-            };
-            requests: {
-                failed: number[];
-                received: number[];
-                succeeded: number[];
-            };
-            users: {
-                dec: number[];
-                inc: number[];
-                total: number[];
-            };
-        };
-    };
-    'charts/network': {
-        req: {
-            span: 'day' | 'hour';
-            limit?: number;
-            offset?: number | null;
-        };
-        res: TODO;
-    };
-    'charts/notes': {
-        req: {
-            span: 'day' | 'hour';
-            limit?: number;
-            offset?: number | null;
-        };
-        res: {
-            local: {
-                dec: number[];
-                inc: number[];
-                total: number[];
-                diffs: {
-                    normal: number[];
-                    renote: number[];
-                    reply: number[];
-                };
-            };
-            remote: {
-                dec: number[];
-                inc: number[];
-                total: number[];
-                diffs: {
-                    normal: number[];
-                    renote: number[];
-                    reply: number[];
-                };
-            };
-        };
-    };
-    'charts/user/drive': {
-        req: {
-            span: 'day' | 'hour';
-            limit?: number;
-            offset?: number | null;
-            userId: User['id'];
-        };
-        res: {
-            decCount: number[];
-            decSize: number[];
-            incCount: number[];
-            incSize: number[];
-            totalCount: number[];
-            totalSize: number[];
-        };
-    };
-    'charts/user/following': {
-        req: {
-            span: 'day' | 'hour';
-            limit?: number;
-            offset?: number | null;
-            userId: User['id'];
-        };
-        res: TODO;
-    };
-    'charts/user/notes': {
-        req: {
-            span: 'day' | 'hour';
-            limit?: number;
-            offset?: number | null;
-            userId: User['id'];
-        };
-        res: {
-            dec: number[];
-            inc: number[];
-            total: number[];
-            diffs: {
-                normal: number[];
-                renote: number[];
-                reply: number[];
-            };
-        };
-    };
-    'charts/user/reactions': {
-        req: {
-            span: 'day' | 'hour';
-            limit?: number;
-            offset?: number | null;
-            userId: User['id'];
-        };
-        res: TODO;
-    };
-    'charts/users': {
-        req: {
-            span: 'day' | 'hour';
-            limit?: number;
-            offset?: number | null;
-        };
-        res: {
-            local: {
-                dec: number[];
-                inc: number[];
-                total: number[];
-            };
-            remote: {
-                dec: number[];
-                inc: number[];
-                total: number[];
-            };
-        };
-    };
-    'clips/add-note': {
-        req: TODO;
-        res: TODO;
-    };
-    'clips/create': {
-        req: TODO;
-        res: TODO;
-    };
-    'clips/delete': {
-        req: {
-            clipId: Clip['id'];
-        };
-        res: null;
-    };
-    'clips/list': {
-        req: TODO;
-        res: TODO;
-    };
-    'clips/notes': {
-        req: TODO;
-        res: TODO;
-    };
-    'clips/show': {
-        req: TODO;
-        res: TODO;
-    };
-    'clips/update': {
-        req: TODO;
-        res: TODO;
-    };
-    'drive': {
-        req: NoParams;
-        res: {
-            capacity: number;
-            usage: number;
-        };
-    };
-    'drive/files': {
-        req: {
-            folderId?: DriveFolder['id'] | null;
-            type?: DriveFile['type'] | null;
-            limit?: number;
-            sinceId?: DriveFile['id'];
-            untilId?: DriveFile['id'];
-        };
-        res: DriveFile[];
-    };
-    'drive/files/attached-notes': {
-        req: TODO;
-        res: TODO;
-    };
-    'drive/files/check-existence': {
-        req: TODO;
-        res: TODO;
-    };
-    'drive/files/create': {
-        req: TODO;
-        res: TODO;
-    };
-    'drive/files/delete': {
-        req: {
-            fileId: DriveFile['id'];
-        };
-        res: null;
-    };
-    'drive/files/find-by-hash': {
-        req: TODO;
-        res: TODO;
-    };
-    'drive/files/find': {
-        req: {
-            name: string;
-            folderId?: DriveFolder['id'] | null;
-        };
-        res: DriveFile[];
-    };
-    'drive/files/show': {
-        req: {
-            fileId?: DriveFile['id'];
-            url?: string;
-        };
-        res: DriveFile;
-    };
-    'drive/files/update': {
-        req: {
-            fileId: DriveFile['id'];
-            folderId?: DriveFolder['id'] | null;
-            name?: string;
-            isSensitive?: boolean;
-            comment?: string | null;
-        };
-        res: DriveFile;
-    };
-    'drive/files/upload-from-url': {
-        req: {
-            url: string;
-            folderId?: DriveFolder['id'] | null;
-            isSensitive?: boolean;
-            comment?: string | null;
-            marker?: string | null;
-            force?: boolean;
-        };
-        res: null;
-    };
-    'drive/folders': {
-        req: {
-            folderId?: DriveFolder['id'] | null;
-            limit?: number;
-            sinceId?: DriveFile['id'];
-            untilId?: DriveFile['id'];
-        };
-        res: DriveFolder[];
-    };
-    'drive/folders/create': {
-        req: {
-            name?: string;
-            parentId?: DriveFolder['id'] | null;
-        };
-        res: DriveFolder;
-    };
-    'drive/folders/delete': {
-        req: {
-            folderId: DriveFolder['id'];
-        };
-        res: null;
-    };
-    'drive/folders/find': {
-        req: {
-            name: string;
-            parentId?: DriveFolder['id'] | null;
-        };
-        res: DriveFolder[];
-    };
-    'drive/folders/show': {
-        req: {
-            folderId: DriveFolder['id'];
-        };
-        res: DriveFolder;
-    };
-    'drive/folders/update': {
-        req: {
-            folderId: DriveFolder['id'];
-            name?: string;
-            parentId?: DriveFolder['id'] | null;
-        };
-        res: DriveFolder;
-    };
-    'drive/stream': {
-        req: {
-            type?: DriveFile['type'] | null;
-            limit?: number;
-            sinceId?: DriveFile['id'];
-            untilId?: DriveFile['id'];
-        };
-        res: DriveFile[];
-    };
-    'endpoint': {
-        req: {
-            endpoint: string;
-        };
-        res: {
-            params: {
-                name: string;
-                type: string;
-            }[];
-        };
-    };
-    'endpoints': {
-        req: NoParams;
-        res: string[];
-    };
-    'federation/dns': {
-        req: {
-            host: string;
-        };
-        res: {
-            a: string[];
-            aaaa: string[];
-            cname: string[];
-            txt: string[];
-        };
-    };
-    'federation/followers': {
-        req: {
-            host: string;
-            limit?: number;
-            sinceId?: Following['id'];
-            untilId?: Following['id'];
-        };
-        res: FollowingFolloweePopulated[];
-    };
-    'federation/following': {
-        req: {
-            host: string;
-            limit?: number;
-            sinceId?: Following['id'];
-            untilId?: Following['id'];
-        };
-        res: FollowingFolloweePopulated[];
-    };
-    'federation/instances': {
-        req: {
-            host?: string | null;
-            blocked?: boolean | null;
-            notResponding?: boolean | null;
-            suspended?: boolean | null;
-            federating?: boolean | null;
-            subscribing?: boolean | null;
-            publishing?: boolean | null;
-            limit?: number;
-            offset?: number;
-            sort?: '+pubSub' | '-pubSub' | '+notes' | '-notes' | '+users' | '-users' | '+following' | '-following' | '+followers' | '-followers' | '+caughtAt' | '-caughtAt' | '+lastCommunicatedAt' | '-lastCommunicatedAt' | '+driveUsage' | '-driveUsage' | '+driveFiles' | '-driveFiles';
-        };
-        res: Instance[];
-    };
-    'federation/show-instance': {
-        req: {
-            host: string;
-        };
-        res: Instance;
-    };
-    'federation/update-remote-user': {
-        req: {
-            userId: User['id'];
-        };
-        res: null;
-    };
-    'federation/users': {
-        req: {
-            host: string;
-            limit?: number;
-            sinceId?: User['id'];
-            untilId?: User['id'];
-        };
-        res: UserDetailed[];
-    };
-    'following/create': {
-        req: {
-            userId: User['id'];
-        };
-        res: User;
-    };
-    'following/delete': {
-        req: {
-            userId: User['id'];
-        };
-        res: User;
-    };
-    'following/requests/accept': {
-        req: {
-            userId: User['id'];
-        };
-        res: null;
-    };
-    'following/requests/cancel': {
-        req: {
-            userId: User['id'];
-        };
-        res: User;
-    };
-    'following/requests/list': {
-        req: NoParams;
-        res: FollowRequest[];
-    };
-    'following/requests/reject': {
-        req: {
-            userId: User['id'];
-        };
-        res: null;
-    };
-    'gallery/featured': {
-        req: TODO;
-        res: TODO;
-    };
-    'gallery/popular': {
-        req: TODO;
-        res: TODO;
-    };
-    'gallery/posts': {
-        req: TODO;
-        res: TODO;
-    };
-    'gallery/posts/create': {
-        req: TODO;
-        res: TODO;
-    };
-    'gallery/posts/delete': {
-        req: {
-            postId: GalleryPost['id'];
-        };
-        res: null;
-    };
-    'gallery/posts/like': {
-        req: TODO;
-        res: TODO;
-    };
-    'gallery/posts/show': {
-        req: TODO;
-        res: TODO;
-    };
-    'gallery/posts/unlike': {
-        req: TODO;
-        res: TODO;
-    };
-    'gallery/posts/update': {
-        req: TODO;
-        res: TODO;
-    };
-    'games/reversi/games': {
-        req: TODO;
-        res: TODO;
-    };
-    'games/reversi/games/show': {
-        req: TODO;
-        res: TODO;
-    };
-    'games/reversi/games/surrender': {
-        req: TODO;
-        res: TODO;
-    };
-    'games/reversi/invitations': {
-        req: TODO;
-        res: TODO;
-    };
-    'games/reversi/match': {
-        req: TODO;
-        res: TODO;
-    };
-    'games/reversi/match/cancel': {
-        req: TODO;
-        res: TODO;
-    };
-    'get-online-users-count': {
-        req: NoParams;
-        res: {
-            count: number;
-        };
-    };
-    'hashtags/list': {
-        req: TODO;
-        res: TODO;
-    };
-    'hashtags/search': {
-        req: TODO;
-        res: TODO;
-    };
-    'hashtags/show': {
-        req: TODO;
-        res: TODO;
-    };
-    'hashtags/trend': {
-        req: TODO;
-        res: TODO;
-    };
-    'hashtags/users': {
-        req: TODO;
-        res: TODO;
-    };
-    'i': {
-        req: NoParams;
-        res: User;
-    };
-    'i/apps': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/authorized-apps': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/change-password': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/delete-account': {
-        req: {
-            password: string;
-        };
-        res: null;
-    };
-    'i/export-blocking': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/export-following': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/export-mute': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/export-notes': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/export-user-lists': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/favorites': {
-        req: {
-            limit?: number;
-            sinceId?: NoteFavorite['id'];
-            untilId?: NoteFavorite['id'];
-        };
-        res: NoteFavorite[];
-    };
-    'i/gallery/likes': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/gallery/posts': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/get-word-muted-notes-count': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/import-following': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/import-user-lists': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/notifications': {
-        req: {
-            limit?: number;
-            sinceId?: Notification_2['id'];
-            untilId?: Notification_2['id'];
-            following?: boolean;
-            markAsRead?: boolean;
-            includeTypes?: Notification_2['type'][];
-            excludeTypes?: Notification_2['type'][];
-        };
-        res: Notification_2[];
-    };
-    'i/page-likes': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/pages': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/pin': {
-        req: {
-            noteId: Note['id'];
-        };
-        res: MeDetailed;
-    };
-    'i/read-all-messaging-messages': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/read-all-unread-notes': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/read-announcement': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/regenerate-token': {
-        req: {
-            password: string;
-        };
-        res: null;
-    };
-    'i/registry/get-all': {
-        req: {
-            scope?: string[];
-        };
-        res: Record<string, any>;
-    };
-    'i/registry/get-detail': {
-        req: {
-            key: string;
-            scope?: string[];
-        };
-        res: {
-            updatedAt: DateString;
-            value: any;
-        };
-    };
-    'i/registry/get': {
-        req: {
-            key: string;
-            scope?: string[];
-        };
-        res: any;
-    };
-    'i/registry/keys-with-type': {
-        req: {
-            scope?: string[];
-        };
-        res: Record<string, 'null' | 'array' | 'number' | 'string' | 'boolean' | 'object'>;
-    };
-    'i/registry/keys': {
-        req: {
-            scope?: string[];
-        };
-        res: string[];
-    };
-    'i/registry/remove': {
-        req: {
-            key: string;
-            scope?: string[];
-        };
-        res: null;
-    };
-    'i/registry/scopes': {
-        req: NoParams;
-        res: string[][];
-    };
-    'i/registry/set': {
-        req: {
-            key: string;
-            value: any;
-            scope?: string[];
-        };
-        res: null;
-    };
-    'i/revoke-token': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/signin-history': {
-        req: {
-            limit?: number;
-            sinceId?: Signin['id'];
-            untilId?: Signin['id'];
-        };
-        res: Signin[];
-    };
-    'i/unpin': {
-        req: {
-            noteId: Note['id'];
-        };
-        res: MeDetailed;
-    };
-    'i/update-email': {
-        req: {
-            password: string;
-            email?: string | null;
-        };
-        res: MeDetailed;
-    };
-    'i/update': {
-        req: {
-            name?: string | null;
-            description?: string | null;
-            lang?: string | null;
-            location?: string | null;
-            birthday?: string | null;
-            avatarId?: DriveFile['id'] | null;
-            bannerId?: DriveFile['id'] | null;
-            fields?: {
-                name: string;
-                value: string;
-            }[];
-            isLocked?: boolean;
-            isExplorable?: boolean;
-            hideOnlineStatus?: boolean;
-            carefulBot?: boolean;
-            autoAcceptFollowed?: boolean;
-            noCrawle?: boolean;
-            isBot?: boolean;
-            isCat?: boolean;
-            injectFeaturedNote?: boolean;
-            receiveAnnouncementEmail?: boolean;
-            alwaysMarkNsfw?: boolean;
-            mutedWords?: string[][];
-            mutingNotificationTypes?: Notification_2['type'][];
-            emailNotificationTypes?: string[];
-        };
-        res: MeDetailed;
-    };
-    'i/user-group-invites': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/2fa/done': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/2fa/key-done': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/2fa/password-less': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/2fa/register-key': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/2fa/register': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/2fa/remove-key': {
-        req: TODO;
-        res: TODO;
-    };
-    'i/2fa/unregister': {
-        req: TODO;
-        res: TODO;
-    };
-    'messaging/history': {
-        req: {
-            limit?: number;
-            group?: boolean;
-        };
-        res: MessagingMessage[];
-    };
-    'messaging/messages': {
-        req: {
-            userId?: User['id'];
-            groupId?: UserGroup['id'];
-            limit?: number;
-            sinceId?: MessagingMessage['id'];
-            untilId?: MessagingMessage['id'];
-            markAsRead?: boolean;
-        };
-        res: MessagingMessage[];
-    };
-    'messaging/messages/create': {
-        req: {
-            userId?: User['id'];
-            groupId?: UserGroup['id'];
-            text?: string;
-            fileId?: DriveFile['id'];
-        };
-        res: MessagingMessage;
-    };
-    'messaging/messages/delete': {
-        req: {
-            messageId: MessagingMessage['id'];
-        };
-        res: null;
-    };
-    'messaging/messages/read': {
-        req: {
-            messageId: MessagingMessage['id'];
-        };
-        res: null;
-    };
-    'meta': {
-        req: {
-            detail?: boolean;
-        };
-        res: {
-            $switch: {
-                $cases: [
-                [
-                    {
-                    detail: true;
-                },
-                DetailedInstanceMetadata
-                ],
-                [
-                    {
-                    detail: false;
-                },
-                LiteInstanceMetadata
-                ],
-                [
-                    {
-                    detail: boolean;
-                },
-                LiteInstanceMetadata | DetailedInstanceMetadata
-                ]
-                ];
-                $default: LiteInstanceMetadata;
-            };
-        };
-    };
-    'miauth/gen-token': {
-        req: TODO;
-        res: TODO;
-    };
-    'mute/create': {
-        req: TODO;
-        res: TODO;
-    };
-    'mute/delete': {
-        req: {
-            userId: User['id'];
-        };
-        res: null;
-    };
-    'mute/list': {
-        req: TODO;
-        res: TODO;
-    };
-    'my/apps': {
-        req: TODO;
-        res: TODO;
-    };
-    'notes': {
-        req: {
-            limit?: number;
-            sinceId?: Note['id'];
-            untilId?: Note['id'];
-        };
-        res: Note[];
-    };
-    'notes/children': {
-        req: {
-            noteId: Note['id'];
-            limit?: number;
-            sinceId?: Note['id'];
-            untilId?: Note['id'];
-        };
-        res: Note[];
-    };
-    'notes/clips': {
-        req: TODO;
-        res: TODO;
-    };
-    'notes/conversation': {
-        req: TODO;
-        res: TODO;
-    };
-    'notes/create': {
-        req: {
-            visibility?: 'public' | 'home' | 'followers' | 'specified';
-            visibleUserIds?: User['id'][];
-            text?: null | string;
-            cw?: null | string;
-            viaMobile?: boolean;
-            localOnly?: boolean;
-            fileIds?: DriveFile['id'][];
-            replyId?: null | Note['id'];
-            renoteId?: null | Note['id'];
-            channelId?: null | Channel['id'];
-            poll?: null | {
-                choices: string[];
-                multiple?: boolean;
-                expiresAt?: null | number;
-                expiredAfter?: null | number;
-            };
-        };
-        res: {
-            createdNote: Note;
-        };
-    };
-    'notes/delete': {
-        req: {
-            noteId: Note['id'];
-        };
-        res: null;
-    };
-    'notes/favorites/create': {
-        req: {
-            noteId: Note['id'];
-        };
-        res: null;
-    };
-    'notes/favorites/delete': {
-        req: {
-            noteId: Note['id'];
-        };
-        res: null;
-    };
-    'notes/featured': {
-        req: TODO;
-        res: Note[];
-    };
-    'notes/global-timeline': {
-        req: {
-            limit?: number;
-            sinceId?: Note['id'];
-            untilId?: Note['id'];
-            sinceDate?: number;
-            untilDate?: number;
-        };
-        res: Note[];
-    };
-    'notes/hybrid-timeline': {
-        req: {
-            limit?: number;
-            sinceId?: Note['id'];
-            untilId?: Note['id'];
-            sinceDate?: number;
-            untilDate?: number;
-        };
-        res: Note[];
-    };
-    'notes/local-timeline': {
-        req: {
-            limit?: number;
-            sinceId?: Note['id'];
-            untilId?: Note['id'];
-            sinceDate?: number;
-            untilDate?: number;
-        };
-        res: Note[];
-    };
-    'notes/mentions': {
-        req: {
-            following?: boolean;
-            limit?: number;
-            sinceId?: Note['id'];
-            untilId?: Note['id'];
-        };
-        res: Note[];
-    };
-    'notes/polls/recommendation': {
-        req: TODO;
-        res: TODO;
-    };
-    'notes/polls/vote': {
-        req: {
-            noteId: Note['id'];
-            choice: number;
-        };
-        res: null;
-    };
-    'notes/reactions': {
-        req: {
-            noteId: Note['id'];
-            type?: string | null;
-            limit?: number;
-        };
-        res: NoteReaction[];
-    };
-    'notes/reactions/create': {
-        req: {
-            noteId: Note['id'];
-            reaction: string;
-        };
-        res: null;
-    };
-    'notes/reactions/delete': {
-        req: {
-            noteId: Note['id'];
-        };
-        res: null;
-    };
-    'notes/renotes': {
-        req: {
-            limit?: number;
-            sinceId?: Note['id'];
-            untilId?: Note['id'];
-            noteId: Note['id'];
-        };
-        res: Note[];
-    };
-    'notes/replies': {
-        req: {
-            limit?: number;
-            sinceId?: Note['id'];
-            untilId?: Note['id'];
-            noteId: Note['id'];
-        };
-        res: Note[];
-    };
-    'notes/search-by-tag': {
-        req: TODO;
-        res: TODO;
-    };
-    'notes/search': {
-        req: TODO;
-        res: TODO;
-    };
-    'notes/show': {
-        req: {
-            noteId: Note['id'];
-        };
-        res: Note;
-    };
-    'notes/state': {
-        req: TODO;
-        res: TODO;
-    };
-    'notes/timeline': {
-        req: {
-            limit?: number;
-            sinceId?: Note['id'];
-            untilId?: Note['id'];
-            sinceDate?: number;
-            untilDate?: number;
-        };
-        res: Note[];
-    };
-    'notes/unrenote': {
-        req: {
-            noteId: Note['id'];
-        };
-        res: null;
-    };
-    'notes/user-list-timeline': {
-        req: {
-            listId: UserList['id'];
-            limit?: number;
-            sinceId?: Note['id'];
-            untilId?: Note['id'];
-            sinceDate?: number;
-            untilDate?: number;
-        };
-        res: Note[];
-    };
-    'notes/watching/create': {
-        req: TODO;
-        res: TODO;
-    };
-    'notes/watching/delete': {
-        req: {
-            noteId: Note['id'];
-        };
-        res: null;
-    };
-    'notifications/create': {
-        req: {
-            body: string;
-            header?: string | null;
-            icon?: string | null;
-        };
-        res: null;
-    };
-    'notifications/mark-all-as-read': {
-        req: NoParams;
-        res: null;
-    };
-    'notifications/read': {
-        req: {
-            notificationId: Notification_2['id'];
-        };
-        res: null;
-    };
-    'page-push': {
-        req: {
-            pageId: Page['id'];
-            event: string;
-            var?: any;
-        };
-        res: null;
-    };
-    'pages/create': {
-        req: TODO;
-        res: Page;
-    };
-    'pages/delete': {
-        req: {
-            pageId: Page['id'];
-        };
-        res: null;
-    };
-    'pages/featured': {
-        req: NoParams;
-        res: Page[];
-    };
-    'pages/like': {
-        req: {
-            pageId: Page['id'];
-        };
-        res: null;
-    };
-    'pages/show': {
-        req: {
-            pageId?: Page['id'];
-            name?: string;
-            username?: string;
-        };
-        res: Page;
-    };
-    'pages/unlike': {
-        req: {
-            pageId: Page['id'];
-        };
-        res: null;
-    };
-    'pages/update': {
-        req: TODO;
-        res: null;
-    };
-    'ping': {
-        req: NoParams;
-        res: {
-            pong: number;
-        };
-    };
-    'pinned-users': {
-        req: TODO;
-        res: TODO;
-    };
-    'promo/read': {
-        req: TODO;
-        res: TODO;
-    };
-    'request-reset-password': {
-        req: {
-            username: string;
-            email: string;
-        };
-        res: null;
-    };
-    'reset-password': {
-        req: {
-            token: string;
-            password: string;
-        };
-        res: null;
-    };
-    'room/show': {
-        req: TODO;
-        res: TODO;
-    };
-    'room/update': {
-        req: TODO;
-        res: TODO;
-    };
-    'stats': {
-        req: NoParams;
-        res: Stats;
-    };
-    'server-info': {
-        req: NoParams;
-        res: ServerInfo;
-    };
-    'sw/register': {
-        req: TODO;
-        res: TODO;
-    };
-    'username/available': {
-        req: {
-            username: string;
-        };
-        res: {
-            available: boolean;
-        };
-    };
-    'users': {
-        req: {
-            limit?: number;
-            offset?: number;
-            sort?: UserSorting;
-            origin?: OriginType;
-        };
-        res: User[];
-    };
-    'users/clips': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/followers': {
-        req: {
-            userId?: User['id'];
-            username?: User['username'];
-            host?: User['host'] | null;
-            limit?: number;
-            sinceId?: Following['id'];
-            untilId?: Following['id'];
-        };
-        res: FollowingFollowerPopulated[];
-    };
-    'users/following': {
-        req: {
-            userId?: User['id'];
-            username?: User['username'];
-            host?: User['host'] | null;
-            limit?: number;
-            sinceId?: Following['id'];
-            untilId?: Following['id'];
-        };
-        res: FollowingFolloweePopulated[];
-    };
-    'users/gallery/posts': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/get-frequently-replied-users': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/groups/create': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/groups/delete': {
-        req: {
-            groupId: UserGroup['id'];
-        };
-        res: null;
-    };
-    'users/groups/invitations/accept': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/groups/invitations/reject': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/groups/invite': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/groups/joined': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/groups/owned': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/groups/pull': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/groups/show': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/groups/transfer': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/groups/update': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/lists/create': {
-        req: {
-            name: string;
-        };
-        res: UserList;
-    };
-    'users/lists/delete': {
-        req: {
-            listId: UserList['id'];
-        };
-        res: null;
-    };
-    'users/lists/list': {
-        req: NoParams;
-        res: UserList[];
-    };
-    'users/lists/pull': {
-        req: {
-            listId: UserList['id'];
-            userId: User['id'];
-        };
-        res: null;
-    };
-    'users/lists/push': {
-        req: {
-            listId: UserList['id'];
-            userId: User['id'];
-        };
-        res: null;
-    };
-    'users/lists/show': {
-        req: {
-            listId: UserList['id'];
-        };
-        res: UserList;
-    };
-    'users/lists/update': {
-        req: {
-            listId: UserList['id'];
-            name: string;
-        };
-        res: UserList;
-    };
-    'users/notes': {
-        req: {
-            userId: User['id'];
-            limit?: number;
-            sinceId?: Note['id'];
-            untilId?: Note['id'];
-            sinceDate?: number;
-            untilDate?: number;
-        };
-        res: Note[];
-    };
-    'users/pages': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/recommendation': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/relation': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/report-abuse': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/search-by-username-and-host': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/search': {
-        req: TODO;
-        res: TODO;
-    };
-    'users/show': {
-        req: ShowUserReq | {
-            userIds: User['id'][];
-        };
-        res: {
-            $switch: {
-                $cases: [
-                [
-                    {
-                    userIds: User['id'][];
-                },
-                UserDetailed[]
-                ]
-                ];
-                $default: UserDetailed;
-            };
-        };
-    };
-    'users/stats': {
-        req: TODO;
-        res: TODO;
-    };
-};
-
-declare namespace entities {
-    export {
-        ID,
-        DateString,
-        User,
-        UserLite,
-        UserDetailed,
-        UserGroup,
-        UserList,
-        MeDetailed,
-        DriveFile,
-        DriveFolder,
-        GalleryPost,
-        Note,
-        NoteReaction,
-        Notification_2 as Notification,
-        MessagingMessage,
-        CustomEmoji,
-        LiteInstanceMetadata,
-        DetailedInstanceMetadata,
-        InstanceMetadata,
-        ServerInfo,
-        Stats,
-        Page,
-        PageEvent,
-        Announcement,
-        Antenna,
-        App,
-        AuthSession,
-        Ad,
-        Clip,
-        NoteFavorite,
-        FollowRequest,
-        Channel,
-        Following,
-        FollowingFolloweePopulated,
-        FollowingFollowerPopulated,
-        Blocking,
-        Instance,
-        Signin,
-        UserSorting,
-        OriginType
-    }
-}
-export { entities }
-
-// @public (undocumented)
-type FetchLike = (input: string, init?: {
-    method?: string;
-    body?: string;
-    credentials?: RequestCredentials;
-    cache?: RequestCache;
-}) => Promise<{
-    status: number;
-    json(): Promise<any>;
-}>;
-
-// @public (undocumented)
-export const ffVisibility: readonly ["public", "followers", "private"];
-
-// @public (undocumented)
-type Following = {
-    id: ID;
-    createdAt: DateString;
-    followerId: User['id'];
-    followeeId: User['id'];
-};
-
-// @public (undocumented)
-type FollowingFolloweePopulated = Following & {
-    followee: UserDetailed;
-};
-
-// @public (undocumented)
-type FollowingFollowerPopulated = Following & {
-    follower: UserDetailed;
-};
-
-// @public (undocumented)
-type FollowRequest = {
-    id: ID;
-    follower: User;
-    followee: User;
-};
-
-// @public (undocumented)
-type GalleryPost = TODO_2;
-
-// @public (undocumented)
-type ID = string;
-
-// @public (undocumented)
-type Instance = {
-    id: ID;
-    caughtAt: DateString;
-    host: string;
-    usersCount: number;
-    notesCount: number;
-    followingCount: number;
-    followersCount: number;
-    driveUsage: number;
-    driveFiles: number;
-    latestRequestSentAt: DateString | null;
-    latestStatus: number | null;
-    latestRequestReceivedAt: DateString | null;
-    lastCommunicatedAt: DateString;
-    isNotResponding: boolean;
-    isSuspended: boolean;
-    softwareName: string | null;
-    softwareVersion: string | null;
-    openRegistrations: boolean | null;
-    name: string | null;
-    description: string | null;
-    maintainerName: string | null;
-    maintainerEmail: string | null;
-    iconUrl: string | null;
-    faviconUrl: string | null;
-    themeColor: string | null;
-    infoUpdatedAt: DateString | null;
-};
-
-// @public (undocumented)
-type InstanceMetadata = LiteInstanceMetadata | DetailedInstanceMetadata;
-
-// @public (undocumented)
-function isAPIError(reason: any): reason is APIError;
-
-// @public (undocumented)
-type LiteInstanceMetadata = {
-    maintainerName: string | null;
-    maintainerEmail: string | null;
-    version: string;
-    name: string | null;
-    uri: string;
-    description: string | null;
-    tosUrl: string | null;
-    disableRegistration: boolean;
-    disableLocalTimeline: boolean;
-    disableGlobalTimeline: boolean;
-    driveCapacityPerLocalUserMb: number;
-    driveCapacityPerRemoteUserMb: number;
-    enableHcaptcha: boolean;
-    hcaptchaSiteKey: string | null;
-    enableRecaptcha: boolean;
-    recaptchaSiteKey: string | null;
-    swPublickey: string | null;
-    maxNoteTextLength: number;
-    enableEmail: boolean;
-    enableTwitterIntegration: boolean;
-    enableGithubIntegration: boolean;
-    enableDiscordIntegration: boolean;
-    enableServiceWorker: boolean;
-    emojis: CustomEmoji[];
-    ads: {
-        id: ID;
-        ratio: number;
-        place: string;
-        url: string;
-        imageUrl: string;
-    }[];
-};
-
-// @public (undocumented)
-type MeDetailed = UserDetailed & {
-    avatarId: DriveFile['id'];
-    bannerId: DriveFile['id'];
-    autoAcceptFollowed: boolean;
-    noCrawle: boolean;
-    isExplorable: boolean;
-    hideOnlineStatus: boolean;
-    mutedWords: string[][];
-    [other: string]: any;
-};
-
-// @public (undocumented)
-type MessagingMessage = {
-    id: ID;
-    createdAt: DateString;
-    file: DriveFile | null;
-    fileId: DriveFile['id'] | null;
-    isRead: boolean;
-    reads: User['id'][];
-    text: string | null;
-    user: User;
-    userId: User['id'];
-    recipient?: User | null;
-    recipientId: User['id'] | null;
-    group?: UserGroup | null;
-    groupId: UserGroup['id'] | null;
-};
-
-// @public (undocumented)
-export const mutedNoteReasons: readonly ["word", "manual", "spam", "other"];
-
-// @public (undocumented)
-type Note = {
-    id: ID;
-    createdAt: DateString;
-    text: string | null;
-    cw: string | null;
-    user: User;
-    userId: User['id'];
-    reply?: Note;
-    replyId: Note['id'];
-    renote?: Note;
-    renoteId: Note['id'];
-    files: DriveFile[];
-    fileIds: DriveFile['id'][];
-    visibility: 'public' | 'home' | 'followers' | 'specified';
-    visibleUserIds?: User['id'][];
-    localOnly?: boolean;
-    myReaction?: string;
-    reactions: Record<string, number>;
-    renoteCount: number;
-    repliesCount: number;
-    poll?: {
-        expiresAt: DateString | null;
-        multiple: boolean;
-        choices: {
-            isVoted: boolean;
-            text: string;
-            votes: number;
-        }[];
-    };
-    emojis: {
-        name: string;
-        url: string;
-    }[];
-    uri?: string;
-    url?: string;
-    isHidden?: boolean;
-};
-
-// @public (undocumented)
-type NoteFavorite = {
-    id: ID;
-    createdAt: DateString;
-    noteId: Note['id'];
-    note: Note;
-};
-
-// @public (undocumented)
-type NoteReaction = {
-    id: ID;
-    createdAt: DateString;
-    user: UserLite;
-    type: string;
-};
-
-// @public (undocumented)
-export const noteVisibilities: readonly ["public", "home", "followers", "specified"];
-
-// @public (undocumented)
-type Notification_2 = {
-    id: ID;
-    createdAt: DateString;
-    isRead: boolean;
-} & ({
-    type: 'reaction';
-    reaction: string;
-    user: User;
-    userId: User['id'];
-    note: Note;
-} | {
-    type: 'reply';
-    user: User;
-    userId: User['id'];
-    note: Note;
-} | {
-    type: 'renote';
-    user: User;
-    userId: User['id'];
-    note: Note;
-} | {
-    type: 'quote';
-    user: User;
-    userId: User['id'];
-    note: Note;
-} | {
-    type: 'mention';
-    user: User;
-    userId: User['id'];
-    note: Note;
-} | {
-    type: 'pollVote';
-    user: User;
-    userId: User['id'];
-    note: Note;
-} | {
-    type: 'follow';
-    user: User;
-    userId: User['id'];
-} | {
-    type: 'followRequestAccepted';
-    user: User;
-    userId: User['id'];
-} | {
-    type: 'receiveFollowRequest';
-    user: User;
-    userId: User['id'];
-} | {
-    type: 'groupInvited';
-    invitation: UserGroup;
-    user: User;
-    userId: User['id'];
-} | {
-    type: 'app';
-    header?: string | null;
-    body: string;
-    icon?: string | null;
-});
-
-// @public (undocumented)
-export const notificationTypes: readonly ["follow", "mention", "reply", "renote", "quote", "reaction", "pollVote", "receiveFollowRequest", "followRequestAccepted", "groupInvited", "app"];
-
-// @public (undocumented)
-type OriginType = 'combined' | 'local' | 'remote';
-
-// @public (undocumented)
-type Page = {
-    id: ID;
-    createdAt: DateString;
-    updatedAt: DateString;
-    userId: User['id'];
-    user: User;
-    content: Record<string, any>[];
-    variables: Record<string, any>[];
-    title: string;
-    name: string;
-    summary: string | null;
-    hideTitleWhenPinned: boolean;
-    alignCenter: boolean;
-    font: string;
-    script: string;
-    eyeCatchingImageId: DriveFile['id'] | null;
-    eyeCatchingImage: DriveFile | null;
-    attachedFiles: any;
-    likedCount: number;
-    isLiked?: boolean;
-};
-
-// @public (undocumented)
-type PageEvent = {
-    pageId: Page['id'];
-    event: string;
-    var: any;
-    userId: User['id'];
-    user: User;
-};
-
-// @public (undocumented)
-export const permissions: string[];
-
-// @public (undocumented)
-type ServerInfo = {
-    machine: string;
-    cpu: {
-        model: string;
-        cores: number;
-    };
-    mem: {
-        total: number;
-    };
-    fs: {
-        total: number;
-        used: number;
-    };
-};
-
-// @public (undocumented)
-type Signin = {
-    id: ID;
-    createdAt: DateString;
-    ip: string;
-    headers: Record<string, any>;
-    success: boolean;
-};
-
-// @public (undocumented)
-type Stats = {
-    notesCount: number;
-    originalNotesCount: number;
-    usersCount: number;
-    originalUsersCount: number;
-    instances: number;
-    driveUsageLocal: number;
-    driveUsageRemote: number;
-};
-
-// Warning: (ae-forgotten-export) The symbol "StreamEvents" needs to be exported by the entry point index.d.ts
-//
-// @public (undocumented)
-export class Stream extends EventEmitter<StreamEvents> {
-    constructor(origin: string, user: {
-        token: string;
-    } | null, options?: {
-        WebSocket?: any;
-    });
-    // (undocumented)
-    close(): void;
-    // Warning: (ae-forgotten-export) The symbol "NonSharedConnection" needs to be exported by the entry point index.d.ts
-    //
-    // (undocumented)
-    disconnectToChannel(connection: NonSharedConnection): void;
-    // Warning: (ae-forgotten-export) The symbol "SharedConnection" needs to be exported by the entry point index.d.ts
-    //
-    // (undocumented)
-    removeSharedConnection(connection: SharedConnection): void;
-    // Warning: (ae-forgotten-export) The symbol "Pool" needs to be exported by the entry point index.d.ts
-    //
-    // (undocumented)
-    removeSharedConnectionPool(pool: Pool): void;
-    // (undocumented)
-    send(typeOrPayload: any, payload?: any): void;
-    // (undocumented)
-    state: 'initializing' | 'reconnecting' | 'connected';
-    // Warning: (ae-forgotten-export) The symbol "Channels" needs to be exported by the entry point index.d.ts
-    // Warning: (ae-forgotten-export) The symbol "Connection" needs to be exported by the entry point index.d.ts
-    //
-    // (undocumented)
-    useChannel<C extends keyof Channels>(channel: C, params?: Channels[C]['params'], name?: string): Connection<Channels[C]>;
-}
-
-// @public (undocumented)
-type User = UserLite | UserDetailed;
-
-// @public (undocumented)
-type UserDetailed = UserLite & {
-    isLocked: boolean;
-    pinnedNotes: Note[];
-};
-
-// @public (undocumented)
-type UserGroup = TODO_2;
-
-// @public (undocumented)
-type UserList = {
-    id: ID;
-    createdAt: DateString;
-    name: string;
-    userIds: User['id'][];
-};
-
-// @public (undocumented)
-type UserLite = {
-    id: ID;
-    username: string;
-    host: string | null;
-    name: string;
-    onlineStatus: 'online' | 'active' | 'offline' | 'unknown';
-    avatarUrl: string;
-    avatarBlurhash: string;
-    emojis: {
-        name: string;
-        url: string;
-    }[];
-    instance?: {
-        name: Instance['name'];
-        softwareName: Instance['softwareName'];
-        softwareVersion: Instance['softwareVersion'];
-        iconUrl: Instance['iconUrl'];
-        faviconUrl: Instance['faviconUrl'];
-        themeColor: Instance['themeColor'];
-    };
-};
-
-// @public (undocumented)
-type UserSorting = '+follower' | '-follower' | '+createdAt' | '-createdAt' | '+updatedAt' | '-updatedAt';
-
-// Warnings were encountered during analysis:
-//
-// src/api.types.ts:16:32 - (ae-forgotten-export) The symbol "TODO" needs to be exported by the entry point index.d.ts
-// src/api.types.ts:18:25 - (ae-forgotten-export) The symbol "NoParams" needs to be exported by the entry point index.d.ts
-// src/api.types.ts:595:18 - (ae-forgotten-export) The symbol "ShowUserReq" needs to be exported by the entry point index.d.ts
-
-// (No @packageDocumentation comment for this package)
-
-```
+## API Report File for "misskey-js"
+
+> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
+
+```ts
+
+import { EventEmitter } from 'eventemitter3';
+
+// @public (undocumented)
+export type Acct = {
+    username: string;
+    host: string | null;
+};
+
+// Warning: (ae-forgotten-export) The symbol "TODO" needs to be exported by the entry point index.d.ts
+//
+// @public (undocumented)
+type Ad = TODO_2;
+
+// @public (undocumented)
+type Announcement = {
+    id: ID;
+    createdAt: DateString;
+    updatedAt: DateString | null;
+    text: string;
+    title: string;
+    imageUrl: string | null;
+    isRead?: boolean;
+};
+
+// @public (undocumented)
+type Antenna = {
+    id: ID;
+    createdAt: DateString;
+    name: string;
+    keywords: string[][];
+    excludeKeywords: string[][];
+    src: 'home' | 'all' | 'users' | 'list' | 'group';
+    userListId: ID | null;
+    userGroupId: ID | null;
+    users: string[];
+    caseSensitive: boolean;
+    notify: boolean;
+    withReplies: boolean;
+    withFile: boolean;
+    hasUnreadNote: boolean;
+};
+
+declare namespace api {
+    export {
+        isAPIError,
+        APIError,
+        FetchLike,
+        APIClient
+    }
+}
+export { api }
+
+// @public (undocumented)
+class APIClient {
+    constructor(opts: {
+        origin: APIClient['origin'];
+        credential?: APIClient['credential'];
+        fetch?: APIClient['fetch'] | null | undefined;
+    });
+    // (undocumented)
+    credential: string | null | undefined;
+    // (undocumented)
+    fetch: FetchLike;
+    // (undocumented)
+    origin: string;
+    // Warning: (ae-forgotten-export) The symbol "IsCaseMatched" needs to be exported by the entry point index.d.ts
+    // Warning: (ae-forgotten-export) The symbol "GetCaseResult" needs to be exported by the entry point index.d.ts
+    //
+    // (undocumented)
+    request<E extends keyof Endpoints, P extends Endpoints[E]['req']>(endpoint: E, params?: P, credential?: string | null | undefined): Promise<Endpoints[E]['res'] extends {
+        $switch: {
+            $cases: [any, any][];
+            $default: any;
+        };
+    } ? IsCaseMatched<E, P, 0> extends true ? GetCaseResult<E, P, 0> : IsCaseMatched<E, P, 1> extends true ? GetCaseResult<E, P, 1> : IsCaseMatched<E, P, 2> extends true ? GetCaseResult<E, P, 2> : IsCaseMatched<E, P, 3> extends true ? GetCaseResult<E, P, 3> : IsCaseMatched<E, P, 4> extends true ? GetCaseResult<E, P, 4> : IsCaseMatched<E, P, 5> extends true ? GetCaseResult<E, P, 5> : IsCaseMatched<E, P, 6> extends true ? GetCaseResult<E, P, 6> : IsCaseMatched<E, P, 7> extends true ? GetCaseResult<E, P, 7> : IsCaseMatched<E, P, 8> extends true ? GetCaseResult<E, P, 8> : IsCaseMatched<E, P, 9> extends true ? GetCaseResult<E, P, 9> : Endpoints[E]['res']['$switch']['$default'] : Endpoints[E]['res']>;
+}
+
+// @public (undocumented)
+type APIError = {
+    id: string;
+    code: string;
+    message: string;
+    kind: 'client' | 'server';
+    info: Record<string, any>;
+};
+
+// @public (undocumented)
+type App = TODO_2;
+
+// @public (undocumented)
+type AuthSession = {
+    id: ID;
+    app: App;
+    token: string;
+};
+
+// @public (undocumented)
+type Blocking = {
+    id: ID;
+    createdAt: DateString;
+    blockeeId: User['id'];
+    blockee: UserDetailed;
+};
+
+// @public (undocumented)
+type Channel = {
+    id: ID;
+};
+
+// @public (undocumented)
+type Clip = TODO_2;
+
+// @public (undocumented)
+type CustomEmoji = {
+    id: string;
+    name: string;
+    url: string;
+    category: string;
+    aliases: string[];
+};
+
+// @public (undocumented)
+type DateString = string;
+
+// @public (undocumented)
+type DetailedInstanceMetadata = LiteInstanceMetadata & {
+    features: Record<string, any>;
+};
+
+// @public (undocumented)
+type DriveFile = {
+    id: ID;
+    createdAt: DateString;
+    isSensitive: boolean;
+    name: string;
+    thumbnailUrl: string;
+    url: string;
+    type: string;
+    size: number;
+    md5: string;
+    blurhash: string;
+    properties: Record<string, any>;
+};
+
+// @public (undocumented)
+type DriveFolder = TODO_2;
+
+// @public (undocumented)
+export type Endpoints = {
+    'admin/abuse-user-reports': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/delete-all-files-of-a-user': {
+        req: {
+            userId: User['id'];
+        };
+        res: null;
+    };
+    'admin/delete-logs': {
+        req: NoParams;
+        res: null;
+    };
+    'admin/get-index-stats': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/get-table-stats': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/invite': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/logs': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/reset-password': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/resolve-abuse-user-report': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/resync-chart': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/send-email': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/server-info': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/show-moderation-logs': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/show-user': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/show-users': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/silence-user': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/suspend-user': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/unsilence-user': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/unsuspend-user': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/update-meta': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/vacuum': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/accounts/create': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/ad/create': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/ad/delete': {
+        req: {
+            id: Ad['id'];
+        };
+        res: null;
+    };
+    'admin/ad/list': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/ad/update': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/announcements/create': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/announcements/delete': {
+        req: {
+            id: Announcement['id'];
+        };
+        res: null;
+    };
+    'admin/announcements/list': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/announcements/update': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/drive/clean-remote-files': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/drive/cleanup': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/drive/files': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/drive/show-file': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/emoji/add': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/emoji/copy': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/emoji/list-remote': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/emoji/list': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/emoji/remove': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/emoji/update': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/federation/delete-all-files': {
+        req: {
+            host: string;
+        };
+        res: null;
+    };
+    'admin/federation/refresh-remote-instance-metadata': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/federation/remove-all-following': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/federation/update-instance': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/moderators/add': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/moderators/remove': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/promo/create': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/queue/clear': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/queue/deliver-delayed': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/queue/inbox-delayed': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/queue/jobs': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/queue/stats': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/relays/add': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/relays/list': {
+        req: TODO;
+        res: TODO;
+    };
+    'admin/relays/remove': {
+        req: TODO;
+        res: TODO;
+    };
+    'announcements': {
+        req: {
+            limit?: number;
+            withUnreads?: boolean;
+            sinceId?: Announcement['id'];
+            untilId?: Announcement['id'];
+        };
+        res: Announcement[];
+    };
+    'antennas/create': {
+        req: TODO;
+        res: Antenna;
+    };
+    'antennas/delete': {
+        req: {
+            antennaId: Antenna['id'];
+        };
+        res: null;
+    };
+    'antennas/list': {
+        req: NoParams;
+        res: Antenna[];
+    };
+    'antennas/notes': {
+        req: {
+            antennaId: Antenna['id'];
+            limit?: number;
+            sinceId?: Note['id'];
+            untilId?: Note['id'];
+        };
+        res: Note[];
+    };
+    'antennas/show': {
+        req: {
+            antennaId: Antenna['id'];
+        };
+        res: Antenna;
+    };
+    'antennas/update': {
+        req: TODO;
+        res: Antenna;
+    };
+    'ap/get': {
+        req: {
+            uri: string;
+        };
+        res: Record<string, any>;
+    };
+    'ap/show': {
+        req: {
+            uri: string;
+        };
+        res: {
+            type: 'Note';
+            object: Note;
+        } | {
+            type: 'User';
+            object: UserDetailed;
+        };
+    };
+    'app/create': {
+        req: TODO;
+        res: App;
+    };
+    'app/show': {
+        req: {
+            appId: App['id'];
+        };
+        res: App;
+    };
+    'auth/accept': {
+        req: {
+            token: string;
+        };
+        res: null;
+    };
+    'auth/session/generate': {
+        req: {
+            appSecret: string;
+        };
+        res: {
+            token: string;
+            url: string;
+        };
+    };
+    'auth/session/show': {
+        req: {
+            token: string;
+        };
+        res: AuthSession;
+    };
+    'auth/session/userkey': {
+        req: {
+            appSecret: string;
+            token: string;
+        };
+        res: {
+            accessToken: string;
+            user: User;
+        };
+    };
+    'blocking/create': {
+        req: {
+            userId: User['id'];
+        };
+        res: UserDetailed;
+    };
+    'blocking/delete': {
+        req: {
+            userId: User['id'];
+        };
+        res: UserDetailed;
+    };
+    'blocking/list': {
+        req: {
+            limit?: number;
+            sinceId?: Blocking['id'];
+            untilId?: Blocking['id'];
+        };
+        res: Blocking[];
+    };
+    'channels/create': {
+        req: TODO;
+        res: TODO;
+    };
+    'channels/featured': {
+        req: TODO;
+        res: TODO;
+    };
+    'channels/follow': {
+        req: TODO;
+        res: TODO;
+    };
+    'channels/followed': {
+        req: TODO;
+        res: TODO;
+    };
+    'channels/owned': {
+        req: TODO;
+        res: TODO;
+    };
+    'channels/pin-note': {
+        req: TODO;
+        res: TODO;
+    };
+    'channels/show': {
+        req: TODO;
+        res: TODO;
+    };
+    'channels/timeline': {
+        req: TODO;
+        res: TODO;
+    };
+    'channels/unfollow': {
+        req: TODO;
+        res: TODO;
+    };
+    'channels/update': {
+        req: TODO;
+        res: TODO;
+    };
+    'charts/active-users': {
+        req: {
+            span: 'day' | 'hour';
+            limit?: number;
+            offset?: number | null;
+        };
+        res: {
+            local: {
+                users: number[];
+            };
+            remote: {
+                users: number[];
+            };
+        };
+    };
+    'charts/drive': {
+        req: {
+            span: 'day' | 'hour';
+            limit?: number;
+            offset?: number | null;
+        };
+        res: {
+            local: {
+                decCount: number[];
+                decSize: number[];
+                incCount: number[];
+                incSize: number[];
+                totalCount: number[];
+                totalSize: number[];
+            };
+            remote: {
+                decCount: number[];
+                decSize: number[];
+                incCount: number[];
+                incSize: number[];
+                totalCount: number[];
+                totalSize: number[];
+            };
+        };
+    };
+    'charts/federation': {
+        req: {
+            span: 'day' | 'hour';
+            limit?: number;
+            offset?: number | null;
+        };
+        res: {
+            instance: {
+                dec: number[];
+                inc: number[];
+                total: number[];
+            };
+        };
+    };
+    'charts/hashtag': {
+        req: {
+            span: 'day' | 'hour';
+            limit?: number;
+            offset?: number | null;
+        };
+        res: TODO;
+    };
+    'charts/instance': {
+        req: {
+            span: 'day' | 'hour';
+            limit?: number;
+            offset?: number | null;
+            host: string;
+        };
+        res: {
+            drive: {
+                decFiles: number[];
+                decUsage: number[];
+                incFiles: number[];
+                incUsage: number[];
+                totalFiles: number[];
+                totalUsage: number[];
+            };
+            followers: {
+                dec: number[];
+                inc: number[];
+                total: number[];
+            };
+            following: {
+                dec: number[];
+                inc: number[];
+                total: number[];
+            };
+            notes: {
+                dec: number[];
+                inc: number[];
+                total: number[];
+                diffs: {
+                    normal: number[];
+                    renote: number[];
+                    reply: number[];
+                };
+            };
+            requests: {
+                failed: number[];
+                received: number[];
+                succeeded: number[];
+            };
+            users: {
+                dec: number[];
+                inc: number[];
+                total: number[];
+            };
+        };
+    };
+    'charts/network': {
+        req: {
+            span: 'day' | 'hour';
+            limit?: number;
+            offset?: number | null;
+        };
+        res: TODO;
+    };
+    'charts/notes': {
+        req: {
+            span: 'day' | 'hour';
+            limit?: number;
+            offset?: number | null;
+        };
+        res: {
+            local: {
+                dec: number[];
+                inc: number[];
+                total: number[];
+                diffs: {
+                    normal: number[];
+                    renote: number[];
+                    reply: number[];
+                };
+            };
+            remote: {
+                dec: number[];
+                inc: number[];
+                total: number[];
+                diffs: {
+                    normal: number[];
+                    renote: number[];
+                    reply: number[];
+                };
+            };
+        };
+    };
+    'charts/user/drive': {
+        req: {
+            span: 'day' | 'hour';
+            limit?: number;
+            offset?: number | null;
+            userId: User['id'];
+        };
+        res: {
+            decCount: number[];
+            decSize: number[];
+            incCount: number[];
+            incSize: number[];
+            totalCount: number[];
+            totalSize: number[];
+        };
+    };
+    'charts/user/following': {
+        req: {
+            span: 'day' | 'hour';
+            limit?: number;
+            offset?: number | null;
+            userId: User['id'];
+        };
+        res: TODO;
+    };
+    'charts/user/notes': {
+        req: {
+            span: 'day' | 'hour';
+            limit?: number;
+            offset?: number | null;
+            userId: User['id'];
+        };
+        res: {
+            dec: number[];
+            inc: number[];
+            total: number[];
+            diffs: {
+                normal: number[];
+                renote: number[];
+                reply: number[];
+            };
+        };
+    };
+    'charts/user/reactions': {
+        req: {
+            span: 'day' | 'hour';
+            limit?: number;
+            offset?: number | null;
+            userId: User['id'];
+        };
+        res: TODO;
+    };
+    'charts/users': {
+        req: {
+            span: 'day' | 'hour';
+            limit?: number;
+            offset?: number | null;
+        };
+        res: {
+            local: {
+                dec: number[];
+                inc: number[];
+                total: number[];
+            };
+            remote: {
+                dec: number[];
+                inc: number[];
+                total: number[];
+            };
+        };
+    };
+    'clips/add-note': {
+        req: TODO;
+        res: TODO;
+    };
+    'clips/create': {
+        req: TODO;
+        res: TODO;
+    };
+    'clips/delete': {
+        req: {
+            clipId: Clip['id'];
+        };
+        res: null;
+    };
+    'clips/list': {
+        req: TODO;
+        res: TODO;
+    };
+    'clips/notes': {
+        req: TODO;
+        res: TODO;
+    };
+    'clips/show': {
+        req: TODO;
+        res: TODO;
+    };
+    'clips/update': {
+        req: TODO;
+        res: TODO;
+    };
+    'drive': {
+        req: NoParams;
+        res: {
+            capacity: number;
+            usage: number;
+        };
+    };
+    'drive/files': {
+        req: {
+            folderId?: DriveFolder['id'] | null;
+            type?: DriveFile['type'] | null;
+            limit?: number;
+            sinceId?: DriveFile['id'];
+            untilId?: DriveFile['id'];
+        };
+        res: DriveFile[];
+    };
+    'drive/files/attached-notes': {
+        req: TODO;
+        res: TODO;
+    };
+    'drive/files/check-existence': {
+        req: TODO;
+        res: TODO;
+    };
+    'drive/files/create': {
+        req: TODO;
+        res: TODO;
+    };
+    'drive/files/delete': {
+        req: {
+            fileId: DriveFile['id'];
+        };
+        res: null;
+    };
+    'drive/files/find-by-hash': {
+        req: TODO;
+        res: TODO;
+    };
+    'drive/files/find': {
+        req: {
+            name: string;
+            folderId?: DriveFolder['id'] | null;
+        };
+        res: DriveFile[];
+    };
+    'drive/files/show': {
+        req: {
+            fileId?: DriveFile['id'];
+            url?: string;
+        };
+        res: DriveFile;
+    };
+    'drive/files/update': {
+        req: {
+            fileId: DriveFile['id'];
+            folderId?: DriveFolder['id'] | null;
+            name?: string;
+            isSensitive?: boolean;
+            comment?: string | null;
+        };
+        res: DriveFile;
+    };
+    'drive/files/upload-from-url': {
+        req: {
+            url: string;
+            folderId?: DriveFolder['id'] | null;
+            isSensitive?: boolean;
+            comment?: string | null;
+            marker?: string | null;
+            force?: boolean;
+        };
+        res: null;
+    };
+    'drive/folders': {
+        req: {
+            folderId?: DriveFolder['id'] | null;
+            limit?: number;
+            sinceId?: DriveFile['id'];
+            untilId?: DriveFile['id'];
+        };
+        res: DriveFolder[];
+    };
+    'drive/folders/create': {
+        req: {
+            name?: string;
+            parentId?: DriveFolder['id'] | null;
+        };
+        res: DriveFolder;
+    };
+    'drive/folders/delete': {
+        req: {
+            folderId: DriveFolder['id'];
+        };
+        res: null;
+    };
+    'drive/folders/find': {
+        req: {
+            name: string;
+            parentId?: DriveFolder['id'] | null;
+        };
+        res: DriveFolder[];
+    };
+    'drive/folders/show': {
+        req: {
+            folderId: DriveFolder['id'];
+        };
+        res: DriveFolder;
+    };
+    'drive/folders/update': {
+        req: {
+            folderId: DriveFolder['id'];
+            name?: string;
+            parentId?: DriveFolder['id'] | null;
+        };
+        res: DriveFolder;
+    };
+    'drive/stream': {
+        req: {
+            type?: DriveFile['type'] | null;
+            limit?: number;
+            sinceId?: DriveFile['id'];
+            untilId?: DriveFile['id'];
+        };
+        res: DriveFile[];
+    };
+    'endpoint': {
+        req: {
+            endpoint: string;
+        };
+        res: {
+            params: {
+                name: string;
+                type: string;
+            }[];
+        };
+    };
+    'endpoints': {
+        req: NoParams;
+        res: string[];
+    };
+    'federation/dns': {
+        req: {
+            host: string;
+        };
+        res: {
+            a: string[];
+            aaaa: string[];
+            cname: string[];
+            txt: string[];
+        };
+    };
+    'federation/followers': {
+        req: {
+            host: string;
+            limit?: number;
+            sinceId?: Following['id'];
+            untilId?: Following['id'];
+        };
+        res: FollowingFolloweePopulated[];
+    };
+    'federation/following': {
+        req: {
+            host: string;
+            limit?: number;
+            sinceId?: Following['id'];
+            untilId?: Following['id'];
+        };
+        res: FollowingFolloweePopulated[];
+    };
+    'federation/instances': {
+        req: {
+            host?: string | null;
+            blocked?: boolean | null;
+            notResponding?: boolean | null;
+            suspended?: boolean | null;
+            federating?: boolean | null;
+            subscribing?: boolean | null;
+            publishing?: boolean | null;
+            limit?: number;
+            offset?: number;
+            sort?: '+pubSub' | '-pubSub' | '+notes' | '-notes' | '+users' | '-users' | '+following' | '-following' | '+followers' | '-followers' | '+caughtAt' | '-caughtAt' | '+lastCommunicatedAt' | '-lastCommunicatedAt' | '+driveUsage' | '-driveUsage' | '+driveFiles' | '-driveFiles';
+        };
+        res: Instance[];
+    };
+    'federation/show-instance': {
+        req: {
+            host: string;
+        };
+        res: Instance;
+    };
+    'federation/update-remote-user': {
+        req: {
+            userId: User['id'];
+        };
+        res: null;
+    };
+    'federation/users': {
+        req: {
+            host: string;
+            limit?: number;
+            sinceId?: User['id'];
+            untilId?: User['id'];
+        };
+        res: UserDetailed[];
+    };
+    'following/create': {
+        req: {
+            userId: User['id'];
+        };
+        res: User;
+    };
+    'following/delete': {
+        req: {
+            userId: User['id'];
+        };
+        res: User;
+    };
+    'following/requests/accept': {
+        req: {
+            userId: User['id'];
+        };
+        res: null;
+    };
+    'following/requests/cancel': {
+        req: {
+            userId: User['id'];
+        };
+        res: User;
+    };
+    'following/requests/list': {
+        req: NoParams;
+        res: FollowRequest[];
+    };
+    'following/requests/reject': {
+        req: {
+            userId: User['id'];
+        };
+        res: null;
+    };
+    'gallery/featured': {
+        req: TODO;
+        res: TODO;
+    };
+    'gallery/popular': {
+        req: TODO;
+        res: TODO;
+    };
+    'gallery/posts': {
+        req: TODO;
+        res: TODO;
+    };
+    'gallery/posts/create': {
+        req: TODO;
+        res: TODO;
+    };
+    'gallery/posts/delete': {
+        req: {
+            postId: GalleryPost['id'];
+        };
+        res: null;
+    };
+    'gallery/posts/like': {
+        req: TODO;
+        res: TODO;
+    };
+    'gallery/posts/show': {
+        req: TODO;
+        res: TODO;
+    };
+    'gallery/posts/unlike': {
+        req: TODO;
+        res: TODO;
+    };
+    'gallery/posts/update': {
+        req: TODO;
+        res: TODO;
+    };
+    'games/reversi/games': {
+        req: TODO;
+        res: TODO;
+    };
+    'games/reversi/games/show': {
+        req: TODO;
+        res: TODO;
+    };
+    'games/reversi/games/surrender': {
+        req: TODO;
+        res: TODO;
+    };
+    'games/reversi/invitations': {
+        req: TODO;
+        res: TODO;
+    };
+    'games/reversi/match': {
+        req: TODO;
+        res: TODO;
+    };
+    'games/reversi/match/cancel': {
+        req: TODO;
+        res: TODO;
+    };
+    'get-online-users-count': {
+        req: NoParams;
+        res: {
+            count: number;
+        };
+    };
+    'hashtags/list': {
+        req: TODO;
+        res: TODO;
+    };
+    'hashtags/search': {
+        req: TODO;
+        res: TODO;
+    };
+    'hashtags/show': {
+        req: TODO;
+        res: TODO;
+    };
+    'hashtags/trend': {
+        req: TODO;
+        res: TODO;
+    };
+    'hashtags/users': {
+        req: TODO;
+        res: TODO;
+    };
+    'i': {
+        req: NoParams;
+        res: User;
+    };
+    'i/apps': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/authorized-apps': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/change-password': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/delete-account': {
+        req: {
+            password: string;
+        };
+        res: null;
+    };
+    'i/export-blocking': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/export-following': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/export-mute': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/export-notes': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/export-user-lists': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/favorites': {
+        req: {
+            limit?: number;
+            sinceId?: NoteFavorite['id'];
+            untilId?: NoteFavorite['id'];
+        };
+        res: NoteFavorite[];
+    };
+    'i/gallery/likes': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/gallery/posts': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/get-word-muted-notes-count': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/import-following': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/import-user-lists': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/notifications': {
+        req: {
+            limit?: number;
+            sinceId?: Notification_2['id'];
+            untilId?: Notification_2['id'];
+            following?: boolean;
+            markAsRead?: boolean;
+            includeTypes?: Notification_2['type'][];
+            excludeTypes?: Notification_2['type'][];
+        };
+        res: Notification_2[];
+    };
+    'i/page-likes': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/pages': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/pin': {
+        req: {
+            noteId: Note['id'];
+        };
+        res: MeDetailed;
+    };
+    'i/read-all-messaging-messages': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/read-all-unread-notes': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/read-announcement': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/regenerate-token': {
+        req: {
+            password: string;
+        };
+        res: null;
+    };
+    'i/registry/get-all': {
+        req: {
+            scope?: string[];
+        };
+        res: Record<string, any>;
+    };
+    'i/registry/get-detail': {
+        req: {
+            key: string;
+            scope?: string[];
+        };
+        res: {
+            updatedAt: DateString;
+            value: any;
+        };
+    };
+    'i/registry/get': {
+        req: {
+            key: string;
+            scope?: string[];
+        };
+        res: any;
+    };
+    'i/registry/keys-with-type': {
+        req: {
+            scope?: string[];
+        };
+        res: Record<string, 'null' | 'array' | 'number' | 'string' | 'boolean' | 'object'>;
+    };
+    'i/registry/keys': {
+        req: {
+            scope?: string[];
+        };
+        res: string[];
+    };
+    'i/registry/remove': {
+        req: {
+            key: string;
+            scope?: string[];
+        };
+        res: null;
+    };
+    'i/registry/scopes': {
+        req: NoParams;
+        res: string[][];
+    };
+    'i/registry/set': {
+        req: {
+            key: string;
+            value: any;
+            scope?: string[];
+        };
+        res: null;
+    };
+    'i/revoke-token': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/signin-history': {
+        req: {
+            limit?: number;
+            sinceId?: Signin['id'];
+            untilId?: Signin['id'];
+        };
+        res: Signin[];
+    };
+    'i/unpin': {
+        req: {
+            noteId: Note['id'];
+        };
+        res: MeDetailed;
+    };
+    'i/update-email': {
+        req: {
+            password: string;
+            email?: string | null;
+        };
+        res: MeDetailed;
+    };
+    'i/update': {
+        req: {
+            name?: string | null;
+            description?: string | null;
+            lang?: string | null;
+            location?: string | null;
+            birthday?: string | null;
+            avatarId?: DriveFile['id'] | null;
+            bannerId?: DriveFile['id'] | null;
+            fields?: {
+                name: string;
+                value: string;
+            }[];
+            isLocked?: boolean;
+            isExplorable?: boolean;
+            hideOnlineStatus?: boolean;
+            carefulBot?: boolean;
+            autoAcceptFollowed?: boolean;
+            noCrawle?: boolean;
+            isBot?: boolean;
+            isCat?: boolean;
+            injectFeaturedNote?: boolean;
+            receiveAnnouncementEmail?: boolean;
+            alwaysMarkNsfw?: boolean;
+            mutedWords?: string[][];
+            mutingNotificationTypes?: Notification_2['type'][];
+            emailNotificationTypes?: string[];
+        };
+        res: MeDetailed;
+    };
+    'i/user-group-invites': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/2fa/done': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/2fa/key-done': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/2fa/password-less': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/2fa/register-key': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/2fa/register': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/2fa/remove-key': {
+        req: TODO;
+        res: TODO;
+    };
+    'i/2fa/unregister': {
+        req: TODO;
+        res: TODO;
+    };
+    'messaging/history': {
+        req: {
+            limit?: number;
+            group?: boolean;
+        };
+        res: MessagingMessage[];
+    };
+    'messaging/messages': {
+        req: {
+            userId?: User['id'];
+            groupId?: UserGroup['id'];
+            limit?: number;
+            sinceId?: MessagingMessage['id'];
+            untilId?: MessagingMessage['id'];
+            markAsRead?: boolean;
+        };
+        res: MessagingMessage[];
+    };
+    'messaging/messages/create': {
+        req: {
+            userId?: User['id'];
+            groupId?: UserGroup['id'];
+            text?: string;
+            fileId?: DriveFile['id'];
+        };
+        res: MessagingMessage;
+    };
+    'messaging/messages/delete': {
+        req: {
+            messageId: MessagingMessage['id'];
+        };
+        res: null;
+    };
+    'messaging/messages/read': {
+        req: {
+            messageId: MessagingMessage['id'];
+        };
+        res: null;
+    };
+    'meta': {
+        req: {
+            detail?: boolean;
+        };
+        res: {
+            $switch: {
+                $cases: [
+                [
+                    {
+                    detail: true;
+                },
+                DetailedInstanceMetadata
+                ],
+                [
+                    {
+                    detail: false;
+                },
+                LiteInstanceMetadata
+                ],
+                [
+                    {
+                    detail: boolean;
+                },
+                LiteInstanceMetadata | DetailedInstanceMetadata
+                ]
+                ];
+                $default: LiteInstanceMetadata;
+            };
+        };
+    };
+    'miauth/gen-token': {
+        req: TODO;
+        res: TODO;
+    };
+    'mute/create': {
+        req: TODO;
+        res: TODO;
+    };
+    'mute/delete': {
+        req: {
+            userId: User['id'];
+        };
+        res: null;
+    };
+    'mute/list': {
+        req: TODO;
+        res: TODO;
+    };
+    'my/apps': {
+        req: TODO;
+        res: TODO;
+    };
+    'notes': {
+        req: {
+            limit?: number;
+            sinceId?: Note['id'];
+            untilId?: Note['id'];
+        };
+        res: Note[];
+    };
+    'notes/children': {
+        req: {
+            noteId: Note['id'];
+            limit?: number;
+            sinceId?: Note['id'];
+            untilId?: Note['id'];
+        };
+        res: Note[];
+    };
+    'notes/clips': {
+        req: TODO;
+        res: TODO;
+    };
+    'notes/conversation': {
+        req: TODO;
+        res: TODO;
+    };
+    'notes/create': {
+        req: {
+            visibility?: 'public' | 'home' | 'followers' | 'specified';
+            visibleUserIds?: User['id'][];
+            text?: null | string;
+            cw?: null | string;
+            viaMobile?: boolean;
+            localOnly?: boolean;
+            fileIds?: DriveFile['id'][];
+            replyId?: null | Note['id'];
+            renoteId?: null | Note['id'];
+            channelId?: null | Channel['id'];
+            poll?: null | {
+                choices: string[];
+                multiple?: boolean;
+                expiresAt?: null | number;
+                expiredAfter?: null | number;
+            };
+        };
+        res: {
+            createdNote: Note;
+        };
+    };
+    'notes/delete': {
+        req: {
+            noteId: Note['id'];
+        };
+        res: null;
+    };
+    'notes/favorites/create': {
+        req: {
+            noteId: Note['id'];
+        };
+        res: null;
+    };
+    'notes/favorites/delete': {
+        req: {
+            noteId: Note['id'];
+        };
+        res: null;
+    };
+    'notes/featured': {
+        req: TODO;
+        res: Note[];
+    };
+    'notes/global-timeline': {
+        req: {
+            limit?: number;
+            sinceId?: Note['id'];
+            untilId?: Note['id'];
+            sinceDate?: number;
+            untilDate?: number;
+        };
+        res: Note[];
+    };
+    'notes/hybrid-timeline': {
+        req: {
+            limit?: number;
+            sinceId?: Note['id'];
+            untilId?: Note['id'];
+            sinceDate?: number;
+            untilDate?: number;
+        };
+        res: Note[];
+    };
+    'notes/local-timeline': {
+        req: {
+            limit?: number;
+            sinceId?: Note['id'];
+            untilId?: Note['id'];
+            sinceDate?: number;
+            untilDate?: number;
+        };
+        res: Note[];
+    };
+    'notes/mentions': {
+        req: {
+            following?: boolean;
+            limit?: number;
+            sinceId?: Note['id'];
+            untilId?: Note['id'];
+        };
+        res: Note[];
+    };
+    'notes/polls/recommendation': {
+        req: TODO;
+        res: TODO;
+    };
+    'notes/polls/vote': {
+        req: {
+            noteId: Note['id'];
+            choice: number;
+        };
+        res: null;
+    };
+    'notes/reactions': {
+        req: {
+            noteId: Note['id'];
+            type?: string | null;
+            limit?: number;
+        };
+        res: NoteReaction[];
+    };
+    'notes/reactions/create': {
+        req: {
+            noteId: Note['id'];
+            reaction: string;
+        };
+        res: null;
+    };
+    'notes/reactions/delete': {
+        req: {
+            noteId: Note['id'];
+        };
+        res: null;
+    };
+    'notes/renotes': {
+        req: {
+            limit?: number;
+            sinceId?: Note['id'];
+            untilId?: Note['id'];
+            noteId: Note['id'];
+        };
+        res: Note[];
+    };
+    'notes/replies': {
+        req: {
+            limit?: number;
+            sinceId?: Note['id'];
+            untilId?: Note['id'];
+            noteId: Note['id'];
+        };
+        res: Note[];
+    };
+    'notes/search-by-tag': {
+        req: TODO;
+        res: TODO;
+    };
+    'notes/search': {
+        req: TODO;
+        res: TODO;
+    };
+    'notes/show': {
+        req: {
+            noteId: Note['id'];
+        };
+        res: Note;
+    };
+    'notes/state': {
+        req: TODO;
+        res: TODO;
+    };
+    'notes/timeline': {
+        req: {
+            limit?: number;
+            sinceId?: Note['id'];
+            untilId?: Note['id'];
+            sinceDate?: number;
+            untilDate?: number;
+        };
+        res: Note[];
+    };
+    'notes/unrenote': {
+        req: {
+            noteId: Note['id'];
+        };
+        res: null;
+    };
+    'notes/user-list-timeline': {
+        req: {
+            listId: UserList['id'];
+            limit?: number;
+            sinceId?: Note['id'];
+            untilId?: Note['id'];
+            sinceDate?: number;
+            untilDate?: number;
+        };
+        res: Note[];
+    };
+    'notes/watching/create': {
+        req: TODO;
+        res: TODO;
+    };
+    'notes/watching/delete': {
+        req: {
+            noteId: Note['id'];
+        };
+        res: null;
+    };
+    'notifications/create': {
+        req: {
+            body: string;
+            header?: string | null;
+            icon?: string | null;
+        };
+        res: null;
+    };
+    'notifications/mark-all-as-read': {
+        req: NoParams;
+        res: null;
+    };
+    'notifications/read': {
+        req: {
+            notificationId: Notification_2['id'];
+        };
+        res: null;
+    };
+    'page-push': {
+        req: {
+            pageId: Page['id'];
+            event: string;
+            var?: any;
+        };
+        res: null;
+    };
+    'pages/create': {
+        req: TODO;
+        res: Page;
+    };
+    'pages/delete': {
+        req: {
+            pageId: Page['id'];
+        };
+        res: null;
+    };
+    'pages/featured': {
+        req: NoParams;
+        res: Page[];
+    };
+    'pages/like': {
+        req: {
+            pageId: Page['id'];
+        };
+        res: null;
+    };
+    'pages/show': {
+        req: {
+            pageId?: Page['id'];
+            name?: string;
+            username?: string;
+        };
+        res: Page;
+    };
+    'pages/unlike': {
+        req: {
+            pageId: Page['id'];
+        };
+        res: null;
+    };
+    'pages/update': {
+        req: TODO;
+        res: null;
+    };
+    'ping': {
+        req: NoParams;
+        res: {
+            pong: number;
+        };
+    };
+    'pinned-users': {
+        req: TODO;
+        res: TODO;
+    };
+    'promo/read': {
+        req: TODO;
+        res: TODO;
+    };
+    'request-reset-password': {
+        req: {
+            username: string;
+            email: string;
+        };
+        res: null;
+    };
+    'reset-password': {
+        req: {
+            token: string;
+            password: string;
+        };
+        res: null;
+    };
+    'room/show': {
+        req: TODO;
+        res: TODO;
+    };
+    'room/update': {
+        req: TODO;
+        res: TODO;
+    };
+    'stats': {
+        req: NoParams;
+        res: Stats;
+    };
+    'server-info': {
+        req: NoParams;
+        res: ServerInfo;
+    };
+    'sw/register': {
+        req: TODO;
+        res: TODO;
+    };
+    'username/available': {
+        req: {
+            username: string;
+        };
+        res: {
+            available: boolean;
+        };
+    };
+    'users': {
+        req: {
+            limit?: number;
+            offset?: number;
+            sort?: UserSorting;
+            origin?: OriginType;
+        };
+        res: User[];
+    };
+    'users/clips': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/followers': {
+        req: {
+            userId?: User['id'];
+            username?: User['username'];
+            host?: User['host'] | null;
+            limit?: number;
+            sinceId?: Following['id'];
+            untilId?: Following['id'];
+        };
+        res: FollowingFollowerPopulated[];
+    };
+    'users/following': {
+        req: {
+            userId?: User['id'];
+            username?: User['username'];
+            host?: User['host'] | null;
+            limit?: number;
+            sinceId?: Following['id'];
+            untilId?: Following['id'];
+        };
+        res: FollowingFolloweePopulated[];
+    };
+    'users/gallery/posts': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/get-frequently-replied-users': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/groups/create': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/groups/delete': {
+        req: {
+            groupId: UserGroup['id'];
+        };
+        res: null;
+    };
+    'users/groups/invitations/accept': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/groups/invitations/reject': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/groups/invite': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/groups/joined': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/groups/owned': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/groups/pull': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/groups/show': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/groups/transfer': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/groups/update': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/lists/create': {
+        req: {
+            name: string;
+        };
+        res: UserList;
+    };
+    'users/lists/delete': {
+        req: {
+            listId: UserList['id'];
+        };
+        res: null;
+    };
+    'users/lists/list': {
+        req: NoParams;
+        res: UserList[];
+    };
+    'users/lists/pull': {
+        req: {
+            listId: UserList['id'];
+            userId: User['id'];
+        };
+        res: null;
+    };
+    'users/lists/push': {
+        req: {
+            listId: UserList['id'];
+            userId: User['id'];
+        };
+        res: null;
+    };
+    'users/lists/show': {
+        req: {
+            listId: UserList['id'];
+        };
+        res: UserList;
+    };
+    'users/lists/update': {
+        req: {
+            listId: UserList['id'];
+            name: string;
+        };
+        res: UserList;
+    };
+    'users/notes': {
+        req: {
+            userId: User['id'];
+            limit?: number;
+            sinceId?: Note['id'];
+            untilId?: Note['id'];
+            sinceDate?: number;
+            untilDate?: number;
+        };
+        res: Note[];
+    };
+    'users/pages': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/recommendation': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/relation': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/report-abuse': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/search-by-username-and-host': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/search': {
+        req: TODO;
+        res: TODO;
+    };
+    'users/show': {
+        req: ShowUserReq | {
+            userIds: User['id'][];
+        };
+        res: {
+            $switch: {
+                $cases: [
+                [
+                    {
+                    userIds: User['id'][];
+                },
+                UserDetailed[]
+                ]
+                ];
+                $default: UserDetailed;
+            };
+        };
+    };
+    'users/stats': {
+        req: TODO;
+        res: TODO;
+    };
+};
+
+declare namespace entities {
+    export {
+        ID,
+        DateString,
+        User,
+        UserLite,
+        UserDetailed,
+        UserGroup,
+        UserList,
+        MeDetailed,
+        DriveFile,
+        DriveFolder,
+        GalleryPost,
+        Note,
+        NoteReaction,
+        Notification_2 as Notification,
+        MessagingMessage,
+        CustomEmoji,
+        LiteInstanceMetadata,
+        DetailedInstanceMetadata,
+        InstanceMetadata,
+        ServerInfo,
+        Stats,
+        Page,
+        PageEvent,
+        Announcement,
+        Antenna,
+        App,
+        AuthSession,
+        Ad,
+        Clip,
+        NoteFavorite,
+        FollowRequest,
+        Channel,
+        Following,
+        FollowingFolloweePopulated,
+        FollowingFollowerPopulated,
+        Blocking,
+        Instance,
+        Signin,
+        UserSorting,
+        OriginType
+    }
+}
+export { entities }
+
+// @public (undocumented)
+type FetchLike = (input: string, init?: {
+    method?: string;
+    body?: string;
+    credentials?: RequestCredentials;
+    cache?: RequestCache;
+}) => Promise<{
+    status: number;
+    json(): Promise<any>;
+}>;
+
+// @public (undocumented)
+export const ffVisibility: readonly ["public", "followers", "private"];
+
+// @public (undocumented)
+type Following = {
+    id: ID;
+    createdAt: DateString;
+    followerId: User['id'];
+    followeeId: User['id'];
+};
+
+// @public (undocumented)
+type FollowingFolloweePopulated = Following & {
+    followee: UserDetailed;
+};
+
+// @public (undocumented)
+type FollowingFollowerPopulated = Following & {
+    follower: UserDetailed;
+};
+
+// @public (undocumented)
+type FollowRequest = {
+    id: ID;
+    follower: User;
+    followee: User;
+};
+
+// @public (undocumented)
+type GalleryPost = TODO_2;
+
+// @public (undocumented)
+type ID = string;
+
+// @public (undocumented)
+type Instance = {
+    id: ID;
+    caughtAt: DateString;
+    host: string;
+    usersCount: number;
+    notesCount: number;
+    followingCount: number;
+    followersCount: number;
+    driveUsage: number;
+    driveFiles: number;
+    latestRequestSentAt: DateString | null;
+    latestStatus: number | null;
+    latestRequestReceivedAt: DateString | null;
+    lastCommunicatedAt: DateString;
+    isNotResponding: boolean;
+    isSuspended: boolean;
+    softwareName: string | null;
+    softwareVersion: string | null;
+    openRegistrations: boolean | null;
+    name: string | null;
+    description: string | null;
+    maintainerName: string | null;
+    maintainerEmail: string | null;
+    iconUrl: string | null;
+    faviconUrl: string | null;
+    themeColor: string | null;
+    infoUpdatedAt: DateString | null;
+};
+
+// @public (undocumented)
+type InstanceMetadata = LiteInstanceMetadata | DetailedInstanceMetadata;
+
+// @public (undocumented)
+function isAPIError(reason: any): reason is APIError;
+
+// @public (undocumented)
+type LiteInstanceMetadata = {
+    maintainerName: string | null;
+    maintainerEmail: string | null;
+    version: string;
+    name: string | null;
+    uri: string;
+    description: string | null;
+    tosUrl: string | null;
+    disableRegistration: boolean;
+    disableLocalTimeline: boolean;
+    disableGlobalTimeline: boolean;
+    driveCapacityPerLocalUserMb: number;
+    driveCapacityPerRemoteUserMb: number;
+    enableHcaptcha: boolean;
+    hcaptchaSiteKey: string | null;
+    enableRecaptcha: boolean;
+    recaptchaSiteKey: string | null;
+    swPublickey: string | null;
+    maxNoteTextLength: number;
+    enableEmail: boolean;
+    enableTwitterIntegration: boolean;
+    enableGithubIntegration: boolean;
+    enableDiscordIntegration: boolean;
+    enableServiceWorker: boolean;
+    emojis: CustomEmoji[];
+    ads: {
+        id: ID;
+        ratio: number;
+        place: string;
+        url: string;
+        imageUrl: string;
+    }[];
+};
+
+// @public (undocumented)
+type MeDetailed = UserDetailed & {
+    avatarId: DriveFile['id'];
+    bannerId: DriveFile['id'];
+    autoAcceptFollowed: boolean;
+    noCrawle: boolean;
+    isExplorable: boolean;
+    hideOnlineStatus: boolean;
+    mutedWords: string[][];
+    [other: string]: any;
+};
+
+// @public (undocumented)
+type MessagingMessage = {
+    id: ID;
+    createdAt: DateString;
+    file: DriveFile | null;
+    fileId: DriveFile['id'] | null;
+    isRead: boolean;
+    reads: User['id'][];
+    text: string | null;
+    user: User;
+    userId: User['id'];
+    recipient?: User | null;
+    recipientId: User['id'] | null;
+    group?: UserGroup | null;
+    groupId: UserGroup['id'] | null;
+};
+
+// @public (undocumented)
+export const mutedNoteReasons: readonly ["word", "manual", "spam", "other"];
+
+// @public (undocumented)
+type Note = {
+    id: ID;
+    createdAt: DateString;
+    text: string | null;
+    cw: string | null;
+    user: User;
+    userId: User['id'];
+    reply?: Note;
+    replyId: Note['id'];
+    renote?: Note;
+    renoteId: Note['id'];
+    files: DriveFile[];
+    fileIds: DriveFile['id'][];
+    visibility: 'public' | 'home' | 'followers' | 'specified';
+    visibleUserIds?: User['id'][];
+    localOnly?: boolean;
+    myReaction?: string;
+    reactions: Record<string, number>;
+    renoteCount: number;
+    repliesCount: number;
+    poll?: {
+        expiresAt: DateString | null;
+        multiple: boolean;
+        choices: {
+            isVoted: boolean;
+            text: string;
+            votes: number;
+        }[];
+    };
+    emojis: {
+        name: string;
+        url: string;
+    }[];
+    uri?: string;
+    url?: string;
+    isHidden?: boolean;
+};
+
+// @public (undocumented)
+type NoteFavorite = {
+    id: ID;
+    createdAt: DateString;
+    noteId: Note['id'];
+    note: Note;
+};
+
+// @public (undocumented)
+type NoteReaction = {
+    id: ID;
+    createdAt: DateString;
+    user: UserLite;
+    type: string;
+};
+
+// @public (undocumented)
+export const noteVisibilities: readonly ["public", "home", "followers", "specified"];
+
+// @public (undocumented)
+type Notification_2 = {
+    id: ID;
+    createdAt: DateString;
+    isRead: boolean;
+} & ({
+    type: 'reaction';
+    reaction: string;
+    user: User;
+    userId: User['id'];
+    note: Note;
+} | {
+    type: 'reply';
+    user: User;
+    userId: User['id'];
+    note: Note;
+} | {
+    type: 'renote';
+    user: User;
+    userId: User['id'];
+    note: Note;
+} | {
+    type: 'quote';
+    user: User;
+    userId: User['id'];
+    note: Note;
+} | {
+    type: 'mention';
+    user: User;
+    userId: User['id'];
+    note: Note;
+} | {
+    type: 'pollVote';
+    user: User;
+    userId: User['id'];
+    note: Note;
+} | {
+    type: 'follow';
+    user: User;
+    userId: User['id'];
+} | {
+    type: 'followRequestAccepted';
+    user: User;
+    userId: User['id'];
+} | {
+    type: 'receiveFollowRequest';
+    user: User;
+    userId: User['id'];
+} | {
+    type: 'groupInvited';
+    invitation: UserGroup;
+    user: User;
+    userId: User['id'];
+} | {
+    type: 'app';
+    header?: string | null;
+    body: string;
+    icon?: string | null;
+});
+
+// @public (undocumented)
+export const notificationTypes: readonly ["follow", "mention", "reply", "renote", "quote", "reaction", "pollVote", "receiveFollowRequest", "followRequestAccepted", "groupInvited", "app"];
+
+// @public (undocumented)
+type OriginType = 'combined' | 'local' | 'remote';
+
+// @public (undocumented)
+type Page = {
+    id: ID;
+    createdAt: DateString;
+    updatedAt: DateString;
+    userId: User['id'];
+    user: User;
+    content: Record<string, any>[];
+    variables: Record<string, any>[];
+    title: string;
+    name: string;
+    summary: string | null;
+    hideTitleWhenPinned: boolean;
+    alignCenter: boolean;
+    font: string;
+    script: string;
+    eyeCatchingImageId: DriveFile['id'] | null;
+    eyeCatchingImage: DriveFile | null;
+    attachedFiles: any;
+    likedCount: number;
+    isLiked?: boolean;
+};
+
+// @public (undocumented)
+type PageEvent = {
+    pageId: Page['id'];
+    event: string;
+    var: any;
+    userId: User['id'];
+    user: User;
+};
+
+// @public (undocumented)
+export const permissions: string[];
+
+// @public (undocumented)
+type ServerInfo = {
+    machine: string;
+    cpu: {
+        model: string;
+        cores: number;
+    };
+    mem: {
+        total: number;
+    };
+    fs: {
+        total: number;
+        used: number;
+    };
+};
+
+// @public (undocumented)
+type Signin = {
+    id: ID;
+    createdAt: DateString;
+    ip: string;
+    headers: Record<string, any>;
+    success: boolean;
+};
+
+// @public (undocumented)
+type Stats = {
+    notesCount: number;
+    originalNotesCount: number;
+    usersCount: number;
+    originalUsersCount: number;
+    instances: number;
+    driveUsageLocal: number;
+    driveUsageRemote: number;
+};
+
+// Warning: (ae-forgotten-export) The symbol "StreamEvents" needs to be exported by the entry point index.d.ts
+//
+// @public (undocumented)
+export class Stream extends EventEmitter<StreamEvents> {
+    constructor(origin: string, user: {
+        token: string;
+    } | null, options?: {
+        WebSocket?: any;
+    });
+    // (undocumented)
+    close(): void;
+    // Warning: (ae-forgotten-export) The symbol "NonSharedConnection" needs to be exported by the entry point index.d.ts
+    //
+    // (undocumented)
+    disconnectToChannel(connection: NonSharedConnection): void;
+    // Warning: (ae-forgotten-export) The symbol "SharedConnection" needs to be exported by the entry point index.d.ts
+    //
+    // (undocumented)
+    removeSharedConnection(connection: SharedConnection): void;
+    // Warning: (ae-forgotten-export) The symbol "Pool" needs to be exported by the entry point index.d.ts
+    //
+    // (undocumented)
+    removeSharedConnectionPool(pool: Pool): void;
+    // (undocumented)
+    send(typeOrPayload: any, payload?: any): void;
+    // (undocumented)
+    state: 'initializing' | 'reconnecting' | 'connected';
+    // Warning: (ae-forgotten-export) The symbol "Channels" needs to be exported by the entry point index.d.ts
+    // Warning: (ae-forgotten-export) The symbol "Connection" needs to be exported by the entry point index.d.ts
+    //
+    // (undocumented)
+    useChannel<C extends keyof Channels>(channel: C, params?: Channels[C]['params'], name?: string): Connection<Channels[C]>;
+}
+
+// @public (undocumented)
+type User = UserLite | UserDetailed;
+
+// @public (undocumented)
+type UserDetailed = UserLite & {
+    isLocked: boolean;
+    pinnedNotes: Note[];
+};
+
+// @public (undocumented)
+type UserGroup = TODO_2;
+
+// @public (undocumented)
+type UserList = {
+    id: ID;
+    createdAt: DateString;
+    name: string;
+    userIds: User['id'][];
+};
+
+// @public (undocumented)
+type UserLite = {
+    id: ID;
+    username: string;
+    host: string | null;
+    name: string;
+    onlineStatus: 'online' | 'active' | 'offline' | 'unknown';
+    avatarUrl: string;
+    avatarBlurhash: string;
+    emojis: {
+        name: string;
+        url: string;
+    }[];
+    instance?: {
+        name: Instance['name'];
+        softwareName: Instance['softwareName'];
+        softwareVersion: Instance['softwareVersion'];
+        iconUrl: Instance['iconUrl'];
+        faviconUrl: Instance['faviconUrl'];
+        themeColor: Instance['themeColor'];
+    };
+};
+
+// @public (undocumented)
+type UserSorting = '+follower' | '-follower' | '+createdAt' | '-createdAt' | '+updatedAt' | '-updatedAt';
+
+// Warnings were encountered during analysis:
+//
+// src/api.types.ts:16:32 - (ae-forgotten-export) The symbol "TODO" needs to be exported by the entry point index.d.ts
+// src/api.types.ts:18:25 - (ae-forgotten-export) The symbol "NoParams" needs to be exported by the entry point index.d.ts
+// src/api.types.ts:595:18 - (ae-forgotten-export) The symbol "ShowUserReq" needs to be exported by the entry point index.d.ts
+
+// (No @packageDocumentation comment for this package)
+
+```
diff --git a/src/streaming.types.ts b/src/streaming.types.ts
index 1e8f9db9ae..947e55e25f 100644
--- a/src/streaming.types.ts
+++ b/src/streaming.types.ts
@@ -1,4 +1,4 @@
-import { CustomEmoji, DriveFile, MeDetailed, MessagingMessage, Note, Notification, PageEvent, User, UserGroup } from './entities';
+import { Antenna, CustomEmoji, DriveFile, MeDetailed, MessagingMessage, Note, Notification, PageEvent, User, UserGroup } from './entities';
 
 type FIXME = any;
 
@@ -16,21 +16,31 @@ export type Channels = {
 			meUpdated: (payload: MeDetailed) => void;
 			pageEvent: (payload: PageEvent) => void;
 			urlUploadFinished: (payload: { marker: string; file: DriveFile; }) => void;
-			messagingMessage: (payload: MessagingMessage) => void;
 			readAllNotifications: () => void;
-			unreadNotification: () => void;
-			unreadMention: () => void;
+			unreadNotification: (payload: Notification) => void;
+			unreadMention: (payload: Note['id']) => void;
 			readAllUnreadMentions: () => void;
-			unreadSpecifiedNote: () => void;
+			unreadSpecifiedNote: (payload: Note['id']) => void;
 			readAllUnreadSpecifiedNotes: () => void;
 			readAllMessagingMessages: () => void;
-			unreadMessagingMessage: () => void;
+			messagingMessage: (payload: MessagingMessage) => void;
+			unreadMessagingMessage: (payload: MessagingMessage) => void;
 			readAllAntennas: () => void;
-			unreadAntenna: () => void;
+			unreadAntenna: (payload: Antenna) => void;
 			readAllAnnouncements: () => void;
 			readAllChannels: () => void;
-			unreadChannel: () => void;
+			unreadChannel: (payload: Note['id']) => void;
 			myTokenRegenerated: () => void;
+			reversiNoInvites: () => void;
+			reversiInvited: (payload: FIXME) => void;
+			signin: (payload: FIXME) => void;
+			registryUpdated: (payload: {
+				scope?: string[];
+				key: string;
+				value: any | null;
+			}) => void;
+			driveFileCreated: (payload: DriveFile) => void;
+			readAntenna: (payload: Antenna) => void;
 		};
 		receives: null;
 	};