@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
@@ -0,0 +1,156 @@
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
+ exports.createPasskeyClient = exports.PASSKEY_CLIENT_NAME = exports.PASSKEY_CLIENT_KEY = void 0;
7
+ const viem_1 = require("viem");
8
+ const extractPasskeyData_1 = require("./extractPasskeyData");
9
+ const types_1 = require("../types");
10
+ const isSharedSigner_1 = __importDefault(require("./isSharedSigner"));
11
+ exports.PASSKEY_CLIENT_KEY = 'passkeyWallet';
12
+ exports.PASSKEY_CLIENT_NAME = 'Passkey Wallet Client';
13
+ const sign = async (passkeyRawId, data) => {
14
+ const assertion = (await navigator.credentials.get({
15
+ publicKey: {
16
+ challenge: data,
17
+ allowCredentials: [{ type: 'public-key', id: passkeyRawId }],
18
+ userVerification: 'required'
19
+ }
20
+ }));
21
+ if (!assertion?.response?.authenticatorData) {
22
+ throw new Error('Failed to sign data with passkey Signer');
23
+ }
24
+ const { authenticatorData, signature, clientDataJSON } = assertion.response;
25
+ return (0, viem_1.encodeAbiParameters)((0, viem_1.parseAbiParameters)('bytes, bytes, uint256[2]'), [
26
+ (0, viem_1.toHex)(new Uint8Array(authenticatorData)),
27
+ extractClientDataFields(clientDataJSON),
28
+ extractSignature(signature)
29
+ ]);
30
+ };
31
+ const signTransaction = () => {
32
+ throw new Error('Passkey Signers cannot sign transactions, they can only sign data.');
33
+ };
34
+ const signTypedData = () => {
35
+ throw new Error('Passkey Signers cannot sign signTypedData, they can only sign data.');
36
+ };
37
+ const createPasskeyClient = async (passkey, safeWebAuthnSignerFactoryContract, safeWebAuthnSharedSignerContract, provider, safeAddress, owners, chainId) => {
38
+ const { rawId, coordinates, customVerifierAddress } = passkey;
39
+ const passkeyRawId = (0, viem_1.hexToBytes)((0, types_1.asHex)(rawId));
40
+ const verifierAddress = customVerifierAddress || (0, extractPasskeyData_1.getDefaultFCLP256VerifierAddress)(chainId);
41
+ const isPasskeySharedSigner = await (0, isSharedSigner_1.default)(passkey, safeWebAuthnSharedSignerContract, safeAddress, owners, chainId);
42
+ let signerAddress;
43
+ if (isPasskeySharedSigner) {
44
+ signerAddress = safeWebAuthnSharedSignerContract.getAddress();
45
+ }
46
+ else {
47
+ ;
48
+ [signerAddress] = await safeWebAuthnSignerFactoryContract.getSigner([
49
+ BigInt(coordinates.x),
50
+ BigInt(coordinates.y),
51
+ (0, viem_1.fromHex)((0, types_1.asHex)(verifierAddress), 'bigint')
52
+ ]);
53
+ }
54
+ return (0, viem_1.createClient)({
55
+ account: signerAddress,
56
+ name: exports.PASSKEY_CLIENT_NAME,
57
+ key: exports.PASSKEY_CLIENT_KEY,
58
+ transport: (0, viem_1.custom)(provider.transport)
59
+ })
60
+ .extend(viem_1.walletActions)
61
+ .extend(() => ({
62
+ signMessage({ message }) {
63
+ if (typeof message === 'string') {
64
+ return sign(passkeyRawId, (0, viem_1.toBytes)(message));
65
+ }
66
+ return sign(passkeyRawId, (0, viem_1.isHex)(message.raw) ? (0, viem_1.toBytes)(message.raw) : message.raw);
67
+ },
68
+ signTransaction,
69
+ signTypedData,
70
+ encodeConfigure() {
71
+ return (0, viem_1.encodeFunctionData)({
72
+ abi: (0, viem_1.parseAbi)(['function configure((uint256 x, uint256 y, uint176 verifiers) signer)']),
73
+ functionName: 'configure',
74
+ args: [
75
+ {
76
+ x: BigInt(passkey.coordinates.x),
77
+ y: BigInt(passkey.coordinates.y),
78
+ verifiers: (0, viem_1.fromHex)((0, types_1.asHex)(verifierAddress), 'bigint')
79
+ }
80
+ ]
81
+ });
82
+ },
83
+ encodeCreateSigner() {
84
+ return (0, types_1.asHex)(safeWebAuthnSignerFactoryContract.encode('createSigner', [
85
+ BigInt(coordinates.x),
86
+ BigInt(coordinates.y),
87
+ BigInt(verifierAddress)
88
+ ]));
89
+ },
90
+ createDeployTxRequest() {
91
+ const passkeySignerDeploymentTransaction = {
92
+ to: safeWebAuthnSignerFactoryContract.getAddress(),
93
+ value: '0',
94
+ data: this.encodeCreateSigner()
95
+ };
96
+ return passkeySignerDeploymentTransaction;
97
+ }
98
+ }));
99
+ };
100
+ exports.createPasskeyClient = createPasskeyClient;
101
+ /**
102
+ * Compute the additional client data JSON fields. This is the fields other than `type` and
103
+ * `challenge` (including `origin` and any other additional client data fields that may be
104
+ * added by the authenticator).
105
+ *
106
+ * See <https://w3c.github.io/webauthn/#clientdatajson-serialization>
107
+ *
108
+ * @param {ArrayBuffer} clientDataJSON - The client data JSON.
109
+ * @returns {Hex} A hex string of the additional fields from the client data JSON.
110
+ * @throws {Error} Throws an error if the client data JSON does not contain the expected 'challenge' field pattern.
111
+ */
112
+ function extractClientDataFields(clientDataJSON) {
113
+ const decodedClientDataJSON = new TextDecoder('utf-8').decode(clientDataJSON);
114
+ const match = decodedClientDataJSON.match(/^\{"type":"webauthn.get","challenge":"[A-Za-z0-9\-_]{43}",(.*)\}$/);
115
+ if (!match) {
116
+ throw new Error('challenge not found in client data JSON');
117
+ }
118
+ const [, fields] = match;
119
+ return (0, viem_1.toHex)((0, viem_1.stringToBytes)(fields));
120
+ }
121
+ /**
122
+ * Extracts the numeric values r and s from a DER-encoded ECDSA signature.
123
+ * This function decodes the signature based on a specific format and validates the encoding at each step.
124
+ *
125
+ * @param {ArrayBuffer} signature - The DER-encoded signature to be decoded.
126
+ * @returns {[bigint, bigint]} A tuple containing two BigInt values, r and s, which are the numeric values extracted from the signature.
127
+ * @throws {Error} Throws an error if the signature encoding is invalid or does not meet expected conditions.
128
+ */
129
+ function extractSignature(signature) {
130
+ const check = (x) => {
131
+ if (!x) {
132
+ throw new Error('invalid signature encoding');
133
+ }
134
+ };
135
+ // Decode the DER signature. Note that we assume that all lengths fit into 8-bit integers,
136
+ // which is true for the kinds of signatures we are decoding but generally false. I.e. this
137
+ // code should not be used in any serious application.
138
+ const view = new DataView(signature);
139
+ // check that the sequence header is valid
140
+ check(view.getUint8(0) === 0x30);
141
+ check(view.getUint8(1) === view.byteLength - 2);
142
+ // read r and s
143
+ const readInt = (offset) => {
144
+ check(view.getUint8(offset) === 0x02);
145
+ const len = view.getUint8(offset + 1);
146
+ const start = offset + 2;
147
+ const end = start + len;
148
+ const n = (0, viem_1.fromBytes)(new Uint8Array(view.buffer.slice(start, end)), 'bigint');
149
+ check(n < viem_1.maxUint256);
150
+ return [n, end];
151
+ };
152
+ const [r, sOffset] = readInt(2);
153
+ const [s] = readInt(sOffset);
154
+ return [r, s];
155
+ }
156
+ //# sourceMappingURL=PasskeyClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasskeyClient.js","sourceRoot":"","sources":["../../../../src/utils/passkeys/PasskeyClient.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { Hex } from 'viem';
1
2
  import Safe from '../../Safe';
