UNPKG

@eulerstream/euler-api-sdk

Version:

Node.js module for interacting with the Euler Stream TikTok LIVE API.

1,842 lines (1,841 loc) 284 kB
import * as _$axios from "axios"; import { AxiosInstance, AxiosPromise, RawAxiosRequestConfig } from "axios"; //#region src/sdk/configuration.d.ts /** * Euler Stream Sign API * Sign Server API Documentation * * The version of the OpenAPI document: dev * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ interface AWSv4Configuration { options?: { region?: string; service?: string; }; credentials?: { accessKeyId?: string; secretAccessKey?: string; sessionToken?: string; }; } interface ConfigurationParameters { apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>); username?: string; password?: string; accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>); awsv4?: AWSv4Configuration; basePath?: string; serverIndex?: number; baseOptions?: any; formDataCtor?: new () => any; } declare class Configuration { /** * parameter for apiKey security * @param name security name */ apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>); /** * parameter for basic security */ username?: string; /** * parameter for basic security */ password?: string; /** * parameter for oauth2 security * @param name security name * @param scopes oauth2 scope */ accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>); /** * parameter for aws4 signature security * @param {Object} AWS4Signature - AWS4 Signature security * @param {string} options.region - aws region * @param {string} options.service - name of the service. * @param {string} credentials.accessKeyId - aws access key id * @param {string} credentials.secretAccessKey - aws access key * @param {string} credentials.sessionToken - aws session token * @memberof Configuration */ awsv4?: AWSv4Configuration; /** * override base path */ basePath?: string; /** * override server index */ serverIndex?: number; /** * base options for axios calls */ baseOptions?: any; /** * The FormData constructor that will be used to create multipart form data * requests. You can inject this here so that execution environments that * do not support the FormData class can still run the generated client. * * @type {new () => FormData} */ formDataCtor?: new () => any; constructor(param?: ConfigurationParameters); /** * Check if the given MIME is a JSON MIME. * JSON MIME examples: * application/json * application/json; charset=UTF8 * APPLICATION/JSON * application/vnd.company+json * @param mime - MIME (Multipurpose Internet Mail Extensions) * @return True if the given MIME is JSON, false otherwise. */ isJsonMime(mime: string): boolean; } //#endregion //#region src/sdk/base.d.ts interface RequestArgs { url: string; options: RawAxiosRequestConfig; } declare class BaseAPI { protected basePath: string; protected axios: AxiosInstance; protected configuration: Configuration | undefined; constructor(configuration?: Configuration, basePath?: string, axios?: AxiosInstance); } //#endregion //#region src/sdk/api.d.ts interface Account { 'day': number; 'hour': number; 'minute': number; 'name': string; 'webhook_secret': string; 'max_alerts': number; 'max_websockets': number; 'expires_at': string | null; 'purchased_captcha_credits': number; 'updated_at': string; 'created_at': string; 'id': number; } interface AccountConfig { 'day': number; 'hour': number; 'minute': number; 'name': string; 'webhook_secret': string; 'max_alerts': number; 'max_websockets': number; 'expires_at': string | null; } declare const AccountScopes: { readonly NUMBER_MINUS_1: -1; readonly NUMBER_0: 0; readonly NUMBER_1: 1; readonly NUMBER_3: 3; readonly NUMBER_10: 10; readonly NUMBER_11: 11; readonly NUMBER_8: 8; readonly NUMBER_6: 6; readonly NUMBER_12: 12; readonly NUMBER_13: 13; readonly NUMBER_14: 14; readonly NUMBER_15: 15; readonly NUMBER_16: 16; }; type AccountScopes = typeof AccountScopes[keyof typeof AccountScopes]; interface AccountWithPermissionsSafe { 'day': number; 'hour': number; 'minute': number; 'name': string; 'webhook_secret': string; 'max_alerts': number; 'max_websockets': number; 'expires_at': string | null; 'purchased_captcha_credits': number; 'updated_at': string; 'created_at': string; 'id': number; 'scopes': Array<AccountScopes>; } interface AccountsTableRequestLimits { 'day': number; 'hour': number; 'minute': number; } /** * Public, snake_case response shape for an alert. The gRPC {@link LivePushAlert} model is camelCase; the public API has always exposed alerts in snake_case, so we convert before serializing. Only the field casing is changed here — types and field membership are left as-is. */ interface AlertResponseShape { 'id': number; 'account_id': number; 'alert_creator_id': number; 'read_only': boolean; 'enabled': boolean; 'alert_creator_username': string; 'created_at': string; 'updated_at': string; /** * @deprecated */ 'alert_creator_avatar_url'?: string; /** * @deprecated */ 'alert_creator_nickname'?: string; } /** * Public, snake_case response shape for an alert target. Mirrors the legacy (`old-schema.json`) target shape as closely as the new gRPC {@link LivePushAlertTarget} model allows: field casing is converted, `metadata` is re-hydrated from the stored JSON string, the unix-ms timestamps are threaded back into ISO `created_at` / `updated_at`, and `alert_creator_id` is coerced to a number. */ interface AlertTargetResponseShape { 'id': number; 'account_id': number; 'alert_id': number; 'alert_creator_id': number; 'url': string; 'metadata': object; 'last_status': LivePushAlertTargetStatus; 'format': LivePushAlertTargetFormat; 'created_at': string; 'updated_at': string; } interface ApiKey { 'name': string; 'value': string; 'account_id': number; 'updated_at': string; 'created_at': string; 'id': number; } interface ApiKeyConfig { 'name': string; 'value': string; 'account_id': number; } interface CaptchaCreditsResponse { 'code': number; 'message'?: string; 'credits': number; } /** * Configuration for the alert */ interface CreateAlertRequest { 'unique_id': string; } interface CreateAlertResponse { 'code': number; 'message'?: string; 'alert'?: AlertResponseShape; } interface CreateAlertTargetPayload { 'url': string; /** * Construct a type with a set of properties K of type T */ 'metadata'?: { [key: string]: any; }; } interface CreateAlertTargetResponse { 'code': number; 'message'?: string; 'target'?: AlertTargetResponseShape; } interface CreateJWTResponse { 'code': number; 'message'?: string; 'token'?: string; 'config'?: JWTConfig; } interface CreateKeyPayload { 'name': string; } interface CreateKeyResponse { 'code': number; 'message'?: string; 'key'?: ApiKey; } interface DeleteAlertResponse { 'code': number; 'message'?: string; } interface DeleteAlertTargetResponse { 'code': number; 'message'?: string; } interface DeleteKeyResponse { 'code': number; 'message'?: string; } interface ExchangeTokenRequest { 'client_id': string; 'client_secret': string; 'grant_type': ExchangeTokenRequestGrantTypeEnum; /** * Required for authorization_code grant */ 'code'?: string; /** * Required for authorization_code grant */ 'redirect_uri'?: string; /** * Required for refresh_token grant */ 'refresh_token'?: string; } declare const ExchangeTokenRequestGrantTypeEnum: { readonly AuthorizationCode: "authorization_code"; readonly RefreshToken: "refresh_token"; }; type ExchangeTokenRequestGrantTypeEnum = typeof ExchangeTokenRequestGrantTypeEnum[keyof typeof ExchangeTokenRequestGrantTypeEnum]; interface GetPublicClientResponse { 'code': number; 'message'?: string; 'client'?: PublicOAuthClientInfo; } interface GetRateLimits { 'code': number; 'message'?: string; 'day'?: RateLimitInfo; 'hour'?: RateLimitInfo; 'minute'?: RateLimitInfo; } /** * Friendly catalog sort options, mapped to the gifts-server enum below. */ declare const GiftCatalogOrderBy: { readonly Price: "price"; readonly Name: "name"; }; type GiftCatalogOrderBy = typeof GiftCatalogOrderBy[keyof typeof GiftCatalogOrderBy]; /** * Per-gift sponsorship progress entry (`data.current_user_progress[giftId]`). */ interface GiftGalleryProgressItem { 'sponsor_id': number; 'sponsor_count': number; 'left_count_to_sponsor': number; 'current_count': number; 'can_sponsor': boolean; } /** * Current sponsor of a gallery gift (`normal_gifts[].sponsor_info`). */ interface GiftGallerySponsorInfo { 'user_has_optout': boolean; 'sponsor_id': string; 'sent_count': number; 'nickname': string; 'last_send_time_sec': number; 'became_sponsor_times': number; 'avatar_image': string; 'anchor_has_followed': boolean; } interface GiftOverride { 'is_displayed_on_panel'?: boolean; 'is_gallery_gift'?: boolean; 'gift_sponsor_info'?: GiftOverrideGiftSponsorInfo; } interface GiftOverrideGiftSponsorInfo { 'current_count': number; 'can_sponsor': boolean; 'left_count_to_sponsor': number; 'sponsor_count': number; 'sponsor_id': number; } interface HashtagListAPIResponse { 'code': number; 'message'?: string; 'response'?: WebcastHashtagListRouteOutput; } interface HostsResponse { 'code': number; 'message'?: string; 'hosts'?: Array<PeerPresence>; } interface IconCaptchaResponse { 'response': IconsResult | null; 'cached': boolean; 'code': number; 'message'?: string; } interface IconsResult { 'time_ms': number; 'points': Array<Point>; 'label': string; } interface IntrospectRequestBody { 'token': string; 'token_type_hint'?: IntrospectRequestBodyTokenTypeHintEnum; 'client_id': string; 'client_secret': string; } declare const IntrospectRequestBodyTokenTypeHintEnum: { readonly AccessToken: "access_token"; readonly RefreshToken: "refresh_token"; }; type IntrospectRequestBodyTokenTypeHintEnum = typeof IntrospectRequestBodyTokenTypeHintEnum[keyof typeof IntrospectRequestBodyTokenTypeHintEnum]; /** * RFC 7662 Token Introspection response */ interface IntrospectionResponse { 'active': boolean; 'scope'?: string; 'client_id'?: string; 'token_type'?: IntrospectionResponseTokenTypeEnum; 'exp'?: number; 'iat'?: number; 'sub'?: string; } declare const IntrospectionResponseTokenTypeEnum: { readonly Bearer: "Bearer"; }; type IntrospectionResponseTokenTypeEnum = typeof IntrospectionResponseTokenTypeEnum[keyof typeof IntrospectionResponseTokenTypeEnum]; interface JSONResponse { 'code': number; 'message'?: string; } interface JWTConfig { 'id': string; 'expiresAt': number; 'ttl': number; 'accountId': number; 'apiKeyId': number; 'limits': AccountsTableRequestLimits; 'webSocketData': JWTConfigWebSocketData; 'name': string | null; } interface JWTConfigWebSocketData { 'encryptedOAuthToken'?: string; 'encryptedTtTargetIdc'?: string; 'encryptedSessionId'?: string; 'allowedCreators': Array<string> | null; 'maxWebSockets': number; } interface JWTCreateConfig { 'limits'?: AccountsTableRequestLimits | null; 'websockets'?: JWTCreateConfigWebSocketData | null; 'expireAfter': number; 'name'?: string; } interface JWTCreateConfigWebSocketData { 'oauthToken'?: string; 'ttTargetIdc'?: string; 'sessionId'?: string; 'allowedCreators': Array<string> | null; 'maxWebSockets': number; } interface ListAlertTargetsResponse { 'code': number; 'message'?: string; 'targets'?: Array<AlertTargetResponseShape>; } interface ListAlertsResponse { 'code': number; 'message'?: string; 'alerts'?: Array<AlertResponseShape>; 'hasMore': boolean; } interface ListKeysResponse { 'code': number; 'message'?: string; 'keys'?: Array<ApiKey>; } interface LiveAnalyticsUserInteractionsAPIResponse { 'code': number; 'message'?: string; 'response'?: WebcastLiveAnalyticsUserInteractionsRouteOutput; } interface LiveAnalyticsVideoDetailAPIResponse { 'code': number; 'message'?: string; 'response'?: WebcastLiveAnalyticsVideoDetailRouteOutput; } interface LiveAnalyticsVideoListAPIResponse { 'code': number; 'message'?: string; 'response'?: WebcastLiveAnalyticsVideoListRouteOutput; } declare const LivePushAlertTargetFormat: { readonly NUMBER_0: 0; readonly NUMBER_1: 1; readonly NUMBER_MINUS_1: -1; }; type LivePushAlertTargetFormat = typeof LivePushAlertTargetFormat[keyof typeof LivePushAlertTargetFormat]; declare const LivePushAlertTargetStatus: { readonly NUMBER_0: 0; readonly NUMBER_1: 1; readonly NUMBER_4: 4; readonly NUMBER_MINUS_1: -1; }; type LivePushAlertTargetStatus = typeof LivePushAlertTargetStatus[keyof typeof LivePushAlertTargetStatus]; /** * Mute duration in seconds */ declare const MuteDuration: { readonly NUMBER_MINUS_1: -1; readonly NUMBER_5: 5; readonly NUMBER_30: 30; readonly NUMBER_60: 60; readonly NUMBER_300: 300; }; type MuteDuration = typeof MuteDuration[keyof typeof MuteDuration]; /** * An entry of `data.normal_gifts` — a sponsorable gallery gift. */ interface NormalGiftItem { 'unlighted_image_url': string; 'swapped': boolean; 'sponsorship_require_count': number; 'sponsored': boolean; 'sponsor_rank': Array<any>; 'sponsor_info': GiftGallerySponsorInfo; 'name': string; 'is_sponsor': boolean; 'image_url': string; 'goal_count': number; 'gift_id': string; 'gallery_gift_tag_url': string; 'gallery_gift_tag_type': number; 'current_sent_count': number; 'coin_price': number; 'can_sponsor': boolean; /** * Construct a type with a set of properties K of type T */ 'biz_extra': { [key: string]: any; }; } declare const OAuthClientMode: { readonly Dark: "dark"; readonly Light: "light"; readonly Auto: "auto"; }; type OAuthClientMode = typeof OAuthClientMode[keyof typeof OAuthClientMode]; interface OAuthIntrospectResponse { 'code': number; 'message'?: string; 'data'?: IntrospectionResponse; 'error'?: TokenErrorResponse; } interface OAuthRevokeResponse { 'code': number; 'message'?: string; 'error'?: TokenErrorResponse; } declare const OAuthScope: { readonly WebcastFetch: "webcast:fetch"; readonly WebcastRankings: "webcast:rankings"; readonly WebcastBulkLiveCheck: "webcast:bulk_live_check"; readonly WebcastUserEarnings: "webcast:user_earnings"; readonly WebcastSignUrl: "webcast:sign_url"; readonly WebcastChat: "webcast:chat"; readonly WebcastMute: "webcast:mute"; readonly WebcastBan: "webcast:ban"; readonly WebcastComments: "webcast:comments"; readonly WebcastModerators: "webcast:moderators"; readonly WebcastLiveAnalytics: "webcast:live_analytics"; readonly UserConsents: "user:consents"; readonly UserInfo: "user:info"; readonly WebcastSensitiveWords: "webcast:sensitive_words"; }; type OAuthScope = typeof OAuthScope[keyof typeof OAuthScope]; interface OAuthTokenResponse { 'code': number; 'message'?: string; 'data'?: TokenResponse; 'error'?: TokenErrorResponse; } interface OAuthUserInfoResponse { 'code': number; 'message'?: string; 'user'?: TikTokOAuthUserInfo; } /** * Make all properties in T optional */ interface PartialAvatarUrlStringNicknameStringSecUidStringNumericUidStringSignatureStringIsVerifiedBooleanFollowingNumberFollowersNumber { 'avatar_url'?: string; 'nickname'?: string; 'sec_uid'?: string; 'numeric_uid'?: string; 'signature'?: string; 'is_verified'?: boolean; 'following'?: number; 'followers'?: number; } /** * Make all properties in T optional */ interface PartialSignedUrlStringUserAgentStringBrowserNameStringBrowserVersionStringTokensRecordStringStringRequestHeadersRecordStringStringCookiesRecordStringStringArray { 'signedUrl'?: string; 'userAgent'?: string; 'browserName'?: string; 'browserVersion'?: string; /** * Construct a type with a set of properties K of type T */ 'tokens'?: { [key: string]: string; }; /** * Construct a type with a set of properties K of type T */ 'requestHeaders'?: { [key: string]: string; }; 'cookies'?: Array<{ [key: string]: string; }>; } /** * Make all properties in T optional */ interface PartialStatusNumberIsLiveBooleanIdStringCoverUrlStringTitleStringStartTimeNumberCurrentViewersNumberTotalViewersNumberHlsPullUrlStringFlvPullUrlStringHlsPullUrlLdStringFlvPullUrlLdString { 'status'?: number; 'is_live'?: boolean; 'id'?: string; 'cover_url'?: string; 'title'?: string; 'start_time'?: number; 'current_viewers'?: number; 'total_viewers'?: number; 'hls_pull_url'?: string; 'flv_pull_url'?: string; 'hls_pull_url_ld'?: string; 'flv_pull_url_ld'?: string; } /** * Make all properties in T optional */ interface PartialWebcastRegionRankingsOutputRank { 'rank'?: number; 'diamonds'?: number; 'diamonds_description'?: string; 'room_id'?: string; 'user'?: PartialWebcastRegionRankingsOutputRankUser; } interface PartialWebcastRegionRankingsOutputRankUser { 'following_count': number; 'follower_count': number; 'nickname': string; 'numeric_id': string; 'unique_id': string; 'avatar_thumb': Array<string>; } interface PeerPresence { 'lastSeen': number; 'role': PeerRole; 'id': string; 'type': PeerPresenceTypeEnum; } declare const PeerPresenceTypeEnum: { readonly Api: "api"; readonly Agent: "agent"; }; type PeerPresenceTypeEnum = typeof PeerPresenceTypeEnum[keyof typeof PeerPresenceTypeEnum]; declare const PeerRole: { readonly Public: "public"; readonly Enterprise: "enterprise"; readonly Staging: "staging"; }; type PeerRole = typeof PeerRole[keyof typeof PeerRole]; interface PipResponse { 'code': number; 'message'?: string; 'image_url': string; 'label': string; 'value': number; 'unit': string; } interface Pips200Response { 'code': number; 'message'?: string; 'image_url': string; 'label': string; 'value': number; 'unit': string; } /** * Captcha Server No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) The version of the OpenAPI document: 0.1 NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). https://openapi-generator.tech Do not edit the class manually. */ interface Point { 'x': number; 'y': number; } /** * Region enum shared across providers that route through the pooled DC vendors. Lives in its own file (with zero imports) so consumers can load it without dragging in `pooled-dc.ts`\'s singleton init — which itself depends on `OculusDc` / `OxyLabsDc` and would otherwise close a module-init cycle the bundler resolves into a TDZ violation. */ declare const PooledProxyRegion: { readonly Us: "US"; readonly Gb: "GB"; readonly De: "DE"; readonly Ro: "RO"; readonly Es: "ES"; readonly Be: "BE"; readonly Fr: "FR"; readonly Ca: "CA"; readonly Jp: "JP"; readonly Br: "BR"; readonly Mx: "MX"; readonly Co: "CO"; readonly Ar: "AR"; readonly Cl: "CL"; readonly Au: "AU"; readonly Kr: "KR"; readonly Pe: "PE"; readonly Pl: "PL"; readonly Sg: "SG"; readonly It: "IT"; readonly Id: "ID"; readonly Th: "TH"; readonly Sa: "SA"; readonly Il: "IL"; readonly Nl: "NL"; readonly Ie: "IE"; readonly Pt: "PT"; readonly Gr: "GR"; readonly At: "AT"; readonly Ch: "CH"; readonly Hu: "HU"; readonly Sk: "SK"; readonly Dk: "DK"; readonly No: "NO"; readonly Se: "SE"; readonly Nz: "NZ"; }; type PooledProxyRegion = typeof PooledProxyRegion[keyof typeof PooledProxyRegion]; interface PublicOAuthClientInfo { 'client_id': string; 'name': string; 'description': string | null; 'redirect_uris': Array<string>; 'supported_scopes': Array<OAuthScope>; 'theme': string | null; 'mode': OAuthClientMode | null; 'logo': string | null; } interface PuzzleCaptchaResponse { 'response': PuzzleResult | null; 'cached': boolean; 'code': number; 'message'?: string; } /** * Captcha Server No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) The version of the OpenAPI document: 0.1 NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). https://openapi-generator.tech Do not edit the class manually. */ interface PuzzleResult { 'time_ms': number; 'x': number; } declare const RankingLeagueLevel: { readonly NUMBER_100: 100; readonly NUMBER_200: 200; readonly NUMBER_300: 300; readonly NUMBER_400: 400; readonly NUMBER_500: 500; readonly NUMBER_600: 600; readonly NUMBER_700: 700; readonly NUMBER_800: 800; readonly NUMBER_900: 900; readonly NUMBER_1000: 1000; readonly NUMBER_1100: 1100; readonly NUMBER_1200: 1200; readonly NUMBER_1300: 1300; readonly NUMBER_1400: 1400; readonly NUMBER_1500: 1500; readonly NUMBER_1800: 1800; readonly NUMBER_1900: 1900; readonly NUMBER_2000: 2000; }; type RankingLeagueLevel = typeof RankingLeagueLevel[keyof typeof RankingLeagueLevel]; interface RateLimitInfo { 'max': number; 'remaining': number; 'reset_at': string | null; } declare const RateLimitType: { readonly Webcast: "WEBCAST"; readonly Alerts: "ALERTS"; readonly RateLimits: "RATE_LIMITS"; readonly Rankings: "RANKINGS"; }; type RateLimitType = typeof RateLimitType[keyof typeof RateLimitType]; /** * Construct a type with a set of properties K of type T */ interface RecordStreamTypeStringOrUndefined { 'hls_ld': string; 'hls_sd': string; 'flv_ld': string; 'flv_sd': string; } interface RecordStringBooleanOrNumberValue {} interface RecordStringIsLiveBooleanRoomIdStringOrNullValue { 'room_id': string; 'is_live': boolean; } interface RetrieveAccountResponse { 'code': number; 'message'?: string; 'account'?: AccountWithPermissionsSafe; } interface RetrieveAgentHostsResponse { 'code': number; 'message'?: string; 'agents': Array<PeerPresence>; } interface RetrieveAlertResponse { 'code': number; 'message'?: string; 'alert'?: AlertResponseShape; 'creator'?: RetrieveAlertResponseCreator; } interface RetrieveAlertResponseCreator { 'last_nickname': string | null; 'last_avatar_url': string | null; 'room_id': string | null; 'state_label': string; 'state': number; 'unique_id': string; } interface RetrieveBulkLiveCheckPayload { 'user_numeric_ids': Array<string>; } interface RetrieveBulkLiveCheckPayloadV1 { 'user_numeric_ids': Array<string>; /** * @deprecated */ 'session_id'?: string; /** * @deprecated */ 'tt_target_idc'?: string; } /** * The body of the request containing user numeric IDs (e.g. 7602356191083907865). */ interface RetrieveBulkLiveCheckRequest { 'user_numeric_ids': Array<string>; /** * @deprecated */ 'session_id'?: string; /** * @deprecated */ 'tt_target_idc'?: string; } interface RetrieveBulkLiveCheckResponse { 'code': number; 'message'?: string; 'response'?: WebcastIsLiveOutput; } interface RetrieveKeyResponse { 'code': number; 'message'?: string; 'key'?: ApiKey; } interface RetrieveRoomCoverResponse { 'code': number; 'message'?: string; 'cover_url'?: string; } interface RetrieveRoomVideoResponse { 'code': number; 'message'?: string; 'pullMap'?: RecordStreamTypeStringOrUndefined; } interface RetrieveWebSocketRouteResponse { 'code': number; 'message'?: string; 'state'?: WebSocketState; } interface RetrieveWebSocketState429Response { 'code': number; 'message': string; } interface RetrieveWebSocketsRouteResponse { 'code': number; 'message'?: string; 'webSocketIds'?: Array<string>; 'connections'?: number; } interface RevokeRequestBody { 'token': string; 'token_type_hint'?: RevokeRequestBodyTokenTypeHintEnum; 'client_id': string; 'client_secret': string; } declare const RevokeRequestBodyTokenTypeHintEnum: { readonly AccessToken: "access_token"; readonly RefreshToken: "refresh_token"; }; type RevokeRequestBodyTokenTypeHintEnum = typeof RevokeRequestBodyTokenTypeHintEnum[keyof typeof RevokeRequestBodyTokenTypeHintEnum]; interface RoomAddSensitiveWordAPIResponse { 'code': number; 'message'?: string; 'response'?: WebcastRoomAddSensitiveWordRouteOutput; } interface RoomAdminUpdateAPIResponse { 'code': number; 'message'?: string; 'response'?: WebcastRoomAdminUpdateRouteOutput; } interface RoomCommentsToggleAPIResponse { 'code': number; 'message'?: string; 'response'?: WebcastRoomCommentsToggleRouteOutput; } interface RoomDelSensitiveWordAPIResponse { 'code': number; 'message'?: string; 'response'?: WebcastRoomDelSensitiveWordRouteOutput; } interface RoomGetSensitiveWordsAPIResponse { 'code': number; 'message'?: string; 'response'?: WebcastRoomGetSensitiveWordRouteOutput; } interface RoomGiftsResponse { 'code': number; 'message'?: string; 'response'?: RoomGiftsResult; } interface RoomGiftsResult { 'room_id': string; 'page_gifts': Array<number>; /** * Construct a type with a set of properties K of type T */ 'gift_overrides': { [key: string]: GiftOverride; }; /** * Construct a type with a set of properties K of type T */ 'panel_refresh_data'?: { [key: string]: any; }; } interface RoomKickUserAPIResponse { 'code': number; 'message'?: string; 'response'?: WebcastRoomKickUserRouteOutput; } interface RoomKickedUsersAPIResponse { 'code': number; 'message'?: string; 'response'?: WebcastRoomKickedUsersRouteOutput; } interface RoomModeratorsAPIResponse { 'code': number; 'message'?: string; 'response'?: WebcastRoomAdminListRouteOutput; } interface RoomMuteUserAPIResponse { 'code': number; 'message'?: string; 'response'?: WebcastRoomMuteUserRouteOutput; } interface RoomMutedUsersAPIResponse { 'code': number; 'message'?: string; 'response'?: WebcastRoomMutedUsersRouteOutput; } interface RoomUnkickUserAPIResponse { 'code': number; 'message'?: string; 'response'?: WebcastRoomUnkickUserRouteOutput; } interface RoomUnmuteUserAPIResponse { 'code': number; 'message'?: string; 'response'?: WebcastRoomUnmuteUserRouteOutput; } /** * The payload configuration for sending a chat */ interface SendRoomChatRequest { /** * The chat message content to send */ 'content': string; /** * @deprecated */ 'targetRoomId'?: string; /** * The username of the room to send the chat to (either this or targetRoomId is required). Pass room_id = 0 to parameter for this to work. */ 'targetUniqueId'?: string; /** * @deprecated */ 'sessionId'?: string; /** * @deprecated */ 'ttTargetIdc'?: string; /** * @deprecated */ 'roomId'?: string; } interface ShapesCaptchaResponse { 'response': ShapesResult | null; 'cached': boolean; 'code': number; 'message'?: string; } interface ShapesResult { 'time_ms': number; 'point_1': Point; 'point_2': Point; } interface SignTikTokUrlBody { 'url': string; 'userAgent'?: string; 'method'?: SignTikTokUrlBodyMethodEnum; 'sessionId'?: string; 'ttTargetIdc'?: string; 'ttwid'?: string; 'payload'?: string; 'type'?: SignTikTokUrlBodyTypeEnum; 'includeBrowserParams'?: boolean; 'includeVerifyFp'?: boolean; } declare const SignTikTokUrlBodyMethodEnum: { readonly Get: "GET"; readonly Post: "POST"; readonly Options: "OPTIONS"; readonly Put: "PUT"; readonly Delete: "DELETE"; readonly Patch: "PATCH"; readonly Head: "HEAD"; }; type SignTikTokUrlBodyMethodEnum = typeof SignTikTokUrlBodyMethodEnum[keyof typeof SignTikTokUrlBodyMethodEnum]; declare const SignTikTokUrlBodyTypeEnum: { readonly Fetch: "fetch"; readonly Xhr: "xhr"; }; type SignTikTokUrlBodyTypeEnum = typeof SignTikTokUrlBodyTypeEnum[keyof typeof SignTikTokUrlBodyTypeEnum]; interface SignTikTokUrlResponse { 'code': number; 'message'?: string; 'response'?: PartialSignedUrlStringUserAgentStringBrowserNameStringBrowserVersionStringTokensRecordStringStringRequestHeadersRecordStringStringCookiesRecordStringStringArray; } interface SolveResponseIconsResult { 'response': IconsResult | null; 'cached': boolean; 'code': number; } interface SolveResponsePuzzleResult { 'response': PuzzleResult | null; 'cached': boolean; 'code': number; } interface SolveResponseShapesResult { 'response': ShapesResult | null; 'cached': boolean; 'code': number; } interface SolveResponseWhirlResult { 'response': WhirlResult | null; 'cached': boolean; 'code': number; } declare const StreamType: { readonly HlsLd: "hls_ld"; readonly HlsSd: "hls_sd"; readonly FlvLd: "flv_ld"; readonly FlvSd: "flv_sd"; }; type StreamType = typeof StreamType[keyof typeof StreamType]; interface TestAlertTargetResponse { 'code': number; 'message'?: string; 'status'?: LivePushAlertTargetStatus; 'statusLabel'?: string; } /** * One gift row from the ClickHouse `tiktok_gifts` ReplacingMergeTree. Mirrors the searchable columns + the JSON `raw` blob (shipped as a UTF-8 JSON string here so consumers can decode lazily without re-encoding through protobuf any-types). */ interface TikTokGiftsServerGift { 'giftId': number; 'giftName': string; 'giftType': number; 'diamondCount': number; 'combo': boolean; 'forLinkMic': boolean; 'describe': string; 'duration': string; 'imageUri': string; 'updatedAt': string; } interface TikTokLiveUser { 'raw': TikTokLiveUserRaw; 'room_info'?: PartialStatusNumberIsLiveBooleanIdStringCoverUrlStringTitleStringStartTimeNumberCurrentViewersNumberTotalViewersNumberHlsPullUrlStringFlvPullUrlStringHlsPullUrlLdStringFlvPullUrlLdString; 'user'?: TikTokLiveUserUser; 'unique_id': string; } interface TikTokLiveUserRaw { '_note': string; } interface TikTokLiveUserUser { 'avatar_url'?: string; 'nickname'?: string; 'sec_uid'?: string; 'numeric_uid'?: string; 'signature'?: string; 'is_verified'?: boolean; 'following'?: number; 'followers'?: number; 'unique_id': string; } interface TikTokOAuthUserInfo { 'uid'?: string; 'secUid'?: string; 'nickName'?: string; 'uniqueId'?: string; 'region'?: string; 'avatarUrl'?: string; 'roomId'?: string; 'hasLivePermission'?: boolean; 'isPrivateAccount'?: boolean; } /** * Logical \"client name\" recorded against each request — supplied by the caller via the `metadata.client_name` RPC field. Free-form on the wire, but conventionally one of the values below. */ declare const TikTokSignLiveClient: { readonly TtliveJava: "ttlive-java"; readonly TtliveNode: "ttlive-node"; readonly TtlivePython: "ttlive-python"; readonly TtliveNet: "ttlive-net"; readonly TtliveRust: "ttlive-rust"; readonly GotiktokLive: "gotiktok_live"; readonly TtliveCloudflare: "ttlive-cloudflare"; readonly TtliveOther: "ttlive-other"; readonly Internal: "internal"; }; type TikTokSignLiveClient = typeof TikTokSignLiveClient[keyof typeof TikTokSignLiveClient]; interface TokenErrorResponse { 'error': string; 'error_description'?: string; } interface TokenResponse { 'access_token': string; 'refresh_token': string; 'token_type': TokenResponseTokenTypeEnum; /** * Access token lifetime in seconds */ 'expires_in': number; /** * Refresh token lifetime in seconds */ 'refresh_expires_in': number; 'scopes': Array<OAuthScope>; } declare const TokenResponseTokenTypeEnum: { readonly Bearer: "Bearer"; }; type TokenResponseTokenTypeEnum = typeof TokenResponseTokenTypeEnum[keyof typeof TokenResponseTokenTypeEnum]; interface UpdateKeyPayload { 'name': string; } interface UpdateKeyResponse { 'code': number; 'message'?: string; 'config'?: ApiKey; } interface ValidateRefreshRequest { /** * The refresh token to validate */ 'refresh_token': string; /** * The OAuth client ID that issued the token */ 'client_id': string; } interface ValidateRefreshResponse { 'code': number; 'message'?: string; 'valid': boolean; 'scopes'?: Array<OAuthScope>; 'tiktok_user_id'?: string | null; 'country_code'?: string | null; } interface WebSocketState { 'deployment': PeerRole; 'accountId': number; 'uniqueId': string; 'createdAt': number; 'apiKeyId': number; 'jwtHasSessionId': boolean; 'jwtName': string | null; 'jwtId': string | null; 'heartbeat': number; 'wsId': string; } interface WebcastFeedResponse { 'status_code': number; 'extra': WebcastFeedResponseExtra; 'data': Array<WebcastFeedResponseItem>; } interface WebcastFeedResponseExtra { 'now': number; 'unread_extra': string; /** * Construct a type with a set of properties K of type T */ 'banner': { [key: string]: any; }; 'total': number; 'max_time': number; 'cost': number; 'is_backup': number; 'has_more': boolean; 'log_pb': WebcastFeedResponseExtraLogPb; } interface WebcastFeedResponseExtraLogPb { 'impr_id': string; } interface WebcastFeedResponseHashtag { 'id': number; 'title': string; 'image': WebcastFeedResponseRoomDataFeedRoomLabel; } interface WebcastFeedResponseImage { 'url_list': Array<string>; 'uri': string; } interface WebcastFeedResponseItem { 'type': number; 'rid': string; 'data': WebcastFeedResponseRoomData; /** * Construct a type with a set of properties K of type T */ 'flare_info': { [key: string]: any; }; 'room_event_tracking': string; } interface WebcastFeedResponseRoomData { 'id': number; 'id_str': string; 'status': number; 'owner_user_id': number; 'title': string; 'user_count': number; 'client_version': number; 'cover': WebcastFeedResponseImage; 'stream_url': WebcastFeedResponseStreamUrl; 'stats': WebcastFeedResponseRoomDataStats; 'feed_room_label': WebcastFeedResponseRoomDataFeedRoomLabel; 'owner': WebcastFeedResponseUser; 'live_type_third_party'?: boolean; /** * Construct a type with a set of properties K of type T */ 'room_auth': { [key: string]: RecordStringBooleanOrNumberValue; }; 'like_count'?: number; 'anchor_tab_type': number; /** * Construct a type with a set of properties K of type T */ 'commerce_info': { [key: string]: any; }; 'hashtag'?: WebcastFeedResponseHashtag; 'live_room_mode'?: number; /** * Construct a type with a set of properties K of type T */ 'stream_url_filtered_info': { [key: string]: any; }; 'square_cover_img'?: WebcastFeedResponseRoomDataSquareCoverImg; 'rectangle_cover_img'?: WebcastFeedResponseRoomDataFeedRoomLabel; 'blurred_cover': WebcastFeedResponseRoomDataSquareCoverImg; /** * Construct a type with a set of properties K of type T */ 'multi_stream_url': { [key: string]: any; }; 'game_tag_detail'?: WebcastFeedResponseRoomDataGameTagDetail; 'taxonomy_tag_info'?: WebcastFeedResponseRoomDataTaxonomyTagInfo; } interface WebcastFeedResponseRoomDataFeedRoomLabel { 'url_list': Array<string>; 'uri': string; 'avg_color': string; } interface WebcastFeedResponseRoomDataGameTagDetail { 'display_name': string; 'starling_key': string; 'game_tag_name': string; 'game_tag_id': number; } interface WebcastFeedResponseRoomDataSquareCoverImg { 'url_list': Array<string>; 'uri': string; 'avg_color': string; 'width': number; 'height': number; } interface WebcastFeedResponseRoomDataStats { 'comment_count': number; 'share_count'?: number; 'enter_count': number; /** * Construct a type with a set of properties K of type T */ 'user_count_composition'?: { [key: string]: any; }; 'total_user': number; } interface WebcastFeedResponseRoomDataTaxonomyTagInfo { 'level2_tag': string; 'level1_tag'?: Array<string>; } interface WebcastFeedResponseStreamUrl { 'rtmp_pull_url': string; 'flv_pull_url': WebcastFeedResponseStreamUrlFlvPullUrl; /** * Construct a type with a set of properties K of type T */ 'flv_pull_url_params'?: { [key: string]: string; }; 'live_core_sdk_data'?: WebcastFeedResponseStreamUrlLiveCoreSdkData; 'stream_size_width': number; 'stream_size_height': number; } interface WebcastFeedResponseStreamUrlFlvPullUrl { 'SD1'?: string; 'SD2'?: string; 'HD1'?: string; } interface WebcastFeedResponseStreamUrlLiveCoreSdkData { 'pull_data': WebcastFeedResponseStreamUrlLiveCoreSdkDataPullData; } interface WebcastFeedResponseStreamUrlLiveCoreSdkDataPullData { 'options': WebcastFeedResponseStreamUrlLiveCoreSdkDataPullDataOptions; 'stream_data': string; } interface WebcastFeedResponseStreamUrlLiveCoreSdkDataPullDataOptions { 'default_quality': WebcastFeedResponseStreamUrlLiveCoreSdkDataPullDataOptionsDefaultQuality; } interface WebcastFeedResponseStreamUrlLiveCoreSdkDataPullDataOptionsDefaultQuality { 'sdk_key': string; 'name': string; } interface WebcastFeedResponseUser { 'id': number; 'nickname': string; 'bio_description'?: string; 'avatar_thumb': WebcastFeedResponseImage; 'avatar_medium': WebcastFeedResponseImage; 'avatar_large': WebcastFeedResponseImage; 'status': number; 'modify_time': number; 'follow_info': WebcastFeedResponseUserFollowInfo; /** * Construct a type with a set of properties K of type T */ 'pay_grade': { [key: string]: any; }; /** * Construct a type with a set of properties K of type T */ 'user_attr': { [key: string]: any; }; 'own_room'?: WebcastFeedResponseUserOwnRoom; 'display_id': string; 'sec_uid': string; 'id_str': string; } interface WebcastFeedResponseUserFollowInfo { 'follower_count': number; 'following_count': number; } interface WebcastFeedResponseUserOwnRoom { 'room_ids_str': Array<string>; 'room_ids': Array<number>; } interface WebcastFeedRouteOutput { 'data': WebcastFeedResponse; } interface WebcastFeedRouteResponse { 'code': number; 'message'?: string; 'response'?: WebcastFeedRouteOutput; 'region': PooledProxyRegion; } declare const WebcastFetchPlatform: { readonly Mobile: "mobile"; readonly Web: "web"; }; type WebcastFetchPlatform = typeof WebcastFetchPlatform[keyof typeof WebcastFetchPlatform]; /** * Gallery entrance payload. Only the fields we model are typed; the rest of the (large) TikTok response rides through as `any`. */ interface WebcastGiftGalleryData { [key: string]: any; 'normal_gifts': Array<NormalGiftItem>; /** * Construct a type with a set of properties K of type T */ 'current_user_progress'?: { [key: string]: GiftGalleryProgressItem; }; 'current_timestamp': number; 'current_period_starts_at': number; 'current_period_ends_at': number; 'class_type': RankingLeagueLevel; 'anchor_ranking_league': WebcastGiftGalleryDataAnchorRankingLeagueEnum; } declare const WebcastGiftGalleryDataAnchorRankingLeagueEnum: { readonly ToString: "toString"; readonly ToFixed: "toFixed"; readonly ToExponential: "toExponential"; readonly ToPrecision: "toPrecision"; readonly ValueOf: "valueOf"; readonly ToLocaleString: "toLocaleString"; }; type WebcastGiftGalleryDataAnchorRankingLeagueEnum = typeof WebcastGiftGalleryDataAnchorRankingLeagueEnum[keyof typeof WebcastGiftGalleryDataAnchorRankingLeagueEnum]; interface WebcastGiftGalleryResponse { 'code': number; 'message'?: string; 'data'?: WebcastGiftGalleryData; } interface WebcastGiftResponse { 'code': number; 'message'?: string; 'gift'?: TikTokGiftsServerGift; } interface WebcastGiftSearchResponse { 'code': number; 'message'?: string; 'gifts'?: Array<TikTokGiftsServerGift>; } interface WebcastGiftcatalogResponse { 'code': number; 'message'?: string; 'gifts'?: Array<TikTokGiftsServerGift>; 'total'?: number; 'pageSize'?: number; 'pageNumber'?: number; 'totalPages'?: number; } interface WebcastGiftsResponse { 'code': number; 'message'?: string; 'url': string; } interface WebcastHashtagListResponse { 'data': WebcastHashtagListResponseData; 'extra': WebcastHashtagListResponseExtra; 'status_code': number; } interface WebcastHashtagListResponseData { 'game_hashtag': WebcastHashtagListResponseHashtag; 'game_tag_list': Array<WebcastHashtagListResponseGameTag>; 'hashtag': Array<WebcastHashtagListResponseHashtag>; 'live_studio_hashtag': Array<WebcastHashtagListResponseHashtag>; 'live_voice_hashtag': Array<WebcastHashtagListResponseHashtag>; 'third_party_hashtag': Array<WebcastHashtagListResponseHashtag>; } interface WebcastHashtagListResponseExtra { 'now': number; } interface WebcastHashtagListResponseGameCategory { 'game_type': number; 'title': string; } interface WebcastHashtagListResponseGameTag { 'bundle_id': string; 'full_name': string; 'game_category': Array<WebcastHashtagListResponseGameCategory>; 'gar': Array<any>; 'hashtag_id': Array<any>; 'hashtag_list': Array<WebcastHashtagListResponseHashtagSimple>; 'id': number; 'is_new_game': boolean; 'landscape': number; 'package_name': string; 'short_name': string; 'show_name': string; } interface WebcastHashtagListResponseHashtag { 'id': number; 'image': WebcastHashtagListResponseImage; 'namespace': number; 'title': string; } interface WebcastHashtagListResponseHashtagSimple { 'id': number; 'namespace': number; 'title': string; } interface WebcastHashtagListResponseImage { 'avg_color': string; 'height': number; 'image_type': number; 'is_animated': boolean; 'open_web_url': string; 'uri': string; 'url_list': Array<string>; 'width': number; } interface WebcastHashtagListRouteOutput { 'data': WebcastHashtagListResponse; } interface WebcastIsLiveOutput { /** * Construct a type with a set of properties K of type T */ 'data'?: { [key: string]: RecordStringIsLiveBooleanRoomIdStringOrNullValue; }; } declare const WebcastLanguage: { readonly Aa: "aa"; readonly Ab: "ab"; readonly Af: "af"; readonly Ak: "ak"; readonly Am: "am"; readonly An: "an"; readonly Ar: "ar"; readonly As: "as"; readonly Av: "av"; readonly Ay: "ay"; readonly Az: "az"; readonly Ba: "ba"; readonly Be: "be"; readonly Bg: "bg"; readonly Bh: "bh"; readonly Bi: "bi"; readonly Bm: "bm"; readonly Bn: "bn"; readonly Bo: "bo"; readonly Br: "br"; readonly Bs: "bs"; readonly Ca: "ca"; readonly Ce: "ce"; readonly Ch: "ch"; readonly Co: "co"; readonly Cr: "cr"; readonly Cs: "cs"; readonly Cu: "cu"; readonly Cv: "cv"; readonly Cy: "cy"; readonly Da: "da"; readonly De: "de"; readonly Dv: "dv"; readonly Dz: "dz"; readonly Ee: "ee"; readonly El: "el"; readonly En: "en"; readonly Eo: "eo"; readonly Es: "es"; readonly Et: "et"; readonly Eu: "eu"; readonly Fa: "fa"; readonly Ff: "ff"; readonly Fi: "fi"; readonly Fj: "fj"; readonly Fo: "fo"; readonly Fr: "fr"; readonly Fy: "fy"; readonly Ga: "ga"; readonly Gd: "gd"; readonly Gl: "gl"; readonly Gn: "gn"; readonly Gu: "gu"; readonly Gv: "gv"; readonly Ha: "ha"; readonly He: "he"; readonly Hi: "hi"; readonly Ho: "ho"; readonly Hr: "hr"; readonly Ht: "ht"; readonly Hu: "hu"; readonly Hy: "hy"; readonly Hz: "hz"; readonly Ia: "ia"; readonly Id: "id"; readonly Ie: "ie"; readonly Ig: "ig"; readonly Ii: "ii"; readonly Ik: "ik"; readonly Io: "io"; readonly Is: "is"; readonly It: "it"; readonly Iu: "iu"; readonly Ja: "ja"; readonly Jv: "jv"; readonly Ka: "ka"; readonly Kg: "kg"; readonly Ki: "ki"; readonly Kj: "kj"; readonly Kk: "kk"; readonly Kl: "kl"; readonly Km: "km"; readonly Kn: "kn"; readonly Ko: "ko"; readonly Kr: "kr"; readonly Ks: "ks"; readonly Ku: "ku"; readonly Kv: "kv"; readonly Kw: "kw"; readonly Ky: "ky"; readonly La: "la"; readonly Lb: "lb"; readonly Lg: "lg"; readonly Li: "li"; readonly Ln: "ln"; readonly Lo: "lo"; readonly Lt: "lt"; readonly Lu: "lu"; readonly Lv: "lv"; readonly Mg: "mg"; readonly Mh: "mh"; readonly Mi: "mi"; readonly Mk: "mk"; readonly Ml: "ml"; readonly Mn: "mn"; readonly Mr: "mr"; readonly Ms: "ms"; readonly Mt: "mt"; readonly My: "my"; readonly Na: "na"; readonly Nb: "nb"; readonly Nd: "nd"; readonly Ne: "ne"; readonly Ng: "ng"; readonly Nl: "nl"; readonly Nn: "nn"; readonly No: "no"; readonly Nr: "nr"; readonly Nv: "nv"; readonly Ny: "ny"; readonly Oc: "oc"; readonly Oj: "oj"; readonly Om: "om"; readonly Or: "or"; readonly Os: "os"; readonly Pa: "pa"; readonly Pi: "pi"; readonly Pl: "pl"; readonly Ps: "ps"; readonly Pt: "pt"; readonly Qu: "qu"; readonly Rm: "rm"; readonly Rn: "rn"; readonly Ro: "ro"; readonly Ru: "ru"; readonly Rw: "rw"; readonly Sa: "sa"; readonly Sc: "sc"; readonly Sd: "sd"; readonly Se: "se"; readonly Sg: "sg"; readonly Si: "si"; readonly Sk: "sk"; readonly Sl: "sl"; readonly Sm: "sm"; readonly Sn: "sn"; readonly So: "so"; readonly Sq: "sq"; readonly Sr: "sr"; readonly Ss: "ss"; readonly St: "st"; readonly Su: "su"; readonly Sv: "sv"; readonly Sw: "sw"; readonly Ta: "ta"; readonly Te: "te"; readonly Tg: "tg"; readonly Th: "th"; readonly Ti: "ti"; readonly Tk: "tk"; readonly Tl: "tl"; readonly Tn: "tn"; readonly To: "to"; readonly Tr: "tr"; readonly Ts: "ts"; readonly Tt: "tt"; readonly Tw: "tw"; readonly Ty: "ty"; readonly Ug: "ug"; readonly Uk: "uk"; readonly Ur: "ur"; readonly Uz: "uz"; readonly Ve: "ve"; readonly Vi: "vi"; readonly Vo: "vo"; readonly Wa: "wa"; readonly Wo: "wo"; readonly Xh: "xh"; readonly Yi: "yi"; readonly Yo: "yo"; readonly Za: "za"; readonly Zh: "zh"; readonly Zu: "zu"; }; type WebcastLanguage = typeof WebcastLanguage[keyof typeof WebcastLanguage]; interface WebcastLiveAnalyticsUserInteractionsResponse { 'data': WebcastLiveAnalyticsUserInteractionsResponseData; 'extra': WebcastLiveAnalyticsUserInteractionsResponseExtra; 'status_code': number; } interface WebcastLiveAnalyticsUserInteractionsResponseComment { 'content': string; 'emotes': Array<any>; 'event_time': number; 'msg_id': number; } interface WebcastLiveAnalyticsUserInteractionsResponseData { 'anchor': WebcastLiveAnalyticsUserInteractionsResponseUser; 'comment_count': number; 'comment_list': Array<WebcastLiveAnalyticsUserInteractionsResponseComment>; 'follow_time': number; 'like_count': number; 'share_count': number; 'summary': string; 'summary_type': number; 'user': WebcastLiveAnalyticsUserInteractionsResponseUser; 'watch_duration': number; } interface WebcastLiveAnalyticsUserInteractionsResponseEnigmaInfo { 'is_enigma_mask_on': boolean; } interface WebcastLiveAnalyticsUserInteractionsResponseExtra { 'now': number; } interface WebcastLiveAnalyticsUserInteractionsResponseImage { 'avg_color': string; 'height': number; 'image_type': number; 'is_animated': boolean; 'open_web_url': string; 'uri': string; 'url_list': Array<string>; 'width': number; } interface WebcastLiveAnalyticsUserInteractionsResponsePayGrade { 'grade_banner': string; 'grade_describe': string; 'grade_icon_list': Array<any>; 'level': number; 'name': string; 'next_name': string; 'next_privileges': string; 'score': number; 'screen_chat_type': number; 'upgrade_need_consume': number; } interface WebcastLiveAnalyticsUserInteractionsResponseUser { 'allow_find_by_contacts': boolean; 'allow_others_download_video': boolean; 'allow_others_download_when_sharing_video': boolean; 'allow_share_show_profile': boolean; 'allow_show_in_gossip': boolean; 'allow_show_my_action': boolean; 'allow_strange_comment': boolean; 'allow_unfollower_comment': boolean; 'allow_use_linkmic': boolean; 'avatar_thumb': WebcastLiveAnalyticsUserInteractionsResponseImage; 'badge_image_list': Array<any>; 'badge_list': Array<any>; 'bg_img_url': string; 'bio_description': string; 'block_status': number; 'border_list': Array<any>; 'comment_restrict': number; 'commerce_webcast_config_ids': Array<any>; 'constellation': string; 'create_time': number; 'disable_ichat': number; 'display_id': string; 'enable_ichat_img': number; 'enigma_info': WebcastLiveAnalyticsUserInteractionsResponseEnigmaInfo; 'exp': number; 'fan_ticket_count': number; 'fold_stranger_chat': boolean; 'follow_status': number; 'ichat_restrict_type': number; 'id': number; 'id_str': string; 'is_anchor_marked': boolean; 'is_block': boolean; 'is_follower': boolean; 'is_following': boolean; 'is_subscribe': boolean; 'link_mic_stats': number; 'media_badge_image_list': Array<any>; 'mint_type_label': Array<any>; 'modify_time': number; 'need_profile_guide': boolean; 'new_real_time_icons': Array<any>; 'nickname': string; 'pay_grade': WebcastLiveAnalyticsUserInteractionsResponsePayGrade; 'pay_score': number; 'pay_scores': number; 'push_comment_status': boolean; 'push_digg': boolean; 'push_follow': boolean; 'push_friend_action': boolean; 'push_ichat': boolean; 'push_status': boolean; 'push_video_post': boolean; 'push_video_recommend': boolean; 'real_time_icons': Array<any>; 'scm_label': string; 'sec_uid': string; 'secret': number; 'share_qrcode_uri': string; 'special_id': string; 'status': number; 'ticket_count': number; 'top_fans': Array<any>; 'top_vip_no': number; 'upcoming_event_list': Array<any>; 'user_attr': WebcastLiveAnalyticsUserInteractionsResponseUserAttr; 'user_role': number; 'verified': boolean; 'verified_content': string; 'verified_reason': string; 'with_car_management_permission': boolean; 'with_commerce_permission': boolean; 'with_fusion_shop_entry': boolean; } interface WebcastLiveAnalyticsUserInteractionsResponseUserAttr { /** * Construct a type with a set of properties K of type T */ 'admin_permissions': {