Repository: pillarwallet/x
Pull request #254: fix/wallet-connect-qa-fixes
Author: login: RanaBug
Created: 2025-03-12T17:04:46Z | Merged: 2025-03-13T09:55:36Z

## Description
<!--- Provide a general summary of your changes in the Title above -->
- WalletConnect sendTransaction request send back a transaction hash to the dApp.

## How Has This Been Tested?
<!--- Please describe in detail how you tested your changes. -->
<!--- Include details of your testing environment, and the tests you ran to -->
<!--- see how your change affects other areas of the code, etc. -->
- Existing Unit Tests and Manual Testing

## Screenshots (if appropriate):

## Types of changes
<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->
- [x] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)


<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Enhanced WalletConnect transaction processing with real-time status updates and a timeout mechanism that alerts users if a transaction takes too long.
  - Added functionality for managing transaction hashes within the WalletConnect integration.
  
- **Bug Fixes**
  - Fixed a minor UI inconsistency with the send action for a smoother experience.
  
- **Chores**
  - Updated internal dependencies to further improve overall system stability and performance.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->


Diff:
diff --git a/package-lock.json b/package-lock.json
index 4f6bb62a..48813d46 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,7 +12,7 @@
         "@emotion/react": "^11.11.4",
         "@emotion/styled": "^11.11.5",
         "@etherspot/data-utils": "^1.1.1",
-        "@etherspot/transaction-kit": "^1.0.1",
+        "@etherspot/transaction-kit": "^1.0.4",
         "@hypelab/sdk-react": "^1.0.4",
         "@lifi/types": "^9.2.0",
         "@mui/icons-material": "^5.16.6",
@@ -90,7 +90,7 @@
         "terser-webpack-plugin": "^5.3.14",
         "use-mailchimp-form": "^3.1.0",
         "use-resize-observer": "^9.1.0",
-        "viem": "^2.6.1",
+        "viem": "2.21.53",
         "webfontloader": "^1.6.28"
       },
       "devDependencies": {
@@ -3568,13 +3568,13 @@
       }
     },
     "node_modules/@etherspot/transaction-kit": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/@etherspot/transaction-kit/-/transaction-kit-1.0.2.tgz",
-      "integrity": "sha512-2RY5ftK1aMrxCJ8VaC3oVVrAXu1Ph0PDJGW0/98Pg5n10ibx/Rme3jhifjKnxtAIBPB7GuPm2RGMnyly/t8T1Q==",
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/@etherspot/transaction-kit/-/transaction-kit-1.0.4.tgz",
+      "integrity": "sha512-Roa7nZEg0yBCFoia8NE7uzQGJYtXILJUS4aD3duBIuKOrLmOjGmTAfJ2eLCKl1VTcPbIP1R7vAelRzZ8d+vl0Q==",
       "dependencies": {
         "@etherspot/data-utils": "^1.1.1",
         "@etherspot/eip1271-verification-util": "0.1.2",
-        "@etherspot/modular-sdk": "^5.0.0",
+        "@etherspot/modular-sdk": "^5.1.0",
         "@ethersproject/abi": "^5.7.0",
         "@lifi/types": "^9.2.0",
         "buffer": "^6.0.3",
@@ -3592,134 +3592,6 @@
         "react": ">=16.13.0"
       }
     },
-    "node_modules/@etherspot/transaction-kit/node_modules/@noble/curves": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.6.0.tgz",
-      "integrity": "sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==",
-      "dependencies": {
-        "@noble/hashes": "1.5.0"
-      },
-      "engines": {
-        "node": "^14.21.3 || >=16"
-      },
-      "funding": {
-        "url": "https://paulmillr.com/funding/"
-      }
-    },
-    "node_modules/@etherspot/transaction-kit/node_modules/@noble/hashes": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz",
-      "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==",
-      "engines": {
-        "node": "^14.21.3 || >=16"
-      },
-      "funding": {
-        "url": "https://paulmillr.com/funding/"
-      }
-    },
-    "node_modules/@etherspot/transaction-kit/node_modules/@scure/bip32": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.5.0.tgz",
-      "integrity": "sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==",
-      "dependencies": {
-        "@noble/curves": "~1.6.0",
-        "@noble/hashes": "~1.5.0",
-        "@scure/base": "~1.1.7"
-      },
-      "funding": {
-        "url": "https://paulmillr.com/funding/"
-      }
-    },
-    "node_modules/@etherspot/transaction-kit/node_modules/@scure/bip39": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.4.0.tgz",
-      "integrity": "sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==",
-      "dependencies": {
-        "@noble/hashes": "~1.5.0",
-        "@scure/base": "~1.1.8"
-      },
-      "funding": {
-        "url": "https://paulmillr.com/funding/"
-      }
-    },
-    "node_modules/@etherspot/transaction-kit/node_modules/abitype": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.6.tgz",
-      "integrity": "sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A==",
-      "funding": {
-        "url": "https://github.com/sponsors/wevm"
-      },
-      "peerDependencies": {
-        "typescript": ">=5.0.4",
-        "zod": "^3 >=3.22.0"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        },
-        "zod": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@etherspot/transaction-kit/node_modules/ox": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/ox/-/ox-0.1.2.tgz",
-      "integrity": "sha512-ak/8K0Rtphg9vnRJlbOdaX9R7cmxD2MiSthjWGaQdMk3D7hrAlDoM+6Lxn7hN52Za3vrXfZ7enfke/5WjolDww==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/wevm"
-        }
-      ],
-      "dependencies": {
-        "@adraffy/ens-normalize": "^1.10.1",
-        "@noble/curves": "^1.6.0",
-        "@noble/hashes": "^1.5.0",
-        "@scure/bip32": "^1.5.0",
-        "@scure/bip39": "^1.4.0",
-        "abitype": "^1.0.6",
-        "eventemitter3": "5.0.1"
-      },
-      "peerDependencies": {
-        "typescript": ">=5.4.0"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@etherspot/transaction-kit/node_modules/viem": {
-      "version": "2.21.53",
-      "resolved": "https://registry.npmjs.org/viem/-/viem-2.21.53.tgz",
-      "integrity": "sha512-0pY8clBacAwzc59iV1vY4a6U4xvRlA5tAuhClJCKvqA6rXJzmNMMvxQ0EG79lkHr7WtBEruXz8nAmONXwnq4EQ==",
-      "funding": [
-        {
-          "type": "github",
-          "url": "https://github.com/sponsors/wevm"
-        }
-      ],
-      "dependencies": {
-        "@noble/curves": "1.6.0",
-        "@noble/hashes": "1.5.0",
-        "@scure/bip32": "1.5.0",
-        "@scure/bip39": "1.4.0",
-        "abitype": "1.0.6",
-        "isows": "1.0.6",
-        "ox": "0.1.2",
-        "webauthn-p256": "0.0.10",
-        "ws": "8.18.0"
-      },
-      "peerDependencies": {
-        "typescript": ">=5.0.4"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
     "node_modules/@ethersproject/abi": {
       "version": "5.8.0",
       "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz",
@@ -7680,11 +7552,121 @@
         "viem": ">=2.23.0"
       }
     },
+    "node_modules/@reown/appkit-common/node_modules/@scure/base": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.4.tgz",
+      "integrity": "sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ==",
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
+    "node_modules/@reown/appkit-common/node_modules/@scure/bip32": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz",
+      "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==",
+      "dependencies": {
+        "@noble/curves": "~1.8.1",
+        "@noble/hashes": "~1.7.1",
+        "@scure/base": "~1.2.2"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
+    "node_modules/@reown/appkit-common/node_modules/@scure/bip39": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz",
+      "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==",
+      "dependencies": {
+        "@noble/hashes": "~1.7.1",
+        "@scure/base": "~1.2.4"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
     "node_modules/@reown/appkit-common/node_modules/dayjs": {
       "version": "1.11.10",
       "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
       "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
     },
+    "node_modules/@reown/appkit-common/node_modules/ox": {
+      "version": "0.6.9",
+      "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.9.tgz",
+      "integrity": "sha512-wi5ShvzE4eOcTwQVsIPdFr+8ycyX+5le/96iAJutaZAvCes1J0+RvpEPg5QDPDiaR0XQQAvZVl7AwqQcINuUug==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/wevm"
+        }
+      ],
+      "dependencies": {
+        "@adraffy/ens-normalize": "^1.10.1",
+        "@noble/curves": "^1.6.0",
+        "@noble/hashes": "^1.5.0",
+        "@scure/bip32": "^1.5.0",
+        "@scure/bip39": "^1.4.0",
+        "abitype": "^1.0.6",
+        "eventemitter3": "5.0.1"
+      },
+      "peerDependencies": {
+        "typescript": ">=5.4.0"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@reown/appkit-common/node_modules/viem": {
+      "version": "2.23.9",
+      "resolved": "https://registry.npmjs.org/viem/-/viem-2.23.9.tgz",
+      "integrity": "sha512-y8VLPfKukrstZKTerS9bm45ajZ22wUyStF+VquK3I2OovWLOyXSbQmJWei8syMFhp1uwhxh1tb0fAdx0WSRZWg==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/wevm"
+        }
+      ],
+      "dependencies": {
+        "@noble/curves": "1.8.1",
+        "@noble/hashes": "1.7.1",
+        "@scure/bip32": "1.6.2",
+        "@scure/bip39": "1.5.4",
+        "abitype": "1.0.8",
+        "isows": "1.0.6",
+        "ox": "0.6.9",
+        "ws": "8.18.1"
+      },
+      "peerDependencies": {
+        "typescript": ">=5.0.4"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@reown/appkit-common/node_modules/ws": {
+      "version": "8.18.1",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz",
+      "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==",
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@reown/appkit-core": {
       "version": "1.6.9",
       "resolved": "https://registry.npmjs.org/@reown/appkit-core/-/appkit-core-1.6.9.tgz",
@@ -7723,6 +7705,39 @@
         "@ethersproject/signing-key": "^5.7.0"
       }
     },
