permissionless 0.0.12 → 0.0.13

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 (141) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/_cjs/accounts/index.js +9 -2
  3. package/_cjs/accounts/index.js.map +1 -1
  4. package/_cjs/accounts/privateKeyToSafeSmartAccount.js +24 -0
  5. package/_cjs/accounts/privateKeyToSafeSmartAccount.js.map +1 -0
  6. package/_cjs/accounts/privateKeyToSimpleSmartAccount.js +8 -160
  7. package/_cjs/accounts/privateKeyToSimpleSmartAccount.js.map +1 -1
  8. package/_cjs/accounts/signerToSafeSmartAccount.js +492 -0
  9. package/_cjs/accounts/signerToSafeSmartAccount.js.map +1 -0
  10. package/_cjs/accounts/signerToSimpleSmartAccount.js +190 -0
  11. package/_cjs/accounts/signerToSimpleSmartAccount.js.map +1 -0
  12. package/_cjs/accounts/types.js +20 -0
  13. package/_cjs/accounts/types.js.map +1 -1
  14. package/_cjs/actions/bundler/chainId.js.map +1 -1
  15. package/_cjs/actions/bundler/estimateUserOperationGas.js.map +1 -1
  16. package/_cjs/actions/bundler/getUserOperationByHash.js.map +1 -1
  17. package/_cjs/actions/bundler/getUserOperationReceipt.js.map +1 -1
  18. package/_cjs/actions/bundler/sendUserOperation.js.map +1 -1
  19. package/_cjs/actions/bundler/supportedEntryPoints.js.map +1 -1
  20. package/_cjs/actions/bundler/waitForUserOperationReceipt.js.map +1 -1
  21. package/_cjs/actions/smartAccount/prepareUserOperationRequest.js +3 -1
  22. package/_cjs/actions/smartAccount/prepareUserOperationRequest.js.map +1 -1
  23. package/_cjs/actions/smartAccount/sendTransaction.js +3 -2
  24. package/_cjs/actions/smartAccount/sendTransaction.js.map +1 -1
  25. package/_cjs/actions/smartAccount/sendTransactions.js +46 -0
  26. package/_cjs/actions/smartAccount/sendTransactions.js.map +1 -0
  27. package/_cjs/actions/smartAccount.js +3 -1
  28. package/_cjs/actions/smartAccount.js.map +1 -1
  29. package/_cjs/clients/decorators/smartAccount.js +5 -0
  30. package/_cjs/clients/decorators/smartAccount.js.map +1 -1
  31. package/_esm/accounts/index.js +6 -3
  32. package/_esm/accounts/index.js.map +1 -1
  33. package/_esm/accounts/privateKeyToSafeSmartAccount.js +26 -0
  34. package/_esm/accounts/privateKeyToSafeSmartAccount.js.map +1 -0
  35. package/_esm/accounts/privateKeyToSimpleSmartAccount.js +9 -160
  36. package/_esm/accounts/privateKeyToSimpleSmartAccount.js.map +1 -1
  37. package/_esm/accounts/signerToSafeSmartAccount.js +499 -0
  38. package/_esm/accounts/signerToSafeSmartAccount.js.map +1 -0
  39. package/_esm/accounts/signerToSimpleSmartAccount.js +191 -0
  40. package/_esm/accounts/signerToSimpleSmartAccount.js.map +1 -0
  41. package/_esm/accounts/types.js +18 -0
  42. package/_esm/accounts/types.js.map +1 -1
  43. package/_esm/actions/bundler/chainId.js.map +1 -1
  44. package/_esm/actions/bundler/estimateUserOperationGas.js.map +1 -1
  45. package/_esm/actions/bundler/getUserOperationByHash.js.map +1 -1
  46. package/_esm/actions/bundler/getUserOperationReceipt.js.map +1 -1
  47. package/_esm/actions/bundler/sendUserOperation.js.map +1 -1
  48. package/_esm/actions/bundler/supportedEntryPoints.js.map +1 -1
  49. package/_esm/actions/bundler/waitForUserOperationReceipt.js.map +1 -1
  50. package/_esm/actions/pimlico/getUserOperationGasPrice.js +1 -1
  51. package/_esm/actions/pimlico/getUserOperationStatus.js +1 -1
  52. package/_esm/actions/smartAccount/prepareUserOperationRequest.js +3 -1
  53. package/_esm/actions/smartAccount/prepareUserOperationRequest.js.map +1 -1
  54. package/_esm/actions/smartAccount/sendTransaction.js +3 -2
  55. package/_esm/actions/smartAccount/sendTransaction.js.map +1 -1
  56. package/_esm/actions/smartAccount/sendTransactions.js +90 -0
  57. package/_esm/actions/smartAccount/sendTransactions.js.map +1 -0
  58. package/_esm/actions/smartAccount.js +2 -1
  59. package/_esm/actions/smartAccount.js.map +1 -1
  60. package/_esm/actions/stackup/accounts.js +1 -1
  61. package/_esm/actions/stackup/sponsorUserOperation.js +1 -1
  62. package/_esm/clients/decorators/pimlico.js +1 -1
  63. package/_esm/clients/decorators/smartAccount.js +5 -0
  64. package/_esm/clients/decorators/smartAccount.js.map +1 -1
  65. package/_esm/clients/pimlico.js +1 -1
  66. package/_esm/clients/stackup.js +1 -1
  67. package/_types/accounts/index.d.ts +6 -3
  68. package/_types/accounts/index.d.ts.map +1 -1
  69. package/_types/accounts/privateKeyToSafeSmartAccount.d.ts +26 -0
  70. package/_types/accounts/privateKeyToSafeSmartAccount.d.ts.map +1 -0
  71. package/_types/accounts/privateKeyToSimpleSmartAccount.d.ts +5 -11
  72. package/_types/accounts/privateKeyToSimpleSmartAccount.d.ts.map +1 -1
  73. package/_types/accounts/signerToSafeSmartAccount.d.ts +28 -0
  74. package/_types/accounts/signerToSafeSmartAccount.d.ts.map +1 -0
  75. package/_types/accounts/signerToSimpleSmartAccount.d.ts +15 -0
  76. package/_types/accounts/signerToSimpleSmartAccount.d.ts.map +1 -0
  77. package/_types/accounts/types.d.ts +14 -3
  78. package/_types/accounts/types.d.ts.map +1 -1
  79. package/_types/actions/bundler/chainId.d.ts +3 -2
  80. package/_types/actions/bundler/chainId.d.ts.map +1 -1
  81. package/_types/actions/bundler/estimateUserOperationGas.d.ts +3 -3
  82. package/_types/actions/bundler/estimateUserOperationGas.d.ts.map +1 -1
  83. package/_types/actions/bundler/getUserOperationByHash.d.ts +3 -3
  84. package/_types/actions/bundler/getUserOperationByHash.d.ts.map +1 -1
  85. package/_types/actions/bundler/getUserOperationReceipt.d.ts +3 -3
  86. package/_types/actions/bundler/getUserOperationReceipt.d.ts.map +1 -1
  87. package/_types/actions/bundler/sendUserOperation.d.ts +3 -3
  88. package/_types/actions/bundler/sendUserOperation.d.ts.map +1 -1
  89. package/_types/actions/bundler/supportedEntryPoints.d.ts +3 -3
  90. package/_types/actions/bundler/supportedEntryPoints.d.ts.map +1 -1
  91. package/_types/actions/bundler/waitForUserOperationReceipt.d.ts +2 -3
  92. package/_types/actions/bundler/waitForUserOperationReceipt.d.ts.map +1 -1
  93. package/_types/actions/pimlico/getUserOperationGasPrice.d.ts +1 -1
  94. package/_types/actions/pimlico/getUserOperationStatus.d.ts +1 -1
  95. package/_types/actions/smartAccount/prepareUserOperationRequest.d.ts.map +1 -1
  96. package/_types/actions/smartAccount/sendTransaction.d.ts.map +1 -1
  97. package/_types/actions/smartAccount/sendTransactions.d.ts +63 -0
  98. package/_types/actions/smartAccount/sendTransactions.d.ts.map +1 -0
  99. package/_types/actions/smartAccount.d.ts +2 -1
  100. package/_types/actions/smartAccount.d.ts.map +1 -1
  101. package/_types/actions/stackup/accounts.d.ts +1 -1
  102. package/_types/actions/stackup/sponsorUserOperation.d.ts +1 -1
  103. package/_types/clients/createSmartAccountClient.d.ts +1 -0
  104. package/_types/clients/createSmartAccountClient.d.ts.map +1 -1
  105. package/_types/clients/decorators/bundler.d.ts +1 -1
  106. package/_types/clients/decorators/pimlico.d.ts +3 -3
  107. package/_types/clients/decorators/smartAccount.d.ts +51 -0
  108. package/_types/clients/decorators/smartAccount.d.ts.map +1 -1
  109. package/_types/clients/pimlico.d.ts +1 -1
  110. package/_types/clients/stackup.d.ts +1 -1
  111. package/_types/types/index.d.ts +1 -0
  112. package/_types/types/index.d.ts.map +1 -1
  113. package/accounts/index.ts +26 -7
  114. package/accounts/privateKeyToSafeSmartAccount.ts +73 -0
  115. package/accounts/privateKeyToSimpleSmartAccount.ts +15 -191
  116. package/accounts/signerToSafeSmartAccount.ts +775 -0
  117. package/accounts/signerToSimpleSmartAccount.ts +267 -0
  118. package/accounts/types.ts +43 -12
  119. package/actions/bundler/chainId.ts +9 -1
  120. package/actions/bundler/estimateUserOperationGas.ts +8 -3
  121. package/actions/bundler/getUserOperationByHash.ts +8 -3
  122. package/actions/bundler/getUserOperationReceipt.ts +16 -3
  123. package/actions/bundler/sendUserOperation.ts +8 -3
  124. package/actions/bundler/supportedEntryPoints.ts +8 -3
  125. package/actions/bundler/waitForUserOperationReceipt.ts +15 -4
  126. package/actions/pimlico/getUserOperationGasPrice.ts +1 -1
  127. package/actions/pimlico/getUserOperationStatus.ts +1 -1
  128. package/actions/smartAccount/prepareUserOperationRequest.ts +3 -1
  129. package/actions/smartAccount/sendTransaction.ts +3 -1
  130. package/actions/smartAccount/sendTransactions.ts +141 -0
  131. package/actions/smartAccount.ts +8 -1
  132. package/actions/stackup/accounts.ts +1 -1
  133. package/actions/stackup/sponsorUserOperation.ts +1 -1
  134. package/clients/decorators/bundler.ts +1 -1
  135. package/clients/decorators/pimlico.ts +3 -3
  136. package/clients/decorators/smartAccount.ts +61 -0
  137. package/clients/pimlico.ts +1 -1
  138. package/clients/stackup.ts +1 -1
  139. package/package.json +2 -2
  140. package/types/index.ts +5 -0
  141. package/tsconfig.build.tsbuildinfo +0 -1
