import type { UserIdResolvable, UserNameResolvable } from 'twitch-common'; import { BaseApi } from '../../BaseApi'; import { HelixPaginatedRequest } from '../HelixPaginatedRequest'; import { HelixPaginatedRequestWithTotal } from '../HelixPaginatedRequestWithTotal'; import type { HelixPaginatedResult, HelixPaginatedResultWithTotal } from '../HelixPaginatedResult'; import type { HelixForwardPagination } from '../HelixPagination'; import { HelixInstalledExtensionList } from './Extensions/HelixInstalledExtensionList'; import { HelixUserExtension } from './Extensions/HelixUserExtension'; import type { HelixUserExtensionUpdatePayload } from './Extensions/HelixUserExtensionUpdatePayload'; import type { HelixFollowData, HelixFollowFilter } from './HelixFollow'; import { HelixFollow } from './HelixFollow'; import { HelixPrivilegedUser } from './HelixPrivilegedUser'; import { HelixUser } from './HelixUser'; import type { HelixUserBlockData } from './HelixUserBlock'; import { HelixUserBlock } from './HelixUserBlock'; /** @private */ export declare enum UserLookupType { Id = "id", Login = "login" } /** * User data to update using {@HelixUserApi#updateUser}. */ export interface HelixUserUpdate { description?: string; } /** * Additional info for a block to be created. */ export interface HelixUserBlockAdditionalInfo { /** * The source context for blocking the user. */ sourceContext?: 'chat' | 'whisper'; /** * The reason for blocking the user. */ reason?: 'spam' | 'harassment' | 'other'; } /** * The Helix API methods that deal with users. * * Can be accessed using `client.helix.users` on an {@ApiClient} instance. * * ## Example * ```ts * const api = new ApiClient(new StaticAuthProvider(clientId, accessToken)); * const user = await api.helix.users.getUserById('125328655'); * ``` */ export declare class HelixUserApi extends BaseApi { /** * Retrieves the user data for the given list of user IDs. * * @param userIds The user IDs you want to look up. */ getUsersByIds(userIds: UserIdResolvable[]): Promise; /** * Retrieves the user data for the given list of user names. * * @param userNames The user names you want to look up. */ getUsersByNames(userNames: UserNameResolvable[]): Promise; /** * Retrieves the user data for the given user ID. * * @param userId The user ID you want to look up. */ getUserById(userId: UserIdResolvable): Promise; /** * Retrieves the user data for the given user name. * * @param userName The user name you want to look up. */ getUserByName(userName: UserNameResolvable): Promise; /** * Retrieves the user data of the currently authenticated user. * * @param withEmail Whether you need the user's email address. */ getMe(withEmail?: boolean): Promise; /** * Updates the currently authenticated user's data. * * @param data The data to update. */ updateUser(data: HelixUserUpdate): Promise; /** * Retrieves a list of follow relations. * * @param filter Several filtering and pagination parameters. See the {@HelixFollowFilter} documentation. */ getFollows(filter: HelixFollowFilter): Promise>; /** * Creates a paginator for follow relations. * * @param filter Several filtering and pagination parameters. See the {@HelixFollowFilter} documentation. */ getFollowsPaginated(filter: HelixFollowFilter): HelixPaginatedRequestWithTotal; /** * Retrieves the follow relation bewteen a given user and a given broadcaster. * * @param user The user to retrieve the follow relation for. * @param broadcaster The broadcaster to retrieve the follow relation for. */ getFollowFromUserToBroadcaster(user: UserIdResolvable, broadcaster: UserIdResolvable): Promise; /** * Checks whether the given user follows the given broadcaster. * * @param user The user to check the follow for. * @param broadcaster The broadcaster to check the follow for. */ userFollowsBroadcaster(user: UserIdResolvable, broadcaster: UserIdResolvable): Promise; /** * Creates a new follow from a user to another user. * * @param fromUser The user to create the follow for. * @param toUser The user to follow. * @param allowNotifications Whether email or push notifications are allowed to be created. * * The user `fromUser` still needs to have this enabled in their settings as well. */ createFollow(fromUser: UserIdResolvable, toUser: UserIdResolvable, allowNotifications?: boolean): Promise; /** * Removes a follow from a user to another user. * * @param fromUser The user to remove the follow for. * @param toUser The user to unfollow. */ deleteFollow(fromUser: UserIdResolvable, toUser: UserIdResolvable): Promise; /** * Retrieves a list of users blocked by the given user. * * @param user The user to retrieve blocks for. * @param pagination * * @expandParams */ getBlocks(user: UserIdResolvable, pagination?: HelixForwardPagination): Promise>; /** * Creates a paginator for users blocked by the given user. * * @param user The user to retrieve blocks for. */ getBlocksPaginated(user: UserIdResolvable): HelixPaginatedRequest; /** * Blocks the given user. * * @param target The user to block. * @param additionalInfo Additional info to give context to the block. * * @expandParams */ createBlock(target: UserIdResolvable, additionalInfo?: HelixUserBlockAdditionalInfo): Promise; /** * Unblocks the given user. * * @param target The user to unblock. */ deleteBlock(target: UserIdResolvable): Promise; /** * Retrieves a list of all extensions for the authenticated user. */ getMyExtensions(): Promise; /** * Retrieves a list of all installed extensions for the given user. * * @param user The user to get the installed extensions for. * * If not given, get the installed extensions for the authenticated user. */ getActiveExtensions(user?: UserIdResolvable): Promise; /** * Updates the installed extensions for the authenticated user. * * @param data The extension installation payload. * * The format is shown on the [Twitch documentation](https://dev.twitch.tv/docs/api/reference#update-user-extensions). * Don't use the "data" wrapper though. */ updateMyActiveExtensions(data: HelixUserExtensionUpdatePayload): Promise; private static _makeFollowsQuery; private _getUsers; }