@polyv/live-watch-sdk
Version:
SDK for creating a live stream viewing page using Polyv's services.
2,014 lines (1,907 loc) • 752 kB
TypeScript
import { Ask } from '@polyv/chat-sdk';
import { ChannelProductPushingStatusInfo as ChannelProductPushingStatusInfo_2 } from '@polyv/product-sdk';
import { Chat } from '@polyv/chat-sdk';
import { ChatConfig } from '@polyv/chat-sdk';
import { ChatImage } from '@polyv/chat-image-upload-sdk';
import { ChatImageUpload } from '@polyv/chat-image-upload-sdk';
import Danmu from '@polyv/player-module/lib/danmu';
import { DanmuAddOptions } from '@polyv/player-module/lib/danmu';
import { EmotionParser } from '@polyv/emotion-sdk';
import { EventEmitter } from '@polyv/utils/es/event';
import { EventEmitter as EventEmitter_2 } from '@utils-ts/event';
import { EventRelationsType } from '@polyv/utils/es/event';
import { GetAppSignFn } from '@polyv/request-plugin-authorize-app-sign';
import { GetOrderDetailParams } from '@polyv/interactions-receive-sdk/apps/order/type';
import { AddressManagement as IarAddressManagement } from '@polyv/interactions-receive-sdk';
import { Announcement as IarAnnouncement } from '@polyv/interactions-receive-sdk';
import { AnswerCard as IarAnswerCard } from '@polyv/interactions-receive-sdk';
import { CheckIn as IarCheckIn } from '@polyv/interactions-receive-sdk';
import { EnrollLottery as IarEnrollLottery } from '@polyv/interactions-receive-sdk';
import { FeedBack as IarFeedBack } from '@polyv/interactions-receive-sdk';
import { Lottery as IarLottery } from '@polyv/interactions-receive-sdk';
import { Order as IarOrder } from '@polyv/interactions-receive-sdk';
import { Product as IarProduct } from '@polyv/interactions-receive-sdk';
import { PushCard as IarPushCard } from '@polyv/interactions-receive-sdk';
import { QuestionAnswer as IarQuestionAnswer } from '@polyv/interactions-receive-sdk';
import { Questionnaire as IarQuestionnaire } from '@polyv/interactions-receive-sdk';
import { RedEnvelope as IarRedpack } from '@polyv/interactions-receive-sdk';
import { RedpackRain as IarRedpackRain } from '@polyv/interactions-receive-sdk';
import { RushAnswer as IarRushAnswer } from '@polyv/interactions-receive-sdk';
import { SeatTable as IarSeatTable } from '@polyv/interactions-receive-sdk';
import { Topic as IarTopicPK } from '@polyv/interactions-receive-sdk';
import { Tuwen as IarTuwen } from '@polyv/interactions-receive-sdk';
import { Vote as IarVote } from '@polyv/interactions-receive-sdk';
import { WelfareLottery as IarWelfareLottery } from '@polyv/interactions-receive-sdk';
import { IDirection } from '@polyv/player-module/lib/danmu';
import { Config as InteractionReceiveConfig } from '@polyv/interactions-receive-sdk/types';
import { IRequestOptions } from '@just4/request/types';
import { IXhrRequestResult } from '@just4/request/adapter/xhr';
import LiveLowLatencyPlayerModule from '@polyv/live-low-latency-player';
import { NormalProductData } from '@polyv/product-sdk';
import { OrderDetailData } from '@polyv/interactions-receive-sdk/apps/order/type';
import { PlaybackOutlineContentItem } from '@polyv/live-watch-ai-sdk';
import { PlaybackOutlineData } from '@polyv/live-watch-ai-sdk';
import PlayerMarquee from '@polyv/player-module/lib/marquee';
import PlayerWatermark from '@polyv/player-module/lib/watermark';
import { PlvSocket } from '@polyv/chat-sdk';
import { PlvSocketConfig } from '@polyv/chat-sdk';
import { Address as PolyvAddress } from '@polyv/product-sdk';
import { Order as PolyvOrder } from '@polyv/product-sdk';
import { Payment as PolyvPayment } from '@polyv/product-sdk';
import { Product as PolyvProduct } from '@polyv/product-sdk';
import { PolyvRequest } from '@polyv/request-core';
import { ProductConfig } from '@polyv/product-sdk';
import { ProjectName } from '@polyv/rtas-sdk';
import { RequestOptions } from '@polyv/request-core';
import { EventCata as RtasTrackEventCata } from '@polyv/rtas-sdk';
import { EventType as RtasTrackEventType } from '@polyv/rtas-sdk';
import { SignatureMethod } from '@polyv/request-plugin-authorize-app-sign';
import { updateConfig } from '@polyv/interactions-receive-sdk';
import { updateRatsConfig } from '@polyv/interactions-receive-sdk';
import { WatchMobileUI } from '@polyv/white-board-ui/lib/watch-mobile';
import { WatchNormalUI } from '@polyv/white-board-ui/lib/watch-normal';
import * as WhiteBoardSdkTypes from '@polyv/white-board-sdk';
export declare interface AccountInfo {
/** 账号 id */
accountId: string;
/** 公司名称 */
companyName: string;
/** 公司 logo */
companyLogo: string;
/** 是否被禁用 */
isForbidden: boolean;
}
declare type AddPlaybackSubtitleOptionsType = ReplaySubtitleItem | playbackMultipleSubtitleOptions;
export declare enum AdvertHrefType {
COMMON = "common",
MULTI_PLATFORM = "multiplatform"
}
declare type AfterResponse<Options extends ApiOptions = ApiOptions> = (response: IXhrRequestResult, options: Options, url: string) => Promise<unknown>;
declare type AfterResponse_2<Options extends ApiOptions_2 = ApiOptions_2> = (response: IXhrRequestResult, options: Options, url: string) => Promise<unknown>;
/**
* 答题抽奖条件
*/
declare interface AnswerCondition extends LotteryConditionBase<LotteryCondition.Answer> {
/**
* 答题方式
*/
answerType: AnswerQuestionType;
/**
* 各奖品所需答对的数量
*/
prizeLimit: number[];
/**
* 最小答题数量
*/
minQuestionCount: number;
/**
* 问卷的题目总数
*/
questionCount: number;
/**
* 已推送的题目数量
*/
publishedCount: number;
/**
* 已回答数量
*/
answeredCount: number;
/**
* 答对数量
*/
rightCount: number;
/**
* 当前答题中的题目 id
*/
currentQuestionId?: string;
/**
* 回答剩余时间
*/
answerSurplusTime?: number;
/**
* 已推送的题目列表
*/
questionList: AnswerQuestionItem[];
}
declare interface AnswerQuestionItem {
/** 题目 id */
questionId: string;
/** 题目标题 */
name: string;
/** 题目类型 */
type: AnswerQuestionItemType;
/** 选项列表 */
options: AnswerQuestionItemOption[];
/** 答题时间,单位:毫秒 */
time: number;
}
declare interface AnswerQuestionItemOption {
/** 选项 id */
key: string;
/** 选项内容 */
value: string;
}
declare type AnswerQuestionItemType = PolyvIarQuestionItemType.Radio | PolyvIarQuestionItemType.CheckBox | PolyvIarQuestionItemType.Judgement;
/**
* 答题抽奖答题方式
*/
declare enum AnswerQuestionType {
/**
* 逐题推送
*/
PushQuestion = "pushQuestion",
/**
* 整份推送
*/
AutonomyAnswer = "autonomyAnswer"
}
declare interface AnswerResultData {
/** 是否正确 */
result: boolean;
/** 当前题目回答人数 */
answeredPeopleCount: number;
/** 当前题目回答正确人数 */
rightPeopleCount: number;
/** 全部题目答题结果,仅在最后一题答题后返回 */
allQuestionResult?: boolean[];
/** 正确答案,仅在打错的时候返回 */
rightAnswer?: string;
}
/** 音频模式,Y-音频模式,N-普通模式,V-VR 模式 */
export declare type ApiAudioModeType = 'Y' | 'N' | 'V';
declare type ApiOptions = IRequestOptions;
declare type ApiOptions_2 = IRequestOptions;
/**
* API 请求封装
* @class
*/
declare class ApiQuery<Options extends ApiOptions = ApiOptions> {
protected _identifyCore: IdentifyCore;
/** 是否已被销毁(不再允许执行 ajax 调用) */
private __isDestroyed;
/** 请求域名前缀 */
private __baseUrl;
/** 超时数值 */
private __timeout;
/** 请求链接拦截器 */
private __interceptRequestUrl?;
/** 请求处理器 */
private __beforeRequest?;
/** 响应处理器 */
private __afterResponse?;
constructor(options: ApiQueryConfig);
/**
* 设置请求链接拦截器
* @param interceptRequestUrl 请求链接拦截器
*/
protected _setInterceptRequestUrl(interceptRequestUrl: InterceptRequestUrl<Options>): void;
/**
* 设置请求处理器
* @param beforeRequest 请求处理器
*/
protected _setBeforeRequest(beforeRequest: BeforeRequest<Options>): void;
/**
* 设置响应处理器
* @param afterResponse 响应处理器
*/
protected _setAfterResponse(afterResponse: AfterResponse<Options>): void;
/**
* 修改请求前缀
* @param baseUrl 新的请求前缀
* @returns this
*/
setBaseUrl(baseUrl: string | ApiQueryBaseUrlFn): this;
/**
* 获取请求地址前缀
*/
getBaseUrl(): string;
/** 生成请求地址,插入 baseUrl */
generateUrl(url: string): string;
/** 发起请求 */
protected _request<R = unknown>(url: string, options: Options): Promise<R>;
/**
* 过滤请求中的 params 和 data,将 undefined 的字段移除
* @param target 目标对象
*/
private __filterParamsData;
/** 发起 get 请求 */
get<R = unknown, P = object>(url: string, params: P, options?: Options): Promise<R>;
/** 发起 post 请求 */
post<R = unknown, D = object>(url: string, data: D, options?: Options): Promise<R>;
destroy(): void;
}
/**
* API 请求封装
* @class
*/
declare class ApiQuery_2<Options extends ApiOptions_2 = ApiOptions_2> {
protected _watchCore: PolyvWatchCore;
/** 是否已被销毁(不再允许执行 ajax 调用) */
private __isDestroyed;
/** 请求域名前缀 */
private __baseUrl;
/** 超时数值 */
private __timeout;
/** 请求链接拦截器 */
private __interceptRequestUrl?;
/** 请求处理器 */
private __beforeRequest?;
/** 响应处理器 */
private __afterResponse?;
constructor(options: ApiQueryConfig_2);
/**
* 设置请求链接拦截器
* @param interceptRequestUrl 请求链接拦截器
*/
protected _setInterceptRequestUrl(interceptRequestUrl: InterceptRequestUrl_2<Options>): void;
/**
* 设置请求处理器
* @param beforeRequest 请求处理器
*/
protected _setBeforeRequest(beforeRequest: BeforeRequest_2<Options>): void;
/**
* 设置响应处理器
* @param afterResponse 响应处理器
*/
protected _setAfterResponse(afterResponse: AfterResponse_2<Options>): void;
/**
* 修改请求前缀
* @param baseUrl 新的请求前缀
* @returns this
*/
setBaseUrl(baseUrl: string | ApiQueryBaseUrlFn_2): this;
/**
* 获取请求地址前缀
*/
getBaseUrl(): string;
/** 生成请求地址,插入 baseUrl */
generateUrl(url: string): string;
/** 发起请求 */
protected _request<R = unknown>(url: string, options: Options): Promise<R>;
/**
* 过滤请求中的 params 和 data,将 undefined 的字段移除
* @param target 目标对象
*/
private __filterParamsData;
/** 发起 get 请求 */
get<R = unknown, P = object>(url: string, params: P, options?: Options): Promise<R>;
/** 发起 post 请求 */
post<R = unknown, D = object>(url: string, data: D, options?: Options): Promise<R>;
destroy(): void;
}
declare interface ApiQueryBaseUrlFn {
(): string;
}
declare interface ApiQueryBaseUrlFn_2 {
(): string;
}
/** ajax 请求库构造函数参数 */
declare interface ApiQueryConfig {
identifyCore: IdentifyCore;
/** 请求前缀 */
baseUrl: string | ApiQueryBaseUrlFn;
/** 超时数值 */
timeout?: number;
}
/** ajax 请求库构造函数参数 */
declare interface ApiQueryConfig_2 {
watchCore: PolyvWatchCore;
/** 请求前缀 */
baseUrl: string | ApiQueryBaseUrlFn_2;
/** 超时数值 */
timeout?: number;
}
/**
* createWatchCore 参数类型
* @desc 核心类依赖外部应用的配置
*/
export declare type AppConfig = AppConfigForSDK & AppConfigForBasicBusiness & AppConfigForViewer & AppConfigForAuth & AppConfigForPlay;
declare interface AppConfigForAuth {
/** 自动授权参数 */
autoAuthParams?: {
/** 验证码 */
code?: string;
/**
* 忽略微信授权,默认关
* @version v0.6.0
* */
ignoreWxAuth?: YN;
/**
* 微信快照页模式,默认关
* @desc 保利威微信回调时入参
* @version v0.6.0
* */
wxSnapshotPageMode?: YN;
/**
* 强制优先独立授权,默认关
* @desc 当配置自定义授权和独立授权冲突时,优先用独立授权
* @version v2.1.0
*/
forceDirectAuth?: YN;
/**
* 忽略用户系统,默认关
* @version v2.2.0
*/
ignoreWatchUserSystem?: YN;
};
/**
* 一客一码邀请参数
* @version v0.12.0
*/
saleInviteParams?: {
saleCode?: string;
/** 一客一码--销售邀请的客户id */
inviteCustomerId?: string;
};
}
declare interface AppConfigForBasicBusiness {
/** 频道号 */
channelId: string;
/**
* 目标场次 Id
* @desc 指定场次
* @version v2.4.0
*/
targetSessionId?: string;
/** 渠道 id */
promoteId?: string;
/** 测试模式 token */
testModeToken?: string;
/** 网络类型 */
zone?: ZoneType;
}
declare interface AppConfigForPlay {
/** 回放 vid */
vid?: string;
/** 回放类型 */
playbackOrigin?: PlaybackOrigin;
/**
* 是否使用 ip 地址进行 CDN 拉流,仅支持 PC 端
* @version v0.5.0
* */
ipPlay?: boolean;
}
declare interface AppConfigForSDK {
/**
* SDK 唯一Id,在创建多实例时必传
* @version v2.0.0
*/
uniqueId?: string;
/**
* 使用共享的 token
* @default true
* @version v2.0.0
*/
useShareAuthToken?: boolean;
/** SDK 需要加载的环境 */
env?: SdkLoaderEnv;
/** 语言类型 */
language?: LanguageType;
/** 自定义域名 */
domainInfo?: Partial<DomainInfo>;
/**
* 集成 SDK 脚本地址配置
* @warn 会直接忽视 env 配置,覆盖默认的集成 SDK 脚本地址
* */
sdkIntegration?: SdkIntegrationConfig;
}
declare interface AppConfigForViewer {
/**
* 观众信息
*/
userInfo?: UserInfo;
/**
* 邀请信息
*/
inviteInfo?: {
/** 邀请海报唯一ID */
invitePosterId?: string;
/** 企业微信分享海报的企微员工 ID */
wxInviteId?: string;
/** 受邀者 ID */
invitee?: string;
};
/**
* 统计信息
*/
statisticsParams?: StatisticsParams;
}
/**
* 申请提现失败原因
*/
export declare enum ApplyWithdrawFailReason {
/** 未知 */
Unknown = "Unknown",
/** 提现金额超过用户余额 */
AmountOverLimit = "AmountOverLimit",
/** 无效的提现金额,必须大于 1 元 */
InvalidAmount = "InvalidAmount",
/** 申请失败 */
ApplyFail = "ApplyFail",
/** 需要在微信端打开 */
NeedWechat = "NeedWechat"
}
/**
* 提交提现申请参数
*/
export declare interface ApplyWithdrawParams {
/** 提现金额,单位:元 */
amount: number;
}
/**
* 申请提现结果
*/
export declare type ApplyWithdrawResult = CommonResult<ApplyWithdrawFailReason, {
signData?: WxMerchantTransferSignData;
}>;
declare interface AppSignSecretKey {
/**
* 应用 id
*/
appId: string;
/**
* 应用密钥
*/
appSecret: string;
}
declare interface AskApiMsgType {
/** 内容 */
content: string;
/** 消息标识 */
id?: string;
/** 时间 */
time?: number;
/** 消息类型 */
msgType: '' | 'image';
/** 讲师回答的学生 id */
s_userId?: string;
/** 用户信息 */
user: ChatMessageUser;
/** 状态 */
status?: 'error';
/** 消息 */
message?: string;
/** 违规词内容 */
value?: string;
}
/**
* 提问事件
*/
export declare enum AskEvents {
/** 学生提问事件 */
StudentQuestion = "StudentQuestion",
/** 老师回答事件 */
TeacherAnswer = "TeacherAnswer",
/**
* 系统消息
* @version v0.5.1
* */
SystemMessage = "SystemMessage",
/**
* 提问触发严禁词
* @version v0.9.0
*/
SendBadWord = "SendBadWord",
/**
* 替换提问消息事件
* @version v1.3.0
*/
ReplaceAskMessage = "ReplaceAskMessage",
/**
* 删除提问消息事件
* @version v1.3.0
*/
RemoveAskMessage = "RemoveAskMessage"
}
export declare type AskEventsRelations = {
[AskEvents.StudentQuestion]: {
askMsg: AskMsgType;
};
[AskEvents.TeacherAnswer]: {
askMsg: AskMsgType;
};
[AskEvents.SystemMessage]: {
askMsg: AskMsgType;
};
[AskEvents.SendBadWord]: {
word: string;
};
[AskEvents.ReplaceAskMessage]: {
/**
* 替换的消息 id
*/
id: string;
askMsg: AskMsgType;
};
[AskEvents.RemoveAskMessage]: {
id?: string;
askMsg?: AskMsgType;
};
};
export declare type AskHistoryResultNew = PageContent<AskMsgType>;
/**
* 提问消息类型
*/
export declare type AskMsgType = (ChatMsgSpeakType | ChatMsgImageType | ChatMsgSystemType) & {
user?: ChatMessageUser<ChatUserType>;
isLocal?: boolean;
};
/** 提问设置 */
export declare interface AskSetting {
/** 提问发送图片开关 */
questionImageEnabled: boolean;
}
/**
* 登记观看的表单选项
*/
export declare interface AuthInfoItem {
/** 表单类型 */
type: AuthInfoType;
/** 信息标题 */
name: string;
/** 信息描述 */
placeholder: string;
/** 是否需要短信验证 */
sms?: YN;
/** 下拉选项列表,用英文逗号隔开 */
options?: string;
}
/**
* 登记观看 propValue key 类型
*/
export declare type AuthInfoPropValKey = `propValue${number}`;
/**
* 登记观看 propValue 类型
*/
export declare type AuthInfoPropValType = Record<AuthInfoPropValKey, string>;
/**
* 登记观看的选项类型
*/
export declare enum AuthInfoType {
/** 姓名 */
Name = "name",
/** 文本 */
Text = "text",
/** 手机号码 */
Mobile = "mobile",
/** 下拉选项 */
Option = "option",
/** 数值 */
Number = "number"
}
/**
* 支付信息数据
*/
export declare interface AuthPayData {
/**
* 支付二维码图片地址
*/
qrcodeUrl: string;
/**
* 支付地址
*/
codeUrl: string;
/**
* 支付 id
*/
payId: string;
/**
* 微信支付签名数据,仅微信环境下返回
*/
wxPaySignData?: WxPaySignData;
}
/**
* 付费观看错误原因
*/
export declare enum AuthPayFailReason {
/** 未知 */
Unknown = "Unknown",
/** 不允许 */
NotAllow = "NotAllow"
}
/** 观看条件隐私声明信息 */
export declare interface AuthPrivacyInfo {
/** 隐私声明内容 */
privacyContent: string;
/** 是否开启隐私声明 */
privacyStatus: YN;
}
/** 观看条件信息 */
export declare type AuthSettingItem = AuthSettingItemMaps[keyof AuthSettingItemMaps];
/**
* 验证码观看条件设置信息
*/
export declare interface AuthSettingItemCode extends AuthSettingItemCommon<AuthType.Code>, AuthPrivacyInfo {
/** 欢迎标题 */
codeAuthTips: string;
/** 入口文本 */
codeEntryText: string | null;
/** 二维码图片地址 */
qcodeImg: string;
/** 二维码提示文案 */
qcodeTips: string;
}
/** 观看条件信息公用类型 */
export declare interface AuthSettingItemCommon<T extends AuthType> {
/** 条件类型 */
authType: T;
/** 是否启用 */
enabled: YN | null;
}
/**
* 自定义授权设置信息
*
* 关于自定义授权设置及服务端的处理流程可见帮助中心文档:[自定义授权](https://help.polyv.net/index.html#/live/api/web/watch_condition/customauth_2)
*/
export declare interface AuthSettingItemCustom extends AuthSettingItemCommon<AuthType.Custom> {
/** 自定义 url */
customUri: string;
/** 入口文本 */
customEntryText: string | null;
}
/**
* 独立授权设置信息
*
* 关于独立授权设置及服务端的处理流程可见帮助中心文档:[独立授权](https://help.polyv.net/index.html#/live/api/web/watch_condition/direct_auth)
*/
export declare interface AuthSettingItemDirect extends AuthSettingItemCommon<AuthType.Direct> {
/** 授权失败重定向 url */
directRedirectUri?: string;
}
/**
* 企业微信授权设置信息
*/
export declare interface AuthSettingItemEnterpriseWeChat extends AuthSettingItemCommon<AuthType.EnterpriseWeChat> {
}
/**
* 外部授权设置信息
*
* 关于外部授权设置及服务端的处理流程可见帮助中心文档:[外部授权](https://help.polyv.net/index.html#/live/api/web/watch_condition/external_authorization_2)
*/
export declare interface AuthSettingItemExternal extends AuthSettingItemCommon<AuthType.External> {
/** 授权 url */
externalUri: string;
/** 授权失败重定向 url */
externalRedirectUri: string;
/** 入口文本 */
externalEntryText: string | null;
/** 入口登录按钮是否启用,默认为 Y */
externalButtonEnabled: YN | null;
}
/**
* 登记观看条件设置信息
*/
export declare interface AuthSettingItemInfo extends AuthSettingItemCommon<AuthType.Info>, AuthPrivacyInfo {
/** 欢迎标题 */
infoAuthTips: string;
/** 提示信息 */
infoDesc: string;
/** 入口文本 */
infoEntryText: string | null;
}
/**
* 邀请观看观看设置信息
*/
export declare interface AuthSettingItemInviteWatch extends AuthSettingItemCommon<AuthType.InviteWatch> {
}
export declare type AuthSettingItemMaps = {
[AuthType.None]: AuthSettingItemNone;
[AuthType.Pay]: AuthSettingItemPay;
[AuthType.Phone]: AuthSettingItemPhone;
[AuthType.Info]: AuthSettingItemInfo;
[AuthType.Code]: AuthSettingItemCode;
[AuthType.Custom]: AuthSettingItemCustom;
[AuthType.External]: AuthSettingItemExternal;
[AuthType.Direct]: AuthSettingItemDirect;
[AuthType.EnterpriseWeChat]: AuthSettingItemEnterpriseWeChat;
[AuthType.SaleShare]: AuthSettingItemSaleShare;
[AuthType.InviteWatch]: AuthSettingItemInviteWatch;
};
/**
* 无条件观看设置信息
*/
export declare interface AuthSettingItemNone extends AuthSettingItemCommon<AuthType.None> {
}
/**
* 付费观看条件设置信息
*/
export declare interface AuthSettingItemPay extends AuthSettingItemCommon<AuthType.Pay> {
/** 欢迎标题 */
payAuthTips: string;
/** 观看价格 */
price: number;
/** 入口文本 */
payEntryText: string | null;
/** 试看开关 */
trialWatchEnabled: YN;
/** 试看时长,单位:分钟 */
trialWatchTime: number;
}
/**
* 白名单观看条件设置信息
*/
export declare interface AuthSettingItemPhone extends AuthSettingItemCommon<AuthType.Phone>, AuthPrivacyInfo {
/** 欢迎标题 */
authTips: string;
/** 入口文本 */
whiteListEntryText: string | null;
/** 输入提示 */
whiteListInputTips: string;
}
/**
* 一客一码观看设置信息
*/
export declare interface AuthSettingItemSaleShare extends AuthSettingItemCommon<AuthType.SaleShare> {
}
/**
* 观看条件类型
*/
export declare enum AuthType {
/**
* 无条件观看
* @setting {@link AuthSettingItemNone}
*/
None = "none",
/**
* 付费观看
* @setting {@link AuthSettingItemPay}
*/
Pay = "pay",
/**
* 白名单观看
* @setting {@link AuthSettingItemPhone}
*/
Phone = "phone",
/**
* 登记观看
* @setting {@link AuthSettingItemInfo}
*/
Info = "info",
/**
* 验证码观看
* @setting {@link AuthSettingItemCode}
*/
Code = "code",
/**
* 自定义授权
* @setting {@link AuthSettingItemCustom}
*/
Custom = "custom",
/**
* 外部授权
* @setting {@link AuthSettingItemExternal}
*/
External = "external",
/**
* 独立授权
* @setting {@link AuthSettingItemDirect}
*/
Direct = "direct",
/**
* 企业微信授权
* @setting {@link AuthSettingItemEnterpriseWeChat}
*/
EnterpriseWeChat = "enterpriseWeChat",
/**
* 一客一码授权
* @internal
* @ignore
* @warn 一客一码并不会当作观看条件使用,而是通过另外的授权方式,授权方式请参考 `watchCore.saleInvite` 模块
* @setting {@link AuthSettingItemSaleShare}
*/
SaleShare = "saleShare",
/**
* 邀请观看
* @setting {@link AuthSettingItemInviteWatch}
*/
InviteWatch = "inviteWatch"
}
/**
* 观看条件验证失败原因
*/
export declare enum AuthVerifyError {
/**
* 未知错误
* @scene 通用
*/
Unknown = "Unknown",
/**
* 需要重定向
* @scene 通用
*/
RedirectUrl = "RedirectUrl",
/**
* 图形验证码错误
* @scene 通用
* @version v2.4.0
*/
ImageCodeError = "ImageCodeError",
/**
* 系统异常
* @scene 通用
* @version v1.3.0
*/
SystemException = "SystemException",
/**
* 非法观看条件
* @scene 通用
* @version v1.3.0
*/
InvalidWatchAuth = "InvalidWatchAuth",
/**
* 白名单会员码为空
* @scene 白名单观看
*/
PhoneEmpty = "PhoneEmpty",
/**
* 白名单会员码已使用
* @scene 白名单观看
* @version v1.5.0
*/
PhoneUsed = "PhoneUsed",
/**
* 白名单会员码不存在
* @scene 白名单观看
*/
PhoneNotExist = "PhoneNotExist",
/**
* 短信验证码错误
* @scene 登记观看
*/
SmsCodeError = "SmsCodeError",
/**
* 手机号未登记
* @scene 登记观看
*/
PhoneNotRegister = "PhoneNotRegister",
/**
* 观看验证码为空
* @scene 验证码观看
*/
CodeEmpty = "CodeEmpty",
/**
* 观看验证码错误
* @scene 验证码观看
*/
CodeError = "CodeError",
/**
* 观看验证码需要验证
* @scene 验证码观看
* @version v2.4.0
*/
CodeNeedVerify = "CodeNeedVerify",
/**
* 缺少自定义授权参数
* @scene 自定义授权
*/
CustomSignParamsMiss = "CustomSignParamsMiss",
/**
* 外部授权失败
* @scene 外部授权
*/
ExternalError = "ExternalError",
/**
* 同个观众
* @scene 独立授权/外部授权
* @version v1.6.0
*/
SameViewer = "SameViewer"
}
/**
* 观看条件验证结果
*/
export declare type AuthVerifyResult<T extends AuthType> = AuthVerifyResultSuccess<T> | AuthVerifyResultFail<T>;
/**
* 观看条件验证结果(失败)
*/
export declare interface AuthVerifyResultFail<T extends AuthType = AuthType> {
/** 观看条件类型 */
authType: T;
/** 成功状态 */
success: false;
/** 失败原因 */
failReason: AuthVerifyError;
/** 失败信息 */
failMessage?: string;
/** 获取重定向跳转地址 */
getRedirectUrl?: () => string;
}
/**
* 观看条件验证结果(成功)
*/
export declare interface AuthVerifyResultSuccess<T extends AuthType = AuthType> {
/** 观看条件类型 */
authType: T;
/** 成功状态 */
success: true;
}
/**
* 微信扫码观看信息
*/
export declare interface AuthWechatPayCheckData {
/**
* 记录 id
*/
logId: string;
/**
* 微信二维码内容
*/
codeUrl: string;
/**
* 二维码图片地址
*/
qrcodeUrl: string;
}
/** 后台支持配置的字幕语种 */
declare type BackstageSubtitleLanguage = 'Chinese' | 'English' | 'Tagalog' | 'Thai' | 'Malay' | 'Indonesian' | 'Lao' | 'Burmese' | 'Vietnamese' | 'French' | 'Japanese' | 'German' | 'Korean' | 'Russian' | 'Portuguese' | 'Turkish' | 'Arabic' | 'Spanish' | 'Khmer' | 'Tamil';
export declare interface BarrageAddCallback {
(data: BarrageAddCallbackData): void;
}
export declare interface BarrageAddCallbackData {
msg: string;
user: ChatMessageUser;
isSelf: boolean;
chatMsg: ChatMsgType | ChatReplayMsgType;
}
/**
* 弹幕添加拦截器
*/
export declare interface BarrageAddIntercept {
(data: BarrageAddCallbackData): boolean;
}
/**
* 弹幕参数
*/
export declare interface BarrageAddOptions {
/**
* 弹幕文本,支持双中括号内嵌图片
*/
msg: string;
/**
* 弹幕文本字体颜色
* @default #fff
*/
fontColor?: string;
/**
* 弹幕文本字号
* @default 24
*/
fontSize?: number;
/**
* 该条弹幕文本是否自己发送的
*/
self?: boolean;
/**
* 本人发送的弹幕消息边框颜色, 不设置则不显示边框
*/
selfBorderColor?: string;
}
/**
* 弹幕设置映射关系
* @desc 参数值可以是长度为1或2的数组。长度为2时分别代表PC\H5端档位值, 长度为1时统一代表PC\H5端档位值。
*/
export declare interface BarrageGearValue {
/** 弹幕速度与档位的映射关系 */
speed?: UniversalParams<string>[];
/** 弹幕字号与档位的映射关系 */
size?: UniversalParams<string>[];
}
/**
* 弹幕位置信息
*/
export declare interface BarrageLocationInfo {
/** 弹幕位置类型 */
type: LocationType;
/** 弹幕位置类型ID */
index: number;
/** 弹幕位置类型对应方向 */
direction: IDirection;
/** 弹幕位置类型对应显示百分比 */
percent: number;
}
/**
* 弹幕设置
*/
export declare interface BarrageSetting {
/**
* 弹幕功能开关
*/
barrageEnabled: boolean;
/**
* 弹幕默认显示状态
*/
barrageDefaultShow: boolean;
/**
* 弹幕速度
*/
barrageSpeed: number;
/**
* 弹幕速度档位
*/
barrageSpeedDefaultGrade: number;
/**
* 弹幕字号
*/
barrageSize: number;
/**
* 弹幕字号档位
*/
barrageSizeDefaultGrade: number;
/**
* 弹幕透明度
*/
barrageAlpha: number;
/**
* 弹幕默认透明度
*/
barrageDefaultAlpha: number;
/**
* 弹幕位置ID
*/
barrageLocationDefaultId: number;
}
/**
* 弹幕对象
*/
export declare interface BarrageTarget {
/** 弹幕对象标识 */
id: string;
/** 弹幕实例 */
barrageInstance: Danmu;
/** 添加弹幕 */
add: (options: BarrageAddOptions) => void;
/** 显示弹幕 */
show: () => void;
/** 隐藏弹幕 */
hide: () => void;
/** 清空弹幕 */
clear: () => void;
/** 重置尺寸 */
resize: () => void;
/** 切换弹幕速度 */
changeSpeed: (speed: number) => void;
/** 切换弹幕字号 */
changeSize: (size: number) => void;
/** 切换弹幕显示方向 */
changeAreaDirection: (direction: IDirection) => void;
/** 切换弹幕显示百分比 */
changeAreaPercentage: (percent: number) => void;
/** 切换弹幕位置 */
changeLocation: (index: number) => void;
/** 切换弹幕透明度 */
changeAlpha: (alpha: number) => void;
/** 处理弹幕事件 */
onBarrageAddEvent: BarrageAddCallback;
/** 销毁当前对象 */
destroyTarget: () => void;
/** 比较容器大小 */
compareContainerSize: () => void;
}
declare type BeforeRequest<Options extends ApiOptions = ApiOptions> = (options: Options) => Promise<Options>;
declare type BeforeRequest_2<Options extends ApiOptions_2 = ApiOptions_2> = (options: Options) => Promise<Options>;
export declare interface BindIdentityInfoParams {
/**
* 手机号
*/
phoneNumber?: string;
/**
* 手机区号
*/
areaCode?: string;
/**
* 短信验证码
*/
smsCode?: string;
}
/**
* 取消短信直播预约入参
*/
export declare interface CancelSmsLiveBookingOptions {
/** 手机号 */
phoneNumber: string;
/** 区号 */
areaCode: string;
/** 频道 id */
otherChannelId?: string;
}
/**
* 取消提现参数
*/
export declare interface CancelWithdrawParams {
/** 提现单号 */
outBillNo: string;
/** 提现 id */
withdrawId: string;
}
/**
* 取消微信预约入参
*/
export declare interface CancelWxLiveBookingOptions {
/** 频道 id */
otherChannelId?: string;
}
declare interface ChangeVidParams {
vid: string;
autoplay?: boolean;
statistics?: VodPlayerStatistics;
ts?: number;
sign?: string;
playsafe?: string;
}
declare interface Channel {
/** 频道 ID */
channelId: string;
/** 频道名称 */
name: string;
}
/**
* 频道页面广告设置
*/
export declare interface ChannelAdvertSetting {
/** 页面广告开关 */
pageAdvertEnabled: boolean;
/** 允许关闭页面广告 */
closeAdvertEnabled: boolean;
/** 页面广告列表 */
pageAdvertList: PageAdvertItem[];
}
export declare type ChannelAgreementConfig = {
[key in LanguageType]: {
/** 内容 */
content: string;
/** 弹窗标题 */
dialogTitle: string;
/** 弹窗内容 */
dialogContent: string;
};
};
/**
* 频道协议配置
*/
export declare interface ChannelAgreementData {
/** 弹窗标题 */
title: string;
/** 弹窗标题(英文) */
titleEn: string;
/** 弹窗内容 */
content: string;
/** 弹窗内容(英文) */
contentEn: string;
/** 内容 */
contentTip: string;
/** 内容(英文) */
contentTipEn: string;
}
/**
* AI 相关频道配置
*/
export declare interface ChannelAIConfig {
/** AI 助手开关,默认关 */
aiAssistantEnabled: YN;
/** AI 助手Id */
aiAssistantId: number | null;
/** AI 助手名称 */
aiAssistantName: string | null;
}
/** 音频模式 */
export declare enum ChannelAudioMode {
/** 特殊直播音频模式 */
CustomLiveAudio = "CustomLiveAudio",
/** 正常音视频模式 */
NormalAudio = "NormalAudio",
/** 纯音频模式 */
OnlyAudio = "OnlyAudio",
/** VR 音频模式 */
VrAudio = "VrAudio"
}
/** 观看条件设置 */
export declare interface ChannelAuthSetting {
/** 登记观看的登记表设置列表 */
authInfoFields?: AuthInfoItem[];
/** 观看条件列表 */
authSettings: AuthSettingItem[];
/** 强制微信授权,默认关 */
forceWxAuth: YN;
/** 强制微信授权持久化(长时间授权态),默认关 */
wxPersistentAuthEnabled: YN;
}
export declare interface ChannelBasicDetailOptions {
language: string;
}
export declare interface ChannelBasicDetailRequestParams {
channelId: string;
language: string;
}
/** 频道基础信息 */
export declare interface ChannelBasicInfo {
/** 频道标题 */
title: string;
/** 频道主持人 */
publisher: string;
/** 频道描述 */
description: string;
}
/**
* 频道设置
*/
export declare type ChannelConfig = ChannelDetail['channelConfig'];
/**
* 频道配置
*/
declare interface ChannelConfig_2 {
/**
* 埋点上报总开关
*/
watchEventTrackEnabled?: boolean;
/**
* 互动事件上报开关
*/
productTrackEnabled?: boolean;
/**
* 当前推送的商品信息
*/
channelProductPushingStatusVO?: ChannelProductPushingStatusInfo;
/**
* 商品讲解开关
*/
productExplainEnabled?: boolean;
/**
* 商品热卖中开关
*/
productHotEffectEnabled?: boolean;
/**
* 商品热卖中文案
*/
productHotEffectTips?: ChannelProductHotEffectTips;
/**
* 点击商品的封面/标题区域是否直接跳转外链
*/
outLinkProductRedirectEnabled?: boolean;
/**
* 商品订单入口是否显示
*/
productPayOrderEnabled?: boolean;
}
/**
* 观看页频道设置(基础)
*/
export declare interface ChannelConfigBasic {
/** 音频直播开关 */
audioOnlyEnabled: YN;
/** 授权观看条件下 PC 端是否做 302 跳转到观看页 */
authPcRedirectEnabled: YN;
/** 微软 AD 授权开关 */
azureADEnabled: YN;
/** 直播播放器的弹幕速度 */
barrageSpeed: string | number;
/** 直播播放器的弹幕字号 */
barrageSize: string | number;
/** 直播短信预约开关 */
bookingEnabled: YN;
/** 微信预约弹层提示文案 */
bookingTips: string;
/** 隐藏品牌开关 */
brandHideEnabled: YN;
/** 频道直播状态轮训间隔,单位:秒 */
channelLiveStatusQueryFrequency: number;
/** pv 接口轮询间隔,单位:秒 */
channelWatchQueryFrequency: number;
/** 聊天室虚拟人数功能开关 */
chatRobotEnabled: YN;
/** 是否开启短信图片验证码开关 */
checkSmsImageEnabled: YN;
/** 是否关闭了弹幕功能 */
closeDanmuEnabled: YN;
/** 是否关闭提现功能 */
closeWithdrawEnabled: YN;
/** 双语直播开关 */
cnAndEnLiveEnabled: YN;
/** 直播倒计时开关 */
countEnabled: YN;
/** 播放器封面图缩放模式 */
coverImgType: 'cover' | 'contain';
/** 默认码率 */
defaultCodeRate: number | string | null;
/** 情绪反馈开关,与点赞互斥 */
emotionEnabled: YN;
/** 直播间英语独立配置开关 */
englishSettingEnabled: YN;
/** 是否只看主持人信息 */
filterManagerMsgEnabled: YN;
/** 播放器全屏方案 */
fullScreenType: FullScreenMode;
/** 是否跳过微信授权 */
ignoreWx: YN;
/** 音频模式类型 */
isOnlyAudio: ApiAudioModeType;
/** 日文语言切换(仅用作将英文的文案显示成日文) */
japLangEnabled: YN;
/** 竖屏播放器是否允许全屏,默认不允许 */
playerFullScreen: 'allow' | 'disallow';
/** 直播 H5 播放器是否使用灰度版本 */
liveH5PlayerGrayEnabled: YN;
/** 直播 H5 播放器灰度版本 */
liveH5PlayerGrayVersion: string;
/** 直播移动端播放器灰度开关 */
liveMobilePlayerGrayEnabled: YN;
/** 直播移动端播放器灰度版本 */
liveMobilePlayerGrayVersion: string;
/** 移动端下页面浏览次数显示位置 */
mobilePvShowLocation: PageViewShowLocation;
/**
* 多语言开关(超管)
* @version 从 v1.1.0 开始不再使用该字段,改用 allowSwitchLangEnabled
* */
multilingualEnabled: YN;
/** 允许观众切换语言开关(后台) */
allowSwitchLangEnabled: YN;
/** 多码率开关 */
multirateEnabled: YN;
/** 码率列表,用英文逗号隔开 */
multirates: string | null;
/** 新版连麦 */
newMicEnabled: YN;
/** 泛域名开关 */
polyvWatchDomainEnabled: YN;
/** ppt 检查 drawMark 开关 */
pptCheckDrawMarkEnabled: YN;
/** ppt avif 图片格式开关 */
pptUserAvifEnabled: YN;
/** 商品库事件上报开关 */
productTrackEnabled: YN;
/** 商品库链接跳转提示 */
productLinkJumpTipEnabled: YN;
/** 商品入口位置 */
productEntryPosition: ProductEntryPosition;
/** 商品直接跳转外链开关 */
outLinkProductRedirectEnabled: YN;
/** 无延迟计费开关 */
pureRtcAvailState: YN;
/** 无延迟直播开关 */
pureRtcEnabled: YN;
/** 是否显示页面浏览次数 */
pvShowEnabled: YN;
/** 观众发送图片开关 */
viewerSendImgEnabled: YN;
/** 提问发送图片开关 */
questionImageEnabled: YN;
/** 快直播开关 */
quickLiveEnabled: YN;
/** 引用回复开关 */
quoteReplyEnabled: YN;
/** 招聘直播开关 */
recruitmentEnabled: YN;
/** 红包类型 */
redPackCurrencyType: RedpackCurrencyType;
/** 调整红包金额 & 数量上限开关 */
redPackCustomAmountEnabled: YN;
/** 观众发送红包的最大金额 */
redPackViewerMaxAmount: number;
/** 观众发送红包的最大数量 */
redPackViewerMaxCount: number;
/** 直播推流比例:高 */
resolutionHeight: number;
/** 直播推流比例:宽 */
resolutionWidth: number;
/** 聊天室并发限制开关 */
restrictChatEnabled: YN;
/** 是否订阅 rtc 音频流开关 */
rtcAudioSubEnabled: YN;
/** 嘉宾云席开关 */
seatEnabled: YN;
/** 点赞(送花)开关 */
sendFlowersEnabled: YN;
/** 单击点赞(送花)开关 */
sendFlowersSingleClickEnabled: YN;
/** 长按点赞(送花)开关 */
sendFlowersHoldEnabled: YN;
/** 引导页开关 */
splashEnabled: YN;
/** 引导页大图地址 */
splashLargeImg: string | null;
/** 引导页布局 */
splashLayout: MobileSplashLayout;
/** 投票功能 */
voteActiveEnabled: YN;
/** 反馈功能开关 */
watchFeedbackEnabled: YN;
/** 欢迎语开关 */
welcomeEnabled: YN;
/** 超管后台微信功能开关 */
weixinAccountFunctionEnabled: YN;
/** 超管后台中微信支付开关 */
weixinPayEnabled: YN;
/** 白板 SDK 开关 */
whiteboardSdkEnabled: YN;
/** 企微授权开关 */
wxWorkAuthSwitch: YN;
/** 是否绑定企微(后端有额外的业务逻辑处理) */
wxWorkStatusSwitch: YN;
/** 企微好友观看限制开关 */
wxWorkFriendWatchEnabled: YN;
/** (超管)企微员工邀请开关 */
wxWorkInviteEnabled: YN;
/** 私有云场景下,表示拉内网流还是外网流 */
zone: ZoneType;
/** 是否自动播放 */
autoPlayEnabled: YN;
/** 移动端音频播放开关 */
mobileAudioEnabled: YN;
/** 聊天室在线人数显示开关 */
chatOnlineNumberEnable: YN;
/** 企微是否已过期 */
enterpriseWechatExpire: YN;
/** 自定义favicon */
faviconCustomUrl: string | null;
/** 最大提现额度 */
freePayAmount: number;
/** 微信支付类型 */
weixinPayType: WeixinPayType;
/** 是否显示自定义消息 */
showCustomMessageEnabled: YN;
/** 是否启用互动红包 */
userRedpackEnabled: YN;
/** 是否启用互动报名抽奖 */
enrollLotteryEnabled: YN;
/** 展示下一场次倒计时开关,默认关 */
showCountdownEnabled: YN;
/** 海外自动切换线路开关 */
overseasAutoSwitchEnabled: YN;
/** 邀请海报开关,默认开 */
invitePosterEnabled: YN;
/** 邀约明细下载开关,默认关 */
inviteDetailExportEnabled: YN;
/** 分享开关,默认开 */
shareBtnEnabled: YN;
/** 分享开关,默认开 */
shareEnabled: YN;
/** 特殊授权的观众能否进行微信微信授权,默认关 */
watchCustomWeixinAuthEnabled: YN;
/** 直播介绍上传的长图压缩开关,默认开 */
compressImageEnabled: YN;
/** 展示预约人数开关,默认开 */
displayBookingNumberEnabled: YN;
/** 管理后台-观看页语言设置 */
watchLangType: 'follow_browser' | LanguageType;
/** 是否启用手机号脱敏,默认关 */
badwordMobileEnabled: YN;
/** 隐藏观众昵称功能,默认关 */
hideViewerNicknameEnabled: YN;
/** 是否处于直播测试模式,默认关 */
isDebug: YN;
/** 展示黄脸表情(默认表情),默认开 */
showDefaultEmoteEnabled: YN;
/** 展示图片表情(收藏表情),默认开 */
showCollectEmoteEnabled: YN;
/** 分享是否使用回放视频标题,默认关 */
shareTitleFollowPlaybackVideoEnabled: YN;
/** 是否启用观看页营销埋点,默认关 */
watchEventTrackEnabled: YN;
/** 实时字幕开关,默认关 */
realTimeSubtitleEnabled: YN;
/** 实时字幕翻译开关,默认关 */
subtitleTranslationEnabled: YN;
/** 实时字幕语言类型 */
subtitleSourceLanguage: SubtitleSourceLanguage;
/** 实时字幕翻译语言类型 */
subtitleTranslationLanguage: SubtitleSourceTranslateLanguage;
/** 实时字幕翻译语言类型(可选列表) */
subtitleTranslationLanguages: SubtitleSourceTranslateLanguage[];
/** 实时字幕显示数量限制开关,默认关 */
realTimeSubtitleDisplayNumberLimitEnabled: YN;
/** 实时字幕最多显示条数 */
realTimeSubtitleDisplayNumber: number;
/** 实时字幕延迟时长(仅针对无延迟) */
realTimeSubtitleDisplayDelay: number;
/** 伪直播实时字幕开关,默认关 */
realDiskVideoRealTimeSubtitleEnabled: YN;
/** SaaS 观看时长开关 */
viewerWatchDurationStatsChannelEnabled: YN;
/** 手机号实名认证开关 */
viewerVerificationEnabled: YN;
/** 微信环境支持修改昵称开关,默认关 */
wxEnvResetNickNameEnabled: YN;
/** H5 有延迟播放器连麦开关 */
webH5LinkMicEnabled: YN;
/** 根据时间戳获取聊天历史记录 */
getChatHistoryByTimestampEnabled: YN;
/** 直播时是否显示播放按钮, 默认开 */
stopLivePlayEnabled: YN;
/** AI 助手功能计费开关,值为 Y 时可使用 AI 功能 */
aiAssistantAvailState: YN;
/** 抽奖按钮中文文案 */
lotteryGiftButtonTextCH: string;
/** 抽奖按钮英文文案 */
lotteryGiftButtonTextEN: string;
/** 一客一码功能开关(超管),默认关 */
userSaleShareEnabled: YN;
/** 一客一码短信验证码开关,默认关 */
inviteCustomerSmsCodeEnabled: YN;
/** 一客一码手机号验证开关,默认关 */
inviteCustomerMobileCheckEnabled: YN;
/** 头衔展示开关,默认关 */
viewerActorEnabled: YN;
/** 后台观众翻页 */
viewerPptTurningEnabled: YN;
/** 一客一码使用场景,默认:wechat */
inviteCustomerUsageScenario?: 'wechat' | 'browser';
/** 用户系统 */
watchUserSystemEnabled: YN;
/** 公司名 */
company: string | null;
/** 公司 logo */
logoUrl: string | null;
/** 素材库开关 */
materialEnabled: YN;
/** 提示语数据 */
productLinkJumpTipDetail?: ProductLinkJumpTipDetail;
/** 是否显示热卖特效 */
productHotEffectEnabled: YN;
/** 热卖词数据 */
productHotEffectTips?: ProductHotEffectTips;
/** 抽奖隐私协议内容 */
lotteryPrivacy: string;
/** 抽奖版本 */
lotteryVersion: 'v1' | 'v2';
/** 抽奖隐私协议开关 */
lotteryActivityPrivacyEnabled: YN;
/** 商品订单入口是否显示 */
productPayOrderEnabled: YN;
/** 商品是否支持直接购买开关 */
innerProduceOrderEnabled: YN;
/** 竖屏在线列表开关 */
portraitOnlineListEnabled: YN;
/** 分组开关 */
chatViewerGroupEnabled: YN;
/** Webview 后台小窗是否开启 */
pictureInPictureEnabled: YN;
/** Webview 退出应用IOS后台小窗是否开启 */
pictureInPictureIOSEnabled: YN;
/** 个人中心开关 */
personalCenterEnabled: YN;
/** 监播端跑马灯开关 */
marqueeEnabled: YN;
/** 顶部引导条配置 */
topGuideBar?: ChannelDetailTopGuide;
/** 其他直播预约提示语 */
otherChannelBookingTips: {
bookingTips: string;
channelId: string;
}[];
/** 频道类型 */
streamType: ChannelStreamType;
/** 连麦人数限制 */
linkMicLimit: number | null;
/** 优惠券开关 */
couponEnabled: YN;
/** 邀请观看审核开关 */
inviteWatchAuditEnabled: YN;
/** 聊天消息布局 */
chatMessageLayout: ChatMessageLayout;
portraitChatMessageLayout: ChatMessageLayout;
/** 头像是否显示 */
chatMessageAvatarDisplay: YN;
portraitChatMessageAvatarDisplay: YN;
/** 最后一次推流时间 */
lastPushStreamTime: number | null;
/** 移动端投诉按钮位置 CONTROL_STRIP_INNER,EXTERNAL */
mobileComplaintButtonPosition: string;
/** 当前频道正在推送的商品信息 */
channelProductPushingStatusVO: ChannelProductPushingStatusInfo_2;
/** 商品讲解开关 */
productExplainEnabled: YN;
/** 直播新场次开关 */
newSessionEnabled: YN;
/** 混合流渲染模式 */
mixStreamRenderMode: MixStreamRenderMode;
/** 聊天室通知 */
chatCustomIntroduction: string | null;
/** 聊天室通知(双语) */
chatCustomIntroductionEn: string | null;
/** 安卓增强全屏模式 */
androidFullScreenEnhancedEnabled: YN;
/** 低延迟智能播放开关 */
lowLatencyIntelligentPlayEnabled: YN;
/** 直播广场 */
liveSquare: LiveSquare;
/** 用户体系登录注册方式, 用于判断是否需要企微静默授权 */
watchUserSystemRegisterLoginType: string;
}
/**
* 观看页频道设置(用户)
*/
export declare interface ChannelConfigViewer {
/** 聊天室翻译开关 */
chatTranslateEnabled: YN;
/** 红包开关 */
redpackEnabled: YN;
/** 双师大房间频道号 */
transmitMasterChannelId: string | number | null;
/** 双师大房间流名称 */
transmitMasterStream: string | null;
/** 聊天室是否长时间未使用 */
watchChatEnabled: YN;
/** RTC 供应商类型 */
rtcType: RtcType;
/** 是否显示邀请海报,除了后台开关配置外,后端还会判断 openId */
showInviteAccess: YN;
/** 跑马灯类型 */
marqueeType: MarqueeType;
/** 频道转播场景 */
transmitType: ChannelTransmitType;
/** 抽奖手动开关 */
lotteryManualEndEnabled: YN;
/** 条件抽奖开关 */
conditionLotteryEnabled: YN;
/** 条件抽奖是否自动弹窗 */
conditionLotterySPAutoPopEnabled: YN;
/** 水印开关 */
watermarkRestrict: YN;
/** 水印内容 */
watermarkType: WatermarkType;
/** 水印字体大小 */
watermarkFontSize: WatermarkFontSize;
/** 水印透明度,0~100,100 为完全透明 */
watermarkOpacity: string;
/** 水印内容 */
watermarkContent: string;
/** 唯一登录校验开关 */
singleSessionVerify: YN;
/** 唯一登录校验轮训频率,单位:秒 */
channelVerifyQueryFrequency: number;
/** 连麦排序显示开关 */
showJoinQueueNumberEnabled: YN;
/** 播放器新版暂停样式开关 */
newPlayerPauseStyleEnabled: YN;
}
/**
* 倒计时设置
*/
export declare interface ChannelCountdownSetting {
/** 直播开始时间,单位:时间戳 */
liveStartTime: number | undefined;
/** 倒计时开关 */
countdownEnabled: boolean;
/** 回放时是否显示下一场倒计时 */
playbackShowCountdownEnabled: boolean;
}
/**
* 频道详情
*/
export declare type ChannelDetail = ChannelDetailBasic & ChannelDetailViewer;
/**
* 频道详情操作
*/
export declare interface ChannelDetailAction {
/** 是否需要跳转到主会场 */
mainChannelRedirect: YN;
/** 是否需要跳转到分会场 */
subMeetingChannelRedirect: YN;
/** 跳转分会场的频道号 */
subMeetingChannelId: number | null;
}
/**
* 频道广告相关类型
*/
export declare interface ChannelDetailAdvertSetting extends PageAdvertImageSetting, PageAdvertTextSetting, PageAdvertHrefSetting, HeadAdvertSetting, StopAdvertSetting, IconAdvertSetting {
/** 页面广告列表 */
pageAdvertList?: PageAdvertListItem[];
/** 页面广告开关 */
pageAdvertEnabled: YN;
/** 允许关闭页面广告 */
closeAdvertEnabled: YN;
}
/**
* 频道详情(基础)
*/
export declare interface ChannelDetailBasic {
/** 观看条件设置 */
authSetting: ChannelAuthSetting | null;
/** 观看页频道设置,包括用户设置 */
channelConfig: Readonly<ChannelConfigBasic>;
/** 频道信息 */
channelInfo: Readonly<ChannelInfoBasic>;
/** 频道菜单列表 */
channelMenus: ChannelMenuItem[];
/** 观看页定制频道信息 */
customChannelSetting: Readonly<CustomChannelSetting>;
/** 域名信息 */
domain: Readonly<ChannelDomain>;
/** 特效设置 */
effect: Readonly<ChannelDetailEffectSetting>;
/** 报名观看设置 */
enrollSetting?: ChannelEnrollSetting;
/** 页脚设置 */
footerSetting: Readonly<ChannelFooterSetting>;
/** 直播状态数据 */
liveStatus: Readonly<ChannelLiveStatusBasic>;
/** 多语言列表 */
mulitLangList?: ChannelMultiLangItem[];
/** 分会场设置 */
multiMeetingSetting?: ChannelMultiMeetingSetting;
/** 频道主题设置 */
theme: Readonly<ChannelTheme>;
/** 互动设置 */
interactionSetting: Readonly<InteractionSetting>;
/** 频道观看数据 */
watchData: ChannelWatchData;
/** 精彩看点设置 */
timeAxisMark: ChannelTimeAxisMarkSetting;
/** 直播时移设置 */
timeShift: ChannelTimeShiftSetting;
/** 基础回放设置 */
playback: ChannelDetailBasicPlayback;
/** 云席设置 */
seatSetting?: DetailSeatSetting;
/** AI 配置 */
channelAiConfig: ChannelAIConfig;
/** 讲师信息 */
channelTeacher: ChannelDetailTeacherInfo;
/**
* 用户配置
* @version v1.11.0
* */
userConfig: GlobalUserConfig;
}
/**
* 基础回放设置
*/
export declare interface ChannelDetailBasicPlayback {
/** 回放视频名称,需要通过 vid 入参才不为 null */
playbackVideoName: string | null;
/** 是否支持快进快退 */
fastForwardBackwardEnabled: YN;
}
export declare interface ChannelDetailChatInfo {
/** 房间号 */
channelRoomId: string | null;
/** 聊天室连接 token */
chatToken: string;
}
/**
* 回传参数对象
*/
export declare interface ChannelDetailEchoParams {
/** 渠道 id */
promoteId: string | null;
}
/**
* 频道消息特效设置
*/
export declare interface ChannelDetailEffectSetting {
/** 访问特效开关 */
visitEffectEnabled: YN;
/** 用户访问直播间 */
joinVisitEffectTip: string;
/** 购买转化特效开关 */
productEffectEnabled: YN;
/** 用户点击商品-普通商品 */
clickOrdinaryProductEffectTip: string;
/** 用户点击商品-金融商品 */
clickFinancialProductEffectTip: string;
/** 用户点击商品-职位商品 */
clickJobProductEffectTip: string;
/** 用户下单商品-普通商品 */
orderProductEffectTip: string;
/** 参与互动特效开关 */
interactionEffectEnabled: YN;
/** 用户签到成功 */
checkinInteractionEffectTip: string;
/** 用户打赏成功特效 */
donateInteractionEffectTip: string;
}
declare interface ChannelDetailPlaybackInfo {
/** 是否开启回放,默认关 */
enablePlayBack: YN;
/** 频道播放模式 */
playMode: ChannelPlayMode;
/** 聊天重放开关 */
chatPlaybackEnabled: YN;
/** 卡片推送重放开关 */
cardPushPlaybackEnabled: YN;
/** 签到重放开关 */
checkInPlaybackEnabled: YN;
/** 问卷重放开关 */
questionnairePlaybackEnabled: YN;
/** 答题卡重放开关 */
qaPlaybackEnabled: YN;
/** 商品库重放开关 */
productPlaybackEnabled: YN;
/** 是否存在回放视频 */
hasPlaybackVideo: YN;
/** 是否存在暂存文件 */
hasRecordFile: YN;
/** 回放来源 */
playbackOrigin: PlaybackOrigin;
/** 暂存对象 */
recordFile: PlaybackRecordFile | null;
/** 回放对象 */
targetPlaybackVideo: PlaybackVideoTarget | null;
/** 章节开关 */
sectionEnabled: YN;
/** 回放方式 */
type: PlaybackMode;
/** 播放场次号 */
targetSessionId: string | null;
/** 点播场次号 */
vodSessionId: string | null;
/** 点播地址 */
vodUrl: string | null;
/** 点播用户状态 */
vodUserStatus: YN;
/** 回放字幕列表 */
subtitleList: ReplaySubtitleItem[];
/** 回放时是否显示倍速按钮,默认开 */
playbackMultiplierEnabled: YN;
/** 回放时是否显示进度条,默认开 */
playbackProgressBarEnabled: YN;
/** 回放时是否显示左下角播放/暂停按钮,默认开 */
showPlayButtonEnabled: YN;
/** 回放时是否循环播放,列表播放播放完最后一个视频会暂停播放,默认开 */
loopPlayEnabled: YN;
/** 回放时 回放大纲开关 默认开 */
aiSummaryEnabled: YN;
/** 回放列表是否显示开始时间, 默认开 */
listLiveStartTimeEnabled: YN;
}
/**
* 播放器设置
*/
export declare interface ChannelDetailPlayerSetting {
/** 弹幕是否默认显示 */
showDanmuInfoEnabled: YN;
/** 播放器 logo 图片地址 */
logoImage: string | null;
/** 播放器 logo 跳转地址 */
logoHref: string | null;
/** 播放器 logo 透明度,0~1 */
logoOpacity: number;
/** 播放器 logo 位置 */
logoPosition: PlayerLogoPosition;
/** 安卓下是否显示倍速按钮 */
androidXSpeedPlayEnabled: YN;
}
/**
* 公众号关注信息
*/
export declare interface ChannelDetailPromotion {
/** 关注是否自动打开 */
followAutoShow: YN;
/** 关注开关 */
followEnabled: YN;
/** 关注入口文案 */
followEntrance: string;
/** 关注图片 */
followImage: string;
/** 移动端关注提示 */
followTips: string;
/** PC端关注提示 */
pcFollowTips: string;
/** 邀约明细开关,默认关 */
inviteDetailEnabled: YN;
}
export declare interface ChannelDetailRequestParams {
/** 频道号 */
channelId: string;
}
export declare interface Chan