permissionless 0.2.53 → 0.2.55

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 (45) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/_cjs/accounts/safe/signUserOperation.js +127 -33
  3. package/_cjs/accounts/safe/signUserOperation.js.map +1 -1
  4. package/_cjs/accounts/safe/toSafeSmartAccount.js +264 -66
  5. package/_cjs/accounts/safe/toSafeSmartAccount.js.map +1 -1
  6. package/_cjs/accounts/simple/toSimpleSmartAccount.js +5 -2
  7. package/_cjs/accounts/simple/toSimpleSmartAccount.js.map +1 -1
  8. package/_cjs/actions/smartAccount/getCallsStatus.js +66 -0
  9. package/_cjs/actions/smartAccount/getCallsStatus.js.map +1 -0
  10. package/_cjs/actions/smartAccount/sendCalls.js +10 -0
  11. package/_cjs/actions/smartAccount/sendCalls.js.map +1 -0
  12. package/_cjs/clients/decorators/smartAccount.js +5 -1
  13. package/_cjs/clients/decorators/smartAccount.js.map +1 -1
  14. package/_esm/accounts/safe/signUserOperation.js +136 -35
  15. package/_esm/accounts/safe/signUserOperation.js.map +1 -1
  16. package/_esm/accounts/safe/toSafeSmartAccount.js +263 -66
  17. package/_esm/accounts/safe/toSafeSmartAccount.js.map +1 -1
  18. package/_esm/accounts/simple/toSimpleSmartAccount.js +5 -2
  19. package/_esm/accounts/simple/toSimpleSmartAccount.js.map +1 -1
  20. package/_esm/actions/smartAccount/getCallsStatus.js +65 -0
  21. package/_esm/actions/smartAccount/getCallsStatus.js.map +1 -0
  22. package/_esm/actions/smartAccount/sendCalls.js +7 -0
  23. package/_esm/actions/smartAccount/sendCalls.js.map +1 -0
  24. package/_esm/clients/decorators/smartAccount.js +5 -1
  25. package/_esm/clients/decorators/smartAccount.js.map +1 -1
  26. package/_types/accounts/safe/signUserOperation.d.ts +13 -3
  27. package/_types/accounts/safe/signUserOperation.d.ts.map +1 -1
  28. package/_types/accounts/safe/toSafeSmartAccount.d.ts +13 -3
  29. package/_types/accounts/safe/toSafeSmartAccount.d.ts.map +1 -1
  30. package/_types/accounts/simple/toSimpleSmartAccount.d.ts.map +1 -1
  31. package/_types/actions/smartAccount/getCallsStatus.d.ts +4 -0
  32. package/_types/actions/smartAccount/getCallsStatus.d.ts.map +1 -0
  33. package/_types/actions/smartAccount/sendCalls.d.ts +4 -0
  34. package/_types/actions/smartAccount/sendCalls.d.ts.map +1 -0
  35. package/_types/clients/decorators/smartAccount.d.ts +5 -1
  36. package/_types/clients/decorators/smartAccount.d.ts.map +1 -1
  37. package/accounts/safe/signUserOperation.ts +177 -39
  38. package/accounts/safe/toSafeSmartAccount.ts +350 -76
  39. package/accounts/simple/toSimpleSmartAccount.ts +6 -3
  40. package/actions/smartAccount/getCallsStatus.test.ts +258 -0
  41. package/actions/smartAccount/getCallsStatus.ts +90 -0
  42. package/actions/smartAccount/sendCalls.test.ts +571 -0
  43. package/actions/smartAccount/sendCalls.ts +38 -0
  44. package/clients/decorators/smartAccount.ts +25 -1
  45. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # permissionless
2
2
 
3
+ ## 0.2.55
4
+
5
+ ### Patch Changes
6
+
7
+ - f43c30c360608b198502796bcfd87f12f9107574: Added support for sendCalls & getCallsStatus for smart account client
8
+
9
+ ## 0.2.54
10
+
11
+ ### Patch Changes
12
+
13
+ - 29ac0341359235ce4ad78f167df5fedb87022b9f: Added passkeys support for all Safe versions and entrypoint 0.7 & 0.8
14
+
3
15
  ## 0.2.53
4
16
 
5
17
  ### Patch Changes
@@ -1,9 +1,59 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getWebAuthnSignature = exports.concatSignatures = void 0;
3
4
  exports.signUserOperation = signUserOperation;
5
+ const ox_1 = require("ox");
4
6
  const viem_1 = require("viem");
