import { Ref } from 'vue'; import { MESSAGE_TYPE } from '../constants'; import TRTC from 'trtc-sdk-v5'; import { AnyFn } from '../../../../shared/types'; export interface RemoteUser { id: string; name: string; hasVideo?: boolean; hasAudio?: boolean; } export interface TRTCEvent { userId: string; streamType?: any; available?: boolean; } export interface VideoEventHandlers { handleRemoteUserEnter: AnyFn; handleRemoteAudioAvailable: AnyFn; handleRemoteUserExit: AnyFn; handleRemoteVideoAvailable: AnyFn; handleRemoteVideoUnavailable?: AnyFn; handleRemoteAudioUnavailable?: AnyFn; } export interface VideoConfig { isMultiple?: boolean; enableRetry?: boolean; retryDelay?: number; maxRetries?: number; } export declare function useVideo(config?: VideoConfig): { state: { [x: string]: any; orgId: string; currentSessionItem: { id: string; sessionKey: string; receiver: string; createdTime: string; avatar: string; name: string; defaultName: string; chatType: import("../constants").CHAT_TYPE; roleInfo: import("../constants").ROLE_TYPE; status: import("../constants").STATUS; sortTime: string; topping: boolean; unreadNum: number; updatedTime: string; lastMessageContent: string; sender?: string | undefined; lastMessageId?: string | undefined; lastMessage?: { [x: string]: any; chatMessageType: MESSAGE_TYPE; msg: string; referenceContent?: any; forwardMessageList?: import("../../../../shared/types").AnyObject[] | undefined; messageTemplate?: any; messageTemplateData?: any; fileUrl?: string | undefined; avStatus?: string | undefined; } | undefined; lastMessageSendTime?: string | undefined; lastMessageStatus?: string | undefined; lastSenderName?: string | undefined; businessInfo?: { uiSetting?: import("../../../../shared/types").AnyObject | undefined; topicInfo?: { [x: string]: any; param?: import("../../../../shared/types").AnyObject | undefined; } | undefined; } | undefined; labelList?: import("../../../../shared/types").AnyObject[] | undefined; notDisturb: boolean; }; id: string; userInfo: import("../../../../shared/types").AnyObject; msgList: { [x: string]: any; id: string; sessionKey: string; content: { [x: string]: any; chatMessageType: MESSAGE_TYPE; msg: string; referenceContent?: any; forwardMessageList?: import("../../../../shared/types").AnyObject[] | undefined; messageTemplate?: any; messageTemplateData?: any; fileUrl?: string | undefined; avStatus?: string | undefined; }; senderName: string; sendTime: string; sender: string; status: string; senderAvatar: string; __content: string; __time?: string | undefined; __sendTime?: string | undefined; }[]; sessionList: { id: string; sessionKey: string; receiver: string; createdTime: string; avatar: string; name: string; defaultName: string; chatType: import("../constants").CHAT_TYPE; roleInfo: import("../constants").ROLE_TYPE; status: import("../constants").STATUS; sortTime: string; topping: boolean; unreadNum: number; updatedTime: string; lastMessageContent: string; sender?: string | undefined; lastMessageId?: string | undefined; lastMessage?: { [x: string]: any; chatMessageType: MESSAGE_TYPE; msg: string; referenceContent?: any; forwardMessageList?: import("../../../../shared/types").AnyObject[] | undefined; messageTemplate?: any; messageTemplateData?: any; fileUrl?: string | undefined; avStatus?: string | undefined; } | undefined; lastMessageSendTime?: string | undefined; lastMessageStatus?: string | undefined; lastSenderName?: string | undefined; businessInfo?: { uiSetting?: import("../../../../shared/types").AnyObject | undefined; topicInfo?: { [x: string]: any; param?: import("../../../../shared/types").AnyObject | undefined; } | undefined; } | undefined; labelList?: import("../../../../shared/types").AnyObject[] | undefined; notDisturb: boolean; }[]; isChangeSession: boolean; isUpdateSession: boolean; currentReferenceMsg: import("../../../../shared/types").AnyObject | null; currentReEditMsg: import("../../../../shared/types").AnyObject | null; showVideo: boolean; currentAVMsg: import("../../../../shared/types").AnyObject; currentGroupUser: import("../../../../shared/types").AnyObject[]; showMultipleVideo: boolean; userDetail: { show: boolean; position: { x: number; y: number; }; userId: string; info: import("../../../../shared/types").AnyObject | null; }; isForward: boolean; loading: boolean; }; trtcProxy: Ref; sendMessage: (message: { chatType?: string | undefined; content: import("../../../../shared/types").AnyObject; receiver?: string | undefined; }) => Promise; trtc: TRTC; timing: Ref; voiceClose: Ref; videocamClose: Ref; isConnect: Ref; isAudio: import("vue").ComputedRef; isCall: import("vue").ComputedRef; messageTypeText: import("vue").ComputedRef<"语音" | "视频">; time: { timer: any; seconds: number; }; remoteUsers: Ref<{ id: string; name: string; hasVideo?: boolean | undefined; hasAudio?: boolean | undefined; }[], RemoteUser[] | { id: string; name: string; hasVideo?: boolean | undefined; hasAudio?: boolean | undefined; }[]>; videoRefs: Ref, Map>; startTimer: () => void; resetTimer: () => void; toggleAudio: () => Promise; toggleVideo: () => Promise; enterRoom: () => Promise; exitRoom: () => Promise; startLocalMedia: (selfVideoRef?: HTMLElement) => Promise; checkTRTCSupport: () => Promise; findUser: (userId: string) => RemoteUser | undefined; addOrUpdateUser: (userId: string, updates: Partial) => void; removeUser: (userId: string) => void; tryRenderRemoteVideo: (userId: string) => Promise; stopRemoteVideo: (userId: string) => Promise; setVideoRef: (userId: string, el: HTMLElement | null) => void; installEventHandlers: (handlers: VideoEventHandlers) => void; uninstallEventHandlers: (handlers: VideoEventHandlers) => void; cleanupAllResources: () => void; checkAndRenderAllVideos: () => void; forceRenderAllVideos: () => Promise; cleanupInvalidUsers: () => void; isUserValid: (userId: string) => boolean; startUserConnectionMonitoring: () => void; stopUserConnectionMonitoring: () => void; MAIN_STREAM_TYPE: any; };