import { IRoomService } from '../types';
import { StreamInfo, UserInfo } from '../../stores/room';
import { Comparator } from '../../utils/utils';

interface IUserManager {
    setSelfInfo(options: SelfInfoOptions): Promise<void>;
    setCustomInfoForUser(options: CustomInfoForUser): Promise<void>;
}
export type CustomInfoForUser = {
    userId: string;
    customInfo: Record<string, string>;
};
export type SelfInfoOptions = {
    userName?: string;
    avatarUrl?: string;
    customInfo?: Record<string, any>;
};
export declare class UserManager implements IUserManager {
    private service;
    private userListCompareFunction;
    private streamListCompareFunction;
    constructor(service: IRoomService);
    setSelfInfo(options: SelfInfoOptions): Promise<void>;
    setCustomInfoForUser(options: CustomInfoForUser): Promise<any>;
    getDisplayName(options: UserInfo): string;
    setLocalUser(userInfo: {
        userId: string;
    }): void;
    setUserListSortComparator(comparator: Comparator<UserInfo>): void;
    getUserListSortComparator(): (userInfoA: UserInfo, userInfoB: UserInfo) => number;
    setStreamListSortComparator(comparator: Comparator<StreamInfo>): void;
    getStreamListSortComparator(): (streamInfoA: StreamInfo, streamInfoB: StreamInfo) => number;
    private onRemoteUserEnterRoom;
    private onRemoteUserLeaveRoom;
    private onSeatListChanged;
    private onUserAudioStateChanged;
    private onUserVideoStateChanged;
    private handleUserVoiceVolume;
    private handleUserVoiceVolumeThrottle;
    private onUserVoiceVolumeChanged;
    private bindRoomEngineEvents;
    private unbindRoomEngineEvents;
}
export {};
