diff --git a/package-lock.json b/package-lock.json
index a163c2aa..6ab7cf55 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1852,9 +1852,9 @@
       }
     },
     "node_modules/@chaitanyapotti/register-service-worker": {
-      "version": "1.7.3",
-      "resolved": "https://registry.npmjs.org/@chaitanyapotti/register-service-worker/-/register-service-worker-1.7.3.tgz",
-      "integrity": "sha512-ywnUSfwvqdHchO3ELFWP6hlnhzc2UUETbk+TaBT/vicuMnJbnBLuDCcoy3aWvUE9bjmzg4QQpssRLSz1iZ7XRA=="
+      "version": "1.7.4",
+      "resolved": "https://registry.npmjs.org/@chaitanyapotti/register-service-worker/-/register-service-worker-1.7.4.tgz",
+      "integrity": "sha512-+u78X4ljCleLy1okQMtYLTXGLHdFQcwai822xu3oHRTviKEIVkQTMNhCmbYTCiP24thY6AbH9g+c6p2LNU0pnA=="
     },
     "node_modules/@colors/colors": {
       "version": "1.5.0",
@@ -4887,18 +4887,54 @@
       "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
       "dev": true
     },
+    "node_modules/@toruslabs/base-session-manager": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/@toruslabs/base-session-manager/-/base-session-manager-3.1.1.tgz",
+      "integrity": "sha512-/awg0VbJcfcdJTB2zYdnoFkNGOioODvBc7i3vfxR6lRpFvVwndYPwbD870bgRiSUt9hSee8pSfokejnjDZGpew==",
+      "dependencies": {
+        "@toruslabs/http-helpers": "^6.1.0"
+      },
+      "engines": {
+        "node": ">=18.x",
+        "npm": ">=9.x"
+      },
+      "peerDependencies": {
+        "@babel/runtime": "7.x"
+      }
+    },
+    "node_modules/@toruslabs/base-session-manager/node_modules/@toruslabs/http-helpers": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/@toruslabs/http-helpers/-/http-helpers-6.1.1.tgz",
+      "integrity": "sha512-bJYOaltRzklzObhRdutT1wau17vXyrCCBKJOeN46F1t99MUXi5udQNeErFOcr9qBsvrq2q67eVBkU5XOeBMX5A==",
+      "dependencies": {
+        "lodash.merge": "^4.6.2",
+        "loglevel": "^1.9.1"
+      },
+      "engines": {
+        "node": ">=18.x",
+        "npm": ">=9.x"
+      },
+      "peerDependencies": {
+        "@babel/runtime": "^7.x",
+        "@sentry/types": "^7.x"
+      },
+      "peerDependenciesMeta": {
+        "@sentry/types": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@toruslabs/broadcast-channel": {
-      "version": "8.0.0",
-      "resolved": "https://registry.npmjs.org/@toruslabs/broadcast-channel/-/broadcast-channel-8.0.0.tgz",
-      "integrity": "sha512-qCyWsHVL4Xtx1J6k1+acD7TJKCelJWyUy5Q5zyiWMPxMGFxTv1XdRyqpzV+VgwbcslIqgFN0GewOry2l1jlUQQ==",
+      "version": "10.0.2",
+      "resolved": "https://registry.npmjs.org/@toruslabs/broadcast-channel/-/broadcast-channel-10.0.2.tgz",
+      "integrity": "sha512-aZbKNgV/OhiTKSdxBTGO86xRdeR7Ct1vkB8yeyXRX32moARhZ69uJQL49jKh4cWKV3VeijrL9XvKdn5bzgHQZg==",
       "dependencies": {
-        "@babel/runtime": "^7.22.10",
+        "@babel/runtime": "^7.24.0",
         "@toruslabs/eccrypto": "^4.0.0",
-        "@toruslabs/metadata-helpers": "^5.0.0",
-        "bowser": "^2.11.0",
-        "loglevel": "^1.8.1",
-        "oblivious-set": "1.1.1",
-        "socket.io-client": "^4.7.2",
+        "@toruslabs/metadata-helpers": "^5.1.0",
+        "loglevel": "^1.9.1",
+        "oblivious-set": "1.4.0",
+        "socket.io-client": "^4.7.5",
         "unload": "^2.4.1"
       },
       "engines": {
@@ -4920,9 +4956,9 @@
       }
     },
     "node_modules/@toruslabs/constants": {
-      "version": "13.1.0",
-      "resolved": "https://registry.npmjs.org/@toruslabs/constants/-/constants-13.1.0.tgz",
-      "integrity": "sha512-W1LyRoM5xCTyNivGnxa+mOit4yWPZjyYHfM+whYBujP1nQVnJ09nSFCBn1ePm6ONxB5mp58jsI3TJugeY2KFSg==",
+      "version": "13.4.0",
+      "resolved": "https://registry.npmjs.org/@toruslabs/constants/-/constants-13.4.0.tgz",
+      "integrity": "sha512-CjmnMQ5Oj0bqSBGkhv7Xm3LciGJDHwe4AJ1LF6mijlP+QcCnUM5I6kVp60j7zZ/r0DT7nIEiuHHHczGpCZor0A==",
       "engines": {
         "node": ">=18.x",
         "npm": ">=9.x"
@@ -4932,24 +4968,47 @@
       }
     },
     "node_modules/@toruslabs/customauth": {
-      "version": "16.0.6",
-      "resolved": "https://registry.npmjs.org/@toruslabs/customauth/-/customauth-16.0.6.tgz",
-      "integrity": "sha512-4+Cxbxz3fxm750MMaMqMoJS0x8RZdD0y1tHLa/2T+b993cjRoQRixddTa3rWNYdbWsg2rgcmGkpXxywq3aLzwA==",
+      "version": "18.1.0",
+      "resolved": "https://registry.npmjs.org/@toruslabs/customauth/-/customauth-18.1.0.tgz",
+      "integrity": "sha512-cXNXkv2DOZu+XQc0ZEqzPwQJWTXkdxTKz9/uzVsF1i9A6KyrTupX1yN8k/mXZybLJ2R3cz1/e9iezn1NPhUPiA==",
       "dependencies": {
-        "@chaitanyapotti/register-service-worker": "^1.7.3",
-        "@toruslabs/broadcast-channel": "^8.0.0",
-        "@toruslabs/constants": "^13.0.1",
+        "@chaitanyapotti/register-service-worker": "^1.7.4",
+        "@toruslabs/broadcast-channel": "^10.0.2",
+        "@toruslabs/constants": "^13.2.0",
         "@toruslabs/eccrypto": "^4.0.0",
-        "@toruslabs/fetch-node-details": "^13.0.1",
-        "@toruslabs/http-helpers": "^5.0.0",
-        "@toruslabs/metadata-helpers": "^5.0.0",
-        "@toruslabs/torus.js": "^11.0.5",
+        "@toruslabs/fetch-node-details": "^13.2.0",
+        "@toruslabs/http-helpers": "^6.1.0",
+        "@toruslabs/metadata-helpers": "^5.1.0",
+        "@toruslabs/openlogin-session-manager": "^3.1.1",
+        "@toruslabs/torus.js": "^12.2.0",
         "base64url": "^3.0.1",
         "bowser": "^2.11.0",
         "events": "^3.3.0",
-        "jwt-decode": "^3.1.2",
+        "jwt-decode": "^4.0.0",
         "lodash.merge": "^4.6.2",
-        "loglevel": "^1.8.1"
+        "loglevel": "^1.9.1"
+      },
+      "engines": {
+        "node": ">=18.x",
+        "npm": ">=9.x"
+      },
+      "peerDependencies": {
+        "@babel/runtime": "^7.x",
+        "@sentry/types": "^7.x"
+      },
+      "peerDependenciesMeta": {
+        "@sentry/types": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@toruslabs/customauth/node_modules/@toruslabs/http-helpers": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/@toruslabs/http-helpers/-/http-helpers-6.1.1.tgz",
+      "integrity": "sha512-bJYOaltRzklzObhRdutT1wau17vXyrCCBKJOeN46F1t99MUXi5udQNeErFOcr9qBsvrq2q67eVBkU5XOeBMX5A==",
+      "dependencies": {
+        "lodash.merge": "^4.6.2",
+        "loglevel": "^1.9.1"
       },
       "engines": {
         "node": ">=18.x",
@@ -5010,14 +5069,14 @@
       }
     },
     "node_modules/@toruslabs/fetch-node-details": {
-      "version": "13.1.1",
-      "resolved": "https://registry.npmjs.org/@toruslabs/fetch-node-details/-/fetch-node-details-13.1.1.tgz",
-      "integrity": "sha512-RjAPh+KAaXL406MaAJacyNhekIHojHJlgB5oU45o5l9rnCJrIEhcLVpWVeucdyDyq0L+btko1RYvIRUNqALPyQ==",
+      "version": "13.4.0",
+      "resolved": "https://registry.npmjs.org/@toruslabs/fetch-node-details/-/fetch-node-details-13.4.0.tgz",
+      "integrity": "sha512-WTfI47Q5sldlz4nh8kNPI95PXm3hjm3IEDnYRY3rlcCrs9sVwdQItKf4D0i5s9sRmwLIpG3po+IpEcdO82CIuA==",
       "dependencies": {
-        "@toruslabs/constants": "^13.1.0",
-        "@toruslabs/fnd-base": "^13.1.1",
-        "@toruslabs/http-helpers": "^5.0.0",
-        "loglevel": "^1.8.1"
+        "@toruslabs/constants": "^13.4.0",
+        "@toruslabs/fnd-base": "^13.4.0",
+        "@toruslabs/http-helpers": "^6.1.1",
+        "loglevel": "^1.9.1"
       },
       "engines": {
         "node": ">=18.x",
@@ -5027,12 +5086,34 @@
         "@babel/runtime": "7.x"
       }
     },
+    "node_modules/@toruslabs/fetch-node-details/node_modules/@toruslabs/http-helpers": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/@toruslabs/http-helpers/-/http-helpers-6.1.1.tgz",
+      "integrity": "sha512-bJYOaltRzklzObhRdutT1wau17vXyrCCBKJOeN46F1t99MUXi5udQNeErFOcr9qBsvrq2q67eVBkU5XOeBMX5A==",
+      "dependencies": {
+        "lodash.merge": "^4.6.2",
+        "loglevel": "^1.9.1"
+      },
+      "engines": {
+        "node": ">=18.x",
+        "npm": ">=9.x"
+      },
+      "peerDependencies": {
+        "@babel/runtime": "^7.x",
+        "@sentry/types": "^7.x"
+      },
+      "peerDependenciesMeta": {
+        "@sentry/types": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@toruslabs/fnd-base": {
-      "version": "13.1.1",
-      "resolved": "https://registry.npmjs.org/@toruslabs/fnd-base/-/fnd-base-13.1.1.tgz",
-      "integrity": "sha512-tfEAtQVm8K4YOvF7NAc6qCBpXPz1vThYU5vD+7rxqFirnA/h7fUCKaSTLIE+9LWEHPJ1zBVybYU4S6kX87o+Kg==",
+      "version": "13.4.0",
+      "resolved": "https://registry.npmjs.org/@toruslabs/fnd-base/-/fnd-base-13.4.0.tgz",
+      "integrity": "sha512-Fc3uFj5ZfDmR4uWAMRyLVvBsSLXJWBHQoHOsucVqvxXpNeLSrFEQIxqlXsgjRfQPOSKtpljSl1MaXibhb5/hfA==",
       "dependencies": {
-        "@toruslabs/constants": "^13.1.0"
+        "@toruslabs/constants": "^13.4.0"
       },
       "engines": {
         "node": ">=18.x",
@@ -5065,15 +5146,73 @@
       }
     },
     "node_modules/@toruslabs/metadata-helpers": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/@toruslabs/metadata-helpers/-/metadata-helpers-5.0.1.tgz",
-      "integrity": "sha512-W3PcM8uluKDCJXKG/LdJ72irfTodOtU9dnES/rYfalhb0edaWwRb6SMULHpl2NxytY9ykrL6uPv+90BSMWH9VQ==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/@toruslabs/metadata-helpers/-/metadata-helpers-5.1.0.tgz",
+      "integrity": "sha512-7fdqKuWUaJT/ng+PlqrA4XKkn8Dij4JJozfv/4gHTi0f/6JFncpzIces09jTV70hCf0JIsTCvIDlzKOdJ+aeZg==",
       "dependencies": {
         "@toruslabs/eccrypto": "^4.0.0",
-        "@toruslabs/http-helpers": "^5.0.0",
-        "elliptic": "^6.5.4",
-        "ethereum-cryptography": "^2.1.2",
-        "json-stable-stringify": "^1.0.2"
+        "@toruslabs/http-helpers": "^6.1.0",
+        "elliptic": "^6.5.5",
+        "ethereum-cryptography": "^2.1.3",
+        "json-stable-stringify": "^1.1.1"
+      },
+      "engines": {
+        "node": ">=18.x",
+        "npm": ">=9.x"
+      },
+      "peerDependencies": {
+        "@babel/runtime": "7.x"
+      }
+    },
+    "node_modules/@toruslabs/metadata-helpers/node_modules/@toruslabs/http-helpers": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/@toruslabs/http-helpers/-/http-helpers-6.1.1.tgz",
+      "integrity": "sha512-bJYOaltRzklzObhRdutT1wau17vXyrCCBKJOeN46F1t99MUXi5udQNeErFOcr9qBsvrq2q67eVBkU5XOeBMX5A==",
+      "dependencies": {
+        "lodash.merge": "^4.6.2",
+        "loglevel": "^1.9.1"
+      },
+      "engines": {
+        "node": ">=18.x",
+        "npm": ">=9.x"
+      },
+      "peerDependencies": {
+        "@babel/runtime": "^7.x",
+        "@sentry/types": "^7.x"
+      },
+      "peerDependenciesMeta": {
+        "@sentry/types": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@toruslabs/metadata-helpers/node_modules/bn.js": {
+      "version": "4.12.0",
+      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+    },
+    "node_modules/@toruslabs/metadata-helpers/node_modules/elliptic": {
+      "version": "6.5.5",
+      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz",
+      "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==",
+      "dependencies": {
+        "bn.js": "^4.11.9",
+        "brorand": "^1.1.0",
+        "hash.js": "^1.0.0",
+        "hmac-drbg": "^1.0.1",
+        "inherits": "^2.0.4",
+        "minimalistic-assert": "^1.0.1",
+        "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
+    "node_modules/@toruslabs/openlogin-session-manager": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/@toruslabs/openlogin-session-manager/-/openlogin-session-manager-3.1.1.tgz",
+      "integrity": "sha512-hikBX7CdiWCTNNfsiacPM9O+2Ysf6ULcn9E4og9BVSt4brduUQoa9ioNY6G5m0eH/xQCzRsLpSRGNuOPTBJm3w==",
+      "dependencies": {
+        "@toruslabs/base-session-manager": "^3.1.1",
+        "@toruslabs/eccrypto": "^4.0.0",
+        "@toruslabs/metadata-helpers": "5.1.0"
       },
       "engines": {
         "node": ">=18.x",
@@ -5209,18 +5348,18 @@
       }
     },
     "node_modules/@toruslabs/torus.js": {
-      "version": "11.0.6",
-      "resolved": "https://registry.npmjs.org/@toruslabs/torus.js/-/torus.js-11.0.6.tgz",
-      "integrity": "sha512-l+Ba/DX1L2cLngiL08r8zZmRQ/A3MJ4pl20MaTzQuwxS2OfOXSReKld4YOWHwo5NEd36PHZdZ43qbh0NrzrwVQ==",
+      "version": "12.3.6",
+      "resolved": "https://registry.npmjs.org/@toruslabs/torus.js/-/torus.js-12.3.6.tgz",
+      "integrity": "sha512-cXPC+Cyw4W05eZW784pPd+QyJRmvK54wTYbBocU9gVaqZhGXNryVrqhBYZSOmAr3pUtOubjRZfeXCZLn7BA77Q==",
       "dependencies": {
-        "@toruslabs/constants": "^13.0.1",
+        "@toruslabs/constants": "^13.4.0",
         "@toruslabs/eccrypto": "^4.0.0",
-        "@toruslabs/http-helpers": "^5.0.0",
+        "@toruslabs/http-helpers": "^6.1.1",
         "bn.js": "^5.2.1",
-        "elliptic": "^6.5.4",
-        "ethereum-cryptography": "^2.1.2",
-        "json-stable-stringify": "^1.0.2",
-        "loglevel": "^1.8.1"
+        "elliptic": "^6.5.5",
+        "ethereum-cryptography": "^2.1.3",
+        "json-stable-stringify": "^1.1.1",
+        "loglevel": "^1.9.1"
       },
       "engines": {
         "node": ">=18.x",
@@ -5230,6 +5369,47 @@
         "@babel/runtime": "7.x"
       }
     },
+    "node_modules/@toruslabs/torus.js/node_modules/@toruslabs/http-helpers": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/@toruslabs/http-helpers/-/http-helpers-6.1.1.tgz",
+      "integrity": "sha512-bJYOaltRzklzObhRdutT1wau17vXyrCCBKJOeN46F1t99MUXi5udQNeErFOcr9qBsvrq2q67eVBkU5XOeBMX5A==",
+      "dependencies": {
+        "lodash.merge": "^4.6.2",
+        "loglevel": "^1.9.1"
+      },
+      "engines": {
+        "node": ">=18.x",
+        "npm": ">=9.x"
+      },
+      "peerDependencies": {
+        "@babel/runtime": "^7.x",
+        "@sentry/types": "^7.x"
+      },
+      "peerDependenciesMeta": {
+        "@sentry/types": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@toruslabs/torus.js/node_modules/elliptic": {
+      "version": "6.5.5",
+      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz",
+      "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==",
+      "dependencies": {
+        "bn.js": "^4.11.9",
+        "brorand": "^1.1.0",
+        "hash.js": "^1.0.0",
+        "hmac-drbg": "^1.0.1",
+        "inherits": "^2.0.4",
+        "minimalistic-assert": "^1.0.1",
+        "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
+    "node_modules/@toruslabs/torus.js/node_modules/elliptic/node_modules/bn.js": {
+      "version": "4.12.0",
+      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+      "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+    },
     "node_modules/@toruslabs/tweetnacl-js": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/@toruslabs/tweetnacl-js/-/tweetnacl-js-1.0.4.tgz",
@@ -14145,9 +14325,12 @@
       "dev": true
     },
     "node_modules/jwt-decode": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz",
-      "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A=="
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz",
+      "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==",
+      "engines": {
+        "node": ">=18"
+      }
     },
     "node_modules/karma": {
       "version": "6.4.3",
@@ -18381,9 +18564,12 @@
       }
     },
     "node_modules/oblivious-set": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.1.1.tgz",
-      "integrity": "sha512-Oh+8fK09mgGmAshFdH6hSVco6KZmd1tTwNFWj35OvzdmJTMZtAkbn05zar2iG3v6sDs1JLEtOiBGNb6BHwkb2w=="
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.4.0.tgz",
+      "integrity": "sha512-szyd0ou0T8nsAqHtprRcP3WidfsN1TnAR5yWXf2mFCEr5ek3LEOkT6EZ/92Xfs74HIdyhG5WkGxIssMU0jBaeg==",
+      "engines": {
+        "node": ">=16"
+      }
     },
     "node_modules/oboe": {
       "version": "2.1.5",
@@ -22687,9 +22873,9 @@
       }
     },
     "node_modules/socket.io-client": {
-      "version": "4.7.4",
-      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.4.tgz",
-      "integrity": "sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==",
+      "version": "4.7.5",
+      "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz",
+      "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==",
       "dependencies": {
         "@socket.io/component-emitter": "~3.1.0",
         "debug": "~4.3.2",
@@ -25969,10 +26155,10 @@
       "version": "9.1.0",
       "license": "MIT",
       "dependencies": {
-        "@toruslabs/customauth": "^16.0.6",
+        "@toruslabs/customauth": "^18.1.0",
         "@toruslabs/eccrypto": "^4.0.0",
         "@toruslabs/rss-client": "^1.5.0",
-        "@toruslabs/torus.js": "^11.0.6",
+        "@toruslabs/torus.js": "^12.3.6",
         "bn.js": "^5.2.1",
         "elliptic": "^6.5.4",
         "serialize-error": "^8.1.0",
@@ -25998,7 +26184,7 @@
         "@toruslabs/eccrypto": "^4.0.0",
         "@toruslabs/http-helpers": "^5.0.0",
         "@toruslabs/rss-client": "^1.5.0",
-        "@toruslabs/torus.js": "^11.0.6",
+        "@toruslabs/torus.js": "^12.3.6",
         "bn.js": "^5.2.1",
         "elliptic": "^6.5.4",
         "json-stable-stringify": "^1.0.2"
@@ -26036,7 +26222,7 @@
         "@tkey-mpc/seed-phrase": "^9.1.0",
         "@toruslabs/eccrypto": "^4.0.0",
         "@toruslabs/http-helpers": "^5.0.0",
-        "@toruslabs/torus.js": "^11.0.6",
+        "@toruslabs/torus.js": "^12.3.6",
         "jsrsasign": "^10.6.1",
         "web3-utils": "^1.8.1"
       },
@@ -26128,8 +26314,8 @@
       "dependencies": {
         "@tkey-mpc/common-types": "^9.1.0",
         "@tkey-mpc/service-provider-base": "^9.1.0",
-        "@toruslabs/customauth": "^16.0.6",
-        "@toruslabs/torus.js": "^11.0.6",
+        "@toruslabs/customauth": "^18.1.0",
+        "@toruslabs/torus.js": "^12.3.6",
         "bn.js": "^5.2.1",
         "elliptic": "^6.5.4"
       },
diff --git a/packages/common-types/package.json b/packages/common-types/package.json
index d0e40c39..25470b78 100644
--- a/packages/common-types/package.json
+++ b/packages/common-types/package.json
@@ -43,10 +43,10 @@
     "@babel/runtime": "7.x"
   },
   "dependencies": {
-    "@toruslabs/customauth": "^16.0.6",
+    "@toruslabs/customauth": "^18.1.0",
     "@toruslabs/eccrypto": "^4.0.0",
     "@toruslabs/rss-client": "^1.5.0",
-    "@toruslabs/torus.js": "^11.0.6",
+    "@toruslabs/torus.js": "^12.3.6",
     "bn.js": "^5.2.1",
     "elliptic": "^6.5.4",
     "serialize-error": "^8.1.0",
diff --git a/packages/common-types/src/baseTypes/aggregateTypes.ts b/packages/common-types/src/baseTypes/aggregateTypes.ts
index 2e94ec90..0a846175 100644
--- a/packages/common-types/src/baseTypes/aggregateTypes.ts
+++ b/packages/common-types/src/baseTypes/aggregateTypes.ts
@@ -249,7 +249,7 @@ export type IAuthMetadatas = IAuthMetadata[];
 export type ShareStores = ShareStore[];
 export type IMessageMetadatas = IMessageMetadata[];
 export type LocalTransitionShares = BN[];
-export type LocalTransitionData = [...IAuthMetadatas, ...ShareStores, ...IMessageMetadatas];
+export type LocalTransitionData = (IAuthMetadata | IMessageMetadata | ShareStore)[];
 export type LocalMetadataTransitions = [LocalTransitionShares, LocalTransitionData];
 
 export interface ITKeyApi {
diff --git a/packages/core/package.json b/packages/core/package.json
index 275e1c91..27fd669c 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -38,7 +38,7 @@
     "@toruslabs/eccrypto": "^4.0.0",
     "@toruslabs/http-helpers": "^5.0.0",
     "@toruslabs/rss-client": "^1.5.0",
-    "@toruslabs/torus.js": "^11.0.6",
+    "@toruslabs/torus.js": "^12.3.6",
     "bn.js": "^5.2.1",
     "elliptic": "^6.5.4",
     "json-stable-stringify": "^1.0.2"
diff --git a/packages/default/package.json b/packages/default/package.json
index 40ba48f7..d6cdec1d 100644
--- a/packages/default/package.json
+++ b/packages/default/package.json
@@ -50,7 +50,7 @@
     "@tkey-mpc/seed-phrase": "^9.1.0",
     "@toruslabs/eccrypto": "^4.0.0",
     "@toruslabs/http-helpers": "^5.0.0",
-    "@toruslabs/torus.js": "^11.0.6",
+    "@toruslabs/torus.js": "^12.3.6",
     "jsrsasign": "^10.6.1",
     "web3-utils": "^1.8.1"
   },
diff --git a/packages/default/test/helpers.js b/packages/default/test/helpers.js
index 0f1cecf2..bfa2e807 100644
--- a/packages/default/test/helpers.js
+++ b/packages/default/test/helpers.js
@@ -2,6 +2,7 @@ import { ecCurve, getPubKeyPoint, Point } from "@tkey-mpc/common-types";
 import ServiceProviderBase from "@tkey-mpc/service-provider-base";
 import ServiceProviderTorus from "@tkey-mpc/service-provider-torus";
 import TorusStorageLayer, { MockStorageLayer } from "@tkey-mpc/storage-layer-torus";
+// eslint-disable-next-line import/no-extraneous-dependencies
 import { generatePrivate } from "@toruslabs/eccrypto";
 import { generatePolynomial, getLagrangeCoeffs, getShare, hexPoint, MockServer, postEndpoint } from "@toruslabs/rss-client";
 // eslint-disable-next-line import/no-extraneous-dependencies
diff --git a/packages/default/test/shared.js b/packages/default/test/shared.js
index 25022b67..d088b659 100644
--- a/packages/default/test/shared.js
+++ b/packages/default/test/shared.js
@@ -124,6 +124,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
       strictEqual(tss2Pub.x.toString(16, 64), _tss2Pub.x.toString(16, 64));
       strictEqual(tss2Pub.y.toString(16, 64), _tss2Pub.y.toString(16, 64));
     });