2
3
  import { PasskeyArgType } from '../../types';
3
4
  /**
@@ -10,6 +11,6 @@ import { PasskeyArgType } from '../../types';
10
11
  declare function createPasskeyDeploymentTransaction(safe: Safe, passkey: PasskeyArgType): Promise<{
11
12
  to: string;
12
13
  value: string;
13
- data: string;
14
+ data: Hex;
14
15
  }>;
15
16
  export default createPasskeyDeploymentTransaction;
@@ -3,7 +3,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const constants_1 = require("../constants");
7
6
  const SafeProvider_1 = __importDefault(require("../../SafeProvider"));
8
7
  /**
9
8
  * Creates the deployment transaction to create a passkey signer.
@@ -13,23 +12,24 @@ const SafeProvider_1 = __importDefault(require("../../SafeProvider"));
13
12
  * @returns {Promise<{ to: string; value: string; data: string; }>} The deployment transaction to create a passkey signer.
14
13
  */
15
14
  async function createPasskeyDeploymentTransaction(safe, passkey) {
16
- const safeVersion = await safe.getContractVersion();
15
+ const safeVersion = safe.getContractVersion();
17
16
  const safeAddress = await safe.getAddress();
18
17
  const owners = await safe.getOwners();
19
- const safePasskeyProvider = await SafeProvider_1.default.init(safe.getSafeProvider().provider, passkey, safeVersion, safe.getContractManager().contractNetworks, safeAddress, owners);
18
+ const safePasskeyProvider = await SafeProvider_1.default.init({
19
+ provider: safe.getSafeProvider().provider,
20
+ signer: passkey,
21
+ safeVersion,
22
+ contractNetworks: safe.getContractManager().contractNetworks,
23
+ safeAddress,
24
+ owners
25
+ });
20
26
  const passkeySigner = (await safePasskeyProvider.getExternalSigner());
21
- const passkeyAddress = await passkeySigner.getAddress();
22
- const provider = safe.getSafeProvider().getExternalProvider();
23
- const isPasskeyDeployed = (await provider.getCode(passkeyAddress)) !== constants_1.EMPTY_DATA;
27
+ const passkeyAddress = passkeySigner.account.address;
28
+ const isPasskeyDeployed = await safe.getSafeProvider().isContractDeployed(passkeyAddress);
24
29
  if (isPasskeyDeployed) {
25
30
  throw new Error('Passkey Signer contract already deployed');
26
31
  }
27
- const passkeySignerDeploymentTransaction = {
28
- to: await passkeySigner.safeWebAuthnSignerFactoryContract.getAddress(),
29
- value: '0',
30
- data: passkeySigner.encodeCreateSigner()
31
- };
32
- return passkeySignerDeploymentTransaction;
32
+ return passkeySigner.createDeployTxRequest();
33
33
  }
34
34
  exports.default = createPasskeyDeploymentTransaction;
35
35
  //# sourceMappingURL=createPasskeyDeploymentTransaction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createPasskeyDeploymentTransaction.js","sourceRoot":"","sources":["../../../../src/utils/passkeys/createPasskeyDeploymentTransaction.ts"],"names":[],"mappings":";;;;;AAEA,4CAAyC;AACzC,sEAA6C;AAG7C;;;;;;GAMG;AACH,KAAK,UAAU,kCAAkC,CAC/C,IAAU,EACV,OAAuB;IAEvB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAA;IACnD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;IAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;IAErC,MAAM,mBAAmB,GAAG,MAAM,sBAAY,CAAC,IAAI,CACjD,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,EAC/B,OAAO,EACP,WAAW,EACX,IAAI,CAAC,kBAAkB,EAAE,CAAC,gBAAgB,EAC1C,WAAW,EACX,MAAM,CACP,CAAA;IAED,MAAM,aAAa,GAAG,CAAC,MAAM,mBAAmB,CAAC,iBAAiB,EAAE,CAAkB,CAAA;IACtF,MAAM,cAAc,GAAG,MAAM,aAAc,CAAC,UAAU,EAAE,CAAA;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,mBAAmB,EAAE,CAAA;IAE7D,MAAM,iBAAiB,GAAG,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,sBAAU,CAAA;IAEjF,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAC7D,CAAC;IAED,MAAM,kCAAkC,GAAG;QACzC,EAAE,EAAE,MAAM,aAAa,CAAC,iCAAiC,CAAC,UAAU,EAAE;QACtE,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,aAAa,CAAC,kBAAkB,EAAE;KACzC,CAAA;IAED,OAAO,kCAAkC,CAAA;AAC3C,CAAC;AAED,kBAAe,kCAAkC,CAAA"}
