@account-kit/smart-contracts 4.25.1 → 4.27.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.
- package/dist/esm/src/ma-v2/account/common/modularAccountV2Base.js +29 -17
- package/dist/esm/src/ma-v2/account/common/modularAccountV2Base.js.map +1 -1
- package/dist/esm/src/ma-v2/account/nativeSMASigner.js +6 -2
- package/dist/esm/src/ma-v2/account/nativeSMASigner.js.map +1 -1
- package/dist/esm/src/ma-v2/modules/single-signer-validation/signer.js +6 -2
- package/dist/esm/src/ma-v2/modules/single-signer-validation/signer.js.map +1 -1
- package/dist/esm/src/ma-v2/permissionBuilder.js +8 -1
- package/dist/esm/src/ma-v2/permissionBuilder.js.map +1 -1
- package/dist/esm/src/ma-v2/permissionBuilderErrors.d.ts +22 -11
- package/dist/esm/src/ma-v2/permissionBuilderErrors.js +29 -11
- package/dist/esm/src/ma-v2/permissionBuilderErrors.js.map +1 -1
- package/dist/esm/src/ma-v2/utils.d.ts +2 -0
- package/dist/esm/src/ma-v2/utils.js +4 -1
- package/dist/esm/src/ma-v2/utils.js.map +1 -1
- package/dist/types/src/ma-v2/account/common/modularAccountV2Base.d.ts.map +1 -1
- package/dist/types/src/ma-v2/account/nativeSMASigner.d.ts.map +1 -1
- package/dist/types/src/ma-v2/modules/single-signer-validation/signer.d.ts.map +1 -1
- package/dist/types/src/ma-v2/permissionBuilder.d.ts.map +1 -1
- package/dist/types/src/ma-v2/permissionBuilderErrors.d.ts +22 -11
- package/dist/types/src/ma-v2/permissionBuilderErrors.d.ts.map +1 -1
- package/dist/types/src/ma-v2/utils.d.ts +2 -0
- package/dist/types/src/ma-v2/utils.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/ma-v2/account/common/modularAccountV2Base.ts +29 -18
- package/src/ma-v2/account/nativeSMASigner.ts +7 -2
- package/src/ma-v2/modules/single-signer-validation/signer.ts +7 -2
- package/src/ma-v2/permissionBuilder.ts +9 -0
- package/src/ma-v2/permissionBuilderErrors.ts +26 -11
- package/src/ma-v2/utils.ts +8 -1
|
@@ -61,7 +61,7 @@ export const singleSignerMessageSigner = (
|
|
|
61
61
|
},
|
|
62
62
|
|
|
63
63
|
signUserOperationHash: async (uoHash: Hex): Promise<Hex> => {
|
|
64
|
-
|
|
64
|
+
let sig = await signer
|
|
65
65
|
.signMessage({ raw: uoHash })
|
|
66
66
|
.then((signature: Hex) =>
|
|
67
67
|
packUOSignature({
|
|
@@ -70,7 +70,12 @@ export const singleSignerMessageSigner = (
|
|
|
70
70
|
})
|
|
71
71
|
);
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
if (deferredActionData) {
|
|
74
|
+
sig = concatHex([deferredActionData, sig]);
|
|
75
|
+
deferredActionData = undefined;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return sig;
|
|
74
79
|
},
|
|
75
80
|
|
|
76
81
|
// we apply the expected 1271 packing here since the account contract will expect it
|
|
@@ -32,6 +32,7 @@ import {
|
|
|
32
32
|
MultipleNativeTokenTransferError,
|
|
33
33
|
NoFunctionsProvidedError,
|
|
34
34
|
RootPermissionOnlyError,
|
|
35
|
+
SelectorNotAllowed,
|
|
35
36
|
UnsupportedPermissionTypeError,
|
|
36
37
|
ValidationConfigUnsetError,
|
|
37
38
|
ZeroAddressError,
|
|
@@ -318,6 +319,14 @@ export class PermissionBuilder {
|
|
|
318
319
|
if (permission.data.functions.length === 0) {
|
|
319
320
|
throw new NoFunctionsProvidedError(permission);
|
|
320
321
|
}
|
|
322
|
+
// Explicitly disallow adding execute & executeBatch
|
|
323
|
+
if (permission.data.functions.includes(ACCOUNT_EXECUTE_SELECTOR)) {
|
|
324
|
+
throw new SelectorNotAllowed("execute");
|
|
325
|
+
} else if (
|
|
326
|
+
permission.data.functions.includes(ACCOUNT_EXECUTEBATCH_SELECTOR)
|
|
327
|
+
) {
|
|
328
|
+
throw new SelectorNotAllowed("executeBatch");
|
|
329
|
+
}
|
|
321
330
|
this.selectors = [...this.selectors, ...permission.data.functions];
|
|
322
331
|
}
|
|
323
332
|
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { BaseError, type Address } from "@aa-sdk/core";
|
|
2
2
|
import type { Permission } from "./permissionBuilder";
|
|
3
3
|
|
|
4
|
-
export class
|
|
4
|
+
export abstract class PermissionBuilderError extends BaseError {}
|
|
5
|
+
|
|
6
|
+
export class RootPermissionOnlyError extends PermissionBuilderError {
|
|
5
7
|
override name = "PermissionBuilder: RootPermissionOnlyError";
|
|
6
8
|
|
|
7
9
|
/**
|
|
@@ -14,7 +16,7 @@ export class RootPermissionOnlyError extends BaseError {
|
|
|
14
16
|
}
|
|
15
17
|
}
|
|
16
18
|
|
|
17
|
-
export class AccountAddressAsTargetError extends
|
|
19
|
+
export class AccountAddressAsTargetError extends PermissionBuilderError {
|
|
18
20
|
override name = "PermissionBuilder: AccountAddressAsTargetError";
|
|
19
21
|
|
|
20
22
|
/**
|
|
@@ -29,7 +31,7 @@ export class AccountAddressAsTargetError extends BaseError {
|
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
33
|
|
|
32
|
-
export class DuplicateTargetAddressError extends
|
|
34
|
+
export class DuplicateTargetAddressError extends PermissionBuilderError {
|
|
33
35
|
override name = "PermissionBuilder: DuplicateTargetAddressError";
|
|
34
36
|
|
|
35
37
|
/**
|
|
@@ -45,7 +47,7 @@ export class DuplicateTargetAddressError extends BaseError {
|
|
|
45
47
|
}
|
|
46
48
|
}
|
|
47
49
|
|
|
48
|
-
export class NoFunctionsProvidedError extends
|
|
50
|
+
export class NoFunctionsProvidedError extends PermissionBuilderError {
|
|
49
51
|
override name = "PermissionBuilder: NoFunctionsProvidedError";
|
|
50
52
|
|
|
51
53
|
/**
|
|
@@ -58,7 +60,7 @@ export class NoFunctionsProvidedError extends BaseError {
|
|
|
58
60
|
}
|
|
59
61
|
}
|
|
60
62
|
|
|
61
|
-
export class ExpiredDeadlineError extends
|
|
63
|
+
export class ExpiredDeadlineError extends PermissionBuilderError {
|
|
62
64
|
override name = "PermissionBuilder: ExpiredDeadlineError";
|
|
63
65
|
|
|
64
66
|
/**
|
|
@@ -74,7 +76,7 @@ export class ExpiredDeadlineError extends BaseError {
|
|
|
74
76
|
}
|
|
75
77
|
}
|
|
76
78
|
|
|
77
|
-
export class DeadlineOverLimitError extends
|
|
79
|
+
export class DeadlineOverLimitError extends PermissionBuilderError {
|
|
78
80
|
override name = "PermissionBuilder: DeadlineOverLimitError";
|
|
79
81
|
|
|
80
82
|
/**
|
|
@@ -89,7 +91,7 @@ export class DeadlineOverLimitError extends BaseError {
|
|
|
89
91
|
}
|
|
90
92
|
}
|
|
91
93
|
|
|
92
|
-
export class ValidationConfigUnsetError extends
|
|
94
|
+
export class ValidationConfigUnsetError extends PermissionBuilderError {
|
|
93
95
|
override name = "PermissionBuilder: ValidationConfigUnsetError";
|
|
94
96
|
|
|
95
97
|
/**
|
|
@@ -100,7 +102,7 @@ export class ValidationConfigUnsetError extends BaseError {
|
|
|
100
102
|
}
|
|
101
103
|
}
|
|
102
104
|
|
|
103
|
-
export class MultipleNativeTokenTransferError extends
|
|
105
|
+
export class MultipleNativeTokenTransferError extends PermissionBuilderError {
|
|
104
106
|
override name = "PermissionBuilder: MultipleNativeTokenTransferError";
|
|
105
107
|
|
|
106
108
|
/**
|
|
@@ -115,7 +117,7 @@ export class MultipleNativeTokenTransferError extends BaseError {
|
|
|
115
117
|
}
|
|
116
118
|
}
|
|
117
119
|
|
|
118
|
-
export class ZeroAddressError extends
|
|
120
|
+
export class ZeroAddressError extends PermissionBuilderError {
|
|
119
121
|
override name = "PermissionBuilder: ZeroAddressError";
|
|
120
122
|
|
|
121
123
|
/**
|
|
@@ -128,7 +130,7 @@ export class ZeroAddressError extends BaseError {
|
|
|
128
130
|
}
|
|
129
131
|
}
|
|
130
132
|
|
|
131
|
-
export class MultipleGasLimitError extends
|
|
133
|
+
export class MultipleGasLimitError extends PermissionBuilderError {
|
|
132
134
|
override name = "PermissionBuilder: MultipleGasLimitError";
|
|
133
135
|
|
|
134
136
|
/**
|
|
@@ -141,7 +143,7 @@ export class MultipleGasLimitError extends BaseError {
|
|
|
141
143
|
}
|
|
142
144
|
}
|
|
143
145
|
|
|
144
|
-
export class UnsupportedPermissionTypeError extends
|
|
146
|
+
export class UnsupportedPermissionTypeError extends PermissionBuilderError {
|
|
145
147
|
override name = "PermissionBuilder: UnsupportedPermissionTypeError";
|
|
146
148
|
|
|
147
149
|
/**
|
|
@@ -151,3 +153,16 @@ export class UnsupportedPermissionTypeError extends BaseError {
|
|
|
151
153
|
super(`Unsupported permission type`);
|
|
152
154
|
}
|
|
153
155
|
}
|
|
156
|
+
|
|
157
|
+
export class SelectorNotAllowed extends PermissionBuilderError {
|
|
158
|
+
override name = "SelectorNotAllowed";
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Constructor for initializing an error message indicating that the selector being added is not allowed.
|
|
162
|
+
*
|
|
163
|
+
* @param {string} functionName The function name of the selector that is being added.
|
|
164
|
+
*/
|
|
165
|
+
constructor(functionName: string) {
|
|
166
|
+
super(`Cannot add ${functionName} on the account`);
|
|
167
|
+
}
|
|
168
|
+
}
|
package/src/ma-v2/utils.ts
CHANGED
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
parseAbi,
|
|
11
11
|
size,
|
|
12
12
|
concatHex,
|
|
13
|
+
hexToNumber,
|
|
13
14
|
} from "viem";
|
|
14
15
|
import {
|
|
15
16
|
arbitrum,
|
|
@@ -270,13 +271,19 @@ export const buildFullNonceKey = ({
|
|
|
270
271
|
export const parseDeferredAction = (
|
|
271
272
|
deferredAction: Hex
|
|
272
273
|
): {
|
|
274
|
+
entityId: number;
|
|
275
|
+
isGlobalValidation: boolean;
|
|
273
276
|
nonce: bigint;
|
|
274
277
|
deferredActionData: Hex;
|
|
275
278
|
hasAssociatedExecHooks: boolean;
|
|
276
279
|
} => {
|
|
280
|
+
// 2 for 0x, 2 for 00/01, 38 for parallel nonce, 8 for entity id, 2 for options byte, 16 for parallel nonce
|
|
277
281
|
return {
|
|
282
|
+
entityId: hexToNumber(`0x${deferredAction.slice(42, 50)}`),
|
|
283
|
+
isGlobalValidation:
|
|
284
|
+
hexToNumber(`0x${deferredAction.slice(50, 52)}`) % 2 === 1,
|
|
278
285
|
nonce: BigInt(`0x${deferredAction.slice(4, 68)}`),
|
|
279
|
-
deferredActionData: `0x${deferredAction.slice(68)}`,
|
|
286
|
+
deferredActionData: `0x${deferredAction.slice(68)}` as `0x${string}`,
|
|
280
287
|
hasAssociatedExecHooks: deferredAction[3] === "1",
|
|
281
288
|
};
|
|
282
289
|
};
|