+    "node_modules/@reown/appkit-core/node_modules/@scure/base": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.4.tgz",
+      "integrity": "sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ==",
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
+    "node_modules/@reown/appkit-core/node_modules/@scure/bip32": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz",
+      "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==",
+      "dependencies": {
+        "@noble/curves": "~1.8.1",
+        "@noble/hashes": "~1.7.1",
+        "@scure/base": "~1.2.2"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
+    "node_modules/@reown/appkit-core/node_modules/@scure/bip39": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz",
+      "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==",
+      "dependencies": {
+        "@noble/hashes": "~1.7.1",
+        "@scure/base": "~1.2.4"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
     "node_modules/@reown/appkit-core/node_modules/@walletconnect/core": {
       "version": "2.18.0",
       "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.18.0.tgz",
@@ -7845,6 +7860,34 @@
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
       "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
     },
+    "node_modules/@reown/appkit-core/node_modules/ox": {
+      "version": "0.6.9",
+      "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.9.tgz",
+      "integrity": "sha512-wi5ShvzE4eOcTwQVsIPdFr+8ycyX+5le/96iAJutaZAvCes1J0+RvpEPg5QDPDiaR0XQQAvZVl7AwqQcINuUug==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/wevm"
+        }
+      ],
+      "dependencies": {
+        "@adraffy/ens-normalize": "^1.10.1",
+        "@noble/curves": "^1.6.0",
+        "@noble/hashes": "^1.5.0",
+        "@scure/bip32": "^1.5.0",
+        "@scure/bip39": "^1.4.0",
+        "abitype": "^1.0.6",
+        "eventemitter3": "5.0.1"
+      },
+      "peerDependencies": {
+        "typescript": ">=5.4.0"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@reown/appkit-core/node_modules/unstorage": {
       "version": "1.15.0",
       "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.15.0.tgz",
@@ -7936,6 +7979,55 @@
         }
       }
     },
+    "node_modules/@reown/appkit-core/node_modules/viem": {
+      "version": "2.23.9",
+      "resolved": "https://registry.npmjs.org/viem/-/viem-2.23.9.tgz",
+      "integrity": "sha512-y8VLPfKukrstZKTerS9bm45ajZ22wUyStF+VquK3I2OovWLOyXSbQmJWei8syMFhp1uwhxh1tb0fAdx0WSRZWg==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/wevm"
+        }
+      ],
+      "dependencies": {
+        "@noble/curves": "1.8.1",
+        "@noble/hashes": "1.7.1",
+        "@scure/bip32": "1.6.2",
+        "@scure/bip39": "1.5.4",
+        "abitype": "1.0.8",
+        "isows": "1.0.6",
+        "ox": "0.6.9",
+        "ws": "8.18.1"
+      },
+      "peerDependencies": {
+        "typescript": ">=5.0.4"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@reown/appkit-core/node_modules/ws": {
+      "version": "8.18.1",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz",
+      "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==",
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@reown/appkit-polyfills": {
       "version": "1.6.9",
       "resolved": "https://registry.npmjs.org/@reown/appkit-polyfills/-/appkit-polyfills-1.6.9.tgz",
@@ -8096,6 +8188,39 @@
         "@ethersproject/signing-key": "^5.7.0"
       }
     },
+    "node_modules/@reown/appkit-utils/node_modules/@scure/base": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.4.tgz",
+      "integrity": "sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ==",
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
+    "node_modules/@reown/appkit-utils/node_modules/@scure/bip32": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz",
+      "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==",
+      "dependencies": {
+        "@noble/curves": "~1.8.1",
+        "@noble/hashes": "~1.7.1",
+        "@scure/base": "~1.2.2"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
+    "node_modules/@reown/appkit-utils/node_modules/@scure/bip39": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz",
+      "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==",
+      "dependencies": {
+        "@noble/hashes": "~1.7.1",
+        "@scure/base": "~1.2.4"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
     "node_modules/@reown/appkit-utils/node_modules/@walletconnect/core": {
       "version": "2.18.0",
       "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.18.0.tgz",
@@ -8218,6 +8343,34 @@
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
       "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
     },
+    "node_modules/@reown/appkit-utils/node_modules/ox": {
+      "version": "0.6.9",
+      "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.9.tgz",
+      "integrity": "sha512-wi5ShvzE4eOcTwQVsIPdFr+8ycyX+5le/96iAJutaZAvCes1J0+RvpEPg5QDPDiaR0XQQAvZVl7AwqQcINuUug==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/wevm"
+        }
+      ],
+      "dependencies": {
+        "@adraffy/ens-normalize": "^1.10.1",
+        "@noble/curves": "^1.6.0",
+        "@noble/hashes": "^1.5.0",
+        "@scure/bip32": "^1.5.0",
+        "@scure/bip39": "^1.4.0",
+        "abitype": "^1.0.6",
+        "eventemitter3": "5.0.1"
+      },
+      "peerDependencies": {
+        "typescript": ">=5.4.0"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@reown/appkit-utils/node_modules/unstorage": {
       "version": "1.15.0",
       "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.15.0.tgz",
@@ -8309,6 +8462,55 @@
         }
       }
     },
