@safe-global/protocol-kit 4.1.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/dist/src/Safe.d.ts +12 -17
  2. package/dist/src/Safe.js +159 -112
  3. package/dist/src/Safe.js.map +1 -1
  4. package/dist/src/SafeProvider.d.ts +11 -20
  5. package/dist/src/SafeProvider.js +141 -90
  6. package/dist/src/SafeProvider.js.map +1 -1
  7. package/dist/src/contracts/BaseContract.d.ts +26 -6
  8. package/dist/src/contracts/BaseContract.js +101 -14
  9. package/dist/src/contracts/BaseContract.js.map +1 -1
  10. package/dist/src/contracts/CompatibilityFallbackHandler/CompatibilityFallbackHandlerBaseContract.d.ts +5 -4
  11. package/dist/src/contracts/CompatibilityFallbackHandler/CompatibilityFallbackHandlerBaseContract.js +3 -2
  12. package/dist/src/contracts/CompatibilityFallbackHandler/CompatibilityFallbackHandlerBaseContract.js.map +1 -1
  13. package/dist/src/contracts/CompatibilityFallbackHandler/v1.3.0/CompatibilityFallbackHandlerContract_v1_3_0.d.ts +4 -3
  14. package/dist/src/contracts/CompatibilityFallbackHandler/v1.3.0/CompatibilityFallbackHandlerContract_v1_3_0.js +5 -5
  15. package/dist/src/contracts/CompatibilityFallbackHandler/v1.3.0/CompatibilityFallbackHandlerContract_v1_3_0.js.map +1 -1
  16. package/dist/src/contracts/CompatibilityFallbackHandler/v1.4.1/CompatibilityFallbackHandlerContract_v1_4_1.d.ts +4 -3
  17. package/dist/src/contracts/CompatibilityFallbackHandler/v1.4.1/CompatibilityFallbackHandlerContract_v1_4_1.js +5 -5
  18. package/dist/src/contracts/CompatibilityFallbackHandler/v1.4.1/CompatibilityFallbackHandlerContract_v1_4_1.js.map +1 -1
  19. package/dist/src/contracts/CreateCall/CreateCallBaseContract.d.ts +5 -4
  20. package/dist/src/contracts/CreateCall/CreateCallBaseContract.js +3 -2
  21. package/dist/src/contracts/CreateCall/CreateCallBaseContract.js.map +1 -1
  22. package/dist/src/contracts/CreateCall/v1.3.0/CreateCallContract_v1_3_0.d.ts +4 -3
  23. package/dist/src/contracts/CreateCall/v1.3.0/CreateCallContract_v1_3_0.js +7 -9
  24. package/dist/src/contracts/CreateCall/v1.3.0/CreateCallContract_v1_3_0.js.map +1 -1
  25. package/dist/src/contracts/CreateCall/v1.4.1/CreateCallContract_v1_4_1.d.ts +4 -3
  26. package/dist/src/contracts/CreateCall/v1.4.1/CreateCallContract_v1_4_1.js +7 -9
  27. package/dist/src/contracts/CreateCall/v1.4.1/CreateCallContract_v1_4_1.js.map +1 -1
  28. package/dist/src/contracts/MultiSend/MultiSendBaseContract.d.ts +5 -4
  29. package/dist/src/contracts/MultiSend/MultiSendBaseContract.js +3 -2
  30. package/dist/src/contracts/MultiSend/MultiSendBaseContract.js.map +1 -1
  31. package/dist/src/contracts/MultiSend/MultiSendCallOnlyBaseContract.d.ts +5 -4
  32. package/dist/src/contracts/MultiSend/MultiSendCallOnlyBaseContract.js +3 -2
  33. package/dist/src/contracts/MultiSend/MultiSendCallOnlyBaseContract.js.map +1 -1
  34. package/dist/src/contracts/MultiSend/v1.1.1/MultiSendContract_v1_1_1.d.ts +4 -3
  35. package/dist/src/contracts/MultiSend/v1.1.1/MultiSendContract_v1_1_1.js +5 -5
  36. package/dist/src/contracts/MultiSend/v1.1.1/MultiSendContract_v1_1_1.js.map +1 -1
  37. package/dist/src/contracts/MultiSend/v1.3.0/MultiSendCallOnlyContract_v1_3_0.d.ts +4 -3
  38. package/dist/src/contracts/MultiSend/v1.3.0/MultiSendCallOnlyContract_v1_3_0.js +5 -5
  39. package/dist/src/contracts/MultiSend/v1.3.0/MultiSendCallOnlyContract_v1_3_0.js.map +1 -1
  40. package/dist/src/contracts/MultiSend/v1.3.0/MultiSendContract_v1_3_0.d.ts +4 -3
  41. package/dist/src/contracts/MultiSend/v1.3.0/MultiSendContract_v1_3_0.js +5 -5
  42. package/dist/src/contracts/MultiSend/v1.3.0/MultiSendContract_v1_3_0.js.map +1 -1
  43. package/dist/src/contracts/MultiSend/v1.4.1/MultiSendCallOnlyContract_v1_4_1.d.ts +4 -3
  44. package/dist/src/contracts/MultiSend/v1.4.1/MultiSendCallOnlyContract_v1_4_1.js +5 -5
  45. package/dist/src/contracts/MultiSend/v1.4.1/MultiSendCallOnlyContract_v1_4_1.js.map +1 -1
  46. package/dist/src/contracts/MultiSend/v1.4.1/MultiSendContract_v1_4_1.d.ts +4 -3
  47. package/dist/src/contracts/MultiSend/v1.4.1/MultiSendContract_v1_4_1.js +5 -5
  48. package/dist/src/contracts/MultiSend/v1.4.1/MultiSendContract_v1_4_1.js.map +1 -1
  49. package/dist/src/contracts/Safe/SafeBaseContract.d.ts +5 -4
  50. package/dist/src/contracts/Safe/SafeBaseContract.js +3 -2
  51. package/dist/src/contracts/Safe/SafeBaseContract.js.map +1 -1
  52. package/dist/src/contracts/Safe/v1.0.0/SafeContract_v1_0_0.d.ts +7 -11
  53. package/dist/src/contracts/Safe/v1.0.0/SafeContract_v1_0_0.js +64 -42
  54. package/dist/src/contracts/Safe/v1.0.0/SafeContract_v1_0_0.js.map +1 -1
  55. package/dist/src/contracts/Safe/v1.1.1/SafeContract_v1_1_1.d.ts +4 -9
  56. package/dist/src/contracts/Safe/v1.1.1/SafeContract_v1_1_1.js +61 -39
  57. package/dist/src/contracts/Safe/v1.1.1/SafeContract_v1_1_1.js.map +1 -1
  58. package/dist/src/contracts/Safe/v1.2.0/SafeContract_v1_2_0.d.ts +5 -10
  59. package/dist/src/contracts/Safe/v1.2.0/SafeContract_v1_2_0.js +63 -41
  60. package/dist/src/contracts/Safe/v1.2.0/SafeContract_v1_2_0.js.map +1 -1
  61. package/dist/src/contracts/Safe/v1.3.0/SafeContract_v1_3_0.d.ts +5 -10
  62. package/dist/src/contracts/Safe/v1.3.0/SafeContract_v1_3_0.js +63 -41
  63. package/dist/src/contracts/Safe/v1.3.0/SafeContract_v1_3_0.js.map +1 -1
  64. package/dist/src/contracts/Safe/v1.4.1/SafeContract_v1_4_1.d.ts +5 -10
  65. package/dist/src/contracts/Safe/v1.4.1/SafeContract_v1_4_1.js +63 -41
  66. package/dist/src/contracts/Safe/v1.4.1/SafeContract_v1_4_1.js.map +1 -1
  67. package/dist/src/contracts/SafeProxyFactory/SafeProxyFactoryBaseContract.d.ts +5 -7
  68. package/dist/src/contracts/SafeProxyFactory/SafeProxyFactoryBaseContract.js +3 -2
  69. package/dist/src/contracts/SafeProxyFactory/SafeProxyFactoryBaseContract.js.map +1 -1
  70. package/dist/src/contracts/SafeProxyFactory/v1.0.0/SafeProxyFactoryContract_v1_0_0.d.ts +5 -11
  71. package/dist/src/contracts/SafeProxyFactory/v1.0.0/SafeProxyFactoryContract_v1_0_0.js +9 -38
  72. package/dist/src/contracts/SafeProxyFactory/v1.0.0/SafeProxyFactoryContract_v1_0_0.js.map +1 -1
  73. package/dist/src/contracts/SafeProxyFactory/v1.1.1/SafeProxyFactoryContract_v1_1_1.d.ts +6 -12
  74. package/dist/src/contracts/SafeProxyFactory/v1.1.1/SafeProxyFactoryContract_v1_1_1.js +12 -41
  75. package/dist/src/contracts/SafeProxyFactory/v1.1.1/SafeProxyFactoryContract_v1_1_1.js.map +1 -1
  76. package/dist/src/contracts/SafeProxyFactory/v1.3.0/SafeProxyFactoryContract_v1_3_0.d.ts +5 -11
  77. package/dist/src/contracts/SafeProxyFactory/v1.3.0/SafeProxyFactoryContract_v1_3_0.js +11 -40
  78. package/dist/src/contracts/SafeProxyFactory/v1.3.0/SafeProxyFactoryContract_v1_3_0.js.map +1 -1
  79. package/dist/src/contracts/SafeProxyFactory/v1.4.1/SafeProxyFactoryContract_v1_4_1.d.ts +5 -11
  80. package/dist/src/contracts/SafeProxyFactory/v1.4.1/SafeProxyFactoryContract_v1_4_1.js +10 -39
  81. package/dist/src/contracts/SafeProxyFactory/v1.4.1/SafeProxyFactoryContract_v1_4_1.js.map +1 -1
  82. package/dist/src/contracts/SafeWebAuthnSharedSigner/SafeWebAuthnSharedSignerBaseContract.d.ts +5 -7
  83. package/dist/src/contracts/SafeWebAuthnSharedSigner/SafeWebAuthnSharedSignerBaseContract.js +3 -2
  84. package/dist/src/contracts/SafeWebAuthnSharedSigner/SafeWebAuthnSharedSignerBaseContract.js.map +1 -1
  85. package/dist/src/contracts/SafeWebAuthnSharedSigner/v0.2.1/SafeWebAuthnSharedSignerContract_v0_2_1.d.ts +4 -3
  86. package/dist/src/contracts/SafeWebAuthnSharedSigner/v0.2.1/SafeWebAuthnSharedSignerContract_v0_2_1.js +9 -9
  87. package/dist/src/contracts/SafeWebAuthnSharedSigner/v0.2.1/SafeWebAuthnSharedSignerContract_v0_2_1.js.map +1 -1
  88. package/dist/src/contracts/SafeWebAuthnSignerFactory/SafeWebAuthnSignerFactoryBaseContract.d.ts +5 -7
  89. package/dist/src/contracts/SafeWebAuthnSignerFactory/SafeWebAuthnSignerFactoryBaseContract.js +3 -2
  90. package/dist/src/contracts/SafeWebAuthnSignerFactory/SafeWebAuthnSignerFactoryBaseContract.js.map +1 -1
  91. package/dist/src/contracts/SafeWebAuthnSignerFactory/v0.2.1/SafeWebAuthnSignerFactoryContract_v0_2_1.d.ts +4 -3
  92. package/dist/src/contracts/SafeWebAuthnSignerFactory/v0.2.1/SafeWebAuthnSignerFactoryContract_v0_2_1.js +8 -8
  93. package/dist/src/contracts/SafeWebAuthnSignerFactory/v0.2.1/SafeWebAuthnSignerFactoryContract_v0_2_1.js.map +1 -1
  94. package/dist/src/contracts/SignMessageLib/SignMessageLibBaseContract.d.ts +5 -4
  95. package/dist/src/contracts/SignMessageLib/SignMessageLibBaseContract.js +3 -2
  96. package/dist/src/contracts/SignMessageLib/SignMessageLibBaseContract.js.map +1 -1
  97. package/dist/src/contracts/SignMessageLib/v1.3.0/SignMessageLibContract_v1_3_0.d.ts +4 -3
  98. package/dist/src/contracts/SignMessageLib/v1.3.0/SignMessageLibContract_v1_3_0.js +7 -8
  99. package/dist/src/contracts/SignMessageLib/v1.3.0/SignMessageLibContract_v1_3_0.js.map +1 -1
  100. package/dist/src/contracts/SignMessageLib/v1.4.1/SignMessageLibContract_v1_4_1.d.ts +4 -3
  101. package/dist/src/contracts/SignMessageLib/v1.4.1/SignMessageLibContract_v1_4_1.js +7 -8
  102. package/dist/src/contracts/SignMessageLib/v1.4.1/SignMessageLibContract_v1_4_1.js.map +1 -1
  103. package/dist/src/contracts/SimulateTxAccessor/SimulateTxAccessorBaseContract.d.ts +5 -4
  104. package/dist/src/contracts/SimulateTxAccessor/SimulateTxAccessorBaseContract.js +3 -2
  105. package/dist/src/contracts/SimulateTxAccessor/SimulateTxAccessorBaseContract.js.map +1 -1
  106. package/dist/src/contracts/SimulateTxAccessor/v1.3.0/SimulateTxAccessorContract_v1_3_0.d.ts +4 -3
  107. package/dist/src/contracts/SimulateTxAccessor/v1.3.0/SimulateTxAccessorContract_v1_3_0.js +9 -7
  108. package/dist/src/contracts/SimulateTxAccessor/v1.3.0/SimulateTxAccessorContract_v1_3_0.js.map +1 -1
  109. package/dist/src/contracts/SimulateTxAccessor/v1.4.1/SimulateTxAccessorContract_v1_4_1.d.ts +4 -3
  110. package/dist/src/contracts/SimulateTxAccessor/v1.4.1/SimulateTxAccessorContract_v1_4_1.js +9 -7
  111. package/dist/src/contracts/SimulateTxAccessor/v1.4.1/SimulateTxAccessorContract_v1_4_1.js.map +1 -1
  112. package/dist/src/contracts/config.d.ts +8 -1
  113. package/dist/src/contracts/config.js +47 -16
  114. package/dist/src/contracts/config.js.map +1 -1
  115. package/dist/src/contracts/constants.d.ts +4 -3
  116. package/dist/src/contracts/constants.js +2 -1
  117. package/dist/src/contracts/constants.js.map +1 -1
  118. package/dist/src/contracts/contractInstances.d.ts +13 -12
  119. package/dist/src/contracts/contractInstances.js +34 -34
  120. package/dist/src/contracts/contractInstances.js.map +1 -1
  121. package/dist/src/contracts/safeDeploymentContracts.d.ts +6 -5
  122. package/dist/src/contracts/safeDeploymentContracts.js +26 -66
  123. package/dist/src/contracts/safeDeploymentContracts.js.map +1 -1
  124. package/dist/src/contracts/utils.d.ts +35 -13
  125. package/dist/src/contracts/utils.js +136 -55
  126. package/dist/src/contracts/utils.js.map +1 -1
  127. package/dist/src/index.d.ts +10 -6
  128. package/dist/src/index.js +7 -9
  129. package/dist/src/index.js.map +1 -1
  130. package/dist/src/managers/contractManager.js +12 -17
  131. package/dist/src/managers/contractManager.js.map +1 -1
  132. package/dist/src/managers/fallbackHandlerManager.js +5 -4
  133. package/dist/src/managers/fallbackHandlerManager.js.map +1 -1
  134. package/dist/src/managers/guardManager.js +5 -4
  135. package/dist/src/managers/guardManager.js.map +1 -1
  136. package/dist/src/types/contracts.d.ts +13 -13
  137. package/dist/src/types/index.d.ts +0 -1
  138. package/dist/src/types/index.js +0 -1
  139. package/dist/src/types/index.js.map +1 -1
  140. package/dist/src/types/safeConfig.d.ts +3 -1
  141. package/dist/src/types/safeProvider.d.ts +33 -5
  142. package/dist/src/types/transactions.d.ts +1 -1
  143. package/dist/src/utils/address.d.ts +1 -1
  144. package/dist/src/utils/address.js +1 -1
  145. package/dist/src/utils/address.js.map +1 -1
  146. package/dist/src/utils/block.d.ts +6 -0
  147. package/dist/src/utils/block.js +14 -0
  148. package/dist/src/utils/block.js.map +1 -0
  149. package/dist/src/utils/constants.d.ts +4 -3
  150. package/dist/src/utils/constants.js +2 -1
  151. package/dist/src/utils/constants.js.map +1 -1
  152. package/dist/src/utils/eip-3770/config.js +32 -1
  153. package/dist/src/utils/eip-3770/config.js.map +1 -1
  154. package/dist/src/utils/eip-3770/index.d.ts +1 -1
  155. package/dist/src/utils/eip-3770/index.js +2 -3
  156. package/dist/src/utils/eip-3770/index.js.map +1 -1
  157. package/dist/src/utils/eip-712/encode.d.ts +3 -0
  158. package/dist/src/utils/eip-712/encode.js +127 -0
  159. package/dist/src/utils/eip-712/encode.js.map +1 -0
  160. package/dist/src/utils/eip-712/index.d.ts +1 -1
  161. package/dist/src/utils/eip-712/index.js +5 -7
  162. package/dist/src/utils/eip-712/index.js.map +1 -1
  163. package/dist/src/utils/erc-20/index.d.ts +1 -1
  164. package/dist/src/utils/erc-20/index.js +12 -5
  165. package/dist/src/utils/erc-20/index.js.map +1 -1
  166. package/dist/src/utils/messages/SafeMessage.d.ts +1 -1
  167. package/dist/src/utils/passkeys/PasskeyClient.d.ts +5 -0
  168. package/dist/src/utils/passkeys/PasskeyClient.js +156 -0
  169. package/dist/src/utils/passkeys/PasskeyClient.js.map +1 -0
  170. package/dist/src/utils/passkeys/createPasskeyDeploymentTransaction.d.ts +2 -1
  171. package/dist/src/utils/passkeys/createPasskeyDeploymentTransaction.js +12 -12
  172. package/dist/src/utils/passkeys/createPasskeyDeploymentTransaction.js.map +1 -1
  173. package/dist/src/utils/passkeys/extractPasskeyData.d.ts +1 -2
  174. package/dist/src/utils/passkeys/extractPasskeyData.js +8 -15
  175. package/dist/src/utils/passkeys/extractPasskeyData.js.map +1 -1
  176. package/dist/src/utils/passkeys/getPasskeyOwnerAddress.js +10 -3
  177. package/dist/src/utils/passkeys/getPasskeyOwnerAddress.js.map +1 -1
  178. package/dist/src/utils/passkeys/index.d.ts +1 -1
  179. package/dist/src/utils/passkeys/index.js +1 -1
  180. package/dist/src/utils/passkeys/isSharedSigner.d.ts +2 -3
  181. package/dist/src/utils/passkeys/isSharedSigner.js +6 -5
  182. package/dist/src/utils/passkeys/isSharedSigner.js.map +1 -1
  183. package/dist/src/utils/provider.d.ts +3 -0
  184. package/dist/src/utils/provider.js +12 -0
  185. package/dist/src/utils/provider.js.map +1 -0
  186. package/dist/src/utils/safeVersions.js +2 -2
  187. package/dist/src/utils/safeVersions.js.map +1 -1
  188. package/dist/src/utils/signatures/SafeSignature.d.ts +1 -1
  189. package/dist/src/utils/signatures/utils.d.ts +4 -4
  190. package/dist/src/utils/signatures/utils.js +34 -20
  191. package/dist/src/utils/signatures/utils.js.map +1 -1
  192. package/dist/src/utils/transactions/SafeTransaction.d.ts +1 -1
  193. package/dist/src/utils/transactions/SafeTransaction.js.map +1 -1
  194. package/dist/src/utils/transactions/gas.d.ts +1 -1
  195. package/dist/src/utils/transactions/gas.js +37 -64
  196. package/dist/src/utils/transactions/gas.js.map +1 -1
  197. package/dist/src/utils/transactions/types.d.ts +17 -1
  198. package/dist/src/utils/transactions/utils.d.ts +11 -2
  199. package/dist/src/utils/transactions/utils.js +117 -27
  200. package/dist/src/utils/transactions/utils.js.map +1 -1
  201. package/dist/src/utils/types.d.ts +4 -0
  202. package/dist/src/utils/types.js +59 -1
  203. package/dist/src/utils/types.js.map +1 -1
  204. package/dist/tsconfig.build.tsbuildinfo +1 -1
  205. package/package.json +26 -35
  206. package/dist/src/SafeFactory.d.ts +0 -15
  207. package/dist/src/SafeFactory.js +0 -136
  208. package/dist/src/SafeFactory.js.map +0 -1
  209. package/dist/src/types/safeFactory.d.ts +0 -31
  210. package/dist/src/types/safeFactory.js +0 -3
  211. package/dist/src/types/safeFactory.js.map +0 -1
  212. package/dist/src/utils/passkeys/PasskeySigner.d.ts +0 -63
  213. package/dist/src/utils/passkeys/PasskeySigner.js +0 -163
  214. package/dist/src/utils/passkeys/PasskeySigner.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@safe-global/protocol-kit",