+
     it("#should be able to reconstruct tss key from factor key (tss2) when initializing a key with useTSS true", async function () {
       const sp = customSP;
 
@@ -535,6 +536,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         strictEqual(tssPrivKey.toString(16, 64), newTSSPrivKey.toString(16, 64));
       }
     });
+
     describe("with tss, tkey share deletion", function () {
       let deletedShareIndex;
       let shareStoreAfterDelete;
@@ -542,6 +544,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
       let tbTssInitResp;
       let oldFactorKey;
       let newFactorKey;
+
       before(`#should be able to generate and delete a share, manualSync=${mode}`, async function () {
         const sp = customSP;
 
@@ -686,12 +689,15 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         // TODO: check that TSS is reset and still able to use TSS methods
       });
     });
+
     describe("with tss, tkey serialization/deserialization", function () {
       let tb;
+
       beforeEach("Setup ThresholdKey", async function () {
         if (!customSP.useTSS) this.skip();
         tb = new ThresholdKey({ serviceProvider: customSP, storageLayer: customSL, manualSync: mode });
       });
+
       it(`#should serialize and deserialize correctly without tkeyArgs, manualSync=${mode}`, async function () {
         if (!customSP.useTSS) this.skip();
         const sp = customSP;
@@ -750,6 +756,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
           .umod(ecCurve.n);
         strictEqual(tssPrivKey.toString("hex"), tssPrivKey2.toString("hex"), "Incorrect tss key");
       });
+
       it(`#should serialize and deserialize correctly with tkeyArgs, manualSync=${mode}`, async function () {
         if (!customSP.useTSS) this.skip();
         let userInput = new BN(keccak256(Buffer.from("user answer blublu", "utf-8")).slice(2), "hex");
@@ -855,6 +862,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
           fail("key should be able to be reconstructed");
         }
       });
+
       it(`#should serialize and deserialize correctly keeping localTransitions afterNewKeyAssign, manualSync=${mode}`, async function () {
         if (!customSP.useTSS) this.skip();
         let userInput = new BN(keccak256(Buffer.from("user answer blublu", "utf-8")).slice(2), "hex");
@@ -881,6 +889,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
           fail("key should be able to be reconstructed");
         }
       });