+    "node_modules/@reown/appkit-utils/node_modules/viem": {
+      "version": "2.23.9",
+      "resolved": "https://registry.npmjs.org/viem/-/viem-2.23.9.tgz",
+      "integrity": "sha512-y8VLPfKukrstZKTerS9bm45ajZ22wUyStF+VquK3I2OovWLOyXSbQmJWei8syMFhp1uwhxh1tb0fAdx0WSRZWg==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/wevm"
+        }
+      ],
+      "dependencies": {
+        "@noble/curves": "1.8.1",
+        "@noble/hashes": "1.7.1",
+        "@scure/bip32": "1.6.2",
+        "@scure/bip39": "1.5.4",
+        "abitype": "1.0.8",
+        "isows": "1.0.6",
+        "ox": "0.6.9",
+        "ws": "8.18.1"
+      },
+      "peerDependencies": {
+        "typescript": ">=5.0.4"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@reown/appkit-utils/node_modules/ws": {
+      "version": "8.18.1",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz",
+      "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==",
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@reown/appkit-wallet": {
       "version": "1.6.9",
       "resolved": "https://registry.npmjs.org/@reown/appkit-wallet/-/appkit-wallet-1.6.9.tgz",
@@ -8354,6 +8556,39 @@
         "@ethersproject/signing-key": "^5.7.0"
       }
     },
+    "node_modules/@reown/appkit/node_modules/@scure/base": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.4.tgz",
+      "integrity": "sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ==",
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
+    "node_modules/@reown/appkit/node_modules/@scure/bip32": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz",
+      "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==",
+      "dependencies": {
+        "@noble/curves": "~1.8.1",
+        "@noble/hashes": "~1.7.1",
+        "@scure/base": "~1.2.2"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
+    "node_modules/@reown/appkit/node_modules/@scure/bip39": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz",
+      "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==",
+      "dependencies": {
+        "@noble/hashes": "~1.7.1",
+        "@scure/base": "~1.2.4"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
     "node_modules/@reown/appkit/node_modules/@walletconnect/core": {
       "version": "2.18.0",
       "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.18.0.tgz",
@@ -8476,6 +8711,34 @@
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
       "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
     },
+    "node_modules/@reown/appkit/node_modules/ox": {
+      "version": "0.6.9",
+      "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.9.tgz",
+      "integrity": "sha512-wi5ShvzE4eOcTwQVsIPdFr+8ycyX+5le/96iAJutaZAvCes1J0+RvpEPg5QDPDiaR0XQQAvZVl7AwqQcINuUug==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/wevm"
+        }
+      ],
+      "dependencies": {
+        "@adraffy/ens-normalize": "^1.10.1",
+        "@noble/curves": "^1.6.0",
+        "@noble/hashes": "^1.5.0",
+        "@scure/bip32": "^1.5.0",
+        "@scure/bip39": "^1.4.0",
+        "abitype": "^1.0.6",
+        "eventemitter3": "5.0.1"
+      },
+      "peerDependencies": {
+        "typescript": ">=5.4.0"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@reown/appkit/node_modules/unstorage": {
       "version": "1.15.0",
       "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.15.0.tgz",
@@ -8567,6 +8830,55 @@
         }
       }
     },
+    "node_modules/@reown/appkit/node_modules/viem": {
+      "version": "2.23.9",
+      "resolved": "https://registry.npmjs.org/viem/-/viem-2.23.9.tgz",
+      "integrity": "sha512-y8VLPfKukrstZKTerS9bm45ajZ22wUyStF+VquK3I2OovWLOyXSbQmJWei8syMFhp1uwhxh1tb0fAdx0WSRZWg==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/wevm"
+        }
+      ],
+      "dependencies": {
+        "@noble/curves": "1.8.1",
+        "@noble/hashes": "1.7.1",
+        "@scure/bip32": "1.6.2",
+        "@scure/bip39": "1.5.4",
+        "abitype": "1.0.8",
+        "isows": "1.0.6",
+        "ox": "0.6.9",
+        "ws": "8.18.1"
+      },
+      "peerDependencies": {
+        "typescript": ">=5.0.4"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@reown/appkit/node_modules/ws": {
+      "version": "8.18.1",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz",
+      "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==",
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@reown/walletkit": {
       "version": "1.2.1",
       "resolved": "https://registry.npmjs.org/@reown/walletkit/-/walletkit-1.2.1.tgz",
@@ -25333,9 +25645,9 @@
       }
     },
     "node_modules/ox": {
-      "version": "0.6.9",
-      "resolved": "https://registry.npmjs.org/ox/-/ox-0.6.9.tgz",
-      "integrity": "sha512-wi5ShvzE4eOcTwQVsIPdFr+8ycyX+5le/96iAJutaZAvCes1J0+RvpEPg5QDPDiaR0XQQAvZVl7AwqQcINuUug==",
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/ox/-/ox-0.1.2.tgz",
+      "integrity": "sha512-ak/8K0Rtphg9vnRJlbOdaX9R7cmxD2MiSthjWGaQdMk3D7hrAlDoM+6Lxn7hN52Za3vrXfZ7enfke/5WjolDww==",
       "funding": [
         {
           "type": "github",
@@ -33408,9 +33720,9 @@
       }
     },
     "node_modules/viem": {
-      "version": "2.23.9",
-      "resolved": "https://registry.npmjs.org/viem/-/viem-2.23.9.tgz",
-      "integrity": "sha512-y8VLPfKukrstZKTerS9bm45ajZ22wUyStF+VquK3I2OovWLOyXSbQmJWei8syMFhp1uwhxh1tb0fAdx0WSRZWg==",
+      "version": "2.21.53",
+      "resolved": "https://registry.npmjs.org/viem/-/viem-2.21.53.tgz",
+      "integrity": "sha512-0pY8clBacAwzc59iV1vY4a6U4xvRlA5tAuhClJCKvqA6rXJzmNMMvxQ0EG79lkHr7WtBEruXz8nAmONXwnq4EQ==",
       "funding": [
         {
           "type": "github",
@@ -33418,14 +33730,15 @@
         }
       ],
       "dependencies": {
-        "@noble/curves": "1.8.1",
-        "@noble/hashes": "1.7.1",
-        "@scure/bip32": "1.6.2",
-        "@scure/bip39": "1.5.4",
-        "abitype": "1.0.8",
+        "@noble/curves": "1.6.0",
+        "@noble/hashes": "1.5.0",
+        "@scure/bip32": "1.5.0",
+        "@scure/bip39": "1.4.0",
+        "abitype": "1.0.6",
         "isows": "1.0.6",
-        "ox": "0.6.9",
-        "ws": "8.18.1"
+        "ox": "0.1.2",
+        "webauthn-p256": "0.0.10",
+        "ws": "8.18.0"
       },
       "peerDependencies": {
         "typescript": ">=5.0.4"
@@ -33436,55 +33749,72 @@
         }
       }
     },