3
- "version": "4.1.0",
3
+ "version": "5.0.0",
4
4
  "description": "SDK that facilitates the interaction with Safe Smart Accounts",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -16,26 +16,26 @@
16
16
  "update-safe-deployments": "ts-node scripts/safe-deployments/updateLocalNetworks.ts",
17
17
  "check-short-name-integrity": "ts-node scripts/safe-deployments/checkShortNameIntegrity.ts",
18
18
  "test": "mocha -r ts-node/register -r tsconfig-paths/register tests/unit/**/*.ts",
19
- "test:hardhat:web3:v1.0.0": "export TEST_NETWORK=hardhat && export ETH_LIB=web3 && export SAFE_VERSION=1.0.0 && hardhat deploy && nyc hardhat test",
20
- "test:hardhat:web3:v1.1.1": "export TEST_NETWORK=hardhat && export ETH_LIB=web3 && export SAFE_VERSION=1.1.1 && hardhat deploy && nyc hardhat test",
21
- "test:hardhat:web3:v1.2.0": "export TEST_NETWORK=hardhat && export ETH_LIB=web3 && export SAFE_VERSION=1.2.0 && hardhat deploy && nyc hardhat test",
22
- "test:hardhat:web3:v1.3.0": "export TEST_NETWORK=hardhat && export ETH_LIB=web3 && export SAFE_VERSION=1.3.0 && hardhat deploy && nyc hardhat test",
23
- "test:hardhat:web3:v1.4.1": "export TEST_NETWORK=hardhat && export ETH_LIB=web3 && export SAFE_VERSION=1.4.1 && hardhat deploy && nyc hardhat test",
24
- "test:hardhat:ethers:v1.0.0": "export TEST_NETWORK=hardhat && export ETH_LIB=ethers && export SAFE_VERSION=1.0.0 && hardhat deploy && nyc hardhat test",
25
- "test:hardhat:ethers:v1.1.1": "export TEST_NETWORK=hardhat && export ETH_LIB=ethers && export SAFE_VERSION=1.1.1 && hardhat deploy && nyc hardhat test",
26
- "test:hardhat:ethers:v1.2.0": "export TEST_NETWORK=hardhat && export ETH_LIB=ethers && export SAFE_VERSION=1.2.0 && hardhat deploy && nyc hardhat test",
27
- "test:hardhat:ethers:v1.3.0": "export TEST_NETWORK=hardhat && export ETH_LIB=ethers && export SAFE_VERSION=1.3.0 && hardhat deploy && nyc hardhat test",
28
- "test:hardhat:ethers:v1.4.1": "export TEST_NETWORK=hardhat && export ETH_LIB=ethers && export SAFE_VERSION=1.4.1 && hardhat deploy && nyc hardhat test",
29
- "test:hardhat:viem:v1.0.0": "export TEST_NETWORK=hardhat && export ETH_LIB=viem && export SAFE_VERSION=1.0.0 && hardhat deploy && nyc hardhat test",
30
- "test:hardhat:viem:v1.1.1": "export TEST_NETWORK=hardhat && export ETH_LIB=viem && export SAFE_VERSION=1.1.1 && hardhat deploy && nyc hardhat test",
31
- "test:hardhat:viem:v1.2.0": "export TEST_NETWORK=hardhat && export ETH_LIB=viem && export SAFE_VERSION=1.2.0 && hardhat deploy && nyc hardhat test",
32
- "test:hardhat:viem:v1.3.0": "export TEST_NETWORK=hardhat && export ETH_LIB=viem && export SAFE_VERSION=1.3.0 && hardhat deploy && nyc hardhat test",
33
- "test:hardhat:viem:v1.4.1": "export TEST_NETWORK=hardhat && export ETH_LIB=viem && export SAFE_VERSION=1.4.1 && hardhat deploy && nyc hardhat test",
19
+ "test:hardhat:web3:v1.0.0": "export TEST_NETWORK=hardhat && export ETH_LIB=web3 && export SAFE_VERSION=1.0.0 && testing-kit deploy && nyc testing-kit test 'tests/e2e/*.test.*'",
20
+ "test:hardhat:web3:v1.1.1": "export TEST_NETWORK=hardhat && export ETH_LIB=web3 && export SAFE_VERSION=1.1.1 && testing-kit deploy && nyc testing-kit test 'tests/e2e/*.test.*'",
21
+ "test:hardhat:web3:v1.2.0": "export TEST_NETWORK=hardhat && export ETH_LIB=web3 && export SAFE_VERSION=1.2.0 && testing-kit deploy && nyc testing-kit test 'tests/e2e/*.test.*'",
22
+ "test:hardhat:web3:v1.3.0": "export TEST_NETWORK=hardhat && export ETH_LIB=web3 && export SAFE_VERSION=1.3.0 && testing-kit deploy && nyc testing-kit test 'tests/e2e/*.test.*'",
23
+ "test:hardhat:web3:v1.4.1": "export TEST_NETWORK=hardhat && export ETH_LIB=web3 && export SAFE_VERSION=1.4.1 && testing-kit deploy && nyc testing-kit test 'tests/e2e/*.test.*'",
24
+ "test:hardhat:ethers:v1.0.0": "export TEST_NETWORK=hardhat && export ETH_LIB=ethers && export SAFE_VERSION=1.0.0 && testing-kit deploy && nyc testing-kit test 'tests/e2e/*.test.*'",
25
+ "test:hardhat:ethers:v1.1.1": "export TEST_NETWORK=hardhat && export ETH_LIB=ethers && export SAFE_VERSION=1.1.1 && testing-kit deploy && nyc testing-kit test 'tests/e2e/*.test.*'",
26
+ "test:hardhat:ethers:v1.2.0": "export TEST_NETWORK=hardhat && export ETH_LIB=ethers && export SAFE_VERSION=1.2.0 && testing-kit deploy && nyc testing-kit test 'tests/e2e/*.test.*'",
27
+ "test:hardhat:ethers:v1.3.0": "export TEST_NETWORK=hardhat && export ETH_LIB=ethers && export SAFE_VERSION=1.3.0 && testing-kit deploy && nyc testing-kit test 'tests/e2e/*.test.*'",
28
+ "test:hardhat:ethers:v1.4.1": "export TEST_NETWORK=hardhat && export ETH_LIB=ethers && export SAFE_VERSION=1.4.1 && testing-kit deploy && nyc testing-kit test 'tests/e2e/*.test.*'",
29
+ "test:hardhat:viem:v1.0.0": "export TEST_NETWORK=hardhat && export ETH_LIB=viem && export SAFE_VERSION=1.0.0 && testing-kit deploy && nyc testing-kit test 'tests/e2e/*.test.*'",
30
+ "test:hardhat:viem:v1.1.1": "export TEST_NETWORK=hardhat && export ETH_LIB=viem && export SAFE_VERSION=1.1.1 && testing-kit deploy && nyc testing-kit test 'tests/e2e/*.test.*'",
31
+ "test:hardhat:viem:v1.2.0": "export TEST_NETWORK=hardhat && export ETH_LIB=viem && export SAFE_VERSION=1.2.0 && testing-kit deploy && nyc testing-kit test 'tests/e2e/*.test.*'",
32
+ "test:hardhat:viem:v1.3.0": "export TEST_NETWORK=hardhat && export ETH_LIB=viem && export SAFE_VERSION=1.3.0 && testing-kit deploy && nyc testing-kit test 'tests/e2e/*.test.*'",
33
+ "test:hardhat:viem:v1.4.1": "export TEST_NETWORK=hardhat && export ETH_LIB=viem && export SAFE_VERSION=1.4.1 && testing-kit deploy && nyc testing-kit test 'tests/e2e/*.test.*'",
34
34
  "coverage": "nyc report --reporter=lcov",
