import { Participant } from '@zoom/videosdk';
import { Menu } from 'primereact/menu';

export type UserListControllerReturn = {
    can: {
        toggleUserAudio: boolean;
        toggleUserVideo: boolean;
        requestHostRole: boolean;
        revokeManagerRole: boolean;
        makeManagerRole: boolean;
        transferHostRole: boolean;
        grantMicParticipation: boolean;
        grantMicCameraParticipation: boolean;
        upgradeMicToCamera: boolean;
        revokeParticipation: boolean;
        revokeCameraParticipation: boolean;
        inviteToParticipateMic: boolean;
        inviteToParticipateMicCamera: boolean;
    };
    currentUserId: number;
    filteredUsers: Participant[];
    filter: string;
    handleMakeHost: () => Promise<void>;
    handleMakeManager: () => Promise<void>;
    handleRevokeManager: () => Promise<void>;
    handleRequestMakeHost: () => Promise<void>;
    handleToggleParticipantMic: (p: Participant) => Promise<void>;
    handleGrantMicParticipation: () => Promise<void>;
    handleGrantMicCameraParticipation: () => Promise<void>;
    handleUpgradeMicToCamera: () => Promise<void>;
    handleRevokeParticipation: () => Promise<void>;
    handleRevokeCameraParticipation: () => Promise<void>;
    showUserMenuButton: boolean;
    loading: boolean;
    selectedUser: Participant | null;
    setFilter: ReactSetter<string>;
    setSelectedUser: ReactSetter<Participant | null>;
    userMenuRef: React.RefObject<Menu>;
};
declare const useUserListController: (users: Participant[]) => UserListControllerReturn;
export default useUserListController;