-    "node_modules/viem/node_modules/@scure/base": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.4.tgz",
-      "integrity": "sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ==",
+    "node_modules/viem/node_modules/@noble/curves": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.6.0.tgz",
+      "integrity": "sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==",
+      "dependencies": {
+        "@noble/hashes": "1.5.0"
+      },
+      "engines": {
+        "node": "^14.21.3 || >=16"
+      },
+      "funding": {
+        "url": "https://paulmillr.com/funding/"
+      }
+    },
+    "node_modules/viem/node_modules/@noble/hashes": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz",
+      "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==",
+      "engines": {
+        "node": "^14.21.3 || >=16"
+      },
       "funding": {
         "url": "https://paulmillr.com/funding/"
       }
     },
     "node_modules/viem/node_modules/@scure/bip32": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz",
-      "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==",
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.5.0.tgz",
+      "integrity": "sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==",
       "dependencies": {
-        "@noble/curves": "~1.8.1",
-        "@noble/hashes": "~1.7.1",
-        "@scure/base": "~1.2.2"
+        "@noble/curves": "~1.6.0",
+        "@noble/hashes": "~1.5.0",
+        "@scure/base": "~1.1.7"
       },
       "funding": {
         "url": "https://paulmillr.com/funding/"
       }
     },
     "node_modules/viem/node_modules/@scure/bip39": {
-      "version": "1.5.4",
-      "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz",
-      "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==",
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.4.0.tgz",
+      "integrity": "sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==",
       "dependencies": {
-        "@noble/hashes": "~1.7.1",
-        "@scure/base": "~1.2.4"
+        "@noble/hashes": "~1.5.0",
+        "@scure/base": "~1.1.8"
       },
       "funding": {
         "url": "https://paulmillr.com/funding/"
       }
     },