35
35
  "format:check": "prettier --check \"*/**/*.{js,json,md,ts}\"",
36
36
  "format": "prettier --write \"*/**/*.{js,json,md,ts}\"",
37
37
  "unbuild": "rimraf dist artifacts deployments cache .nyc_output *.tsbuildinfo",
38
- "build": "yarn unbuild && hardhat compile && yarn check-safe-deployments && tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json"
38
+ "build": "yarn unbuild && yarn check-safe-deployments && NODE_OPTIONS=--max-old-space-size=8192 tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json"
39
39
  },
40
40
  "repository": {
41
41
  "type": "git",
@@ -51,37 +51,28 @@
51
51
  ],
52
52
  "homepage": "https://github.com/safe-global/safe-core-sdk#readme",
53
53
  "devDependencies": {
54
- "@gnosis.pm/safe-contracts-v1.3.0": "npm:@gnosis.pm/safe-contracts@1.3.0",
55
- "@nomicfoundation/hardhat-ethers": "^3.0.6",
56
- "@openzeppelin/contracts": "^2.5.1",
57
- "@safe-global/safe-contracts-v1.4.1": "npm:@safe-global/safe-contracts@1.4.1",
58
54
  "@safe-global/safe-passkey": "0.2.0-alpha.1",
59
- "@types/chai": "^4.3.16",
55
+ "@safe-global/testing-kit": "^0.1.0",
56
+ "@types/chai": "^4.3.19",
60
57
  "@types/chai-as-promised": "^7.1.8",
61
- "@types/mocha": "^10.0.6",
58
+ "@types/mocha": "^10.0.8",
62
59
  "@types/semver": "^7.5.8",
63
- "@types/yargs": "^17.0.32",
64
60
  "chai": "^4.3.10",
65
61
  "chai-as-promised": "^7.1.1",
66
62
  "dotenv": "^16.4.5",
67
- "hardhat": "2.20.1",
68
- "hardhat-deploy": "^0.12.4",
69
- "hardhat-deploy-ethers": "^0.4.2",
63
+ "ethers": "^6.13.2",
70
64
  "mocha": "^10.2.0",
71
65
  "nyc": "^15.1.0",
72
66
  "tsconfig-paths": "^4.2.0",
73
- "viem": "^2.15.1",
74
- "web3": "^4.7.0",
75
- "yargs": "^17.7.2"
67
+ "web3": "^4.12.1"
76
68
  },