+
       it(`#should not be able to updateSDK with newKeyAssign transitions unsynced, manualSync=${mode}`, async function () {
         await tb._initializeNewKey({ initializeModules: true });
         // TODO: initialize new tss key
@@ -903,9 +912,11 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
   });
   describe("tkey-mpc", function () {
     let tb;
+
     beforeEach("Setup ThresholdKey", async function () {
       tb = new ThresholdKey({ serviceProvider: customSP, storageLayer: customSL, manualSync: mode });
     });
+
     it("#should be able to initializeNewKey using initialize and reconstruct it", async function () {
       const sp = customSP;
       sp.postboxKey = new BN(getTempKey(), "hex");
@@ -918,6 +929,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         fail("key should be able to be reconstructed");
       }
     });
+
     it(`#should be able to reconstruct key when initializing a key, manualSync=${mode}`, async function () {
       const resp1 = await tb._initializeNewKey({ initializeModules: true });
       await tb.syncLocalMetadataTransitions();
@@ -930,6 +942,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         fail("key should be able to be reconstructed");
       }
     });
+
     it(`#should be able to reconstruct key when initializing with user input, manualSync=${mode}`, async function () {
       let determinedShare = new BN(keccak256(Buffer.from("user answer blublu")).slice(2), "hex");
       determinedShare = determinedShare.umod(ecCurve.curve.n);
@@ -945,6 +958,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         fail("key should be able to be reconstructed");
       }
     });