1
+ {"version":3,"file":"createPasskeyDeploymentTransaction.js","sourceRoot":"","sources":["../../../../src/utils/passkeys/createPasskeyDeploymentTransaction.ts"],"names":[],"mappings":";;;;;AAGA,0FAAiE;AAGjE;;;;;;GAMG;AACH,KAAK,UAAU,kCAAkC,CAC/C,IAAU,EACV,OAAuB;IAEvB,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAA;IAC7C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;IAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;IAErC,MAAM,mBAAmB,GAAG,MAAM,sBAAY,CAAC,IAAI,CAAC;QAClD,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ;QACzC,MAAM,EAAE,OAAO;QACf,WAAW;QACX,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,gBAAgB;QAC5D,WAAW;QACX,MAAM;KACP,CAAC,CAAA;IAEF,MAAM,aAAa,GAAG,CAAC,MAAM,mBAAmB,CAAC,iBAAiB,EAAE,CAAkB,CAAA;IACtF,MAAM,cAAc,GAAG,aAAc,CAAC,OAAO,CAAC,OAAO,CAAA;IAErD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAA;IAEzF,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAC7D,CAAC;IAED,OAAO,aAAa,CAAC,qBAAqB,EAAE,CAAA;AAC9C,CAAC;AAED,kBAAe,kCAAkC,CAAA"}
@@ -1,4 +1,4 @@
1
- import { PasskeyCoordinates, PasskeyArgType } from '../../types/passkeys';
1
+ import { PasskeyCoordinates, PasskeyArgType } from '../../types';
2
2
  /**
3
3
  * Extracts and returns the passkey data (coordinates and rawId) from a given passkey Credential.
4
4
  *
@@ -15,5 +15,4 @@ export declare function extractPasskeyData(passkeyCredential: Credential): Promi
15
15
  * @throws {Error} Throws an error if the coordinates could not be extracted via `crypto.subtle.exportKey()`
16
16
  */
17
17
  export declare function extractPasskeyCoordinates(publicKey: ArrayBuffer): Promise<PasskeyCoordinates>;
18
- export declare function hexStringToUint8Array(hexString: string): Uint8Array;
19
18
  export declare function getDefaultFCLP256VerifierAddress(chainId: string): string;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDefaultFCLP256VerifierAddress = exports.hexStringToUint8Array = exports.extractPasskeyCoordinates = exports.extractPasskeyData = void 0;
3
+ exports.getDefaultFCLP256VerifierAddress = exports.extractPasskeyCoordinates = exports.extractPasskeyData = void 0;
4
4
  const safe_modules_deployments_1 = require("@safe-global/safe-modules-deployments");
5
5
  const buffer_1 = require("buffer");
6
6
  /**
@@ -50,25 +50,18 @@ async function extractPasskeyCoordinates(publicKey) {
50
50
  };
51
51
  }
52
52
  exports.extractPasskeyCoordinates = extractPasskeyCoordinates;
53
- // FIXME use Viem `hexToBytes`
54
- function hexStringToUint8Array(hexString) {
55
- const arr = [];
56
- for (let i = 0; i < hexString.length; i += 2) {
57
- arr.push(parseInt(hexString.substr(i, 2), 16));
58
- }
59
- return new Uint8Array(arr);
60
- }
61
- exports.hexStringToUint8Array = hexStringToUint8Array;
62
53
  function getDefaultFCLP256VerifierAddress(chainId) {
63
- const network = BigInt(chainId).toString();
64
54
  const FCLP256VerifierDeployment = (0, safe_modules_deployments_1.getFCLP256VerifierDeployment)({
65
- version: '0.2.0',
55
+ version: '0.2.1',
66
56
  released: true,
67
- network
57
+ network: chainId
68
58
  });
69
- const verifierAddress = FCLP256VerifierDeployment?.networkAddresses[network];
59
+ if (!FCLP256VerifierDeployment) {
60
+ throw new Error(`Failed to load FCLP256Verifier deployment for chain ID ${chainId}`);
61
+ }
62
+ const verifierAddress = FCLP256VerifierDeployment.networkAddresses[chainId];
70
63
  if (!verifierAddress) {
71
- throw new Error('FCLP256Verifier address not found');
64
+ throw new Error(`FCLP256Verifier address not found for chain ID ${chainId}`);
72
65
  }
73
66
  return verifierAddress;
74
67
  }
@@ -1 +1 @@
1
- {"version":3,"file":"extractPasskeyData.js","sourceRoot":"","sources":["../../../../src/utils/passkeys/extractPasskeyData.ts"],"names":[],"mappings":";;;AAAA,oFAAoF;AACpF,mCAA+B;AAG/B;;;;;;GAMG;AACI,KAAK,UAAU,kBAAkB,CAAC,iBAA6B;IACpE,MAAM,OAAO,GAAG,iBAAwC,CAAA;IACxD,MAAM,mBAAmB,GAAG,OAAO,CAAC,QAA4C,CAAA;IAEhF,MAAM,SAAS,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAA;IAEpD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;IAClF,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC,SAAS,CAAC,CAAA;IAC9D,MAAM,KAAK,GAAG,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAExD,OAAO;QACL,KAAK;QACL,WAAW;KACZ,CAAA;AACH,CAAC;AAjBD,gDAiBC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,yBAAyB,CAC7C,SAAsB;IAEtB,MAAM,SAAS,GAAG;QAChB,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAC1B,CAAA;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEzF,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAE1D,MAAM,kBAAkB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAErC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAA;IAC7F,CAAC;IAED,OAAO;QACL,CAAC,EAAE,IAAI,GAAG,eAAM,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAClD,CAAC,EAAE,IAAI,GAAG,eAAM,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;KACnD,CAAA;AACH,CAAC;AAvBD,8DAuBC;AAED,8BAA8B;AAC9B,SAAgB,qBAAqB,CAAC,SAAiB;IACrD,MAAM,GAAG,GAAG,EAAE,CAAA;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA;AAC5B,CAAC;AAND,sDAMC;AAED,SAAgB,gCAAgC,CAAC,OAAe;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAA;IAE1C,MAAM,yBAAyB,GAAG,IAAA,uDAA4B,EAAC;QAC7D,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,IAAI;QACd,OAAO;KACR,CAAC,CAAA;IAEF,MAAM,eAAe,GAAG,yBAAyB,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAE5E,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IACtD,CAAC;IAED,OAAO,eAAe,CAAA;AACxB,CAAC;AAhBD,4EAgBC"}
1
+ {"version":3,"file":"extractPasskeyData.js","sourceRoot":"","sources":["../../../../src/utils/passkeys/extractPasskeyData.ts"],"names":[],"mappings":";;;AAAA,oFAAoF;AACpF,mCAA+B;AAG/B;;;;;;GAMG;AACI,KAAK,UAAU,kBAAkB,CAAC,iBAA6B;IACpE,MAAM,OAAO,GAAG,iBAAwC,CAAA;IACxD,MAAM,mBAAmB,GAAG,OAAO,CAAC,QAA4C,CAAA;IAEhF,MAAM,SAAS,GAAG,mBAAmB,CAAC,YAAY,EAAE,CAAA;IAEpD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;IAClF,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC,SAAS,CAAC,CAAA;IAC9D,MAAM,KAAK,GAAG,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAExD,OAAO;QACL,KAAK;QACL,WAAW;KACZ,CAAA;AACH,CAAC;AAjBD,gDAiBC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,yBAAyB,CAC7C,SAAsB;IAEtB,MAAM,SAAS,GAAG;QAChB,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;KAC1B,CAAA;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEzF,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAE1D,MAAM,kBAAkB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAErC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAA;IAC7F,CAAC;IAED,OAAO;QACL,CAAC,EAAE,IAAI,GAAG,eAAM,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAClD,CAAC,EAAE,IAAI,GAAG,eAAM,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;KACnD,CAAA;AACH,CAAC;AAvBD,8DAuBC;AAED,SAAgB,gCAAgC,CAAC,OAAe;IAC9D,MAAM,yBAAyB,GAAG,IAAA,uDAA4B,EAAC;QAC7D,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,OAAO;KACjB,CAAC,CAAA;IAEF,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,0DAA0D,OAAO,EAAE,CAAC,CAAA;IACtF,CAAC;IAED,MAAM,eAAe,GAAG,yBAAyB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAE3E,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,kDAAkD,OAAO,EAAE,CAAC,CAAA;IAC9E,CAAC;IAED,OAAO,eAAe,CAAA;AACxB,CAAC;AAlBD,4EAkBC"}
@@ -12,12 +12,19 @@ const SafeProvider_1 = __importDefault(require("../../SafeProvider"));
12
12
  * @returns {Promise<string>} Returns the passkey owner address associated with the passkey
13
13
  */