77
69
  "dependencies": {
78
70
  "@noble/hashes": "^1.3.3",
79
- "@safe-global/safe-core-sdk-types": "^5.1.0",
80
- "@safe-global/safe-deployments": "^1.37.3",
71
+ "@safe-global/safe-deployments": "^1.37.9",
81
72
  "@safe-global/safe-modules-deployments": "^2.2.1",
73
+ "@safe-global/types-kit": "^1.0.0",
82
74
  "abitype": "^1.0.2",
83
- "ethereumjs-util": "^7.1.5",
84
- "ethers": "^6.13.1",
85
- "semver": "^7.6.2"
75
+ "semver": "^7.6.3",
76
+ "viem": "^2.21.8"
86
77
  }
87
78
  }
@@ -1,15 +0,0 @@
1
- import Safe from './Safe';
2
- import { SafeAccountConfig, SafeFactoryConfig, DeploySafeProps } from './types';
3
- import { SafeVersion } from '@safe-global/safe-core-sdk-types';
4
- import SafeProvider from './SafeProvider';
5
- declare class SafeFactory {
6
- #private;
7
- static init({ provider, signer, safeVersion, isL1SafeSingleton, contractNetworks }: SafeFactoryConfig): Promise<SafeFactory>;
8
- getSafeProvider(): SafeProvider;
9
- getSafeVersion(): SafeVersion;
10
- getAddress(): Promise<string>;
11
- getChainId(): Promise<bigint>;
12
- predictSafeAddress(safeAccountConfig: SafeAccountConfig, saltNonce?: string): Promise<string>;
13
- deploySafe({ safeAccountConfig, saltNonce, options, callback }: DeploySafeProps): Promise<Safe>;
14
- }
15
- export default SafeFactory;
@@ -1,136 +0,0 @@
1
- "use strict";
2
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
- };
7
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
8
- if (kind === "m") throw new TypeError("Private method is not writable");
9
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
10
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
11
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
12
- };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
- var _SafeFactory_instances, _SafeFactory_contractNetworks, _SafeFactory_isL1SafeSingleton, _SafeFactory_safeVersion, _SafeFactory_safeProxyFactoryContract, _SafeFactory_safeContract, _SafeFactory_provider, _SafeFactory_signer, _SafeFactory_safeProvider, _SafeFactory_initializeSafeFactory;
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- const Safe_1 = __importDefault(require("./Safe"));
19
- const config_1 = require("./contracts/config");
20
- const safeDeploymentContracts_1 = require("./contracts/safeDeploymentContracts");
21
- const utils_1 = require("./contracts/utils");
22
- const SafeProvider_1 = __importDefault(require("./SafeProvider"));
23
- class SafeFactory {
24
- constructor() {
25
- _SafeFactory_instances.add(this);
26
- _SafeFactory_contractNetworks.set(this, void 0);
27
- _SafeFactory_isL1SafeSingleton.set(this, void 0);
28
- _SafeFactory_safeVersion.set(this, void 0);
29
- _SafeFactory_safeProxyFactoryContract.set(this, void 0);
30
- _SafeFactory_safeContract.set(this, void 0);
31
- _SafeFactory_provider.set(this, void 0);
32
- _SafeFactory_signer.set(this, void 0);
33
- _SafeFactory_safeProvider.set(this, void 0);
34
- }
35
- static async init({ provider, signer, safeVersion = config_1.DEFAULT_SAFE_VERSION, isL1SafeSingleton = false, contractNetworks }) {
36
- const safeFactorySdk = new SafeFactory();
37
- await __classPrivateFieldGet(safeFactorySdk, _SafeFactory_instances, "m", _SafeFactory_initializeSafeFactory).call(safeFactorySdk, {
38
- provider,
39
- signer,
40
- safeVersion,
41
- isL1SafeSingleton,
42
- contractNetworks
43
- });
44
- return safeFactorySdk;
45
- }
46
- getSafeProvider() {
47
- return __classPrivateFieldGet(this, _SafeFactory_safeProvider, "f");
48
- }
49
- getSafeVersion() {
50
- return __classPrivateFieldGet(this, _SafeFactory_safeVersion, "f");
51
- }
52
- getAddress() {
53
- return __classPrivateFieldGet(this, _SafeFactory_safeProxyFactoryContract, "f").getAddress();
54
- }
55
- async getChainId() {
56
- return __classPrivateFieldGet(this, _SafeFactory_safeProvider, "f").getChainId();
57
- }
58
- async predictSafeAddress(safeAccountConfig, saltNonce) {
59
- const chainId = await __classPrivateFieldGet(this, _SafeFactory_safeProvider, "f").getChainId();
60
- const customContracts = __classPrivateFieldGet(this, _SafeFactory_contractNetworks, "f")?.[chainId.toString()];
61
- const safeVersion = __classPrivateFieldGet(this, _SafeFactory_safeVersion, "f");
62
- const safeDeploymentConfig = {
63
- saltNonce: saltNonce || (0, utils_1.getChainSpecificDefaultSaltNonce)(chainId),
64
- safeVersion
65
- };
66
- return (0, utils_1.predictSafeAddress)({
67
- safeProvider: __classPrivateFieldGet(this, _SafeFactory_safeProvider, "f"),
68
- chainId,
69
- safeAccountConfig,
70
- safeDeploymentConfig,
71
- isL1SafeSingleton: __classPrivateFieldGet(this, _SafeFactory_isL1SafeSingleton, "f"),
72
- customContracts
73
- });
74
- }
75
- async deploySafe({ safeAccountConfig, saltNonce, options, callback }) {
76
- (0, utils_1.validateSafeAccountConfig)(safeAccountConfig);
77
- (0, utils_1.validateSafeDeploymentConfig)({ saltNonce });
78
- const signerAddress = await __classPrivateFieldGet(this, _SafeFactory_safeProvider, "f").getSignerAddress();
79
- if (!signerAddress) {
80
- throw new Error('SafeProvider must be initialized with a signer to use this method');
81
- }
82
- const chainId = await this.getChainId();
83
- const customContracts = __classPrivateFieldGet(this, _SafeFactory_contractNetworks, "f")?.[chainId.toString()];
84
- const initializer = await (0, utils_1.encodeSetupCallData)({
85
- safeProvider: __classPrivateFieldGet(this, _SafeFactory_safeProvider, "f"),
86
- safeAccountConfig,
87
- safeContract: __classPrivateFieldGet(this, _SafeFactory_safeContract, "f"),
88
- customContracts
89
- });
90
- const safeAddress = await __classPrivateFieldGet(this, _SafeFactory_safeProxyFactoryContract, "f").createProxyWithOptions({
91
- safeSingletonAddress: await __classPrivateFieldGet(this, _SafeFactory_safeContract, "f").getAddress(),
92
- initializer,
93
- saltNonce: saltNonce || (0, utils_1.getChainSpecificDefaultSaltNonce)(chainId),
94
- options: {
95
- from: signerAddress,
96
- ...options
97
- },
98
- callback
99
- });
100
- const isContractDeployed = await __classPrivateFieldGet(this, _SafeFactory_safeProvider, "f").isContractDeployed(safeAddress);
101
- if (!isContractDeployed) {
102
- throw new Error('SafeProxy contract is not deployed on the current network');
103
- }
104
- const safe = await Safe_1.default.init({
105
- provider: __classPrivateFieldGet(this, _SafeFactory_provider, "f"),
106
- signer: __classPrivateFieldGet(this, _SafeFactory_signer, "f"),
107
- safeAddress,
108
- isL1SafeSingleton: __classPrivateFieldGet(this, _SafeFactory_isL1SafeSingleton, "f"),
109
- contractNetworks: __classPrivateFieldGet(this, _SafeFactory_contractNetworks, "f")
110
- });
111
- return safe;
112
- }
113
- }
114
- _SafeFactory_contractNetworks = new WeakMap(), _SafeFactory_isL1SafeSingleton = new WeakMap(), _SafeFactory_safeVersion = new WeakMap(), _SafeFactory_safeProxyFactoryContract = new WeakMap(), _SafeFactory_safeContract = new WeakMap(), _SafeFactory_provider = new WeakMap(), _SafeFactory_signer = new WeakMap(), _SafeFactory_safeProvider = new WeakMap(), _SafeFactory_instances = new WeakSet(), _SafeFactory_initializeSafeFactory = async function _SafeFactory_initializeSafeFactory({ provider, signer, safeVersion, isL1SafeSingleton, contractNetworks }) {
115
- __classPrivateFieldSet(this, _SafeFactory_provider, provider, "f");
116
- __classPrivateFieldSet(this, _SafeFactory_signer, signer, "f");
117
- __classPrivateFieldSet(this, _SafeFactory_safeProvider, await SafeProvider_1.default.init(provider, signer, safeVersion, contractNetworks), "f");
118
- __classPrivateFieldSet(this, _SafeFactory_safeVersion, safeVersion, "f");
119
- __classPrivateFieldSet(this, _SafeFactory_isL1SafeSingleton, isL1SafeSingleton, "f");
120
- __classPrivateFieldSet(this, _SafeFactory_contractNetworks, contractNetworks, "f");
121
- const chainId = await __classPrivateFieldGet(this, _SafeFactory_safeProvider, "f").getChainId();
122
- const customContracts = contractNetworks?.[chainId.toString()];
123
- __classPrivateFieldSet(this, _SafeFactory_safeProxyFactoryContract, await (0, safeDeploymentContracts_1.getProxyFactoryContract)({
124
- safeProvider: __classPrivateFieldGet(this, _SafeFactory_safeProvider, "f"),
125
- safeVersion,
126
- customContracts
127
- }), "f");
128
- __classPrivateFieldSet(this, _SafeFactory_safeContract, await (0, safeDeploymentContracts_1.getSafeContract)({
129
- safeProvider: __classPrivateFieldGet(this, _SafeFactory_safeProvider, "f"),
130
- safeVersion,
131
- isL1SafeSingleton,
132
- customContracts
133
- }), "f");
134
- };
135
- exports.default = SafeFactory;
136
- //# sourceMappingURL=SafeFactory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SafeFactory.js","sourceRoot":"","sources":["../../src/SafeFactory.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import { SafeVersion, TransactionOptions } from '@safe-global/safe-core-sdk-types';
2
- import { SafeProviderConfig } from './safeProvider';
3
- import { SafeAccountConfig } from './safeConfig';
4
- import { ContractNetworksConfig } from './contracts';
5
- export type DeploySafeProps = {
6
- safeAccountConfig: SafeAccountConfig;
7
- saltNonce?: string;
8
- options?: TransactionOptions;
9
- callback?: (txHash: string) => void;
10
- };
11
- export type SafeFactoryConfig = {
12
- provider: SafeProviderConfig['provider'];
13
- signer?: SafeProviderConfig['signer'];
14
- /** safeVersion - Versions of the Safe deployed by this Factory contract */
15
- safeVersion?: SafeVersion;
16
- /** isL1SafeSingleton - Forces to use the Safe L1 version of the contract instead of the L2 version */
17
- isL1SafeSingleton?: boolean;
18
- /** contractNetworks - Contract network configuration */
19
- contractNetworks?: ContractNetworksConfig;
20
- };
21
- export type SafeFactoryInitConfig = {
22
- provider: SafeProviderConfig['provider'];
23
- signer?: SafeProviderConfig['signer'];
24
- privateKeyOrMnemonic?: string;
25
- /** safeVersion - Versions of the Safe deployed by this Factory contract */
26
- safeVersion: SafeVersion;
27
- /** isL1SafeSingleton - Forces to use the Safe L1 version of the contract instead of the L2 version */
28
- isL1SafeSingleton?: boolean;
29
- /** contractNetworks - Contract network configuration */
30
- contractNetworks?: ContractNetworksConfig;
31
- };
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=safeFactory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"safeFactory.js","sourceRoot":"","sources":["../../../src/types/safeFactory.ts"],"names":[],"mappings":""}
@@ -1,63 +0,0 @@
1
- import { ethers, AbstractSigner, Provider } from 'ethers';
2
- import { PasskeyCoordinates, PasskeyArgType } from '../../types/passkeys';
3
- import { SafeWebAuthnSharedSignerContractImplementationType, SafeWebAuthnSignerFactoryContractImplementationType } from '../../types/contracts';
4
- /**
5
- * Represents a Signer that is created using a passkey.
6
- * This class extends the AbstractSigner to implement signer functionalities.
7
- *
8
- * @extends {AbstractSigner}
9
- */
10
- declare class PasskeySigner extends AbstractSigner {
11
- /**
12
- * The raw identifier of the passkey.
13
- * see: https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredential/rawId
14
- */
15
- passkeyRawId: ArrayBuffer;
16
- /**
17
- * Passkey Coordinates.
18
- */
19
- coordinates: PasskeyCoordinates;
20
- /**
21
- * P256 Verifier Contract address.
22
- */
23
- verifierAddress: string;
24
- /**
25
- * chainId
26
- */
27
- chainId: string;
28
- /**
29
- * signerAddress
30
- */
31
- signerAddress: string;
32
- /**
33
- * Safe WebAuthn signer factory Contract.
34
- */
35
- safeWebAuthnSignerFactoryContract: SafeWebAuthnSignerFactoryContractImplementationType;
36
- /**
37
- * Safe WebAuthn shared signer Contract.
38
- */
39
- safeWebAuthnSharedSignerContract: SafeWebAuthnSharedSignerContractImplementationType;
40
- constructor(passkey: PasskeyArgType, safeWebAuthnSignerFactoryContract: SafeWebAuthnSignerFactoryContractImplementationType, safeWebAuthnSharedSignerContract: SafeWebAuthnSharedSignerContractImplementationType, provider: Provider, chainId: string, signerAddress: string);
41
- static init(passkey: PasskeyArgType, safeWebAuthnSignerFactoryContract: SafeWebAuthnSignerFactoryContractImplementationType, safeWebAuthnSharedSignerContract: SafeWebAuthnSharedSignerContractImplementationType, provider: Provider, safeAddress: string, owners: string[], chainId: string): Promise<PasskeySigner>;
42
- /**
43
- * Returns the address associated with the passkey signer.
44
- * @returns {Promise<string>} A promise that resolves to the signer's address.
45
- */
46
- getAddress(): Promise<string>;
47
- /**
48
- * Encodes the createSigner contract function.
49
- * @returns {string} The encoded data to create a signer.
50
- */
51
- encodeCreateSigner(): string;
52
- /**
53
- * Signs the provided data using the passkey.
54
- * @param {Uint8Array} data - The data to be signed.
55
- * @returns {Promise<string>} A promise that resolves to the signed data.
56
- */
57
- sign(data: Uint8Array): Promise<string>;
58
- connect(provider: Provider): ethers.Signer;
59
- signTransaction(): Promise<string>;
60
- signMessage(message: string | Uint8Array): Promise<string>;
61
- signTypedData(): Promise<string>;
62
- }
63
- export default PasskeySigner;
@@ -1,163 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const ethers_1 = require("ethers");
7
- const extractPasskeyData_1 = require("./extractPasskeyData");
8
- const isSharedSigner_1 = __importDefault(require("./isSharedSigner"));
9
- /**
10
- * Represents a Signer that is created using a passkey.
11
- * This class extends the AbstractSigner to implement signer functionalities.
12
- *
13
- * @extends {AbstractSigner}
14
- */
15
- class PasskeySigner extends ethers_1.AbstractSigner {
16
- constructor(passkey, safeWebAuthnSignerFactoryContract, safeWebAuthnSharedSignerContract, provider, chainId, signerAddress) {
17
- super(provider);
18
- const { rawId, coordinates, customVerifierAddress } = passkey;
19
- this.chainId = chainId;
20
- this.passkeyRawId = (0, extractPasskeyData_1.hexStringToUint8Array)(rawId);
21
- this.coordinates = coordinates;
22
- this.signerAddress = signerAddress;
23
- this.safeWebAuthnSignerFactoryContract = safeWebAuthnSignerFactoryContract;
24
- this.safeWebAuthnSharedSignerContract = safeWebAuthnSharedSignerContract;
25
- this.verifierAddress = customVerifierAddress || (0, extractPasskeyData_1.getDefaultFCLP256VerifierAddress)(chainId);
26
- }
27
- static async init(passkey, safeWebAuthnSignerFactoryContract, safeWebAuthnSharedSignerContract, provider, safeAddress, owners, chainId) {
28
- const { coordinates, customVerifierAddress } = passkey;
29
- const verifierAddress = customVerifierAddress || (0, extractPasskeyData_1.getDefaultFCLP256VerifierAddress)(chainId);
30
- let signerAddress;
31
- const isPasskeySharedSigner = await (0, isSharedSigner_1.default)(passkey, safeWebAuthnSharedSignerContract, safeAddress, owners, chainId);
32
- if (isPasskeySharedSigner) {
33
- signerAddress = await safeWebAuthnSharedSignerContract.getAddress();
34
- }
35
- else {
36
- ;
37
- [signerAddress] = await safeWebAuthnSignerFactoryContract.getSigner([
38
- BigInt(coordinates.x),
39
- BigInt(coordinates.y),
40
- BigInt(verifierAddress)
41
- ]);
42
- }
43
- return new PasskeySigner(passkey, safeWebAuthnSignerFactoryContract, safeWebAuthnSharedSignerContract, provider, chainId, signerAddress);
44
- }
45
- /**
46
- * Returns the address associated with the passkey signer.
47
- * @returns {Promise<string>} A promise that resolves to the signer's address.
48
- */
49
- async getAddress() {
50
- return this.signerAddress;
51
- }
52
- /**
53
- * Encodes the createSigner contract function.
54
- * @returns {string} The encoded data to create a signer.
55
- */
56
- encodeCreateSigner() {
57
- return this.safeWebAuthnSignerFactoryContract.encode('createSigner', [
58
- BigInt(this.coordinates.x),
59
- BigInt(this.coordinates.y),
60
- BigInt(this.verifierAddress)
61
- ]);
62
- }
63
- /**
64
- * Signs the provided data using the passkey.
65
- * @param {Uint8Array} data - The data to be signed.
66
- * @returns {Promise<string>} A promise that resolves to the signed data.
67
- */
68
- async sign(data) {
69
- const assertion = (await navigator.credentials.get({
70
- publicKey: {
71
- challenge: data,
72
- allowCredentials: [{ type: 'public-key', id: this.passkeyRawId }],
73
- userVerification: 'required'
74
- }
75
- }));
76
- if (!assertion?.response?.authenticatorData) {
77
- throw new Error('Failed to sign data with passkey Signer');
78
- }
79
- const { authenticatorData, signature, clientDataJSON } = assertion.response;
80
- return ethers_1.ethers.AbiCoder.defaultAbiCoder().encode(['bytes', 'bytes', 'uint256[2]'], [
81
- new Uint8Array(authenticatorData),
82
- extractClientDataFields(clientDataJSON),
83
- extractSignature(signature)
84
- ]);
85
- }
86
- connect(provider) {
87
- const passkey = {
88
- rawId: Buffer.from(this.passkeyRawId).toString('hex'),
89
- coordinates: this.coordinates,
90
- customVerifierAddress: this.verifierAddress
91
- };
92
- return new PasskeySigner(passkey, this.safeWebAuthnSignerFactoryContract, this.safeWebAuthnSharedSignerContract, provider, this.chainId, this.signerAddress);
93
- }
94
- signTransaction() {
95
- throw new Error('Passkey Signers cannot sign transactions, they can only sign data.');
96
- }
97
- signMessage(message) {
98
- if (typeof message === 'string') {
99
- return this.sign(ethers_1.ethers.getBytes(message));
100
- }
101
- return this.sign(message);
102
- }
103
- signTypedData() {
104
- throw new Error('Passkey Signers cannot sign signTypedData, they can only sign data.');
105
- }
106
- }
107
- exports.default = PasskeySigner;
108
- /**
109
- * Compute the additional client data JSON fields. This is the fields other than `type` and
110
- * `challenge` (including `origin` and any other additional client data fields that may be
111
- * added by the authenticator).
112
- *
113
- * See <https://w3c.github.io/webauthn/#clientdatajson-serialization>
114
- *
115
- * @param {ArrayBuffer} clientDataJSON - The client data JSON.
116
- * @returns {string} A hex string of the additional fields from the client data JSON.
117
- * @throws {Error} Throws an error if the client data JSON does not contain the expected 'challenge' field pattern.
118
- */
119
- function extractClientDataFields(clientDataJSON) {
120
- const decodedClientDataJSON = new TextDecoder('utf-8').decode(clientDataJSON);
121
- const match = decodedClientDataJSON.match(/^\{"type":"webauthn.get","challenge":"[A-Za-z0-9\-_]{43}",(.*)\}$/);
122
- if (!match) {
123
- throw new Error('challenge not found in client data JSON');
124
- }
125
- const [, fields] = match;
126
- return ethers_1.ethers.hexlify(ethers_1.ethers.toUtf8Bytes(fields));
127
- }
128
- /**
129
- * Extracts the numeric values r and s from a DER-encoded ECDSA signature.
130
- * This function decodes the signature based on a specific format and validates the encoding at each step.
131
- *
132
- * @param {ArrayBuffer} signature - The DER-encoded signature to be decoded.
133
- * @returns {[bigint, bigint]} A tuple containing two BigInt values, r and s, which are the numeric values extracted from the signature.
134
- * @throws {Error} Throws an error if the signature encoding is invalid or does not meet expected conditions.
135
- */
136
- function extractSignature(signature) {
137
- const check = (x) => {
138
- if (!x) {
139
- throw new Error('invalid signature encoding');
140
- }
141
- };
142
- // Decode the DER signature. Note that we assume that all lengths fit into 8-bit integers,
143
- // which is true for the kinds of signatures we are decoding but generally false. I.e. this
144
- // code should not be used in any serious application.
145
- const view = new DataView(signature);
146
- // check that the sequence header is valid
147
- check(view.getUint8(0) === 0x30);
148
- check(view.getUint8(1) === view.byteLength - 2);
149
- // read r and s
150
- const readInt = (offset) => {
151
- check(view.getUint8(offset) === 0x02);
152
- const len = view.getUint8(offset + 1);
153
- const start = offset + 2;
154
- const end = start + len;
155
- const n = BigInt(ethers_1.ethers.hexlify(new Uint8Array(view.buffer.slice(start, end))));
156
- check(n < ethers_1.ethers.MaxUint256);
157
- return [n, end];
158
- };
159
- const [r, sOffset] = readInt(2);
160
- const [s] = readInt(sOffset);
161
- return [r, s];
162
- }
163
- //# sourceMappingURL=PasskeySigner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PasskeySigner.js","sourceRoot":"","sources":["../../../../src/utils/passkeys/PasskeySigner.ts"],"names":[],"mappings":"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"}