+
     it(`#should be able to reconstruct key when initializing with service provider, manualSync=${mode}`, async function () {
       const importedKey = new BN(generatePrivate());
       const resp1 = await tb._initializeNewKey({ importedKey, initializeModules: true });
@@ -973,6 +987,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         fail("key should be able to be reconstructed");
       }
     });
+
     it(`#should be able to reconstruct key after refresh and initializing with a share, manualSync=${mode}`, async function () {
       let userInput = new BN(keccak256(Buffer.from("user answer blublu")).slice(2), "hex");
       userInput = userInput.umod(ecCurve.curve.n);
@@ -989,6 +1004,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         fail("key should be able to be reconstructed");
       }
     });
+
     it(`#should be able to reconstruct key after refresh and initializing with service provider, manualSync=${mode}`, async function () {
       let userInput = new BN(keccak256(Buffer.from("user answer blublu")).slice(2), "hex");
       userInput = userInput.umod(ecCurve.curve.n);
@@ -1004,6 +1020,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         fail("key should be able to be reconstructed");
       }
     });
+
     it(`#should be able to reconstruct key, even with old metadata, manualSync=${mode}`, async function () {
       const resp1 = await tb._initializeNewKey({ initializeModules: true });
       await tb.syncLocalMetadataTransitions();
@@ -1020,6 +1037,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         fail("key should be able to be reconstructed");
       }
     });
