diff --git a/src/components/viewmodels/memberlist/tiles/MemberTileViewModel.tsx b/src/components/viewmodels/memberlist/tiles/MemberTileViewModel.tsx
index ade40e9b97..367064e3ff 100644
--- a/src/components/viewmodels/memberlist/tiles/MemberTileViewModel.tsx
+++ b/src/components/viewmodels/memberlist/tiles/MemberTileViewModel.tsx
@@ -15,9 +15,9 @@ import { Action } from "../../../../dispatcher/actions";
 import { asyncSome } from "../../../../utils/arrays";
 import { getUserDeviceIds } from "../../../../utils/crypto/deviceInfo";
 import { RoomMember } from "../../../../models/rooms/RoomMember";
-import { E2EState } from "../../../views/rooms/E2EIcon";
 import { _t, _td, TranslationKey } from "../../../../languageHandler";
 import UserIdentifierCustomisations from "../../../../customisations/UserIdentifier";
+import { E2EStatus } from "../../../../utils/ShieldUtils";
 
 interface MemberTileViewModelProps {
     member: RoomMember;
@@ -25,7 +25,7 @@ interface MemberTileViewModelProps {
 }
 
 export interface MemberTileViewState extends MemberTileViewModelProps {
-    e2eStatus?: E2EState;
+    e2eStatus?: E2EStatus;
     name: string;
     onClick: () => void;
     title?: string;
@@ -43,7 +43,7 @@ const PowerLabel: Record<PowerStatus, TranslationKey> = {
 };
 
 export function useMemberTileViewModel(props: MemberTileViewModelProps): MemberTileViewState {
-    const [e2eStatus, setE2eStatus] = useState<E2EState | undefined>();
+    const [e2eStatus, setE2eStatus] = useState<E2EStatus | undefined>();
 
     useEffect(() => {
         const cli = MatrixClientPeg.safeGet();
@@ -53,7 +53,7 @@ export function useMemberTileViewModel(props: MemberTileViewModelProps): MemberT
             const isMe = userId === cli.getUserId();
             const userTrust = await cli.getCrypto()?.getUserVerificationStatus(userId);
             if (!userTrust?.isCrossSigningVerified()) {
-                setE2eStatus(userTrust?.wasCrossSigningVerified() ? E2EState.Warning : E2EState.Normal);
+                setE2eStatus(userTrust?.wasCrossSigningVerified() ? E2EStatus.Warning : E2EStatus.Normal);
                 return;
             }
 
@@ -67,7 +67,7 @@ export function useMemberTileViewModel(props: MemberTileViewModelProps): MemberT
                 const deviceTrust = await cli.getCrypto()?.getDeviceVerificationStatus(userId, deviceId);
                 return !deviceTrust || (isMe ? !deviceTrust.crossSigningVerified : !deviceTrust.isVerified());
             });
-            setE2eStatus(anyDeviceUnverified ? E2EState.Warning : E2EState.Verified);
+            setE2eStatus(anyDeviceUnverified ? E2EStatus.Warning : E2EStatus.Verified);
         };
 
         const onRoomStateEvents = (ev: MatrixEvent): void => {
diff --git a/src/components/views/dialogs/UntrustedDeviceDialog.tsx b/src/components/views/dialogs/UntrustedDeviceDialog.tsx
index 668a3f52b3..ad1b2df7dc 100644
--- a/src/components/views/dialogs/UntrustedDeviceDialog.tsx
+++ b/src/components/views/dialogs/UntrustedDeviceDialog.tsx
@@ -11,10 +11,11 @@ import { User } from "matrix-js-sdk/src/matrix";
 
 import { _t } from "../../../languageHandler";
 import { MatrixClientPeg } from "../../../MatrixClientPeg";
-import E2EIcon, { E2EState } from "../rooms/E2EIcon";
+import E2EIcon from "../rooms/E2EIcon";
 import AccessibleButton from "../elements/AccessibleButton";
 import BaseDialog from "./BaseDialog";
 import { IDevice } from "../right_panel/UserInfo";
+import { E2EStatus } from "../../../utils/ShieldUtils";
 
 interface IProps {
     /**
@@ -54,7 +55,7 @@ const UntrustedDeviceDialog: React.FC<IProps> = ({ device, user, onFinished }) =
             className="mx_UntrustedDeviceDialog"
             title={
                 <>
-                    <E2EIcon status={E2EState.Warning} isUser size={24} hideTooltip={true} />
+                    <E2EIcon status={E2EStatus.Warning} isUser size={24} hideTooltip={true} />
                     {_t("encryption|udd|title")}
                 </>
             }
diff --git a/src/components/views/right_panel/VerificationPanel.tsx b/src/components/views/right_panel/VerificationPanel.tsx
index ba419afa98..2a1d8ce3c0 100644
--- a/src/components/views/right_panel/VerificationPanel.tsx
+++ b/src/components/views/right_panel/VerificationPanel.tsx
@@ -23,11 +23,12 @@ import { MatrixClientPeg } from "../../../MatrixClientPeg";
 import VerificationQRCode from "../elements/crypto/VerificationQRCode";
 import { _t } from "../../../languageHandler";
 import SdkConfig from "../../../SdkConfig";
-import E2EIcon, { E2EState } from "../rooms/E2EIcon";
+import E2EIcon from "../rooms/E2EIcon";
 import Spinner from "../elements/Spinner";
 import AccessibleButton from "../elements/AccessibleButton";
 import VerificationShowSas from "../verification/VerificationShowSas";
 import { getDeviceCryptoInfo } from "../../../utils/crypto/deviceInfo";
+import { E2EStatus } from "../../../utils/ShieldUtils";
 
 interface IProps {
     layout: string;
@@ -233,7 +234,7 @@ export default class VerificationPanel extends React.PureComponent<IProps, IStat
             body = (
                 <React.Fragment>
                     <p>{description}</p>
-                    <E2EIcon isUser={true} status={E2EState.Verified} size={128} hideTooltip={true} />
+                    <E2EIcon isUser={true} status={E2EStatus.Verified} size={128} hideTooltip={true} />
                     <div className="mx_VerificationPanel_reciprocateButtons">
                         <AccessibleButton
                             kind="danger"
@@ -302,7 +303,7 @@ export default class VerificationPanel extends React.PureComponent<IProps, IStat
         return (
             <div className="mx_UserInfo_container mx_VerificationPanel_verified_section">
                 <p>{description}</p>
-                <E2EIcon isUser={true} status={E2EState.Verified} size={128} hideTooltip={true} />
+                <E2EIcon isUser={true} status={E2EStatus.Verified} size={128} hideTooltip={true} />
                 {text ? <p>{text}</p> : null}
                 <AccessibleButton kind="primary" className="mx_UserInfo_wideButton" onClick={this.props.onClose}>
                     {_t("action|got_it")}
diff --git a/src/components/views/rooms/E2EIcon.tsx b/src/components/views/rooms/E2EIcon.tsx
index 5366f7621c..8542ad4b4b 100644
--- a/src/components/views/rooms/E2EIcon.tsx
+++ b/src/components/views/rooms/E2EIcon.tsx
@@ -14,23 +14,16 @@ import { Tooltip } from "@vector-im/compound-web";
 import { _t, _td, TranslationKey } from "../../../languageHandler";
 import AccessibleButton from "../elements/AccessibleButton";
 import { E2EStatus } from "../../../utils/ShieldUtils";
-import { XOR } from "../../../@types/common";
 
-export enum E2EState {
-    Verified = "verified",
-    Warning = "warning",
-    Normal = "normal",
-}
-
-export const crossSigningUserTitles: { [key in E2EState]?: TranslationKey } = {
-    [E2EState.Warning]: _td("encryption|cross_signing_user_warning"),
-    [E2EState.Normal]: _td("encryption|cross_signing_user_normal"),
-    [E2EState.Verified]: _td("encryption|cross_signing_user_verified"),
+export const crossSigningUserTitles: { [key in E2EStatus]?: TranslationKey } = {
+    [E2EStatus.Warning]: _td("encryption|cross_signing_user_warning"),
+    [E2EStatus.Normal]: _td("encryption|cross_signing_user_normal"),
+    [E2EStatus.Verified]: _td("encryption|cross_signing_user_verified"),
 };
-const crossSigningRoomTitles: { [key in E2EState]?: TranslationKey } = {
-    [E2EState.Warning]: _td("encryption|cross_signing_room_warning"),
-    [E2EState.Normal]: _td("encryption|cross_signing_room_normal"),
-    [E2EState.Verified]: _td("encryption|cross_signing_room_verified"),
+const crossSigningRoomTitles: { [key in E2EStatus]?: TranslationKey } = {
+    [E2EStatus.Warning]: _td("encryption|cross_signing_room_warning"),
+    [E2EStatus.Normal]: _td("encryption|cross_signing_room_normal"),
+    [E2EStatus.Verified]: _td("encryption|cross_signing_room_verified"),
 };
 
 interface Props {
@@ -40,19 +33,11 @@ interface Props {
     hideTooltip?: boolean;
     tooltipPlacement?: ComponentProps<typeof Tooltip>["placement"];
     bordered?: boolean;
-}
-
-interface UserProps extends Props {
-    isUser: true;
-    status: E2EState | E2EStatus;
-}
-
-interface RoomProps extends Props {
-    isUser?: false;
     status: E2EStatus;
+    isUser?: boolean;
 }
 
-const E2EIcon: React.FC<XOR<UserProps, RoomProps>> = ({
+const E2EIcon: React.FC<Props> = ({
     isUser,
     status,
     className,
@@ -66,9 +51,9 @@ const E2EIcon: React.FC<XOR<UserProps, RoomProps>> = ({
         {
             mx_E2EIcon: true,
             mx_E2EIcon_bordered: bordered,
-            mx_E2EIcon_warning: status === E2EState.Warning,
-            mx_E2EIcon_normal: status === E2EState.Normal,
-            mx_E2EIcon_verified: status === E2EState.Verified,
+            mx_E2EIcon_warning: status === E2EStatus.Warning,
+            mx_E2EIcon_normal: status === E2EStatus.Normal,
+            mx_E2EIcon_verified: status === E2EStatus.Verified,
         },
         className,
     );
diff --git a/src/components/views/rooms/MemberList/tiles/common/E2EIconView.tsx b/src/components/views/rooms/MemberList/tiles/common/E2EIconView.tsx
index 01ffb8a6b0..a1f37e5185 100644
--- a/src/components/views/rooms/MemberList/tiles/common/E2EIconView.tsx
+++ b/src/components/views/rooms/MemberList/tiles/common/E2EIconView.tsx
@@ -12,24 +12,21 @@ import ErrorIcon from "@vector-im/compound-design-tokens/assets/web/icons/error"
 
 import { _t } from "../../../../../../languageHandler";
 import { E2EStatus } from "../../../../../../utils/ShieldUtils";
-import { E2EState, crossSigningUserTitles } from "../../../E2EIcon";
+import { crossSigningUserTitles } from "../../../E2EIcon";
 
-function getIconFromStatus(status: E2EState | E2EStatus): React.JSX.Element | undefined {
+function getIconFromStatus(status: E2EStatus): React.JSX.Element | undefined {
     switch (status) {
-        case E2EState.Normal:
         case E2EStatus.Normal:
             return undefined;
-        case E2EState.Verified:
         case E2EStatus.Verified:
             return <VerifiedIcon height="16px" width="16px" className="mx_E2EIconView_verified" />;
-        case E2EState.Warning:
         case E2EStatus.Warning:
             return <ErrorIcon height="16px" width="16px" className="mx_E2EIconView_warning" />;
     }
 }
 
 interface Props {
-    status: E2EState | E2EStatus;
+    status: E2EStatus;
 }
 
 export const E2EIconView: React.FC<Props> = ({ status }) => {