14
14
  async function getPasskeyOwnerAddress(safe, passkey) {
15
- const safeVersion = await safe.getContractVersion();
15
+ const safeVersion = safe.getContractVersion();
16
16
  const safeAddress = await safe.getAddress();
17
17
  const owners = await safe.getOwners();
18
- const safePasskeyProvider = await SafeProvider_1.default.init(safe.getSafeProvider().provider, passkey, safeVersion, safe.getContractManager().contractNetworks, safeAddress, owners);
18
+ const safePasskeyProvider = await SafeProvider_1.default.init({
19
+ provider: safe.getSafeProvider().provider,
20
+ signer: passkey,
21
+ safeVersion,
22
+ contractNetworks: safe.getContractManager().contractNetworks,
23
+ safeAddress,
24
+ owners
25
+ });
19
26
  const passkeySigner = await safePasskeyProvider.getExternalSigner();
20
- const passkeyOwnerAddress = await passkeySigner.getAddress();
27
+ const passkeyOwnerAddress = passkeySigner.account.address;
21
28
  return passkeyOwnerAddress;
22
29
  }
23
30
  exports.default = getPasskeyOwnerAddress;
@@ -1 +1 @@
1
- {"version":3,"file":"getPasskeyOwnerAddress.js","sourceRoot":"","sources":["../../../../src/utils/passkeys/getPasskeyOwnerAddress.ts"],"names":[],"mappings":";;;;;AAAA,sEAA6C;AAI7C;;;;;;GAMG;AACH,KAAK,UAAU,sBAAsB,CAAC,IAAU,EAAE,OAAuB;IACvE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAA;IACnD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;IAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;IAErC,MAAM,mBAAmB,GAAG,MAAM,sBAAY,CAAC,IAAI,CACjD,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,EAC/B,OAAO,EACP,WAAW,EACX,IAAI,CAAC,kBAAkB,EAAE,CAAC,gBAAgB,EAC1C,WAAW,EACX,MAAM,CACP,CAAA;IAED,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,iBAAiB,EAAE,CAAA;IAEnE,MAAM,mBAAmB,GAAG,MAAM,aAAc,CAAC,UAAU,EAAE,CAAA;IAE7D,OAAO,mBAAmB,CAAA;AAC5B,CAAC;AAED,kBAAe,sBAAsB,CAAA"}
1
+ {"version":3,"file":"getPasskeyOwnerAddress.js","sourceRoot":"","sources":["../../../../src/utils/passkeys/getPasskeyOwnerAddress.ts"],"names":[],"mappings":";;;;;AACA,0FAAiE;AAGjE;;;;;;GAMG;AACH,KAAK,UAAU,sBAAsB,CAAC,IAAU,EAAE,OAAuB;IACvE,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAA;IAC7C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;IAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAA;IAErC,MAAM,mBAAmB,GAAG,MAAM,sBAAY,CAAC,IAAI,CAAC;QAClD,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ;QACzC,MAAM,EAAE,OAAO;QACf,WAAW;QACX,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,gBAAgB;QAC5D,WAAW;QACX,MAAM;KACP,CAAC,CAAA;IAEF,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,iBAAiB,EAAE,CAAA;IAEnE,MAAM,mBAAmB,GAAG,aAAc,CAAC,OAAO,CAAC,OAAO,CAAA;IAE1D,OAAO,mBAAmB,CAAA;AAC5B,CAAC;AAED,kBAAe,sBAAsB,CAAA"}
@@ -1,3 +1,3 @@
1
1
  export * from './extractPasskeyData';