+
     it(`#should be able to not create a new key if initialize is called with neverInitializeNewKey, manualSync=${mode}`, async function () {
       const newSP = getServiceProvider({ type: torusSP.serviceProviderName });
       const tb2 = new ThresholdKey({ serviceProvider: newSP, storageLayer: customSL });
@@ -1027,6 +1045,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         await tb2.initialize({ neverInitializeNewKey: true });
       }, Error);
     });
+
     it(`#should be able to output unavailable share store, manualSync=${mode}`, async function () {
       const resp1 = await tb._initializeNewKey({ initializeModules: true });
       const { newShareStores, newShareIndex } = await tb.generateNewShare();
@@ -1043,6 +1062,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         fail("key should be able to be reconstructed");
       }
     });
+
     it(`#should be able to insert shares from existing tkey using _initializeNewKey, manualSync=${mode}`, async function () {
       const resp1 = await tb._initializeNewKey({ initializeModules: true });
       const { newShareStores: tbShareStore, newShareIndex: tbShareIndex } = await tb.generateNewShare();
@@ -1064,6 +1084,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
       const shareStore = tb3.outputShareStore(tbShareIndex);
       strictEqual(tbShareStore[tbShareIndex.toString("hex")].share.share.toString("hex"), shareStore.share.share.toString("hex"));
     });