-    "node_modules/viem/node_modules/ws": {
-      "version": "8.18.1",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz",
-      "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==",
-      "engines": {
-        "node": ">=10.0.0"
+    "node_modules/viem/node_modules/abitype": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.6.tgz",
+      "integrity": "sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A==",
+      "funding": {
+        "url": "https://github.com/sponsors/wevm"
       },
       "peerDependencies": {
-        "bufferutil": "^4.0.1",
-        "utf-8-validate": ">=5.0.2"
+        "typescript": ">=5.0.4",
+        "zod": "^3 >=3.22.0"
       },
       "peerDependenciesMeta": {
-        "bufferutil": {
+        "typescript": {
           "optional": true
         },
-        "utf-8-validate": {
+        "zod": {
           "optional": true
         }
       }
diff --git a/package.json b/package.json
index 9f9c2a25..313f121e 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,7 @@
     "@emotion/react": "^11.11.4",
     "@emotion/styled": "^11.11.5",
     "@etherspot/data-utils": "^1.1.1",
-    "@etherspot/transaction-kit": "^1.0.1",
+    "@etherspot/transaction-kit": "^1.0.4",
     "@hypelab/sdk-react": "^1.0.4",
     "@lifi/types": "^9.2.0",
     "@mui/icons-material": "^5.16.6",
@@ -97,7 +97,7 @@
     "terser-webpack-plugin": "^5.3.14",
     "use-mailchimp-form": "^3.1.0",
     "use-resize-observer": "^9.1.0",
-    "viem": "^2.6.1",
+    "viem": "2.21.53",
     "webfontloader": "^1.6.28"
   },
   "devDependencies": {
diff --git a/src/apps/pillarx-app/components/PointsTile/test/__snapshots__/PointsTile.test.tsx.snap b/src/apps/pillarx-app/components/PointsTile/test/__snapshots__/PointsTile.test.tsx.snap
index f2e4a81a..600d93ea 100644
--- a/src/apps/pillarx-app/components/PointsTile/test/__snapshots__/PointsTile.test.tsx.snap
+++ b/src/apps/pillarx-app/components/PointsTile/test/__snapshots__/PointsTile.test.tsx.snap
@@ -159,21 +159,21 @@ exports[`<PointsTile /> renders correctly and matches snapshot 1`] = `
                         class="desktop:text-[22px] tablet:text-lg mobile:text-lg text-white"
                         data-testid="points-fornatted-timestamp"
                       >
-                        -800
+                        -801
                         <span
                           class="text-base"
                         >
                           d
                         </span>
                          
-                        -10
+                        -14
                         <span
                           class="text-base"
                         >
                           h
                         </span>
                          
-                        -55
+                        -23
                         <span
                           class="text-base"
                         >
@@ -425,21 +425,21 @@ exports[`<PointsTile /> renders correctly and matches snapshot 1`] = `
                       class="desktop:text-[22px] tablet:text-lg mobile:text-lg text-white"
                       data-testid="points-fornatted-timestamp"
                     >
-                      -800
+                      -801
                       <span
                         class="text-base"
                       >
                         d
                       </span>
                        
-                      -10
+                      -14
                       <span
                         class="text-base"
                       >
                         h
                       </span>
                        
-                      -55
+                      -23
                       <span
                         class="text-base"
                       >
diff --git a/src/components/BottomMenuModal/SendModal/SendModal.test.skip.tsx b/src/components/BottomMenuModal/SendModal/SendModal.test.skip.tsx
index af0815d5..29de550d 100644
--- a/src/components/BottomMenuModal/SendModal/SendModal.test.skip.tsx
+++ b/src/components/BottomMenuModal/SendModal/SendModal.test.skip.tsx
@@ -182,6 +182,7 @@ describe('<SendModal />', () => {
       isSending: false,
       containsEstimatingError: false,
       containsSendingError: false,
+      getTransactionHash: async () => '',
     });
 
     const user = userEvent.setup();
diff --git a/src/components/BottomMenuModal/SendModal/SendModalBottomButtons.tsx b/src/components/BottomMenuModal/SendModal/SendModalBottomButtons.tsx
index 996f1457..b7195125 100644
--- a/src/components/BottomMenuModal/SendModal/SendModalBottomButtons.tsx
+++ b/src/components/BottomMenuModal/SendModal/SendModalBottomButtons.tsx
@@ -50,7 +50,7 @@ const SendModalBottomButtons = ({
           </Button>
         )}
         <Button
-          id="send-button-send-moda;"
+          id="send-button-send-modal"
           disabled={isSendDisabled}
           onClick={() => onSend(!!safetyWarningMessage)}
           $fullWidth
diff --git a/src/components/BottomMenuModal/SendModal/SendModalTokensTabView.tsx b/src/components/BottomMenuModal/SendModal/SendModalTokensTabView.tsx
index ac878cea..81ee1692 100644
--- a/src/components/BottomMenuModal/SendModal/SendModalTokensTabView.tsx
+++ b/src/components/BottomMenuModal/SendModal/SendModalTokensTabView.tsx
@@ -85,9 +85,10 @@ const SendModalTokensTabView = ({ payload }: { payload?: SendModalData }) => {
     React.useState<string>('');
   const { addressesEqual } = useEtherspotUtils();
   const accountAddress = useWalletAddress();
-  const { addToBatch } = useGlobalTransactionsBatch();
+  const { addToBatch, setWalletConnectTxHash } = useGlobalTransactionsBatch();
   const [pasteClicked, setPasteClicked] = React.useState<boolean>(false);
   const accountBalances = useAccountBalances();
+  const { getTransactionHash } = useEtherspotTransactions();
   const { hide, showHistory, showBatchSendModal, setShowBatchSendModal } =
     useBottomMenuModal();
   /**
@@ -266,6 +267,18 @@ const SendModalTokensTabView = ({ payload }: { payload?: SendModalData }) => {
     }
 
     const newUserOpHash = sent?.[0]?.sentBatches[0]?.userOpHash;
+
+    if (newUserOpHash) {
+      if (payload?.title === 'WalletConnect transaction') {
+        const txHash = await getTransactionHash(newUserOpHash);
+        if (!txHash) {
+          setWalletConnectTxHash(undefined);
+        } else {
+          setWalletConnectTxHash(txHash);
+        }
+      }
+    }
+
     if (!newUserOpHash) {
       setErrorMessage(t`error.failedToGetTransactionHashReachSupport`);
       setIsSending(false);
diff --git a/src/providers/GlobalTransactionsBatchProvider.tsx b/src/providers/GlobalTransactionsBatchProvider.tsx
index b2f52c3c..02d91c75 100644
--- a/src/providers/GlobalTransactionsBatchProvider.tsx
+++ b/src/providers/GlobalTransactionsBatchProvider.tsx
@@ -18,6 +18,10 @@ export interface IGlobalTransactionsBatchContext {
     transactions: IGlobalBatchTransaction[];
     addToBatch: (transaction: IGlobalBatchTransaction) => void;
     removeFromBatch: (transactionId: string) => void;
+    walletConnectTxHash: string | undefined;
+    setWalletConnectTxHash: React.Dispatch<
+      React.SetStateAction<string | undefined>
+    >;
   };
 }
 
@@ -32,6 +36,9 @@ const GlobalTransactionsBatchProvider = ({
   const [transactions, setBatches] = React.useState<IGlobalBatchTransaction[]>(
     []
   );
+  const [walletConnectTxHash, setWalletConnectTxHash] = React.useState<
+    string | undefined
+  >(undefined);
 
   const addToBatch = (transaction: IGlobalBatchTransaction) => {
     setBatches((prev) =>
@@ -51,10 +58,12 @@ const GlobalTransactionsBatchProvider = ({
   const contextData = useMemo(
     () => ({
       transactions,
+      walletConnectTxHash,
+      setWalletConnectTxHash,
       addToBatch,
       removeFromBatch,
     }),
-    [transactions]
+    [transactions, walletConnectTxHash]
   );
 
   return (
diff --git a/src/services/walletConnect.ts b/src/services/walletConnect.ts
index 3c79278c..5a6c0fd4 100644
--- a/src/services/walletConnect.ts
+++ b/src/services/walletConnect.ts
@@ -11,7 +11,7 @@ import {
 import { SessionTypes } from '@walletconnect/types';
 import { buildApprovedNamespaces, getSdkError } from '@walletconnect/utils';
 import { ethers } from 'ethers';
-import { useCallback, useEffect, useState } from 'react';
+import { useCallback, useEffect, useRef, useState } from 'react';
 import { checksumAddress, formatEther, hexToBigInt } from 'viem';
 
 // hooks
@@ -35,14 +35,18 @@ export const useWalletConnect = () => {
   const [activeSessions, setActiveSessions] =
     useState<Record<string, SessionTypes.Struct>>();
   const [isLoadingConnect, setIsLoadingConnect] = useState<boolean>(false);
-  const { addToBatch } = useGlobalTransactionsBatch();
-  const { showSend, setShowBatchSendModal } = useBottomMenuModal();
+  const { showTransactionConfirmation, hide } = useBottomMenuModal();
   const { showToast } = useWalletConnectToast();
   const { showModal, hideModal } = useWalletConnectModal();
+  const { walletConnectTxHash, setWalletConnectTxHash } =
+    useGlobalTransactionsBatch();
   const [isLoadingDisconnectAll, setIsLoadingDisconnectAll] =
     useState<boolean>(false);
   const [isLoadingDisconnect, setIsLoadingDisconnect] =
     useState<boolean>(false);
+  const walletConnectTxHashRef = useRef<string | undefined>(
+    walletConnectTxHash
+  );
 
   // WalletConnect initialisation
   const initWalletKit = useCallback(async () => {
@@ -89,6 +93,41 @@ export const useWalletConnect = () => {
     }
   }, [walletKit]);
 
+  useEffect(() => {
+    walletConnectTxHashRef.current = walletConnectTxHash;
+  }, [walletConnectTxHash]);
+
+  const getTransactionHash = async (): Promise<string | undefined> => {
+    const timeout = Date.now() + 180 * 1000; // 3 min timeout to leave enough time for the user to send the transaction and receive the hash
+    while (!walletConnectTxHashRef.current && Date.now() < timeout) {
+      await new Promise<void>((resolve) => {
+        setTimeout(resolve, 2000);
+      });
+
+      // Use the latest value from the ref
+      if (walletConnectTxHashRef.current) {
+        return walletConnectTxHashRef.current;
+      }
+    }
+
+    console.error('Transaction timeout: no transaction hash received.');
+
+    // close send modal
+    hide();
+
+    // reset txHash to undefined
+    setWalletConnectTxHash(undefined);
+
+    // sowing error to user
+    showToast({
+      title: 'WalletConnect',
+      subtitle:
+        'Oops, the transaction timed out. Please try again to send the transaction on the dApp.',
+    });
+
+    return undefined;
+  };
+
   const getSessionFromTopic = useCallback(
     (topic: string) => {
       const connections = Object.values(walletKit?.getActiveSessions() || {});
@@ -378,6 +417,11 @@ export const useWalletConnect = () => {
       const { topic, params, id } = requestEvent;
       const { request, chainId } = params;
 
+      // Retrieve session metadata
+      const sessions = walletKit?.getActiveSessions();
+      const session = sessions?.[topic];
+      const dAppName = session?.peer?.metadata?.name;
+
       const chainIdNumber = Number(chainId.replace('eip155:', ''));
       let requestResponse: string | undefined;
 
@@ -423,16 +467,16 @@ export const useWalletConnect = () => {
       if (request.method === ETH_SEND_TX) {
         const sendTransactionToBatch = async () => {
           try {
-            addToBatch({
+            showTransactionConfirmation({
               title: 'WalletConnect transaction',
-              description: '',
-              chainId: chainIdNumber,
-              to: checksumAddress(request.params[0].to),
-              value: formatEther(hexToBigInt(request.params[0].value)),
-              data: request.params[0].data,
+              description: `${dAppName} wants to send a transaction`,
+              transaction: {
+                to: checksumAddress(request.params[0].to),
+                value: formatEther(hexToBigInt(request.params[0].value)),
+                data: request.params[0].data,
+                chainId: chainIdNumber,
+              },
             });
-            setShowBatchSendModal(true);
-            showSend();
           } catch (error) {
             showToast({
               title: 'Transaction batch fail',
@@ -444,7 +488,7 @@ export const useWalletConnect = () => {
 
         await sendTransactionToBatch();
 
-        requestResponse = 'Transaction sent to PillarX.';
+        requestResponse = await getTransactionHash();
       }
 
       try {
@@ -452,12 +496,14 @@ export const useWalletConnect = () => {
           topic,
           response: formatJsonRpcResult(id, requestResponse),
         });
+        setWalletConnectTxHash(undefined);
       } catch (e: any) {
         console.error('WalletConnect session request error:', e.message);
         await walletKit?.respondSessionRequest({
           topic,
           response: formatJsonRpcError(id, e),
         });
+        setWalletConnectTxHash(undefined);
         showToast({
           title: 'WalletConnect',
           subtitle:


Reviews:
user: login: coderabbitai[bot]
body: **Actionable comments posted: 1**

<details>
<summary>📜 Review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between ef7edf458e08e4a354ed1f3247ce5e000fc7dc65 and 9036bf4b02b886703493b7f7242df18e6e783107.

</details>

<details>
<summary>⛔ Files ignored due to path filters (2)</summary>

* `package-lock.json` is excluded by `!**/package-lock.json`
* `src/apps/pillarx-app/components/PointsTile/test/__snapshots__/PointsTile.test.tsx.snap` is excluded by `!**/*.snap`

</details>

<details>
<summary>📒 Files selected for processing (7)</summary>

* `config-overrides.js` (1 hunks)
* `package.json` (2 hunks)
* `src/components/BottomMenuModal/SendModal/SendModal.test.skip.tsx` (1 hunks)
* `src/components/BottomMenuModal/SendModal/SendModalBottomButtons.tsx` (1 hunks)
* `src/components/BottomMenuModal/SendModal/SendModalTokensTabView.tsx` (2 hunks)
* `src/providers/GlobalTransactionsBatchProvider.tsx` (3 hunks)
* `src/services/walletConnect.ts` (5 hunks)

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (4)</summary>

* GitHub Check: unit-tests
* GitHub Check: lint
* GitHub Check: build
* GitHub Check: Cloudflare Pages

</details>

<details>
<summary>🔇 Additional comments (19)</summary><blockquote>

<details>
<summary>src/components/BottomMenuModal/SendModal/SendModalBottomButtons.tsx (1)</summary>

`53-53`: **Good fix: Corrected ID attribute typo**

You've fixed the typo in the button's ID attribute, removing the incorrect semicolon. This improves HTML correctness and ensures proper element identification for testing and accessibility purposes.

</details>
<details>
<summary>package.json (2)</summary>

`100-100`: <details>
<summary>❓ Verification inconclusive</summary>

**Pinned viem to specific version**

You've changed from a flexible version range (^2.6.1) to a specific version (2.21.53). This ensures consistent behavior but may prevent receiving minor bug fixes.


---

🏁 Script executed:

```shell
#!/bin/bash
# Check for breaking changes between current and previous viem versions

echo "Checking for potential breaking changes between viem 2.6.1 and 2.21.53..."

# Check if package.json uses this dependency in any imports
grep -r "from 'viem'" --include="*.ts" --include="*.tsx" src/

# Check changelog or release notes from GitHub API
echo "Fetching release information from GitHub..."
curl -s "https://api.github.com/repos/wagmi-dev/viem/releases" | grep -A 1 "\"name\": \"v2" | grep -E "\"name\": \"v2.(6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21)." | head -10
```

Length of output: 532

---



</details>

**Dependency Version Pinning: Validate Impact on Bug Fixes & Usage**

- You've pinned `viem` to version `2.21.53` instead of using a flexible version range (like `^2.6.1`). While this guarantees consistent dependency resolution, it also prevents automatic incorporation of minor bug fixes.
- The verification script attempted to search for viem imports in a `src/` directory but returned an error (`No such file or directory`). If your code isn’t located in `src/`, please ensure the search is adjusted to reflect your repository’s actual structure.
- The release notes retrieval via GitHub’s API was initiated. It’s advisable to manually review the changelog between versions 2.6.1 and 2.21.53 to confirm that no critical breaking changes or important updates have been overlooked.

---

`22-22`: <details>
<summary>✅ Verification successful</summary>

**Updated @etherspot/transaction-kit dependency**

Upgrading from ^1.0.1 to ^1.0.4 should provide bug fixes or minor improvements while maintaining backward compatibility.


---

🌐 Web query:

```web
What changes were introduced in @etherspot/transaction-kit between versions 1.0.1 and 1.0.4?
```

💡 Result:

The provided search results do not explicitly list the specific changes introduced in `@etherspot/transaction-kit` between versions **1.0.1** and **1.0.4**. However, based on the available resources, here are the key insights about Transaction Kit's development focus during this period:

---

### Core Functional Improvements
1. **Cross-Chain Transaction Batching**  
   Transaction Kit introduced enhanced support for composing multi-chain transactions into a single user interaction, leveraging Etherspot's Prime SDK for cross-chain interoperability[4][6].

2. **Paymaster Integration**  
   Added utilities for handling gas fees via stablecoins or sponsored transactions using Etherspot's Arka Paymaster system[4][6].

3. **Smart Contract Interaction Simplification**  
   Streamlined components like `<EtherspotTransaction>` and hooks like `useEtherspotUI()` for easier integration with smart contracts[4][7].

---

### Developer Experience Updates
- **React Component Optimization**  
  Improved error handling and state management in core components like `<EtherspotTransactionKit>` and `<EtherspotBatches>`[7][11].

- **Documentation Expansions**  
  Added tutorials for common use cases (staking, token swaps) and improved TypeScript support in the SDK[6][11].

---

### Infrastructure Changes
- **Ethers v5 Compatibility**  
  Ensured compatibility with Ethers.js v5.4.0 for wallet management and provider interactions[1][11].

- **Multi-Chain Support**  
  Expanded EVM chain compatibility, though specific chains added between these versions aren't detailed in the search results[4][6].

---

For precise version-to-version changelogs, refer to:  
1. [GitHub Releases](https://github.com/etherspot/transaction-kit/releases)  
2. [NPM Version History](https://www.npmjs.com/package/@etherspot/transaction-kit?activeTab=versions)  

The lack of explicit release notes in the provided sources highlights Etherspot's ongoing development to simplify Web3 interactions through its React-based abstraction layer[6][11].

Citations:

- 1: https://www.youtube.com/watch?v=80Ycm-nYBwg
- 2: https://etherspot.io/blog/
- 3: https://docs.starknet.io/resources/version-notes/
- 4: https://etherspot.io/transactionkit/
- 5: https://classic.yarnpkg.com/en/package/@etherspot/prime-sdk
- 6: https://etherspot.fyi/transaction-kit/intro
- 7: https://etherspot.fyi/transaction-kit/components/EtherspotTransactionKit
- 8: https://github.com/etherspot/transaction-kit/actions
- 9: https://etherspot.io/blog/the-etherspot-dashboard-v1-0-launch-is-here/
- 10: https://github.com/etherspot/transaction-kit/activity
- 11: https://www.npmjs.com/package/@etherspot/transaction-kit
- 12: https://www.npmjs.com/package/@etherspot/react-transaction-buidler/v/0.26.14?activeTab=dependencies
- 13: https://github.com/etherspot
- 14: https://github.com/etherspot/transaction-kit/pulls
- 15: https://www.youtube.com/watch?v=oAdKdVDqjYU

---



</details>

**Dependency Update: @etherspot/transaction-kit**

The upgrade from version ^1.0.1 to ^1.0.4 in `package.json` appears well justified. Based on available resources, this update delivers several incremental improvements—including enhanced support for cross-chain transaction batching, built-in paymaster integration for better handling of gas fees, and developer experience optimizations such as improved error handling and cleaner smart contract interaction components. These modifications provide essential bug fixes and incremental functionality improvements while maintaining backward compatibility.

_No further changes are required. Please verify the changelog linked in the release notes for any additional updates that might influence usage._

</details>
<details>
<summary>src/components/BottomMenuModal/SendModal/SendModal.test.skip.tsx (1)</summary>

`185-185`: <details>
<summary>✅ Verification successful</summary>

**Added transaction hash retrieval to mock**

This change adds the `getTransactionHash` method to the mock implementation of `useEtherspotTransactions`, which aligns with the PR objective of returning a transaction hash to the dApp when using WalletConnect.


---

🏁 Script executed:

```shell
#!/bin/bash
# Check for implementations of getTransactionHash in the codebase

echo "Looking for implementations of getTransactionHash function..."
grep -r "getTransactionHash" --include="*.ts" --include="*.tsx" src/

echo "Looking for related WalletConnect transaction handling..."
grep -r "walletConnect.*transaction" --include="*.ts" --include="*.tsx" src/
```

Length of output: 959

---



</details>

**Transaction hash retrieval mock verified and aligned with WalletConnect usage.**

The mock implementation in the test (i.e., `getTransactionHash: async () => ''`) is consistent with its usage across the codebase, as seen in both `SendModalTokensTabView.tsx` and the service in `walletConnect.ts`. No further changes are needed.

</details>
<details>
<summary>src/providers/GlobalTransactionsBatchProvider.tsx (4)</summary>

`21-24`: **Interface extension looks good**

This addition to the `IGlobalTransactionsBatchContext` interface properly defines the new properties for managing WalletConnect transaction hashes.

---

`39-41`: **State implementation is well structured**

Good implementation of the state hook with proper typing and initialization to `undefined`.

---

`60-65`: **Context data enhancement is appropriate**

The new properties are correctly added to the context data, making them accessible to consumers of this context.

---

`66-66`: **Dependency array properly updated**

Correctly added `walletConnectTxHash` to the dependency array to ensure the context is updated when this value changes.

</details>
<details>
<summary>src/components/BottomMenuModal/SendModal/SendModalTokensTabView.tsx (3)</summary>

`88-88`: **Hooks usage updated correctly**

Properly destructured the new `setWalletConnectTxHash` function from the context.

---

`91-91`: **Added required transaction hash retrieval**

Good addition of the `getTransactionHash` method from the Etherspot transactions hook.

---

`271-280`: **Well-implemented transaction hash handling for WalletConnect**

This implementation correctly handles WalletConnect transactions by:
1. Checking if the transaction is from WalletConnect
2. Retrieving the transaction hash
3. Appropriately updating the global state

This fulfills the PR objective of returning a transaction hash to the dApp.

</details>
<details>
<summary>src/services/walletConnect.ts (8)</summary>

`14-14`: **Added necessary React hook import**

Added `useRef` to the import statement to support the new reference implementation.

---

`41-42`: **Correctly using global transaction context**

Properly destructured both the transaction hash and its setter from the global context.

---

`47-49`: **Proper reference implementation**

Good use of `useRef` to keep track of the current transaction hash value between renders.

---

`96-98`: **Effective reference update mechanism**

This effect ensures the reference is always updated when the actual state changes, maintaining synchronization.

---

`100-129`: **Well-implemented transaction hash retrieval with timeout**

Excellent implementation of the transaction hash retrieval function with:
1. A reasonable timeout (3 minutes) to allow for transaction processing
2. Polling mechanism that checks every 2 seconds
3. Proper error handling with user feedback
4. Cleanup of state when timeout occurs

This is a robust solution that provides good UX even in failure cases.

---

`465-474`: **Improved transaction presentation to users**

Good enhancement of the transaction confirmation UI with better structured data and proper formatting of address and value.

---

`486-486`: **Transaction hash now returned to dApp**

This is the key change that fulfills the PR objective - now the WalletConnect request returns the actual transaction hash instead of a static message.

---

`494-494`: **Good state cleanup after response**

Properly resets the transaction hash state after handling the request, preventing stale data issues in subsequent requests.



Also applies to: 501-502

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-12T17:11:16Z
user: login: IAmKio
body: One additional change to the question I sent on Slack also, other than that looks good!
state: CHANGES_REQUESTED
author_association: COLLABORATOR
submitted_at: 2025-03-12T17:20:17Z
user: login: IAmKio
body: LGTM
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-03-13T09:40:41Z

Review comments:
diff_hunk: @@ -27,16 +27,16 @@ module.exports = function override(config) {
     }),
   ];
 
-  // Chunking
-  config.optimization.splitChunks = {
-    cacheGroups: {
-      vendor: {
-        test: /[\\/]node_modules[\\/]/,
-        chunks: 'all',
-        maxSize: 50000,
-      },
-    },
-  };
+  // // Chunking
+  // config.optimization.splitChunks = {
+  //   cacheGroups: {
+  //     vendor: {
+  //       test: /[\\/]node_modules[\\/]/,
+  //       chunks: 'all',
+  //       maxSize: 50000,
+  //     },
+  //   },
+  // };
path: config-overrides.js
user: login: coderabbitai[bot]
body: _💡 Verification agent_

<details>
<summary>🧩 Analysis chain</summary>

**Disabled Webpack chunking optimization**

You've commented out the Webpack splitChunks configuration that was previously splitting node_modules code into vendor chunks. This change may affect bundle size and load performance.



Disabling code splitting might increase initial bundle size and load time, but could potentially solve issues with chunked dependencies. Was this change made to address specific WalletConnect issues? Consider adding a comment explaining why this optimization was disabled to help future maintainers understand the reasoning.

---

🏁 Script executed:

```shell
#!/bin/bash
# Check for any related performance or bundle size tracking

echo "Checking for performance monitoring or bundle size tooling..."
grep -r "performance\|bundle" --include="package.json" .

echo "Looking for related issues in bundle processing..."
grep -r "splitChunks\|chunk" --include="*.md" --include="*.log" .
```

Length of output: 5294

---



</details>

**Attention: Clarify Rationale for Disabled SplitChunks Configuration**

- The Webpack `splitChunks` setting in `config-overrides.js` (lines 30–39) has been disabled by commenting it out, which stops vendor code from being split into separate chunks.
- Disabling this optimization can lead to a larger initial bundle size and increased load times.
- If this change was specifically implemented to address WalletConnect (or similar) dependency issues, please add an inline comment explaining the reasoning. Providing this context will help future maintainers understand the trade-offs made at this point.

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-03-12T17:11:15Z
author_association: CONTRIBUTOR
diff_hunk: @@ -423,16 +462,16 @@ export const useWalletConnect = () => {
       if (request.method === ETH_SEND_TX) {
         const sendTransactionToBatch = async () => {
           try {
-            addToBatch({
+            showTransactionConfirmation({
               title: 'WalletConnect transaction',
-              description: '',
-              chainId: chainIdNumber,
-              to: checksumAddress(request.params[0].to),
-              value: formatEther(hexToBigInt(request.params[0].value)),
-              data: request.params[0].data,
+              description: 'This will execute a transaction coming from a dApp',
path: src/services/walletConnect.ts
user: login: IAmKio
body: we'll need to change this message, can you include the dapp name here that is requested the transaction please? 

```suggestion
              description: '{dappName} wants to send a transaction',
```
created_at: 2025-03-12T17:19:26Z
author_association: COLLABORATOR

PR comments:
user: login: coderabbitai[bot]
created_at: 2025-03-12T17:04:57Z
body: <!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- walkthrough_start -->

## Walkthrough
The pull request updates dependency versions in the project’s package configuration and refines transaction handling throughout the application. It upgrades `@etherspot/transaction-kit` and `viem`, corrects a UI element identifier, and enhances the WalletConnect transaction flow. The changes integrate a new asynchronous function to retrieve transaction hashes, update the global transaction context to store WalletConnect-specific hashes, and adjust corresponding tests to support these modifications.

## Changes

| File(s) | Change Summary |
| --- | --- |
| `package.json` | Updated dependency versions: `@etherspot/transaction-kit` bumped from `^1.0.1` to `^1.0.4`, and `viem` changed from `^2.6.1` to `2.21.53`. |
| `src/.../SendModalBottomButtons.tsx` | Fixed a typo in the `Button` component's `id` attribute (removed an extraneous semicolon). |
| `src/.../SendModal.test.skip.tsx` | Enhanced mock of `useEtherspotTransactions` by adding `getTransactionHash: async () => ''`. |
| `src/.../SendModalTokensTabView.tsx`<br>`src/.../GlobalTransactionsBatchProvider.tsx`<br>`src/.../walletConnect.ts` | Enhanced WalletConnect transaction handling: added a `getTransactionHash` function (and its mock), updated the transaction flow in the tokens tab view, extended the global transactions context with `walletConnectTxHash` and `setWalletConnectTxHash`, and implemented a timeout mechanism with state reset in the WalletConnect service. |

## Sequence Diagram(s)
```mermaid
sequenceDiagram
    participant U as User
    participant T as SendModalTokensTabView
    participant W as WalletConnect Service
    participant G as GlobalTransactionsBatchProvider

    U->>T: Initiates WalletConnect transaction
    T->>W: call getTransactionHash(newUserOpHash)
    W->>W: Wait up to 3 minutes for txHash
    alt Transaction hash obtained
        W-->>T: Return txHash
        T->>G: setWalletConnectTxHash(txHash)
    else Timeout reached
        W-->>T: Return undefined
        T->>G: setWalletConnectTxHash(undefined)
        W->>T: Show timeout error notification
    end
    T->>T: Proceed with transaction confirmation flow
```

## Suggested reviewers
- IAmKio

## Poem
> I'm a bunny, hopping with cheer,  
> New code's here, crisp and clear!  
> Dependencies upgraded, flows refined,  
> WalletConnect magic now aligned.  
> With every change, I dance in delight—  
> A rabbit's dream in code so bright!  
> 🐇✨

<!-- walkthrough_end -->

<!-- announcements_start -->

> [!TIP]
> <details>
> <summary>⚡🧪 Multi-step agentic review comment chat (experimental)</summary>
> 
> - We're introducing multi-step agentic chat in review comments. This experimental feature enhances review discussions with the CodeRabbit agentic chat by enabling advanced interactions, including the ability to create pull requests directly from comments.
> 						- To enable this feature, set early_access to true under in the settings.
> 
> </details>

<!-- announcements_end -->

---

<details>
<summary>📜 Recent review details</summary>

**Configuration used: CodeRabbit UI**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between c87b9c5f798e068aa869a437d3ebd97af25cdf59 and 245fa6f8ef0c737af47f9eac59728c44a2e12851.

</details>

<details>
<summary>📒 Files selected for processing (1)</summary>

* `src/services/walletConnect.ts` (6 hunks)

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (4)</summary>

* GitHub Check: unit-tests
* GitHub Check: lint
* GitHub Check: build
* GitHub Check: Cloudflare Pages

</details>

<details>
<summary>🔇 Additional comments (10)</summary><blockquote>

<details>
<summary>src/services/walletConnect.ts (10)</summary>

`14-14`: **Good addition of useRef import**

Adding `useRef` to the React imports is necessary for the new reference implementation that will help track transaction hash values between renders.

---

`41-42`: **Well-structured global state integration**

Good implementation of accessing the WalletConnect transaction hash from the global state. This enables proper communication between the WalletConnect service and the global transaction context.

---

`47-49`: **Effective use of useRef for async operation**

Using `useRef` to store the transaction hash is an excellent approach that prevents stale closure issues in async functions. This ensures that the async operations will always access the latest transaction hash value.

---

`96-98`: **Proper ref synchronization**

The useEffect hook correctly ensures that the reference is always synchronized with the current transaction hash state. This is critical for the polling mechanism to work properly.

---

`100-129`: **Well-implemented transaction hash polling with timeout handling**

The `getTransactionHash` function effectively implements a polling mechanism with appropriate timeout handling. This resolves the core issue of returning transaction hashes to dApps.

A few notes:
- The 3-minute timeout provides ample time for user interaction
- Error handling is comprehensive with appropriate cleanup
- User feedback via toast notification is well-implemented

---

`420-424`: **Good extraction of dApp metadata**

Retrieving the dApp name from session metadata improves the user experience by providing context about which application is requesting the transaction.

---

`472-472`: **Improved transaction description with dApp name**

Including the dApp name in the transaction description provides better context to users about which application is requesting the transaction.

---

`473-478`: **Well-structured transaction object**

The transaction object is properly structured with all necessary properties:
- `to`: Properly checksummed address for security
- `value`: Correctly formatted from hex to human-readable ether value
- `data`: Transaction data preserved
- `chainId`: Chain identifier properly extracted

This ensures accurate transaction information is displayed to the user.

---

`491-491`: **Key improvement: Return actual transaction hash**

This is the critical line that fulfills the PR objective - returning the actual transaction hash to the dApp instead of a static message. This enables proper transaction tracking in the dApp.

---

`499-499`: **Proper cleanup of transaction hash state**

Good practice to reset the transaction hash after responding to the session request. This ensures a clean state for future transactions and prevents potential state conflicts.



Also applies to: 506-506

</details>

</blockquote></details>

</details>
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- finishing_touch_checkbox_start -->

<details>
<summary>✨ Finishing Touches</summary>

- [ ] <!-- {"checkboxId": "7962f53c-55bc-4827-bfbf-6a18da830691"} --> 📝 Generate Docstrings

</details>

<!-- finishing_touch_checkbox_end -->
<!-- tips_start -->

---



<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=pillarwallet/x&utm_content=254):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Generate unit testing code for this file.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai generate unit testing code for this file.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and generate unit testing code.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->
author_association: CONTRIBUTOR
user: login: cloudflare-workers-and-pages[bot]
created_at: 2025-03-12T17:09:59Z
body: ## Deploying x with &nbsp;<a href="https://pages.dev"><img alt="Cloudflare Pages" src="https://user-images.githubusercontent.com/23264/106598434-9e719e00-654f-11eb-9e59-6167043cfa01.png" width="16"></a> &nbsp;Cloudflare Pages

<table><tr><td><strong>Latest commit:</strong> </td><td>
<code>245fa6f</code>
</td></tr>
<tr><td><strong>Status:</strong></td><td>&nbsp;✅&nbsp; Deploy successful!</td></tr>
<tr><td><strong>Preview URL:</strong></td><td>
<a href='https://256dbb4b.x-e62.pages.dev'>https://256dbb4b.x-e62.pages.dev</a>
</td></tr>
<tr><td><strong>Branch Preview URL:</strong></td><td>
<a href='https://fix-wallet-connect-qa-fixes.x-e62.pages.dev'>https://fix-wallet-connect-qa-fixes.x-e62.pages.dev</a>
</td></tr>
</table>

[View logs](https://dash.cloudflare.com/180f46b97b38861d0b5eee789435c45a/pages/view/x/256dbb4b-9a27-45e7-a654-c5fdd555a3df)

author_association: NONE