@@ -0,0 +1,492 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signerToSafeSmartAccount = void 0;
4
+ const viem_1 = require("viem");
5
+ const accounts_1 = require("viem/accounts");
6
+ const actions_1 = require("viem/actions");
7
+ const getAccountNonce_js_1 = require("../actions/public/getAccountNonce.js");
8
+ const types_js_1 = require("./types.js");
9
+ const EIP712_SAFE_OPERATION_TYPE = {
10
+ SafeOp: [
11
+ { type: "address", name: "safe" },
12
+ { type: "bytes", name: "callData" },
13
+ { type: "uint256", name: "nonce" },
14
+ { type: "uint256", name: "preVerificationGas" },
15
+ { type: "uint256", name: "verificationGasLimit" },
16
+ { type: "uint256", name: "callGasLimit" },
17
+ { type: "uint256", name: "maxFeePerGas" },
18
+ { type: "uint256", name: "maxPriorityFeePerGas" },
19
+ { type: "address", name: "entryPoint" }
20
+ ]
21
+ };
22
+ const SAFE_VERSION_TO_ADDRESSES_MAP = {
23
+ "1.4.1": {
24
+ ADD_MODULES_LIB_ADDRESS: "0x191EFDC03615B575922289DC339F4c70aC5C30Af",
25
+ SAFE_4337_MODULE_ADDRESS: "0x39E54Bb2b3Aa444b4B39DEe15De3b7809c36Fc38",
26
+ SAFE_PROXY_FACTORY_ADDRESS: "0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67",
27
+ SAFE_SINGLETON_ADDRESS: "0x41675C099F32341bf84BFc5382aF534df5C7461a",
28
+ MULTI_SEND_ADDRESS: "0x38869bf66a61cF6bDB996A6aE40D5853Fd43B526",
29
+ MULTI_SEND_CALL_ONLY_ADDRESS: "0x9641d764fc13c8B624c04430C7356C1C7C8102e2"
30
+ }
31
+ };
32
+ const adjustVInSignature = (signingMethod, signature) => {
33
+ const ETHEREUM_V_VALUES = [0, 1, 27, 28];
34
+ const MIN_VALID_V_VALUE_FOR_SAFE_ECDSA = 27;
35
+ let signatureV = parseInt(signature.slice(-2), 16);
36
+ if (!ETHEREUM_V_VALUES.includes(signatureV)) {
37
+ throw new Error("Invalid signature");
38
+ }
39
+ if (signingMethod === "eth_sign") {
40
+ if (signatureV < MIN_VALID_V_VALUE_FOR_SAFE_ECDSA) {
41
+ signatureV += MIN_VALID_V_VALUE_FOR_SAFE_ECDSA;
42
+ }
43
+ signatureV += 4;
44
+ }
45
+ if (signingMethod === "eth_signTypedData") {
46
+ if (signatureV < MIN_VALID_V_VALUE_FOR_SAFE_ECDSA) {
47
+ signatureV += MIN_VALID_V_VALUE_FOR_SAFE_ECDSA;
48
+ }
49
+ }
50
+ return (signature.slice(0, -2) + signatureV.toString(16));
51
+ };
52
+ const generateSafeMessageMessage = (message) => {
53
+ const signableMessage = message;
54
+ if (typeof signableMessage === "string" || signableMessage.raw) {
55
+ return (0, viem_1.hashMessage)(signableMessage);
56
+ }
57
+ return (0, viem_1.hashTypedData)(message);
58
+ };
59
+ const encodeInternalTransaction = (tx) => {
60
+ const encoded = (0, viem_1.encodePacked)(["uint8", "address", "uint256", "uint256", "bytes"], [
61
+ tx.operation,
62
+ tx.to,
63
+ tx.value,
64
+ BigInt(tx.data.slice(2).length / 2),
65
+ tx.data
66
+ ]);
67
+ return encoded.slice(2);
68
+ };
69
+ const encodeMultiSend = (txs) => {
70
+ const data = `0x${txs
71
+ .map((tx) => encodeInternalTransaction(tx))
72
+ .join("")}`;
73
+ return (0, viem_1.encodeFunctionData)({
74
+ abi: [
75
+ {
76
+ inputs: [
77
+ {
78
+ internalType: "bytes",
79
+ name: "transactions",
80
+ type: "bytes"
81
+ }
82
+ ],
83
+ name: "multiSend",
84
+ outputs: [],
85
+ stateMutability: "payable",
86
+ type: "function"
87
+ }
88
+ ],
89
+ functionName: "multiSend",
90
+ args: [data]
91
+ });
92
+ };
93
+ const getInitializerCode = async ({ owner, addModuleLibAddress, safe4337ModuleAddress, multiSendAddress, setupTransactions = [], safeModules = [] }) => {
94
+ const multiSendCallData = encodeMultiSend([
95
+ {
96
+ to: addModuleLibAddress,
97
+ data: (0, viem_1.encodeFunctionData)({
98
+ abi: [
99
+ {
100
+ inputs: [
101
+ {
102
+ internalType: "address[]",
103
+ name: "modules",
104
+ type: "address[]"
105
+ }
106
+ ],
107
+ name: "enableModules",
108
+ outputs: [],
109
+ stateMutability: "nonpayable",
110
+ type: "function"
111
+ }
112
+ ],
113
+ functionName: "enableModules",
114
+ args: [[safe4337ModuleAddress, ...safeModules]]
115
+ }),
116
+ value: 0n,
117
+ operation: 1
118
+ },
119
+ ...setupTransactions.map((tx) => ({ ...tx, operation: 0 }))
120
+ ]);
121
+ return (0, viem_1.encodeFunctionData)({
122
+ abi: [
123
+ {
124
+ inputs: [
125
+ {
126
+ internalType: "address[]",
127
+ name: "_owners",
128
+ type: "address[]"
129
+ },
130
+ {
131
+ internalType: "uint256",
132
+ name: "_threshold",
133
+ type: "uint256"
134
+ },
135
+ {
136
+ internalType: "address",
137
+ name: "to",
138
+ type: "address"
139
+ },
140
+ {
141
+ internalType: "bytes",
142
+ name: "data",
143
+ type: "bytes"
144
+ },
145
+ {
146
+ internalType: "address",
147
+ name: "fallbackHandler",
148
+ type: "address"
149
+ },
150
+ {
151
+ internalType: "address",
152
+ name: "paymentToken",
153
+ type: "address"
154
+ },
155
+ {
156
+ internalType: "uint256",
157
+ name: "payment",
158
+ type: "uint256"
159
+ },
160
+ {
161
+ internalType: "address payable",
162
+ name: "paymentReceiver",
163
+ type: "address"
164
+ }
165
+ ],
166
+ name: "setup",
167
+ outputs: [],
168
+ stateMutability: "nonpayable",
169
+ type: "function"
170
+ }
171
+ ],
172
+ functionName: "setup",
173
+ args: [
174
+ [owner],
175
+ 1n,
176
+ multiSendAddress,
177
+ multiSendCallData,
178
+ safe4337ModuleAddress,
179
+ viem_1.zeroAddress,
180
+ 0n,
181
+ viem_1.zeroAddress
182
+ ]
183
+ });
184
+ };
185
+ const getAccountInitCode = async ({ owner, addModuleLibAddress, safe4337ModuleAddress, safeProxyFactoryAddress, safeSingletonAddress, multiSendAddress, saltNonce = 0n, setupTransactions = [], safeModules = [] }) => {
186
+ if (!owner)
187
+ throw new Error("Owner account not found");
188
+ const initializer = await getInitializerCode({
189
+ owner,
190
+ addModuleLibAddress,
191
+ safe4337ModuleAddress,
192
+ multiSendAddress,
193
+ setupTransactions,
194
+ safeModules
195
+ });
196
+ const initCodeCallData = (0, viem_1.encodeFunctionData)({
197
+ abi: [
198
+ {
199
+ inputs: [
200
+ {
201
+ internalType: "address",
202
+ name: "_singleton",
203
+ type: "address"
204
+ },
205
+ {
206
+ internalType: "bytes",
207
+ name: "initializer",
208
+ type: "bytes"
209
+ },
210
+ {
211
+ internalType: "uint256",
212
+ name: "saltNonce",
213
+ type: "uint256"
214
+ }
215
+ ],
216
+ name: "createProxyWithNonce",
217
+ outputs: [
218
+ {
219
+ internalType: "contract SafeProxy",
220
+ name: "proxy",
221
+ type: "address"
222
+ }
223
+ ],
224
+ stateMutability: "nonpayable",
225
+ type: "function"
226
+ }
227
+ ],
228
+ functionName: "createProxyWithNonce",
229
+ args: [safeSingletonAddress, initializer, saltNonce]
230
+ });
231
+ return (0, viem_1.concatHex)([safeProxyFactoryAddress, initCodeCallData]);
232
+ };
233
+ const getAccountAddress = async ({ client, owner, addModuleLibAddress, safe4337ModuleAddress, safeProxyFactoryAddress, safeSingletonAddress, multiSendAddress, setupTransactions = [], safeModules = [], saltNonce = 0n }) => {
234
+ const proxyCreationCode = await (0, actions_1.readContract)(client, {
235
+ abi: [
236
+ {
237
+ inputs: [],
238
+ name: "proxyCreationCode",
239
+ outputs: [
240
+ {
241
+ internalType: "bytes",
242
+ name: "",
243
+ type: "bytes"
244
+ }
245
+ ],
246
+ stateMutability: "pure",
247
+ type: "function"
248
+ }
249
+ ],
250
+ address: safeProxyFactoryAddress,
251
+ functionName: "proxyCreationCode"
252
+ });
253
+ const deploymentCode = (0, viem_1.encodePacked)(["bytes", "uint256"], [proxyCreationCode, (0, viem_1.hexToBigInt)(safeSingletonAddress)]);
254
+ const initializer = await getInitializerCode({
255
+ owner,
256
+ addModuleLibAddress,
257
+ safe4337ModuleAddress,
258
+ multiSendAddress,
259
+ setupTransactions,
260
+ safeModules
261
+ });
262
+ const salt = (0, viem_1.keccak256)((0, viem_1.encodePacked)(["bytes32", "uint256"], [(0, viem_1.keccak256)((0, viem_1.encodePacked)(["bytes"], [initializer])), saltNonce]));
263
+ return (0, viem_1.getContractAddress)({
264
+ from: safeProxyFactoryAddress,
265
+ salt,
266
+ bytecode: deploymentCode,
267
+ opcode: "CREATE2"
268
+ });
269
+ };
270
+ const getDefaultAddresses = (safeVersion, { addModuleLibAddress: _addModuleLibAddress, safe4337ModuleAddress: _safe4337ModuleAddress, safeProxyFactoryAddress: _safeProxyFactoryAddress, safeSingletonAddress: _safeSingletonAddress, multiSendAddress: _multiSendAddress, multiSendCallOnlyAddress: _multiSendCallOnlyAddress }) => {
271
+ const addModuleLibAddress = _addModuleLibAddress ??
272
+ SAFE_VERSION_TO_ADDRESSES_MAP[safeVersion].ADD_MODULES_LIB_ADDRESS;
273
+ const safe4337ModuleAddress = _safe4337ModuleAddress ??
274
+ SAFE_VERSION_TO_ADDRESSES_MAP[safeVersion].SAFE_4337_MODULE_ADDRESS;
275
+ const safeProxyFactoryAddress = _safeProxyFactoryAddress ??
276
+ SAFE_VERSION_TO_ADDRESSES_MAP[safeVersion].SAFE_PROXY_FACTORY_ADDRESS;
277
+ const safeSingletonAddress = _safeSingletonAddress ??
278
+ SAFE_VERSION_TO_ADDRESSES_MAP[safeVersion].SAFE_SINGLETON_ADDRESS;
279
+ const multiSendAddress = _multiSendAddress ??
280
+ SAFE_VERSION_TO_ADDRESSES_MAP[safeVersion].MULTI_SEND_ADDRESS;
281
+ const multiSendCallOnlyAddress = _multiSendCallOnlyAddress ??
282
+ SAFE_VERSION_TO_ADDRESSES_MAP[safeVersion].MULTI_SEND_CALL_ONLY_ADDRESS;
283
+ return {
284
+ addModuleLibAddress,
285
+ safe4337ModuleAddress,
286
+ safeProxyFactoryAddress,
287
+ safeSingletonAddress,
288
+ multiSendAddress,
289
+ multiSendCallOnlyAddress
290
+ };
291
+ };
292
+ async function signerToSafeSmartAccount(client, { signer, safeVersion, entryPoint, addModuleLibAddress: _addModuleLibAddress, safe4337ModuleAddress: _safe4337ModuleAddress, safeProxyFactoryAddress: _safeProxyFactoryAddress, safeSingletonAddress: _safeSingletonAddress, multiSendAddress: _multiSendAddress, multiSendCallOnlyAddress: _multiSendCallOnlyAddress, saltNonce = 0n, safeModules = [], setupTransactions = [] }) {
293
+ const chainId = await (0, actions_1.getChainId)(client);
294
+ const viemSigner = signer.type === "local"
295
+ ? {
296
+ ...signer,
297
+ signTransaction: (_, __) => {
298
+ throw new types_js_1.SignTransactionNotSupportedBySmartAccount();
299
+ }
300
+ }
301
+ : signer;
302
+ const { addModuleLibAddress, safe4337ModuleAddress, safeProxyFactoryAddress, safeSingletonAddress, multiSendAddress, multiSendCallOnlyAddress } = getDefaultAddresses(safeVersion, {
303
+ addModuleLibAddress: _addModuleLibAddress,
304
+ safe4337ModuleAddress: _safe4337ModuleAddress,
305
+ safeProxyFactoryAddress: _safeProxyFactoryAddress,
306
+ safeSingletonAddress: _safeSingletonAddress,
307
+ multiSendAddress: _multiSendAddress,
308
+ multiSendCallOnlyAddress: _multiSendCallOnlyAddress
309
+ });
310
+ const accountAddress = await getAccountAddress({
311
+ client,
312
+ owner: viemSigner.address,
313
+ addModuleLibAddress,
314
+ safe4337ModuleAddress,
315
+ safeProxyFactoryAddress,
316
+ safeSingletonAddress,
317
+ multiSendAddress,
318
+ saltNonce,
319
+ setupTransactions,
320
+ safeModules
321
+ });
322
+ if (!accountAddress)
323
+ throw new Error("Account address not found");
324
+ const account = (0, accounts_1.toAccount)({
325
+ address: accountAddress,
326
+ async signMessage({ message }) {
327
+ const messageHash = (0, viem_1.hashTypedData)({
328
+ domain: {
329
+ chainId: chainId,
330
+ verifyingContract: accountAddress
331
+ },
332
+ types: {
333
+ SafeMessage: [{ name: "message", type: "bytes" }]
334
+ },
335
+ primaryType: "SafeMessage",
336
+ message: {
337
+ message: generateSafeMessageMessage(message)
338
+ }
339
+ });
340
+ return adjustVInSignature("eth_sign", await (0, actions_1.signMessage)(client, {
341
+ account: viemSigner,
342
+ message: {
343
+ raw: (0, viem_1.toBytes)(messageHash)
344
+ }
345
+ }));
346
+ },
347
+ async signTransaction(_, __) {
348
+ throw new types_js_1.SignTransactionNotSupportedBySmartAccount();
349
+ },
350
+ async signTypedData(typedData) {
351
+ return adjustVInSignature("eth_signTypedData", await (0, actions_1.signTypedData)(client, {
352
+ account: viemSigner,
353
+ domain: {
354
+ chainId: chainId,
355
+ verifyingContract: accountAddress
356
+ },
357
+ types: {
358
+ SafeMessage: [{ name: "message", type: "bytes" }]
359
+ },
360
+ primaryType: "SafeMessage",
361
+ message: {
362
+ message: generateSafeMessageMessage(typedData)
363
+ }
364
+ }));
365
+ }
366
+ });
367
+ return {
368
+ ...account,
369
+ client: client,
370
+ publicKey: accountAddress,
371
+ entryPoint: entryPoint,
372
+ source: "SafeSmartAccount",
373
+ async getNonce() {
374
+ return (0, getAccountNonce_js_1.getAccountNonce)(client, {
375
+ sender: accountAddress,
376
+ entryPoint: entryPoint
377
+ });
378
+ },
379
+ async signUserOperation(userOperation) {
380
+ const signatures = [
381
+ {
382
+ signer: viemSigner.address,
383
+ data: await (0, actions_1.signTypedData)(client, {
384
+ account: viemSigner,
385
+ domain: {
386
+ chainId: chainId,
387
+ verifyingContract: safe4337ModuleAddress
388
+ },
389
+ types: EIP712_SAFE_OPERATION_TYPE,
390
+ primaryType: "SafeOp",
391
+ message: {
392
+ safe: accountAddress,
393
+ callData: userOperation.callData,
394
+ nonce: userOperation.nonce,
395
+ preVerificationGas: userOperation.preVerificationGas,
396
+ verificationGasLimit: userOperation.verificationGasLimit,
397
+ callGasLimit: userOperation.callGasLimit,
398
+ maxFeePerGas: userOperation.maxFeePerGas,
399
+ maxPriorityFeePerGas: userOperation.maxPriorityFeePerGas,
400
+ entryPoint: entryPoint
401
+ }
402
+ })
403
+ }
404
+ ];
405
+ signatures.sort((left, right) => left.signer
406
+ .toLowerCase()
407
+ .localeCompare(right.signer.toLowerCase()));
408
+ let signatureBytes = "0x";
409
+ for (const sig of signatures) {
410
+ signatureBytes += sig.data.slice(2);
411
+ }
412
+ return signatureBytes;
413
+ },
414
+ async getInitCode() {
415
+ const contractCode = await (0, actions_1.getBytecode)(client, {
416
+ address: accountAddress
417
+ });
418
+ if ((contractCode?.length ?? 0) > 2)
419
+ return "0x";
420
+ return getAccountInitCode({
421
+ owner: viemSigner.address,
422
+ addModuleLibAddress,
423
+ safe4337ModuleAddress,
424
+ safeProxyFactoryAddress,
425
+ safeSingletonAddress,
426
+ multiSendAddress,
427
+ saltNonce,
428
+ setupTransactions,
429
+ safeModules
430
+ });
431
+ },
432
+ async encodeDeployCallData(_) {
433
+ throw new Error("Safe account doesn't support account deployment");
434
+ },
435
+ async encodeCallData(args) {
436
+ let to;
437
+ let value;
438
+ let data;
439
+ if (Array.isArray(args)) {
440
+ const argsArray = args;
441
+ to = multiSendCallOnlyAddress;
442
+ value = 0n;
443
+ data = encodeMultiSend(argsArray.map((tx) => ({ ...tx, operation: 0 })));
444
+ }
445
+ else {
446
+ const singleTransaction = args;
447
+ to = singleTransaction.to;
448
+ data = singleTransaction.data;
449
+ value = singleTransaction.value;
450
+ }
451
+ return (0, viem_1.encodeFunctionData)({
452
+ abi: [
453
+ {
454
+ inputs: [
455
+ {
456
+ internalType: "address",
457
+ name: "to",
458
+ type: "address"
459
+ },
460
+ {
461
+ internalType: "uint256",
462
+ name: "value",
463
+ type: "uint256"
464
+ },
465
+ {
466
+ internalType: "bytes",
467
+ name: "data",
468
+ type: "bytes"
469
+ },
470
+ {
471
+ internalType: "uint8",
472
+ name: "operation",
473
+ type: "uint8"
474
+ }
475
+ ],
476
+ name: "executeUserOp",
477
+ outputs: [],
478
+ stateMutability: "nonpayable",
479
+ type: "function"
480
+ }
481
+ ],
482
+ functionName: "executeUserOp",
483
+ args: [to, value, data, 0]
484
+ });
485
+ },
486
+ async getDummySignature() {
487
+ return "0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c";
488
+ }
489
+ };
490
+ }
491
+ exports.signerToSafeSmartAccount = signerToSafeSmartAccount;
492
+ //# sourceMappingURL=signerToSafeSmartAccount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signerToSafeSmartAccount.js","sourceRoot":"","sources":["../../accounts/signerToSafeSmartAccount.ts"],"names":[],"mappings":"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"}