+
     it(`#should be able to insert shares from existing tkey using new TKey Instance, manualSync=${mode}`, async function () {
       const tb2 = new ThresholdKey({ serviceProvider: customSP, storageLayer: customSL, manualSync: mode });
       const resp2 = await tb2._initializeNewKey({ initializeModules: true });
@@ -1078,6 +1099,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         fail("key should be able to be reconstructed");
       }
     });
+
     it(`#shouldn't be able to insert shares from random threshold key, manualSync=${mode}`, async function () {
       // wrong tkey instance
       const resp1 = await tb._initializeNewKey({ initializeModules: true });
@@ -1125,6 +1147,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         fail("key should be able to be reconstructed");
       }
     });
+
     it(`#should be able to update metadata, manualSync=${mode}`, async function () {
       const resp1 = await tb._initializeNewKey({ initializeModules: true });
       await tb.syncLocalMetadataTransitions();
@@ -1160,6 +1183,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
     let shareStoreAfterDelete;
     let tb;
     let tbInitResp;
+
     before(`#should be able to generate and delete a share, manualSync=${mode}`, async function () {
       tb = new ThresholdKey({ serviceProvider: customSP, storageLayer: customSL, manualSync: mode });
       tbInitResp = await tb._initializeNewKey({ initializeModules: true });
@@ -1170,12 +1194,14 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
       shareStoreAfterDelete = updatedShareStore.newShareStores;
       await tb.syncLocalMetadataTransitions();
     });
+
     it(`#should be not be able to lookup delete share, manualSync=${mode}`, async function () {
       const newKeys = Object.keys(shareStoreAfterDelete);
       if (newKeys.find((el) => el === deletedShareIndex.toString("hex"))) {
         fail("Unable to delete share index");
       }
     });
+
     it(`#should not be able to delete more than threshold number of shares, manualSync=${mode}`, async function () {
       const { newShareIndex: newShareIndex1 } = await tb.generateNewShare();
       await tb.deleteShare(newShareIndex1);
@@ -1184,12 +1210,14 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         await tb.deleteShare(tbInitResp.deviceShare.share.shareIndex);
       }, Error);
     });