5
7
  const index_js_1 = require("../../utils/index.js");
6
8
  const toSafeSmartAccount_js_1 = require("./toSafeSmartAccount.js");
9
+ const concatSignatures = (signatures) => {
10
+ signatures.sort((left, right) => left.signer.toLowerCase().localeCompare(right.signer.toLowerCase()));
11
+ const SIGNATURE_LENGTH_BYTES = 65;
12
+ let signatureBytes = "0x";
13
+ let dynamicBytes = "";
14
+ for (const sig of signatures) {
15
+ if (sig.dynamic) {
16
+ const dynamicPartPosition = (signatures.length * SIGNATURE_LENGTH_BYTES +
17
+ dynamicBytes.length / 2)
18
+ .toString(16)
19
+ .padStart(64, "0");
20
+ const dynamicPartLength = (sig.data.slice(2).length / 2)
21
+ .toString(16)
22
+ .padStart(64, "0");
23
+ const staticSignature = `${sig.signer.slice(2).padStart(64, "0")}${dynamicPartPosition}00`;
24
+ const dynamicPartWithLength = `${dynamicPartLength}${sig.data.slice(2)}`;
25
+ signatureBytes += staticSignature;
26
+ dynamicBytes += dynamicPartWithLength;
27
+ }
28
+ else {
29
+ signatureBytes += sig.data.slice(2);
30
+ }
31
+ }
32
+ signatureBytes += dynamicBytes;
33
+ return signatureBytes;
34
+ };
35
+ exports.concatSignatures = concatSignatures;
36
+ const getWebAuthnSignature = async ({ owner, hash }) => {
37
+ const { signature: signatureData, webauthn } = await owner.sign({
38
+ hash
39
+ });
40
+ const signature = ox_1.Signature.fromHex(signatureData);
41
+ const match = webauthn.clientDataJSON.match(/^\{"type":"webauthn.get","challenge":"[A-Za-z0-9\-_]{43}",(.*)\}$/);
42
+ if (!match) {
43
+ throw new Error("challenge not found in client data JSON");
44
+ }
45
+ const [, fields] = match;
46
+ return (0, viem_1.encodeAbiParameters)([
47
+ { name: "authenticatorData", type: "bytes" },
48
+ { name: "clientDataJSON", type: "string" },
49
+ { name: "signature", type: "uint256[2]" }
50
+ ], [
51
+ webauthn.authenticatorData,
52
+ fields,
53
+ [BigInt(signature.r), BigInt(signature.s)]
54
+ ]);
55
+ };
56
+ exports.getWebAuthnSignature = getWebAuthnSignature;
7
57
  async function signUserOperation(parameters) {
8
58
  const { chainId, entryPoint, validAfter = 0, validUntil = 0, safe4337ModuleAddress: _safe4337ModuleAddress, version, owners, signatures: existingSignatures, account, ...userOperation } = parameters;
9
59
  const { safe4337ModuleAddress } = (0, toSafeSmartAccount_js_1.getDefaultAddresses)(version, entryPoint.version, {
@@ -42,56 +92,100 @@ async function signUserOperation(parameters) {
42
92
  sender: userOperation.sender
43
93
  });
44
94
  }
45
- const localOwners = [
46
- await (0, index_js_1.toOwner)({
95
+ const localOwner = (0, toSafeSmartAccount_js_1.isWebAuthnAccount)(account)
96
+ ? account
97
+ : await (0, index_js_1.toOwner)({
47
98
  owner: account
48
- })
49
- ];
99
+ });
100
+ const signer = (0, toSafeSmartAccount_js_1.isWebAuthnAccount)(localOwner)
101
+ ? parameters.safeWebAuthnSharedSignerAddress
102
+ : localOwner.address;
103
+ if (!signer) {
104
+ throw new Error("no signer found");
105
+ }
50
106
  let unPackedSignatures = [];
51
107
  if (existingSignatures) {
52
- const decoded = (0, viem_1.decodeAbiParameters)([
53
- {
54
- components: [
55
- { type: "address", name: "signer" },
56
- { type: "bytes", name: "data" }
57
- ],
58
- name: "signatures",
59
- type: "tuple[]"
60
- }
61
- ], existingSignatures);
62
- unPackedSignatures = decoded[0];
108
+ try {
109
+ const decoded = (0, viem_1.decodeAbiParameters)([
110
+ {
111
+ components: [
112
+ { type: "address", name: "signer" },
113
+ { type: "bytes", name: "data" },
114
+ { type: "bool", name: "dynamic" }
115
+ ],
116
+ name: "signatures",
117
+ type: "tuple[]"
118
+ }
119
+ ], existingSignatures);
120
+ unPackedSignatures = decoded[0];
121
+ }
122
+ catch {
123
+ const decoded = (0, viem_1.decodeAbiParameters)([
124
+ {
125
+ components: [
126
+ { type: "address", name: "signer" },
127
+ { type: "bytes", name: "data" }
128
+ ],
129
+ name: "signatures",
130
+ type: "tuple[]"
131
+ }
132
+ ], existingSignatures);
133
+ unPackedSignatures = decoded[0].map((sig) => ({
134
+ ...sig,
135
+ dynamic: false
136
+ }));
137
+ }
63
138
  }
64
139
  const signatures = [
65
140
  ...unPackedSignatures,
66
- ...(await Promise.all(localOwners.map(async (localOwner) => ({
67
- signer: localOwner.address,
68
- data: await localOwner.signTypedData({
69
- domain: {
70
- chainId,
71
- verifyingContract: safe4337ModuleAddress
72
- },
73
- types: entryPoint.version === "0.6"
74
- ? toSafeSmartAccount_js_1.EIP712_SAFE_OPERATION_TYPE_V06
75
- : toSafeSmartAccount_js_1.EIP712_SAFE_OPERATION_TYPE_V07,
76
- primaryType: "SafeOp",
77
- message: message
78
- })
79
- }))))
141
+ {
142
+ signer,
143
+ dynamic: (0, toSafeSmartAccount_js_1.isWebAuthnAccount)(localOwner),
144
+ data: await (async () => {
145
+ if ((0, toSafeSmartAccount_js_1.isWebAuthnAccount)(localOwner)) {
146
+ const safeHash = (0, viem_1.hashTypedData)({
147
+ domain: {
148
+ chainId,
149
+ verifyingContract: safe4337ModuleAddress
150
+ },
151
+ types: entryPoint.version === "0.6"
152
+ ? toSafeSmartAccount_js_1.EIP712_SAFE_OPERATION_TYPE_V06
153
+ : toSafeSmartAccount_js_1.EIP712_SAFE_OPERATION_TYPE_V07,
154
+ primaryType: "SafeOp",
155
+ message: message
156
+ });
157
+ return (0, exports.getWebAuthnSignature)({
158
+ owner: localOwner,
159
+ hash: safeHash
160
+ });
161
+ }
162
+ return localOwner.signTypedData({
163
+ domain: {
164
+ chainId,
165
+ verifyingContract: safe4337ModuleAddress
166
+ },
167
+ types: entryPoint.version === "0.6"
168
+ ? toSafeSmartAccount_js_1.EIP712_SAFE_OPERATION_TYPE_V06
169
+ : toSafeSmartAccount_js_1.EIP712_SAFE_OPERATION_TYPE_V07,
170
+ primaryType: "SafeOp",
171
+ message: message
172
+ });
173
+ })()
174
+ }
80
175
  ];
81
176
  if (signatures.length !== owners.length) {
82
177
  return (0, viem_1.encodeAbiParameters)([
83
178
  {
84
179
  components: [
85
180
  { type: "address", name: "signer" },
86
- { type: "bytes", name: "data" }
181
+ { type: "bytes", name: "data" },
182
+ { type: "bool", name: "dynamic" }
87
183
  ],
88
184
  name: "signatures",
89
185
  type: "tuple[]"
90
186
  }
91
187
  ], [signatures]);
92
188
  }
93
- signatures.sort((left, right) => left.signer.toLowerCase().localeCompare(right.signer.toLowerCase()));
94
- const signatureBytes = (0, viem_1.concat)(signatures.map((sig) => sig.data));
95
- return (0, viem_1.encodePacked)(["uint48", "uint48", "bytes"], [validAfter, validUntil, signatureBytes]);
189
+ return (0, viem_1.encodePacked)(["uint48", "uint48", "bytes"], [validAfter, validUntil, (0, exports.concatSignatures)(signatures)]);
96
190
  }
97
191
  //# sourceMappingURL=signUserOperation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signUserOperation.js","sourceRoot":"","sources":["../../../accounts/safe/signUserOperation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signUserOperation.js","sourceRoot":"","sources":["../../../accounts/safe/signUserOperation.ts"],"names":[],"mappings":"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"}