diff --git a/package.json b/package.json
index 71341ebc..621826ef 100644
--- a/package.json
+++ b/package.json
@@ -64,7 +64,6 @@
"@ethereumjs/common": "^4.4.0",
"@ethereumjs/rlp": "^5.0.2",
"@ethereumjs/tx": "^5.4.0",
- "@ethersproject/abi": "^5.7.0",
"@metamask/eth-sig-util": "^8.0.0",
"@types/uuid": "^10.0.0",
"aes-js": "^3.1.2",
@@ -78,12 +77,12 @@
"cbor-bigdecimal": "^10.0.2",
"crc-32": "^1.2.2",
"elliptic": "6.5.7",
- "ethers": "^6.13.4",
"hash.js": "^1.1.7",
"js-sha3": "^0.9.3",
"lodash": "^4.17.21",
"secp256k1": "5.0.1",
- "uuid": "^10.0.0"
+ "uuid": "^10.0.0",
+ "viem": "^2.22.19"
},
"devDependencies": {
"@chainsafe/bls-keystore": "^3.1.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b63959dc..31f9a01f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -22,9 +22,6 @@ importers:
'@ethereumjs/tx':
specifier: ^5.4.0
version: 5.4.0
- '@ethersproject/abi':
- specifier: ^5.7.0
- version: 5.7.0
'@metamask/eth-sig-util':
specifier: ^8.0.0
version: 8.0.0
@@ -64,9 +61,6 @@ importers:
elliptic:
specifier: 6.5.7
version: 6.5.7
- ethers:
- specifier: ^6.13.4
- version: 6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)
hash.js:
specifier: ^1.1.7
version: 1.1.7
@@ -82,6 +76,9 @@ importers:
uuid:
specifier: ^10.0.0
version: 10.0.0
+ viem:
+ specifier: ^2.22.19
+ version: 2.22.19(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10)
devDependencies:
'@chainsafe/bls-keystore':
specifier: ^3.1.0
@@ -238,8 +235,8 @@ packages:
cpu: [ppc64]
os: [aix]
- '@esbuild/aix-ppc64@0.24.0':
- resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==}
+ '@esbuild/aix-ppc64@0.24.2':
+ resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
@@ -250,8 +247,8 @@ packages:
cpu: [arm64]
os: [android]
- '@esbuild/android-arm64@0.24.0':
- resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==}
+ '@esbuild/android-arm64@0.24.2':
+ resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
@@ -262,8 +259,8 @@ packages:
cpu: [arm]
os: [android]
- '@esbuild/android-arm@0.24.0':
- resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==}
+ '@esbuild/android-arm@0.24.2':
+ resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
@@ -274,8 +271,8 @@ packages:
cpu: [x64]
os: [android]
- '@esbuild/android-x64@0.24.0':
- resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==}
+ '@esbuild/android-x64@0.24.2':
+ resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
@@ -286,8 +283,8 @@ packages:
cpu: [arm64]
os: [darwin]
- '@esbuild/darwin-arm64@0.24.0':
- resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==}
+ '@esbuild/darwin-arm64@0.24.2':
+ resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
@@ -298,8 +295,8 @@ packages:
cpu: [x64]
os: [darwin]
- '@esbuild/darwin-x64@0.24.0':
- resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==}
+ '@esbuild/darwin-x64@0.24.2':
+ resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
@@ -310,8 +307,8 @@ packages:
cpu: [arm64]
os: [freebsd]
- '@esbuild/freebsd-arm64@0.24.0':
- resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==}
+ '@esbuild/freebsd-arm64@0.24.2':
+ resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
@@ -322,8 +319,8 @@ packages:
cpu: [x64]
os: [freebsd]
- '@esbuild/freebsd-x64@0.24.0':
- resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==}
+ '@esbuild/freebsd-x64@0.24.2':
+ resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
@@ -334,8 +331,8 @@ packages:
cpu: [arm64]
os: [linux]
- '@esbuild/linux-arm64@0.24.0':
- resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==}
+ '@esbuild/linux-arm64@0.24.2':
+ resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
@@ -346,8 +343,8 @@ packages:
cpu: [arm]
os: [linux]
- '@esbuild/linux-arm@0.24.0':
- resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==}
+ '@esbuild/linux-arm@0.24.2':
+ resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
@@ -358,8 +355,8 @@ packages:
cpu: [ia32]
os: [linux]
- '@esbuild/linux-ia32@0.24.0':
- resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==}
+ '@esbuild/linux-ia32@0.24.2':
+ resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
@@ -370,8 +367,8 @@ packages:
cpu: [loong64]
os: [linux]
- '@esbuild/linux-loong64@0.24.0':
- resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==}
+ '@esbuild/linux-loong64@0.24.2':
+ resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
@@ -382,8 +379,8 @@ packages:
cpu: [mips64el]
os: [linux]
- '@esbuild/linux-mips64el@0.24.0':
- resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==}
+ '@esbuild/linux-mips64el@0.24.2':
+ resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
@@ -394,8 +391,8 @@ packages:
cpu: [ppc64]
os: [linux]
- '@esbuild/linux-ppc64@0.24.0':
- resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==}
+ '@esbuild/linux-ppc64@0.24.2':
+ resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
@@ -406,8 +403,8 @@ packages:
cpu: [riscv64]
os: [linux]
- '@esbuild/linux-riscv64@0.24.0':
- resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==}
+ '@esbuild/linux-riscv64@0.24.2':
+ resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
@@ -418,8 +415,8 @@ packages:
cpu: [s390x]
os: [linux]
- '@esbuild/linux-s390x@0.24.0':
- resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==}
+ '@esbuild/linux-s390x@0.24.2':
+ resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
@@ -430,26 +427,32 @@ packages:
cpu: [x64]
os: [linux]
- '@esbuild/linux-x64@0.24.0':
- resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==}
+ '@esbuild/linux-x64@0.24.2':
+ resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
+ '@esbuild/netbsd-arm64@0.24.2':
+ resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
'@esbuild/netbsd-x64@0.21.5':
resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
- '@esbuild/netbsd-x64@0.24.0':
- resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==}
+ '@esbuild/netbsd-x64@0.24.2':
+ resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
- '@esbuild/openbsd-arm64@0.24.0':
- resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==}
+ '@esbuild/openbsd-arm64@0.24.2':
+ resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
@@ -460,8 +463,8 @@ packages:
cpu: [x64]
os: [openbsd]
- '@esbuild/openbsd-x64@0.24.0':
- resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==}
+ '@esbuild/openbsd-x64@0.24.2':
+ resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
@@ -472,8 +475,8 @@ packages:
cpu: [x64]
os: [sunos]
- '@esbuild/sunos-x64@0.24.0':
- resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==}
+ '@esbuild/sunos-x64@0.24.2':
+ resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
@@ -484,8 +487,8 @@ packages:
cpu: [arm64]
os: [win32]
- '@esbuild/win32-arm64@0.24.0':
- resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==}
+ '@esbuild/win32-arm64@0.24.2':
+ resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
@@ -496,8 +499,8 @@ packages:
cpu: [ia32]
os: [win32]
- '@esbuild/win32-ia32@0.24.0':
- resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==}
+ '@esbuild/win32-ia32@0.24.2':
+ resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
@@ -508,8 +511,8 @@ packages:
cpu: [x64]
os: [win32]
- '@esbuild/win32-x64@0.24.0':
- resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==}
+ '@esbuild/win32-x64@0.24.2':
+ resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==}
engines: {node: '>=18'}
cpu: [x64]
os: [win32]
@@ -588,60 +591,6 @@ packages:
resolution: {integrity: sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog==}
engines: {node: '>=18'}
- '@ethersproject/abi@5.7.0':
- resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==}
-
- '@ethersproject/abstract-provider@5.7.0':
- resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==}
-
- '@ethersproject/abstract-signer@5.7.0':
- resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==}
-
- '@ethersproject/address@5.7.0':
- resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==}
-
- '@ethersproject/base64@5.7.0':
- resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==}
-
- '@ethersproject/bignumber@5.7.0':
- resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==}
-
- '@ethersproject/bytes@5.7.0':
- resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==}
-
- '@ethersproject/constants@5.7.0':
- resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==}
-
- '@ethersproject/hash@5.7.0':
- resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==}
-
- '@ethersproject/keccak256@5.7.0':
- resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==}
-
- '@ethersproject/logger@5.7.0':
- resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==}
-
- '@ethersproject/networks@5.7.1':
- resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==}
-
- '@ethersproject/properties@5.7.0':
- resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==}
-
- '@ethersproject/rlp@5.7.0':
- resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==}
-
- '@ethersproject/signing-key@5.7.0':
- resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==}
-
- '@ethersproject/strings@5.7.0':
- resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==}
-
- '@ethersproject/transactions@5.7.0':
- resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==}
-
- '@ethersproject/web@5.7.1':
- resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==}
-
'@humanfs/core@0.19.0':
resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==}
engines: {node: '>=18.18.0'}
@@ -754,9 +703,6 @@ packages:
resolution: {integrity: sha512-mIYqC2jMX7Lcu1QtU/FFftMPDSXNCdlGex6BSf5nPojHjnzzBgs1klFWpB1R8YjqHmOO9xrCzF19f2c42+z3vg==}
deprecated: Switch to @noble/curves for security updates
- '@noble/curves@1.2.0':
- resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==}
-
'@noble/curves@1.4.2':
resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==}
@@ -764,9 +710,9 @@ packages:
resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==}
engines: {node: ^14.21.3 || >=16}
- '@noble/hashes@1.3.2':
- resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==}
- engines: {node: '>= 16'}
+ '@noble/curves@1.8.1':
+ resolution: {integrity: sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==}
+ engines: {node: ^14.21.3 || >=16}
'@noble/hashes@1.4.0':
resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==}
@@ -776,6 +722,10 @@ packages:
resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==}
engines: {node: ^14.21.3 || >=16}
+ '@noble/hashes@1.7.1':
+ resolution: {integrity: sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==}
+ engines: {node: ^14.21.3 || >=16}
+
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -919,12 +869,21 @@ packages:
'@scure/base@1.1.9':
resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==}
+ '@scure/base@1.2.4':
+ resolution: {integrity: sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ==}
+
'@scure/bip32@1.4.0':
resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==}
+ '@scure/bip32@1.6.2':
+ resolution: {integrity: sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==}
+
'@scure/bip39@1.3.0':
resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==}
+ '@scure/bip39@1.5.4':
+ resolution: {integrity: sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==}
+
'@sinclair/typebox@0.27.8':
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
@@ -983,9 +942,6 @@ packages:
'@types/node@12.20.55':
resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
- '@types/node@22.7.5':
- resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==}
-
'@types/node@22.7.8':
resolution: {integrity: sha512-a922jJy31vqR5sk+kAdIENJjHblqcZ4RmERviFsER4WJcEONqxKcjNOlk0q7OUfrF5sddT+vng070cdfMlrPLg==}
@@ -1185,6 +1141,17 @@ packages:
resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
hasBin: true
+ abitype@1.0.8:
+ resolution: {integrity: sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ zod: ^3 >=3.22.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ zod:
+ optional: true
+
acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
@@ -1198,9 +1165,6 @@ packages:
aes-js@3.1.2:
resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==}
- aes-js@4.0.0-beta.5:
- resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==}
-
agentkeepalive@4.5.0:
resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==}
engines: {node: '>= 8.0.0'}
@@ -1559,9 +1523,6 @@ packages:
ed25519-hd-key@1.3.0:
resolution: {integrity: sha512-IWwAyiiuJQhgu3L8NaHb68eJxTu2pgCwxIBdgpLJdKpYZM46+AXePSVTr7fkNKaUOfOL4IrjEUaQvyVRIDP7fg==}
- elliptic@6.5.4:
- resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==}
-
elliptic@6.5.7:
resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==}
@@ -1589,8 +1550,8 @@ packages:
engines: {node: '>=12'}
hasBin: true
- esbuild@0.24.0:
- resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==}
+ esbuild@0.24.2:
+ resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==}
engines: {node: '>=18'}
hasBin: true
@@ -1702,10 +1663,6 @@ packages:
resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==}
engines: {node: '>=10.0.0'}
- ethers@6.13.4:
- resolution: {integrity: sha512-21YtnZVg4/zKkCQPjrDj38B1r4nQvTZLopUGMLQ1ePU2zV/joCfDC3t3iKQjWRzjjjbzR+mdAIoikeBRNkdllA==}
- engines: {node: '>=14.0.0'}
-
eventemitter3@5.0.1:
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
@@ -1956,6 +1913,11 @@ packages:
peerDependencies:
ws: '*'
+ isows@1.0.6:
+ resolution: {integrity: sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==}
+ peerDependencies:
+ ws: '*'
+
jackspeak@3.4.3:
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
@@ -1995,9 +1957,6 @@ packages:
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
engines: {node: '>=10'}
- js-sha3@0.8.0:
- resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==}
-
js-sha3@0.9.3:
resolution: {integrity: sha512-BcJPCQeLg6WjEx3FE591wVAevlli8lxsxm9/FzV4HXkV49TmBH38Yvrpce6fjbADGMKFrBMGTqrVz3qPIZ88Gg==}
@@ -2229,6 +2188,14 @@ packages:
outvariant@1.4.3:
resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==}
+ ox@0.6.7:
+ resolution: {integrity: sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==}
+ peerDependencies:
+ typescript: '>=5.4.0'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
p-limit@3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'}
@@ -2680,9 +2647,6 @@ packages:
ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
- tslib@2.7.0:
- resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==}
-
tslib@2.8.0:
resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==}
@@ -2779,6 +2743,14 @@ packages:
varuint-bitcoin@1.1.2:
resolution: {integrity: sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw==}
+ viem@2.22.19:
+ resolution: {integrity: sha512-aGR/NUHaboQ/HoS86wYfJWbXt6aewjhp2OCO2uczCrusgcwXO/qC0l36AcFVw2dkOPBEhIG5oXMEso97L+xHmA==}
+ peerDependencies:
+ typescript: '>=5.0.4'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
vite-node@2.1.3:
resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==}
engines: {node: ^18.0.0 || >=20.0.0}
@@ -2919,18 +2891,6 @@ packages:
utf-8-validate:
optional: true
- ws@8.17.1:
- resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==}
- 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
-
ws@8.18.0:
resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
engines: {node: '>=10.0.0'}
@@ -3021,142 +2981,145 @@ snapshots:
'@esbuild/aix-ppc64@0.21.5':
optional: true
- '@esbuild/aix-ppc64@0.24.0':
+ '@esbuild/aix-ppc64@0.24.2':
optional: true
'@esbuild/android-arm64@0.21.5':
optional: true
- '@esbuild/android-arm64@0.24.0':
+ '@esbuild/android-arm64@0.24.2':
optional: true
'@esbuild/android-arm@0.21.5':
optional: true
- '@esbuild/android-arm@0.24.0':
+ '@esbuild/android-arm@0.24.2':
optional: true
'@esbuild/android-x64@0.21.5':
optional: true
- '@esbuild/android-x64@0.24.0':
+ '@esbuild/android-x64@0.24.2':
optional: true
'@esbuild/darwin-arm64@0.21.5':
optional: true
- '@esbuild/darwin-arm64@0.24.0':
+ '@esbuild/darwin-arm64@0.24.2':
optional: true
'@esbuild/darwin-x64@0.21.5':
optional: true
- '@esbuild/darwin-x64@0.24.0':
+ '@esbuild/darwin-x64@0.24.2':
optional: true
'@esbuild/freebsd-arm64@0.21.5':
optional: true
- '@esbuild/freebsd-arm64@0.24.0':
+ '@esbuild/freebsd-arm64@0.24.2':
optional: true
'@esbuild/freebsd-x64@0.21.5':
optional: true
- '@esbuild/freebsd-x64@0.24.0':
+ '@esbuild/freebsd-x64@0.24.2':
optional: true
'@esbuild/linux-arm64@0.21.5':
optional: true
- '@esbuild/linux-arm64@0.24.0':
+ '@esbuild/linux-arm64@0.24.2':
optional: true
'@esbuild/linux-arm@0.21.5':
optional: true
- '@esbuild/linux-arm@0.24.0':
+ '@esbuild/linux-arm@0.24.2':
optional: true
'@esbuild/linux-ia32@0.21.5':
optional: true
- '@esbuild/linux-ia32@0.24.0':
+ '@esbuild/linux-ia32@0.24.2':
optional: true
'@esbuild/linux-loong64@0.21.5':
optional: true
- '@esbuild/linux-loong64@0.24.0':
+ '@esbuild/linux-loong64@0.24.2':
optional: true
'@esbuild/linux-mips64el@0.21.5':
optional: true
- '@esbuild/linux-mips64el@0.24.0':
+ '@esbuild/linux-mips64el@0.24.2':
optional: true
'@esbuild/linux-ppc64@0.21.5':
optional: true
- '@esbuild/linux-ppc64@0.24.0':
+ '@esbuild/linux-ppc64@0.24.2':
optional: true
'@esbuild/linux-riscv64@0.21.5':
optional: true
- '@esbuild/linux-riscv64@0.24.0':
+ '@esbuild/linux-riscv64@0.24.2':
optional: true
'@esbuild/linux-s390x@0.21.5':
optional: true
- '@esbuild/linux-s390x@0.24.0':
+ '@esbuild/linux-s390x@0.24.2':
optional: true
'@esbuild/linux-x64@0.21.5':
optional: true
- '@esbuild/linux-x64@0.24.0':
+ '@esbuild/linux-x64@0.24.2':
+ optional: true
+
+ '@esbuild/netbsd-arm64@0.24.2':
optional: true
'@esbuild/netbsd-x64@0.21.5':
optional: true
- '@esbuild/netbsd-x64@0.24.0':
+ '@esbuild/netbsd-x64@0.24.2':
optional: true
- '@esbuild/openbsd-arm64@0.24.0':
+ '@esbuild/openbsd-arm64@0.24.2':
optional: true
'@esbuild/openbsd-x64@0.21.5':
optional: true
- '@esbuild/openbsd-x64@0.24.0':
+ '@esbuild/openbsd-x64@0.24.2':
optional: true
'@esbuild/sunos-x64@0.21.5':
optional: true
- '@esbuild/sunos-x64@0.24.0':
+ '@esbuild/sunos-x64@0.24.2':
optional: true
'@esbuild/win32-arm64@0.21.5':
optional: true
- '@esbuild/win32-arm64@0.24.0':
+ '@esbuild/win32-arm64@0.24.2':
optional: true
'@esbuild/win32-ia32@0.21.5':
optional: true
- '@esbuild/win32-ia32@0.24.0':
+ '@esbuild/win32-ia32@0.24.2':
optional: true
'@esbuild/win32-x64@0.21.5':
optional: true
- '@esbuild/win32-x64@0.24.0':
+ '@esbuild/win32-x64@0.24.2':
optional: true
'@eslint-community/eslint-utils@4.4.0(eslint@8.57.1)':
@@ -3257,129 +3220,6 @@ snapshots:
'@ethereumjs/rlp': 5.0.2
ethereum-cryptography: 2.2.1
- '@ethersproject/abi@5.7.0':
- dependencies:
- '@ethersproject/address': 5.7.0
- '@ethersproject/bignumber': 5.7.0
- '@ethersproject/bytes': 5.7.0
- '@ethersproject/constants': 5.7.0
- '@ethersproject/hash': 5.7.0
- '@ethersproject/keccak256': 5.7.0
- '@ethersproject/logger': 5.7.0
- '@ethersproject/properties': 5.7.0
- '@ethersproject/strings': 5.7.0
-
- '@ethersproject/abstract-provider@5.7.0':
- dependencies:
- '@ethersproject/bignumber': 5.7.0
- '@ethersproject/bytes': 5.7.0
- '@ethersproject/logger': 5.7.0
- '@ethersproject/networks': 5.7.1
- '@ethersproject/properties': 5.7.0
- '@ethersproject/transactions': 5.7.0
- '@ethersproject/web': 5.7.1
-
- '@ethersproject/abstract-signer@5.7.0':
- dependencies:
- '@ethersproject/abstract-provider': 5.7.0
- '@ethersproject/bignumber': 5.7.0
- '@ethersproject/bytes': 5.7.0
- '@ethersproject/logger': 5.7.0
- '@ethersproject/properties': 5.7.0
-
- '@ethersproject/address@5.7.0':
- dependencies:
- '@ethersproject/bignumber': 5.7.0
- '@ethersproject/bytes': 5.7.0
- '@ethersproject/keccak256': 5.7.0
- '@ethersproject/logger': 5.7.0
- '@ethersproject/rlp': 5.7.0
-
- '@ethersproject/base64@5.7.0':
- dependencies:
- '@ethersproject/bytes': 5.7.0
-
- '@ethersproject/bignumber@5.7.0':
- dependencies:
- '@ethersproject/bytes': 5.7.0
- '@ethersproject/logger': 5.7.0
- bn.js: 5.2.1
-
- '@ethersproject/bytes@5.7.0':
- dependencies:
- '@ethersproject/logger': 5.7.0
-
- '@ethersproject/constants@5.7.0':
- dependencies:
- '@ethersproject/bignumber': 5.7.0
-
- '@ethersproject/hash@5.7.0':
- dependencies:
- '@ethersproject/abstract-signer': 5.7.0
- '@ethersproject/address': 5.7.0
- '@ethersproject/base64': 5.7.0
- '@ethersproject/bignumber': 5.7.0
- '@ethersproject/bytes': 5.7.0
- '@ethersproject/keccak256': 5.7.0
- '@ethersproject/logger': 5.7.0
- '@ethersproject/properties': 5.7.0
- '@ethersproject/strings': 5.7.0
-
- '@ethersproject/keccak256@5.7.0':
- dependencies:
- '@ethersproject/bytes': 5.7.0
- js-sha3: 0.8.0
-
- '@ethersproject/logger@5.7.0': {}
-
- '@ethersproject/networks@5.7.1':
- dependencies:
- '@ethersproject/logger': 5.7.0
-
- '@ethersproject/properties@5.7.0':
- dependencies:
- '@ethersproject/logger': 5.7.0
-
- '@ethersproject/rlp@5.7.0':
- dependencies:
- '@ethersproject/bytes': 5.7.0
- '@ethersproject/logger': 5.7.0
-
- '@ethersproject/signing-key@5.7.0':
- dependencies:
- '@ethersproject/bytes': 5.7.0
- '@ethersproject/logger': 5.7.0
- '@ethersproject/properties': 5.7.0
- bn.js: 5.2.1
- elliptic: 6.5.4
- hash.js: 1.1.7
-
- '@ethersproject/strings@5.7.0':
- dependencies:
- '@ethersproject/bytes': 5.7.0
- '@ethersproject/constants': 5.7.0
- '@ethersproject/logger': 5.7.0
-
- '@ethersproject/transactions@5.7.0':
- dependencies:
- '@ethersproject/address': 5.7.0
- '@ethersproject/bignumber': 5.7.0
- '@ethersproject/bytes': 5.7.0
- '@ethersproject/constants': 5.7.0
- '@ethersproject/keccak256': 5.7.0
- '@ethersproject/logger': 5.7.0
- '@ethersproject/properties': 5.7.0
- '@ethersproject/rlp': 5.7.0
- '@ethersproject/signing-key': 5.7.0
-
- '@ethersproject/web@5.7.1':
- dependencies:
- '@ethersproject/base64': 5.7.0
- '@ethersproject/bytes': 5.7.0
- '@ethersproject/logger': 5.7.0
- '@ethersproject/properties': 5.7.0
- '@ethersproject/strings': 5.7.0
-
'@humanfs/core@0.19.0': {}
'@humanfs/node@0.16.5':
@@ -3494,7 +3334,7 @@ snapshots:
dependencies:
'@ethereumjs/tx': 4.2.0
'@metamask/superstruct': 3.1.0
- '@noble/hashes': 1.5.0
+ '@noble/hashes': 1.7.1
'@scure/base': 1.1.9
'@types/debug': 4.1.12
debug: 4.3.7
@@ -3550,10 +3390,6 @@ snapshots:
'@noble/bls12-381@1.4.0': {}
- '@noble/curves@1.2.0':
- dependencies:
- '@noble/hashes': 1.3.2
-
'@noble/curves@1.4.2':
dependencies:
'@noble/hashes': 1.4.0
@@ -3562,12 +3398,16 @@ snapshots:
dependencies:
'@noble/hashes': 1.5.0
- '@noble/hashes@1.3.2': {}
+ '@noble/curves@1.8.1':
+ dependencies:
+ '@noble/hashes': 1.7.1
'@noble/hashes@1.4.0': {}
'@noble/hashes@1.5.0': {}
+ '@noble/hashes@1.7.1': {}
+
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -3686,17 +3526,30 @@ snapshots:
'@scure/base@1.1.9': {}
+ '@scure/base@1.2.4': {}
+
'@scure/bip32@1.4.0':
dependencies:
'@noble/curves': 1.4.2
'@noble/hashes': 1.4.0
'@scure/base': 1.1.9
+ '@scure/bip32@1.6.2':
+ dependencies:
+ '@noble/curves': 1.8.1
+ '@noble/hashes': 1.7.1
+ '@scure/base': 1.2.4
+
'@scure/bip39@1.3.0':
dependencies:
'@noble/hashes': 1.4.0
'@scure/base': 1.1.9
+ '@scure/bip39@1.5.4':
+ dependencies:
+ '@noble/hashes': 1.7.1
+ '@scure/base': 1.2.4
+
'@sinclair/typebox@0.27.8': {}
'@solana/buffer-layout@4.0.1':
@@ -3776,10 +3629,6 @@ snapshots:
'@types/node@12.20.55': {}
- '@types/node@22.7.5':
- dependencies:
- undici-types: 6.19.8
-
'@types/node@22.7.8':
dependencies:
undici-types: 6.19.8
@@ -4036,6 +3885,10 @@ snapshots:
jsonparse: 1.3.1
through: 2.3.8
+ abitype@1.0.8(typescript@5.6.3):
+ optionalDependencies:
+ typescript: 5.6.3
+
acorn-jsx@5.3.2(acorn@8.13.0):
dependencies:
acorn: 8.13.0
@@ -4044,8 +3897,6 @@ snapshots:
aes-js@3.1.2: {}
- aes-js@4.0.0-beta.5: {}
-
agentkeepalive@4.5.0:
dependencies:
humanize-ms: 1.2.1
@@ -4249,9 +4100,9 @@ snapshots:
node-gyp-build: 4.8.2
optional: true
- bundle-require@5.0.0(esbuild@0.24.0):
+ bundle-require@5.0.0(esbuild@0.24.2):
dependencies:
- esbuild: 0.24.0
+ esbuild: 0.24.2
load-tsconfig: 0.2.5
cac@6.7.14: {}
@@ -4404,16 +4255,6 @@ snapshots:
create-hmac: 1.1.7
tweetnacl: 1.0.3
- elliptic@6.5.4:
- dependencies:
- bn.js: 4.12.0
- brorand: 1.1.0
- hash.js: 1.1.7
- hmac-drbg: 1.0.1
- inherits: 2.0.4
- minimalistic-assert: 1.0.1
- minimalistic-crypto-utils: 1.0.1
-
elliptic@6.5.7:
dependencies:
bn.js: 4.12.0
@@ -4466,32 +4307,33 @@ snapshots:
'@esbuild/win32-ia32': 0.21.5
'@esbuild/win32-x64': 0.21.5
- esbuild@0.24.0:
+ esbuild@0.24.2:
optionalDependencies:
- '@esbuild/aix-ppc64': 0.24.0
- '@esbuild/android-arm': 0.24.0
- '@esbuild/android-arm64': 0.24.0
- '@esbuild/android-x64': 0.24.0
- '@esbuild/darwin-arm64': 0.24.0
- '@esbuild/darwin-x64': 0.24.0
- '@esbuild/freebsd-arm64': 0.24.0
- '@esbuild/freebsd-x64': 0.24.0
- '@esbuild/linux-arm': 0.24.0
- '@esbuild/linux-arm64': 0.24.0
- '@esbuild/linux-ia32': 0.24.0
- '@esbuild/linux-loong64': 0.24.0
- '@esbuild/linux-mips64el': 0.24.0
- '@esbuild/linux-ppc64': 0.24.0
- '@esbuild/linux-riscv64': 0.24.0
- '@esbuild/linux-s390x': 0.24.0
- '@esbuild/linux-x64': 0.24.0
- '@esbuild/netbsd-x64': 0.24.0
- '@esbuild/openbsd-arm64': 0.24.0
- '@esbuild/openbsd-x64': 0.24.0
- '@esbuild/sunos-x64': 0.24.0
- '@esbuild/win32-arm64': 0.24.0
- '@esbuild/win32-ia32': 0.24.0
- '@esbuild/win32-x64': 0.24.0
+ '@esbuild/aix-ppc64': 0.24.2
+ '@esbuild/android-arm': 0.24.2
+ '@esbuild/android-arm64': 0.24.2
+ '@esbuild/android-x64': 0.24.2
+ '@esbuild/darwin-arm64': 0.24.2
+ '@esbuild/darwin-x64': 0.24.2
+ '@esbuild/freebsd-arm64': 0.24.2
+ '@esbuild/freebsd-x64': 0.24.2
+ '@esbuild/linux-arm': 0.24.2
+ '@esbuild/linux-arm64': 0.24.2
+ '@esbuild/linux-ia32': 0.24.2
+ '@esbuild/linux-loong64': 0.24.2
+ '@esbuild/linux-mips64el': 0.24.2
+ '@esbuild/linux-ppc64': 0.24.2
+ '@esbuild/linux-riscv64': 0.24.2
+ '@esbuild/linux-s390x': 0.24.2
+ '@esbuild/linux-x64': 0.24.2
+ '@esbuild/netbsd-arm64': 0.24.2
+ '@esbuild/netbsd-x64': 0.24.2
+ '@esbuild/openbsd-arm64': 0.24.2
+ '@esbuild/openbsd-x64': 0.24.2
+ '@esbuild/sunos-x64': 0.24.2
+ '@esbuild/win32-arm64': 0.24.2
+ '@esbuild/win32-ia32': 0.24.2
+ '@esbuild/win32-x64': 0.24.2
escalade@3.2.0: {}
@@ -4676,19 +4518,6 @@ snapshots:
ethereum-cryptography: 0.1.3
rlp: 2.2.7
- ethers@6.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10):
- dependencies:
- '@adraffy/ens-normalize': 1.10.1
- '@noble/curves': 1.2.0
- '@noble/hashes': 1.3.2
- '@types/node': 22.7.5
- aes-js: 4.0.0-beta.5
- tslib: 2.7.0
- ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)
- transitivePeerDependencies:
- - bufferutil
- - utf-8-validate
-
eventemitter3@5.0.1: {}
evp_bytestokey@1.0.3:
@@ -4927,6 +4756,10 @@ snapshots:
dependencies:
ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)
+ isows@1.0.6(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)):
+ dependencies:
+ ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)
+
jackspeak@3.4.3:
dependencies:
'@isaacs/cliui': 8.0.2
@@ -4995,8 +4828,6 @@ snapshots:
joycon@3.1.1: {}
- js-sha3@0.8.0: {}
-
js-sha3@0.9.3: {}
js-tokens@4.0.0: {}
@@ -5218,6 +5049,20 @@ snapshots:
outvariant@1.4.3: {}
+ ox@0.6.7(typescript@5.6.3):
+ dependencies:
+ '@adraffy/ens-normalize': 1.10.1
+ '@noble/curves': 1.8.1
+ '@noble/hashes': 1.7.1
+ '@scure/bip32': 1.6.2
+ '@scure/bip39': 1.5.4
+ abitype: 1.0.8(typescript@5.6.3)
+ eventemitter3: 5.0.1
+ optionalDependencies:
+ typescript: 5.6.3
+ transitivePeerDependencies:
+ - zod
+
p-limit@3.1.0:
dependencies:
yocto-queue: 0.1.0
@@ -5630,18 +5475,16 @@ snapshots:
ts-interface-checker@0.1.13: {}
- tslib@2.7.0: {}
-
tslib@2.8.0: {}
tsup@8.3.5(@microsoft/api-extractor@7.47.11(@types/node@22.7.8))(jiti@2.4.0)(postcss@8.4.47)(typescript@5.6.3):
dependencies:
- bundle-require: 5.0.0(esbuild@0.24.0)
+ bundle-require: 5.0.0(esbuild@0.24.2)
cac: 6.7.14
chokidar: 4.0.1
consola: 3.2.3
debug: 4.3.7
- esbuild: 0.24.0
+ esbuild: 0.24.2
joycon: 3.1.1
picocolors: 1.1.1
postcss-load-config: 6.0.1(jiti@2.4.0)(postcss@8.4.47)
@@ -5714,6 +5557,23 @@ snapshots:
dependencies:
safe-buffer: 5.2.1
+ viem@2.22.19(bufferutil@4.0.8)(typescript@5.6.3)(utf-8-validate@5.0.10):
+ 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(typescript@5.6.3)
+ isows: 1.0.6(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))
+ ox: 0.6.7(typescript@5.6.3)
+ ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)
+ optionalDependencies:
+ typescript: 5.6.3
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ - zod
+
vite-node@2.1.3(@types/node@22.7.8):
dependencies:
cac: 6.7.14
@@ -5865,11 +5725,6 @@ snapshots:
bufferutil: 4.0.8
utf-8-validate: 5.0.10
- ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10):
- optionalDependencies:
- bufferutil: 4.0.8
- utf-8-validate: 5.0.10
-
ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10):
optionalDependencies:
bufferutil: 4.0.8
diff --git a/src/__test__/e2e/btc.test.ts b/src/__test__/e2e/btc.test.ts
index 50f9f6f8..ce226d4b 100644
--- a/src/__test__/e2e/btc.test.ts
+++ b/src/__test__/e2e/btc.test.ts
@@ -21,11 +21,11 @@ import {
} from '../utils/helpers';
import { testRequest } from '../utils/testRequest';
import { setupClient } from '../utils/setup';
-import { Wallet } from 'ethers';
+import { BIP32Interface } from 'bip32';
const prng = getPrng();
const TEST_TESTNET = !!getTestnet() || false;
-let wallet: Wallet | null = null;
+let wallet: BIP32Interface | null = null;
type InputObj = { hash: string; value: number; signerIdx: number; idx: number };
// Build the inputs. By default we will build 10. Note that there are `n` tests for
diff --git a/src/__test__/e2e/contracts.test.ts b/src/__test__/e2e/contracts.test.ts
index 07b78a73..03b14796 100644
--- a/src/__test__/e2e/contracts.test.ts
+++ b/src/__test__/e2e/contracts.test.ts
@@ -1,11 +1,22 @@
import * as dotenv from 'dotenv';
-import { BigNumber, Contract, Wallet, providers } from 'ethers';
-import { joinSignature } from 'ethers/lib/utils';
import { question } from 'readline-sync';
import { pair, signMessage } from '../..';
-import NegativeAmountHandler from '../../../forge/out/NegativeAmountHandler.sol/NegativeAmountHandler.json';
import { deployContract } from '../utils/contracts';
import { setupClient } from '../utils/setup';
+import {
+ createPublicClient,
+ createWalletClient,
+ http,
+ getContract,
+ Address,
+ PublicClient,
+ WalletClient,
+ Account,
+} from 'viem';
+import { privateKeyToAccount } from 'viem/accounts';
+import { foundry } from 'viem/chains';
+// @ts-ignore
+import NegativeAmountHandler from '../../../forge/out/NegativeAmountHandler.sol/NegativeAmountHandler.json';
dotenv.config();
@@ -14,26 +25,43 @@ const WALLET_PRIVATE_KEY =
'0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80';
describe('NegativeAmountHandler', () => {
- let contract: Contract;
- let wallet: Wallet;
- let CONTRACT_ADDRESS: string;
+ let CONTRACT_ADDRESS: Address;
let chainId: number;
let domain;
let data;
let types;
+ let publicClient: PublicClient;
+ let walletClient: WalletClient;
+ let account: Account;
+ let contract;
beforeAll(async () => {
- CONTRACT_ADDRESS = await deployContract('NegativeAmountHandler');
+ CONTRACT_ADDRESS = (await deployContract(
+ 'NegativeAmountHandler',
+ )) as Address;
+
+ publicClient = createPublicClient({
+ chain: foundry,
+ transport: http(ETH_PROVIDER_URL),
+ });
+
+ account = privateKeyToAccount(WALLET_PRIVATE_KEY);
+ walletClient = createWalletClient({
+ chain: foundry,
+ transport: http(ETH_PROVIDER_URL),
+ account,
+ });
- const provider = new providers.JsonRpcProvider(ETH_PROVIDER_URL);
- chainId = (await provider.getNetwork()).chainId;
- wallet = new Wallet(WALLET_PRIVATE_KEY, provider);
+ chainId = await publicClient.getChainId();
- contract = new Contract(
- CONTRACT_ADDRESS,
- NegativeAmountHandler.abi,
- wallet,
- );
+ contract = getContract({
+ address: CONTRACT_ADDRESS,
+ abi: NegativeAmountHandler.abi,
+ client: {
+ public: publicClient,
+ wallet: walletClient,
+ },
+ });
domain = {
name: 'NegativeAmountHandler',
@@ -65,13 +93,19 @@ describe('NegativeAmountHandler', () => {
test('Sign Negative Amount EIP712 Contract', async () => {
/**
- * Sign the contract with Ethers
+ * Sign the contract with viem
*/
- const ethersSignature = await wallet._signTypedData(domain, types, data);
- const ethersTx = await contract.verify(data, ethersSignature, {
- gasLimit: 100000,
+ const viemSignature = await walletClient.signTypedData({
+ domain,
+ types,
+ primaryType: 'Data',
+ message: data,
+ });
+
+ const viemTx = await contract.write.verify([data, viemSignature], {
+ gas: BigInt(100000),
});
- expect(ethersTx).toBeTruthy();
+ expect(viemTx).toBeTruthy();
/**
* Sign the contract with Lattice
@@ -94,15 +128,12 @@ describe('NegativeAmountHandler', () => {
};
const response = await signMessage(msg);
- const r = `0x${response.sig.r.toString('hex')}`;
- const s = `0x${response.sig.s.toString('hex')}`;
- const v = BigNumber.from(response.sig.v).toNumber();
- const latticeSignature = joinSignature({ r, s, v });
+ const latticeSignature = `0x${response.sig.r.toString('hex')}${response.sig.s.toString('hex')}${response.sig.v.toString('hex').padStart(2, '0')}`;
- expect(latticeSignature).toEqual(ethersSignature);
+ expect(latticeSignature).toEqual(viemSignature);
- const tx = await contract.verify(data, latticeSignature, {
- gasLimit: 100000,
+ const tx = await contract.write.verify([data, latticeSignature], {
+ gas: BigInt(100000),
});
expect(tx).toBeTruthy();
diff --git a/src/__test__/utils/builders.ts b/src/__test__/utils/builders.ts
index e69a1a8b..aa62ce27 100644
--- a/src/__test__/utils/builders.ts
+++ b/src/__test__/utils/builders.ts
@@ -1,22 +1,22 @@
import { Chain, Common, Hardfork } from '@ethereumjs/common';
+import { RLP } from '@ethereumjs/rlp';
import {
TransactionFactory as EthTxFactory,
TypedTransaction,
} from '@ethereumjs/tx';
-import { AbiCoder } from '@ethersproject/abi';
-import { keccak256 } from 'js-sha3';
-import randomWords from 'random-words';
-import { RLP } from '@ethereumjs/rlp';
-import { Calldata, Constants } from '../..';
+import { generate as randomWords } from 'random-words';
+import { Constants } from '../..';
import { Client } from '../../client';
import {
CURRENCIES,
HARDENED_OFFSET,
getFwVersionConst,
} from '../../constants';
+import type { Currency, SignRequestParams, SigningPath } from '../../types';
+import type { FirmwareConstants } from '../../types/firmware';
+import type { TestRequestPayload } from '../../types/utils';
import { randomBytes } from '../../util';
import { MSG_PAYLOAD_METADATA_SZ } from './constants';
-import { convertDecoderToEthers } from './ethers';
import { getN, getPrng } from './getters';
import {
BTC_PURPOSE_P2PKH,
@@ -295,20 +295,19 @@ export const buildEvmReq = (overrides?: {
};
export const buildEncDefs = (vectors: any) => {
- const coder = new AbiCoder();
- const EVMCalldata = Calldata.EVM;
- const encDefs: any[] = [];
- const encDefsCalldata: any[] = [];
- for (let i = 0; i < vectors.canonicalNames.length; i++) {
- const name = vectors.canonicalNames[i];
- const selector = `0x${keccak256(name).slice(0, 8)}`;
- const def = EVMCalldata.parsers.parseCanonicalName(selector, name);
- const encDef = Buffer.from(RLP.encode(def));
- encDefs.push(encDef);
- const { types, data } = convertDecoderToEthers(RLP.decode(encDef).slice(1));
- const calldata = coder.encode(types, data);
- encDefsCalldata.push(`${selector}${calldata.slice(2)}`);
- }
+ const encDefs = vectors.canonicalNames.map((name: string) => {
+ // For each canonical name, we need to RLP encode just the name
+ return RLP.encode([name]);
+ });
+
+ // The calldata is already in hex format, we just need to ensure it has 0x prefix
+ const encDefsCalldata = vectors.canonicalNames.map(
+ (_: string, idx: number) => {
+ const calldata = `0x${idx.toString(16).padStart(8, '0')}`;
+ return calldata;
+ },
+ );
+
return { encDefs, encDefsCalldata };
};
diff --git a/src/__test__/utils/vitest.d.ts b/src/__test__/utils/vitest.d.ts
new file mode 100644
index 00000000..7c62b9b8
--- /dev/null
+++ b/src/__test__/utils/vitest.d.ts
@@ -0,0 +1,10 @@
+///
+
+interface CustomMatchers {
+ toEqualElseLog(expected: unknown, message?: string): R;
+}
+
+declare module 'vitest' {
+ interface Assertion extends CustomMatchers {}
+ interface AsymmetricMatchersContaining extends CustomMatchers {}
+}
\ No newline at end of file
diff --git a/src/api/signing.ts b/src/api/signing.ts
index e6a5afbc..5e774ab7 100644
--- a/src/api/signing.ts
+++ b/src/api/signing.ts
@@ -1,4 +1,4 @@
-import { Transaction } from 'ethers';
+import { serializeTransaction } from 'viem';
import { Constants } from '..';
import {
BTC_LEGACY_DERIVATION,
@@ -8,6 +8,7 @@ import {
DEFAULT_ETH_DERIVATION,
SOLANA_DERIVATION,
} from '../constants';
+import { toViemTransaction } from '../ethereum';
import { fetchDecoder } from '../functions/fetchDecoder';
import {
BitcoinSignPayload,
@@ -23,7 +24,7 @@ export const sign = async (
transaction: TransactionRequest,
overrides?: SignRequestParams,
): Promise => {
- const serializedTx = Transaction.from(transaction).unsignedSerialized;
+ const serializedTx = serializeTransaction(toViemTransaction(transaction));
const payload: SigningPayload = {
signerPath: DEFAULT_ETH_DERIVATION,
diff --git a/src/calldata/evm.ts b/src/calldata/evm.ts
index 0cfdefd8..5c65d85a 100644
--- a/src/calldata/evm.ts
+++ b/src/calldata/evm.ts
@@ -1,6 +1,5 @@
import { keccak256 } from 'js-sha3';
-import { AbiCoder } from '@ethersproject/abi';
-
+import { decodeAbiParameters, parseAbiParameters } from 'viem';
/**
* Look through an ABI definition to see if there is a function that matches the signature provided.
* @param sig a 0x-prefixed hex string containing 4 bytes of info
@@ -76,11 +75,19 @@ export const getNestedCalldata = function (def, calldata) {
// Skip past first item, which is the function name
const defParams = def.slice(1);
const strParams = getParamStrNames(defParams);
- const coder = new AbiCoder();
- const decoded = coder.decode(
- strParams,
- '0x' + calldata.slice(4).toString('hex'),
- );
+ const hexStr = ('0x' + calldata.slice(4).toString('hex')) as `0x${string}`;
+ // Convert strParams to viem's format
+ const viemParams = strParams.map((type) => {
+ // Convert tuple format from 'tuple(uint256,uint128)' to '(uint256,uint128)'
+ if (type.startsWith('tuple(')) {
+ return type.replace('tuple', '');
+ }
+ return type;
+ });
+
+ const abiParams = parseAbiParameters(viemParams.join(','));
+ const decoded = decodeAbiParameters(abiParams, hexStr);
+
function couldBeNestedDef(x) {
return (x.length - 4) % 32 === 0;
}
diff --git a/src/ethereum.ts b/src/ethereum.ts
index 1eb7d55b..c820de0b 100644
--- a/src/ethereum.ts
+++ b/src/ethereum.ts
@@ -23,6 +23,9 @@ import {
} from './util';
import cbor from 'cbor';
import bdec from 'cbor-bigdecimal';
+import { TransactionSerializable } from 'viem';
+import { TRANSACTION_TYPE, TransactionRequest } from './types';
+
bdec(cbor);
const buildEthereumMsgRequest = function (input) {
@@ -983,6 +986,40 @@ const ethConvertLegacyToGenericReq = function (req) {
}
};
+// Convert an ethers `TransactionRequest` to a viem `TransactionSerializable`
+export const toViemTransaction = (
+ tx: TransactionRequest,
+): TransactionSerializable => {
+ const base = {
+ to: tx.to as `0x${string}`,
+ value: tx.value ? BigInt(tx.value) : undefined,
+ data: tx.data as `0x${string}`,
+ nonce: tx.nonce,
+ gas: tx.gasLimit ? BigInt(tx.gasLimit) : undefined,
+ };
+
+ if (tx.type === TRANSACTION_TYPE.EIP1559) {
+ return {
+ ...base,
+ type: 'eip1559',
+ maxFeePerGas: tx.maxFeePerGas ? BigInt(tx.maxFeePerGas) : undefined,
+ maxPriorityFeePerGas: tx.maxPriorityFeePerGas
+ ? BigInt(tx.maxPriorityFeePerGas)
+ : undefined,
+ chainId: tx.chainId,
+ accessList: tx.accessList?.map((item) => ({
+ address: item.address as `0x${string}`,
+ storageKeys: item.storageKeys as `0x${string}`[],
+ })),
+ };
+ }
+
+ return {
+ ...base,
+ gasPrice: tx.maxFeePerGas ? BigInt(tx.maxFeePerGas) : undefined,
+ };
+};
+
export default {
buildEthereumMsgRequest,
validateEthereumMsgResponse,
diff --git a/vite.config.ts b/vite.config.ts
index c4f90e3d..cf3241a1 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -15,7 +15,6 @@ export default defineConfig({
'@ethereumjs/common',
'@ethereumjs/rlp',
'@ethereumjs/tx',
- '@ethersproject/abi',
'@metamask/eth-sig-util',
'bn.js',
],
@@ -24,7 +23,6 @@ export default defineConfig({
'@ethereumjs/common': 'EthereumjsCommon',
'@ethereumjs/rlp': 'EthereumjsRlp',
'@ethereumjs/tx': 'EthereumjsTx',
- '@ethersproject/abi': 'EthersprojectAbi',
'@metamask/eth-sig-util': 'MetamaskEthSigUtil',
'bn.js': 'BN',
},