import React, { ReactNode } from "react";
import { MatrixClient, RoomMember, Room, User, Device } from "matrix-js-sdk/src/matrix";
import { VerificationRequest } from "matrix-js-sdk/src/crypto-api";
import { RightPanelPhases } from "../../../stores/right-panel/RightPanelStorePhases";
import { E2EStatus } from "../../../utils/ShieldUtils";
export interface IDevice extends Device {
    ambiguous?: boolean;
}
export declare const disambiguateDevices: (devices: IDevice[]) => void;
export declare const getE2EStatus: (cli: MatrixClient, userId: string, devices: IDevice[]) => Promise<E2EStatus | undefined>;
/**
 * Display one device and the related actions
 * @param userId current user id
 * @param device device to display
 * @param isUserVerified false when the user is not verified
 * @constructor
 */
export declare function DeviceItem({ userId, device, isUserVerified, }: {
    userId: string;
    device: IDevice;
    isUserVerified: boolean;
}): JSX.Element;
export declare const UserOptionsSection: React.FC<{
    member: Member;
    canInvite: boolean;
    isSpace?: boolean;
    children?: ReactNode;
}>;
export declare const warnSelfDemote: (isSpace: boolean) => Promise<boolean>;
interface IPowerLevelsContent {
    events?: Record<string, number>;
    users_default?: number;
    events_default?: number;
    state_default?: number;
    ban?: number;
    kick?: number;
    redact?: number;
}
export declare const isMuted: (member: RoomMember, powerLevelContent: IPowerLevelsContent) => boolean;
export declare const getPowerLevels: (room: Room) => IPowerLevelsContent;
export declare const useRoomPowerLevels: (cli: MatrixClient, room: Room) => IPowerLevelsContent;
interface IBaseProps {
    member: RoomMember;
    isUpdating: boolean;
    startUpdating(): void;
    stopUpdating(): void;
}
export declare const RoomKickButton: ({ room, member, isUpdating, startUpdating, stopUpdating, }: Omit<IBaseRoomProps, "powerLevels">) => JSX.Element | null;
export declare const BanToggleButton: ({ room, member, isUpdating, startUpdating, stopUpdating, }: Omit<IBaseRoomProps, "powerLevels">) => JSX.Element;
interface IBaseRoomProps extends IBaseProps {
    room: Room;
    powerLevels: IPowerLevelsContent;
    children?: ReactNode;
}
export declare const RoomAdminToolsContainer: React.FC<IBaseRoomProps>;
interface IRoomPermissions {
    modifyLevelMax: number;
    canEdit: boolean;
    canInvite: boolean;
}
export declare const PowerLevelEditor: React.FC<{
    user: RoomMember;
    room: Room;
    roomPermissions: IRoomPermissions;
}>;
export declare const useDevices: (userId: string) => IDevice[] | undefined | null;
export type Member = User | RoomMember;
export declare const UserInfoHeader: React.FC<{
    member: Member;
    e2eStatus?: E2EStatus;
    roomId?: string;
}>;
interface IProps {
    user: Member;
    room?: Room;
    phase: RightPanelPhases.RoomMemberInfo | RightPanelPhases.SpaceMemberInfo | RightPanelPhases.EncryptionPanel;
    onClose(): void;
    verificationRequest?: VerificationRequest;
    verificationRequestPromise?: Promise<VerificationRequest>;
}
declare const UserInfo: React.FC<IProps>;
export default UserInfo;