2
- export * from './PasskeySigner';
2
+ export * from './PasskeyClient';
3
3
  export * from './getPasskeyOwnerAddress';
@@ -15,6 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./extractPasskeyData"), exports);
18
- __exportStar(require("./PasskeySigner"), exports);
18
+ __exportStar(require("./PasskeyClient"), exports);
19
19
  __exportStar(require("./getPasskeyOwnerAddress"), exports);
20
20
  //# sourceMappingURL=index.js.map
@@ -1,8 +1,7 @@
1
- import { PasskeyArgType } from '../../types/passkeys';
2
- import { SafeWebAuthnSharedSignerContractImplementationType } from '../../types/contracts';
1
+ import { PasskeyArgType, SafeWebAuthnSharedSignerContractImplementationType } from '../../types';
3
2
  /**
4
3
  * Returns true if the passkey signer is a shared signer
5
- * @returns {Promise<string>} A promise that resolves to the signer's address.
4
+ * @returns {Promise<boolean>} A promise that resolves to the signer's address.
6
5
  */
7
6
  declare function isSharedSigner(passkey: PasskeyArgType, safeWebAuthnSharedSignerContract: SafeWebAuthnSharedSignerContractImplementationType, safeAddress: string, owners: string[], chainId: string): Promise<boolean>;
8
7
  export default isSharedSigner;
@@ -1,22 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const extractPasskeyData_1 = require("./extractPasskeyData");
4
+ const types_1 = require("../../utils/types");
4
5
  /**
5
6
  * Returns true if the passkey signer is a shared signer
6
- * @returns {Promise<string>} A promise that resolves to the signer's address.
7
+ * @returns {Promise<boolean>} A promise that resolves to the signer's address.
7
8
  */