+
     it(`#should not be able to initialize with a deleted share, manualSync=${mode}`, async function () {
       const tb2 = new ThresholdKey({ serviceProvider: customSP, storageLayer: customSL, manualSync: mode });
       await rejects(async function () {
         await tb2.initialize({ withShare: deletedShareStores[deletedShareIndex.toString("hex")] });
       });
     });
+
     it(`#should not be able to add share post deletion, manualSync=${mode}`, async function () {
       const tb2 = new ThresholdKey({ serviceProvider: customSP, storageLayer: customSL, manualSync: mode });
       await tb2.initialize();
@@ -1197,6 +1225,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         await tb2.inputShare(deletedShareStores[deletedShareIndex.toString("hex")].share.share);
       }, Error);
     });
+
     it(`#should be able to delete a user, manualSync=${mode}`, async function () {
       // create 2/4
       await tb._initializeNewKey({ initializeModules: true });
@@ -1223,6 +1252,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         deepStrictEqual(x.message, SHARE_DELETED);
       });
     });
+
     it(`#should be able to reinitialize after wipe, manualSync=${mode}`, async function () {
       // create 2/4
       const resp1 = await tb._initializeNewKey({ initializeModules: true });
@@ -1252,9 +1282,11 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
 
   describe("tkey serialization/deserialization", function () {
     let tb;
+
     beforeEach("Setup ThresholdKey", async function () {
       tb = new ThresholdKey({ serviceProvider: customSP, storageLayer: customSL, manualSync: mode });
     });
+
     it(`#should serialize and deserialize correctly without tkeyArgs, manualSync=${mode}`, async function () {
       let userInput = new BN(keccak256(Buffer.from("user answer blublu")).slice(2), "hex");
       userInput = userInput.umod(ecCurve.curve.n);
@@ -1267,6 +1299,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
       const finalKey = await tb3.reconstructKey();
       strictEqual(finalKey.privKey.toString("hex"), resp1.privKey.toString("hex"), "Incorrect serialization");
     });
+
     it(`#should serialize and deserialize correctly with tkeyArgs, manualSync=${mode}`, async function () {
       let userInput = new BN(keccak256(Buffer.from("user answer blublu")).slice(2), "hex");
       userInput = userInput.umod(ecCurve.curve.n);
@@ -1279,6 +1312,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
       const finalKey = await tb3.reconstructKey();
       strictEqual(finalKey.privKey.toString("hex"), resp1.privKey.toString("hex"), "Incorrect serialization");
     });
+
     it(`#should serialize and deserialize correctly, keeping localTransitions consistent before syncing NewKeyAssign, manualSync=${mode}`, async function () {
       let userInput = new BN(keccak256(Buffer.from("user answer blublu")).slice(2), "hex");
       userInput = userInput.umod(ecCurve.curve.n);
@@ -1306,6 +1340,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         fail("key should be able to be reconstructed");
       }
     });
+
     it(`#should serialize and deserialize correctly keeping localTransitions afterNewKeyAssign, manualSync=${mode}`, async function () {
       let userInput = new BN(keccak256(Buffer.from("user answer blublu")).slice(2), "hex");
       userInput = userInput.umod(ecCurve.curve.n);
@@ -1341,6 +1376,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
       const finalKeyPostSerialization = await tb4.reconstructKey();
       strictEqual(finalKeyPostSerialization.privKey.toString("hex"), resp1.privKey.toString("hex"), "Incorrect serialization");
     });
+
     it(`#should be able to serialize and deserialize without service provider share or the postbox key, manualSync=${mode}`, async function () {
       const customSP2 = getServiceProvider({ type: torusSP.serviceProviderName });
       const customSL2 = initStorageLayer({ hostUrl: metadataURL });
@@ -1361,6 +1397,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
       const tb3Key = await tb3.reconstructKey();
       strictEqual(tb3Key.privKey.toString("hex"), resp1.privKey.toString("hex"), "Incorrect serialization");
     });
+
     it(`#should not be able to updateSDK with newKeyAssign transitions unsynced, manualSync=${mode}`, async function () {
       await tb._initializeNewKey({ initializeModules: true });
       const stringified = JSON.stringify(tb);
@@ -1390,6 +1427,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
       const resp = await storageLayer.getMetadata({ privKey: tsp.postboxKey });
       deepStrictEqual(resp, message, "set and get message should be equal");
     });
+
     it(`#should get or set with specified private key correctly, manualSync=${mode}`, async function () {
       const privKey = generatePrivate().toString("hex");
       const privKeyBN = new BN(privKey, 16);
@@ -1399,6 +1437,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
       const resp = await storageLayer.getMetadata({ privKey: privKeyBN });
       deepStrictEqual(resp, message, "set and get message should be equal");
     });
+
     it(`#should be able to get/set bulk correctly, manualSync=${mode}`, async function () {
       const privkeys = [];
       const messages = [];
@@ -1417,6 +1456,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
 
   describe("SecurityQuestionsModule", function () {
     let tb;
+
     beforeEach("initialize security questions module", async function () {
       tb = new ThresholdKey({
         serviceProvider: customSP,
@@ -1425,6 +1465,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         manualSync: mode,
       });
     });
+
     it(`#should be able to reconstruct key and initialize a key with security questions, manualSync=${mode}`, async function () {
       const resp1 = await tb._initializeNewKey({ initializeModules: true });
       await rejects(async function () {
@@ -1454,6 +1495,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         fail("key should be able to be reconstructed");
       }
     });
+
     it(`#should be able to delete and add security questions, manualSync=${mode}`, async function () {
       const resp1 = await tb._initializeNewKey({ initializeModules: true });
       await tb.modules.securityQuestions.generateNewShareWithSecurityQuestions("blublu", "who is your cat?");
@@ -1481,6 +1523,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         fail("key should be able to be reconstructed");
       }
     });
+
     it(`#should be able to reconstruct key and initialize a key with security questions after refresh, manualSync=${mode}`, async function () {
       const resp1 = await tb._initializeNewKey({ initializeModules: true });
       await tb.modules.securityQuestions.generateNewShareWithSecurityQuestions("blublu", "who is your cat?");
@@ -1501,6 +1544,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         fail("key should be able to be reconstructed");
       }
     });
+
     it(`#should be able to change password, manualSync=${mode}`, async function () {
       const resp1 = await tb._initializeNewKey({ initializeModules: true });
 
@@ -1527,6 +1571,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         fail("key should be able to be reconstructed");
       }
     });
+
     it(`#should be able to change password and serialize, manualSync=${mode}`, async function () {
       const resp1 = await tb._initializeNewKey({ initializeModules: true });
       await tb.modules.securityQuestions.generateNewShareWithSecurityQuestions("blublu", "who is your cat?");
@@ -1552,6 +1597,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
       const finalKeyPostSerialization = await tb3.reconstructKey();
       strictEqual(finalKeyPostSerialization.toString("hex"), reconstructedKey.toString("hex"), "Incorrect serialization");
     });
+
     it(`#should be able to get answers, even when they change, manualSync=${mode}`, async function () {
       tb = new ThresholdKey({
         serviceProvider: customSP,
@@ -1593,6 +1639,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
 
   describe("ShareTransferModule", function () {
     let tb;
+
     beforeEach("Setup ThresholdKey", async function () {
       tb = new ThresholdKey({
         serviceProvider: customSP,
@@ -1601,6 +1648,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         modules: { shareTransfer: new ShareTransferModule() },
       });
     });
+
     it(`#should be able to transfer share via the module, manualSync=${mode}`, async function () {
       const resp1 = await tb._initializeNewKey({ initializeModules: true });
       const result = await tb.generateNewShare();
@@ -1674,6 +1722,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         fail("key should be able to be reconstructed");
       }
     });
+
     it(`#should be able to delete share transfer from another device, manualSync=${mode}`, async function () {
       await tb._initializeNewKey({ initializeModules: true });
       await tb.syncLocalMetadataTransitions();
@@ -1694,6 +1743,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         fail("Unable to delete share transfer request");
       }
     });
+
     it(`#should be able to reset share transfer store, manualSync=${mode}`, async function () {
       await tb._initializeNewKey({ initializeModules: true });
       await tb.syncLocalMetadataTransitions();
@@ -1749,6 +1799,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
     let metamaskSeedPhraseFormat;
     let secp256k1Format;
     let ed25519privateKeyFormat;
+
     beforeEach("Setup ThresholdKey", async function () {
       metamaskSeedPhraseFormat = new MetamaskSeedPhraseFormat(new JsonRpcProvider("https://mainnet.infura.io/v3/bca735fdbba0408bb09471e86463ae68"));
       secp256k1Format = new SECP256K1Format();
@@ -1763,6 +1814,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         },
       });
     });
+
     it(`#should not to able to initalize without seedphrase formats, manualSync=${mode}`, async function () {
       const seedPhraseToSet = "seed sock milk update focus rotate barely fade car face mechanic mercy";
       const tb2 = new ThresholdKey({
@@ -1792,6 +1844,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         await tb2.modules.privateKeyModule.setPrivateKey("secp256k1n", actualPrivateKeys[0].toString("hex"));
       }, Error);
     });
+
     it(`#should get/set multiple seed phrase, manualSync=${mode}`, async function () {
       const seedPhraseToSet = "seed sock milk update focus rotate barely fade car face mechanic mercy";
       const seedPhraseToSet2 = "object brass success calm lizard science syrup planet exercise parade honey impulse";
@@ -1830,6 +1883,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         ],
       });
     });
+
     it(`#should be able to derive keys, manualSync=${mode}`, async function () {
       const seedPhraseToSet = "seed sock milk update focus rotate barely fade car face mechanic mercy";
       await tb._initializeNewKey({ initializeModules: true });
@@ -2203,9 +2257,11 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
       resp1 = await tb._initializeNewKey({ initializeModules: true });
       await tb.syncLocalMetadataTransitions();
     });
+
     afterEach(function () {
       sandbox.restore();
     });
+
     it(`#should throw error code 1101 if metadata is undefined, in manualSync: ${mode}`, async function () {
       const tb2 = new ThresholdKey({ serviceProvider: customSP, storageLayer: customSL, manualSync: mode });
       await rejects(
@@ -2255,6 +2311,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         }
       );
     });
+
     it(`#should throw error code 1301 if privKey is not available, in manualSync: ${mode}`, async function () {
       const tb2 = new ThresholdKey({ serviceProvider: customSP, storageLayer: customSL, manualSync: mode });
       await tb2.initialize({ neverInitializeNewKey: true });
@@ -2286,6 +2343,7 @@ export const sharedTestCases = (mode, torusSP, storageLayer) => {
         }
       );
     });
+
     it(`#should throw error code 1302 if not enough shares are avaible for reconstruction, in manualSync: ${mode}`, async function () {
       const tb2 = new ThresholdKey({ serviceProvider: customSP, storageLayer: customSL, manualSync: mode });
       await tb2.initialize({ neverInitializeNewKey: true });
diff --git a/packages/service-provider-torus/package.json b/packages/service-provider-torus/package.json
index 1b98630b..b4cbc7a9 100644
--- a/packages/service-provider-torus/package.json
+++ b/packages/service-provider-torus/package.json
@@ -40,8 +40,8 @@
   "dependencies": {
     "@tkey-mpc/common-types": "^9.1.0",
     "@tkey-mpc/service-provider-base": "^9.1.0",
-    "@toruslabs/customauth": "^16.0.6",
-    "@toruslabs/torus.js": "^11.0.6",
+    "@toruslabs/customauth": "^18.1.0",
+    "@toruslabs/torus.js": "^12.3.6",
     "bn.js": "^5.2.1",
     "elliptic": "^6.5.4"
   },