8
9
  async function isSharedSigner(passkey, safeWebAuthnSharedSignerContract, safeAddress, owners, chainId) {
9
- const sharedSignerContractAddress = await safeWebAuthnSharedSignerContract.getAddress();
10
+ const sharedSignerContractAddress = safeWebAuthnSharedSignerContract.contractAddress;
10
11
  // is a shared signer if the shared signer contract address is present in the owners and its configured in the Safe slot
11
12
  if (safeAddress && owners.includes(sharedSignerContractAddress)) {
12
13
  const [sharedSignerSlot] = await safeWebAuthnSharedSignerContract.getConfiguration([
13
- safeAddress
14
+ (0, types_1.asHex)(safeAddress)
14
15
  ]);
15
16
  const { x, y, verifiers } = sharedSignerSlot;
16
- const passkeyVerifierAddress = passkey.customVerifierAddress || (0, extractPasskeyData_1.getDefaultFCLP256VerifierAddress)(chainId.toString());
17
+ const verifierAddress = passkey.customVerifierAddress || (0, extractPasskeyData_1.getDefaultFCLP256VerifierAddress)(chainId);
17
18
  const isSharedSigner = BigInt(passkey.coordinates.x) === x &&
18
19
  BigInt(passkey.coordinates.y) === y &&
19
- BigInt(passkeyVerifierAddress) === verifiers;
20
+ BigInt(verifierAddress) === verifiers;
20
21
  return isSharedSigner;
21
22
  }
22
23
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"isSharedSigner.js","sourceRoot":"","sources":["../../../../src/utils/passkeys/isSharedSigner.ts"],"names":[],"mappings":";;AACA,6DAAuE;AAGvE;;;GAGG;AACH,KAAK,UAAU,cAAc,CAC3B,OAAuB,EACvB,gCAAoF,EACpF,WAAmB,EACnB,MAAgB,EAChB,OAAe;IAEf,MAAM,2BAA2B,GAAG,MAAM,gCAAgC,CAAC,UAAU,EAAE,CAAA;IAEvF,wHAAwH;IACxH,IAAI,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;QAChE,MAAM,CAAC,gBAAgB,CAAC,GAAG,MAAM,gCAAgC,CAAC,gBAAgB,CAAC;YACjF,WAAW;SACZ,CAAC,CAAA;QAEF,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAA;QAE5C,MAAM,sBAAsB,GAC1B,OAAO,CAAC,qBAAqB,IAAI,IAAA,qDAAgC,EAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QAEvF,MAAM,cAAc,GAClB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;YACnC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;YACnC,MAAM,CAAC,sBAAsB,CAAC,KAAK,SAAS,CAAA;QAE9C,OAAO,cAAc,CAAA;IACvB,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,kBAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"isSharedSigner.js","sourceRoot":"","sources":["../../../../src/utils/passkeys/isSharedSigner.ts"],"names":[],"mappings":";;AAIA,6DAAuE;AACvE,iEAA6D;AAE7D;;;GAGG;AACH,KAAK,UAAU,cAAc,CAC3B,OAAuB,EACvB,gCAAoF,EACpF,WAAmB,EACnB,MAAgB,EAChB,OAAe;IAEf,MAAM,2BAA2B,GAAG,gCAAgC,CAAC,eAAe,CAAA;IAEpF,wHAAwH;IACxH,IAAI,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;QAChE,MAAM,CAAC,gBAAgB,CAAC,GAAG,MAAM,gCAAgC,CAAC,gBAAgB,CAAC;YACjF,IAAA,aAAK,EAAC,WAAW,CAAC;SACnB,CAAC,CAAA;QAEF,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAA;QAE5C,MAAM,eAAe,GACnB,OAAO,CAAC,qBAAqB,IAAI,IAAA,qDAAgC,EAAC,OAAO,CAAC,CAAA;QAE5E,MAAM,cAAc,GAClB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;YACnC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;YACnC,MAAM,CAAC,eAAe,CAAC,KAAK,SAAS,CAAA;QAEvC,OAAO,cAAc,CAAA;IACvB,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,kBAAe,cAAc,CAAA"}
@@ -0,0 +1,3 @@
1
+ export declare const isEip1193Provider: (provider: any) => boolean;
2
+ export declare const isPrivateKey: (signer?: any) => boolean;
3
+ export declare const isSignerPasskeyClient: (signer?: any) => boolean;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSignerPasskeyClient = exports.isPrivateKey = exports.isEip1193Provider = void 0;
4
+ const viem_1 = require("viem");
5
+ const passkeys_1 = require("./passkeys");
6
+ const isEip1193Provider = (provider) => typeof provider !== 'string';
7
+ exports.isEip1193Provider = isEip1193Provider;
8
+ const isPrivateKey = (signer) => typeof signer === 'string' && !(0, viem_1.isAddress)(signer);
9
+ exports.isPrivateKey = isPrivateKey;
10
+ const isSignerPasskeyClient = (signer) => !!signer && signer.key === passkeys_1.PASSKEY_CLIENT_KEY;
11
+ exports.isSignerPasskeyClient = isSignerPasskeyClient;
12
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/utils/provider.ts"],"names":[],"mappings":";;;AAAA,+BAAgC;AAChC,yCAA+C;AAExC,MAAM,iBAAiB,GAAG,CAAC,QAAa,EAAW,EAAE,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAA;AAA5E,QAAA,iBAAiB,qBAA2D;AAClF,MAAM,YAAY,GAAG,CAAC,MAAY,EAAW,EAAE,CACpD,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,IAAA,gBAAS,EAAC,MAAM,CAAC,CAAA;AADrC,QAAA,YAAY,gBACyB;AAC3C,MAAM,qBAAqB,GAAG,CAAC,MAAY,EAAW,EAAE,CAC7D,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,6BAAkB,CAAA;AADlC,QAAA,qBAAqB,yBACa"}
@@ -36,7 +36,7 @@ const hasSafeFeature = (feature, version) => {
36
36
  };
37
37
  exports.hasSafeFeature = hasSafeFeature;
38
38
  async function isSafeContractCompatibleWithRequiredTxGas(safeContract) {
39
- const safeVersion = await safeContract.getVersion();
39
+ const safeVersion = safeContract.safeVersion;
40
40
  if (!(0, exports.hasSafeFeature)(SAFE_FEATURES.REQUIRED_TXGAS, safeVersion)) {
41
41
  throw new Error('Current version of the Safe does not support the requiredTxGas functionality');
42
42
  }
@@ -44,7 +44,7 @@ async function isSafeContractCompatibleWithRequiredTxGas(safeContract) {
44
44
  }
45
45
  exports.isSafeContractCompatibleWithRequiredTxGas = isSafeContractCompatibleWithRequiredTxGas;
46
46
  async function isSafeContractCompatibleWithSimulateAndRevert(safeContract) {
47
- const safeVersion = await safeContract.getVersion();
47
+ const safeVersion = safeContract.safeVersion;
48
48
  if (!(0, exports.hasSafeFeature)(SAFE_FEATURES.SIMULATE_AND_REVERT, safeVersion)) {
49
49
  throw new Error('Current version of the Safe does not support the simulateAndRevert functionality');
50
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"safeVersions.js","sourceRoot":"","sources":["../../../src/utils/safeVersions.ts"],"names":[],"mappings":";;;;;;AAAA,2EAAwD;AAQxD,IAAY,aAUX;AAVD,WAAY,aAAa;IACvB,8DAA6C,CAAA;IAC7C,kDAAiC,CAAA;IACjC,gEAA+C,CAAA;IAC/C,sCAAqB,CAAA;IACrB,4DAA2C,CAAA;IAC3C,kDAAiC,CAAA;IACjC,4DAA2C,CAAA;IAC3C,kDAAiC,CAAA;IACjC,wDAAuC,CAAA;AACzC,CAAC,EAVW,aAAa,6BAAb,aAAa,QAUxB;AAED,MAAM,wBAAwB,GAAkC;IAC9D,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,SAAS;IAC/C,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,SAAS;IACzC,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE,SAAS;IAChD,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,SAAS;IACnC,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,SAAS;IAC9C,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,SAAS;IACzC,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,SAAS;IAC9C,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,SAAS;IACzC,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,SAAS;CAC7C,CAAA;AAEM,MAAM,cAAc,GAAG,CAAC,OAAsB,EAAE,OAAe,EAAW,EAAE;IACjF,IAAI,CAAC,CAAC,OAAO,IAAI,wBAAwB,CAAC,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAA,mBAAe,EAAC,OAAO,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAA;AACpE,CAAC,CAAA;AANY,QAAA,cAAc,kBAM1B;AAmBM,KAAK,UAAU,yCAAyC,CAC7D,YAA4C;IAE5C,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAA;IAEnD,IAAI,CAAC,IAAA,sBAAc,EAAC,aAAa,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;IACjG,CAAC;IAED,OAAO,YAAuD,CAAA;AAChE,CAAC;AAVD,8FAUC;AAEM,KAAK,UAAU,6CAA6C,CACjE,YAA4C;IAE5C,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,CAAA;IAEnD,IAAI,CAAC,IAAA,sBAAc,EAAC,aAAa,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAA;IACH,CAAC;IAED,OAAO,YAA2D,CAAA;AACpE,CAAC;AAZD,sGAYC"}
1
+ {"version":3,"file":"safeVersions.js","sourceRoot":"","sources":["../../../src/utils/safeVersions.ts"],"names":[],"mappings":";;;;;;AAAA,2EAAwD;AAQxD,IAAY,aAUX;AAVD,WAAY,aAAa;IACvB,8DAA6C,CAAA;IAC7C,kDAAiC,CAAA;IACjC,gEAA+C,CAAA;IAC/C,sCAAqB,CAAA;IACrB,4DAA2C,CAAA;IAC3C,kDAAiC,CAAA;IACjC,4DAA2C,CAAA;IAC3C,kDAAiC,CAAA;IACjC,wDAAuC,CAAA;AACzC,CAAC,EAVW,aAAa,6BAAb,aAAa,QAUxB;AAED,MAAM,wBAAwB,GAAkC;IAC9D,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,SAAS;IAC/C,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,SAAS;IACzC,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE,SAAS;IAChD,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,SAAS;IACnC,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,SAAS;IAC9C,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,SAAS;IACzC,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,SAAS;IAC9C,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,SAAS;IACzC,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,SAAS;CAC7C,CAAA;AAEM,MAAM,cAAc,GAAG,CAAC,OAAsB,EAAE,OAAe,EAAW,EAAE;IACjF,IAAI,CAAC,CAAC,OAAO,IAAI,wBAAwB,CAAC,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAA,mBAAe,EAAC,OAAO,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAA;AACpE,CAAC,CAAA;AANY,QAAA,cAAc,kBAM1B;AAmBM,KAAK,UAAU,yCAAyC,CAC7D,YAA4C;IAE5C,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAA;IAE5C,IAAI,CAAC,IAAA,sBAAc,EAAC,aAAa,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;IACjG,CAAC;IAED,OAAO,YAAuD,CAAA;AAChE,CAAC;AAVD,8FAUC;AAEM,KAAK,UAAU,6CAA6C,CACjE,YAA4C;IAE5C,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAA;IAE5C,IAAI,CAAC,IAAA,sBAAc,EAAC,aAAa,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAA;IACH,CAAC;IAED,OAAO,YAA2D,CAAA;AACpE,CAAC;AAZD,sGAYC"}
@@ -1,4 +1,4 @@
1
- import { SafeSignature } from '@safe-global/safe-core-sdk-types';
1
+ import { SafeSignature } from '@safe-global/types-kit';
2
2
  export declare class EthSafeSignature implements SafeSignature {
3
3
  signer: string;
4
4
  data: string;
@@ -1,11 +1,11 @@
1
1
  import SafeProvider from '../../SafeProvider';
2
- import { SafeSignature, SafeEIP712Args, SafeTransactionData } from '@safe-global/safe-core-sdk-types';
2
+ import { SafeSignature, SafeEIP712Args, SafeTransactionData } from '@safe-global/types-kit';
3
3
  import { SigningMethod } from '../../types';
4
4
  export declare function generatePreValidatedSignature(ownerAddress: string): SafeSignature;
5
- export declare function isTxHashSignedWithPrefix(txHash: string, signature: string, ownerAddress: string): boolean;
5
+ export declare function isTxHashSignedWithPrefix(txHash: string, signature: string, ownerAddress: string): Promise<boolean>;
6
6
  type AdjustVOverload = {
7
- (signingMethod: SigningMethod.ETH_SIGN_TYPED_DATA, signature: string): string;
8
- (signingMethod: SigningMethod.ETH_SIGN, signature: string, safeTxHash: string, sender: string): string;
7
+ (signingMethod: SigningMethod.ETH_SIGN_TYPED_DATA, signature: string): Promise<string>;
8
+ (signingMethod: SigningMethod.ETH_SIGN, signature: string, safeTxHash: string, sender: string): Promise<string>;
9
9
  };
10
10
  export declare const adjustVInSignature: AdjustVOverload;
11
11
  export declare function generateSignature(safeProvider: SafeProvider, hash: string): Promise<SafeSignature>;
@@ -4,13 +4,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.calculateSafeMessageHash = exports.calculateSafeTransactionHash = exports.preimageSafeMessageHash = exports.preimageSafeTransactionHash = exports.buildSignatureBytes = exports.buildContractSignature = exports.generateEIP712Signature = exports.generateSignature = exports.adjustVInSignature = exports.isTxHashSignedWithPrefix = exports.generatePreValidatedSignature = void 0;
7
- const ethers_1 = require("ethers");
8
- const ethereumjs_util_1 = require("ethereumjs-util");
7
+ const viem_1 = require("viem");
9
8
  const satisfies_1 = __importDefault(require("semver/functions/satisfies"));
10
9
  const address_1 = require("../address");
11
10
  const SafeSignature_1 = require("./SafeSignature");
12
11
  const eip_712_1 = require("../eip-712");
13
12
  const types_1 = require("../../types");
13
+ const eip_712_2 = require("../eip-712");
14
+ const encode_1 = require("../eip-712/encode");
15
+ const types_2 = require("../types");
16
+ const constants_1 = require("../constants");
14
17
  function generatePreValidatedSignature(ownerAddress) {
15
18
  const signature = '0x000000000000000000000000' +
16
19
  ownerAddress.slice(2) +
@@ -19,16 +22,13 @@ function generatePreValidatedSignature(ownerAddress) {
19
22
  return new SafeSignature_1.EthSafeSignature(ownerAddress, signature);
20
23
  }
21
24
  exports.generatePreValidatedSignature = generatePreValidatedSignature;
22
- function isTxHashSignedWithPrefix(txHash, signature, ownerAddress) {
25
+ async function isTxHashSignedWithPrefix(txHash, signature, ownerAddress) {
23
26
  let hasPrefix;
24
27
  try {
25
- const rsvSig = {
26
- r: Buffer.from(signature.slice(2, 66), 'hex'),
27
- s: Buffer.from(signature.slice(66, 130), 'hex'),
28
- v: parseInt(signature.slice(130, 132), 16)
29
- };
30
- const recoveredData = (0, ethereumjs_util_1.ecrecover)(Buffer.from(txHash.slice(2), 'hex'), rsvSig.v, rsvSig.r, rsvSig.s);
31
- const recoveredAddress = (0, ethereumjs_util_1.bufferToHex)((0, ethereumjs_util_1.pubToAddress)(recoveredData));
28
+ const recoveredAddress = await (0, viem_1.recoverAddress)({
29
+ hash: (0, types_2.asHash)(txHash),
30
+ signature: (0, types_2.asHex)(signature)
31
+ });
32
32
  hasPrefix = !(0, address_1.sameString)(recoveredAddress, ownerAddress);
33
33
  }
34
34
  catch (e) {
@@ -37,7 +37,7 @@ function isTxHashSignedWithPrefix(txHash, signature, ownerAddress) {
37
37
  return hasPrefix;
38
38
  }
39
39
  exports.isTxHashSignedWithPrefix = isTxHashSignedWithPrefix;
40
- const adjustVInSignature = (signingMethod, signature, safeTxHash, signerAddress) => {
40
+ const adjustVInSignature = async (signingMethod, signature, safeTxHash, signerAddress) => {
41
41
  const ETHEREUM_V_VALUES = [0, 1, 27, 28];
42
42
  const MIN_VALID_V_VALUE_FOR_SAFE_ECDSA = 27;
43
43
  let signatureV = parseInt(signature.slice(-2), 16);
@@ -60,7 +60,7 @@ const adjustVInSignature = (signingMethod, signature, safeTxHash, signerAddress)
60
60
  signatureV += MIN_VALID_V_VALUE_FOR_SAFE_ECDSA;
61
61
  }
62
62
  const adjustedSignature = signature.slice(0, -2) + signatureV.toString(16);
63
- const signatureHasPrefix = isTxHashSignedWithPrefix(safeTxHash, adjustedSignature, signerAddress);
63
+ const signatureHasPrefix = await isTxHashSignedWithPrefix(safeTxHash, adjustedSignature, signerAddress);
64
64
  if (signatureHasPrefix) {
65
65
  signatureV += 4;
66
66
  }
@@ -81,7 +81,7 @@ async function generateSignature(safeProvider, hash) {
81
81
  throw new Error('SafeProvider must be initialized with a signer to use this method');
82
82
  }
83
83
  let signature = await safeProvider.signMessage(hash);
84
- signature = (0, exports.adjustVInSignature)(types_1.SigningMethod.ETH_SIGN, signature, hash, signerAddress);
84
+ signature = await (0, exports.adjustVInSignature)(types_1.SigningMethod.ETH_SIGN, signature, hash, signerAddress);
85
85
  return new SafeSignature_1.EthSafeSignature(signerAddress, signature);
86
86
  }
87
87
  exports.generateSignature = generateSignature;
@@ -92,7 +92,7 @@ async function generateEIP712Signature(safeProvider, safeEIP712Args, methodVersi
92
92
  }
93
93
  //@ts-expect-error: Evaluate removal of methodVersion and use v4
94
94
  let signature = await safeProvider.signTypedData(safeEIP712Args, methodVersion);
95
- signature = (0, exports.adjustVInSignature)(types_1.SigningMethod.ETH_SIGN_TYPED_DATA, signature);
95
+ signature = await (0, exports.adjustVInSignature)(types_1.SigningMethod.ETH_SIGN_TYPED_DATA, signature);
96
96
  return new SafeSignature_1.EthSafeSignature(signerAddress, signature);
97
97
  }
98
98
  exports.generateEIP712Signature = generateEIP712Signature;
@@ -104,7 +104,7 @@ exports.buildContractSignature = buildContractSignature;
104
104
  const buildSignatureBytes = (signatures) => {
105
105
  const SIGNATURE_LENGTH_BYTES = 65;
106
106
  signatures.sort((left, right) => left.signer.toLowerCase().localeCompare(right.signer.toLowerCase()));
107
- let signatureBytes = '0x';
107
+ let signatureBytes = constants_1.EMPTY_DATA;
108
108
  let dynamicBytes = '';
109
109
  for (const signature of signatures) {
110
110
  if (signature.isContractSignature) {
@@ -134,12 +134,21 @@ const buildSignatureBytes = (signatures) => {
134
134
  exports.buildSignatureBytes = buildSignatureBytes;
135
135
  const preimageSafeTransactionHash = (safeAddress, safeTx, safeVersion, chainId) => {
136
136
  const safeTxTypes = (0, eip_712_1.getEip712TxTypes)(safeVersion);
137
- return ethers_1.ethers.TypedDataEncoder.encode({ verifyingContract: safeAddress, chainId }, { SafeTx: safeTxTypes.SafeTx }, safeTx);
137
+ const message = safeTx;
138
+ return (0, encode_1.encodeTypedData)({
139
+ domain: { verifyingContract: safeAddress, chainId: Number(chainId) },
140
+ types: { SafeTx: safeTxTypes.SafeTx },
141
+ message
142
+ });
138
143
  };
139
144
  exports.preimageSafeTransactionHash = preimageSafeTransactionHash;
140
145
  const preimageSafeMessageHash = (safeAddress, message, safeVersion, chainId) => {
141
146
  const safeMessageTypes = (0, eip_712_1.getEip712MessageTypes)(safeVersion);
142
- return ethers_1.ethers.TypedDataEncoder.encode({ verifyingContract: safeAddress, chainId }, { SafeMessage: safeMessageTypes.SafeMessage }, { message });
147
+ return (0, encode_1.encodeTypedData)({
148
+ domain: { verifyingContract: safeAddress, chainId: Number(chainId) },
149
+ types: { SafeMessage: safeMessageTypes.SafeMessage },
150
+ message: { message }
151
+ });
143
152
  };
144
153
  exports.preimageSafeMessageHash = preimageSafeMessageHash;
145
154
  const EQ_OR_GT_1_3_0 = '>=1.3.0';
@@ -147,14 +156,19 @@ const calculateSafeTransactionHash = (safeAddress, safeTx, safeVersion, chainId)
147
156
  const safeTxTypes = (0, eip_712_1.getEip712TxTypes)(safeVersion);
148
157
  const domain = { verifyingContract: safeAddress };
149
158
  if ((0, satisfies_1.default)(safeVersion, EQ_OR_GT_1_3_0)) {
150
- domain.chainId = chainId;
159
+ domain.chainId = Number(chainId);
151
160
  }
152
- return ethers_1.ethers.TypedDataEncoder.hash(domain, { SafeTx: safeTxTypes.SafeTx }, safeTx);
161
+ const message = safeTx;
162
+ return (0, eip_712_2.hashTypedData)({ domain, types: { SafeTx: safeTxTypes.SafeTx }, message });
153
163
  };
154
164
  exports.calculateSafeTransactionHash = calculateSafeTransactionHash;
155
165
  const calculateSafeMessageHash = (safeAddress, message, safeVersion, chainId) => {
156
166
  const safeMessageTypes = (0, eip_712_1.getEip712MessageTypes)(safeVersion);
157
- return ethers_1.ethers.TypedDataEncoder.hash({ verifyingContract: safeAddress, chainId }, { SafeMessage: safeMessageTypes.SafeMessage }, { message });
167
+ return (0, eip_712_2.hashTypedData)({
168
+ domain: { verifyingContract: safeAddress, chainId: Number(chainId) },
169
+ types: { SafeMessage: safeMessageTypes.SafeMessage },
170
+ message: { message }
171
+ });
158
172
  };
159
173
  exports.calculateSafeMessageHash = calculateSafeMessageHash;
160
174
  //# sourceMappingURL=utils.js.map