@openzeppelin/wizard 0.7.0 → 0.8.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 (51) hide show
  1. package/README.md +1 -1
  2. package/dist/account.d.ts.map +1 -1
  3. package/dist/account.js +48 -28
  4. package/dist/account.js.map +1 -1
  5. package/dist/environments/hardhat/package-lock.json +463 -521
  6. package/dist/environments/hardhat/upgradeable/package-lock.json +1282 -1055
  7. package/dist/generate/account.d.ts.map +1 -1
  8. package/dist/generate/account.js +2 -1
  9. package/dist/generate/account.js.map +1 -1
  10. package/dist/options.d.ts +3 -0
  11. package/dist/options.d.ts.map +1 -1
  12. package/dist/options.js +8 -7
  13. package/dist/options.js.map +1 -1
  14. package/dist/print.d.ts.map +1 -1
  15. package/dist/print.js +27 -12
  16. package/dist/print.js.map +1 -1
  17. package/dist/set-upgradeable.d.ts +1 -0
  18. package/dist/set-upgradeable.d.ts.map +1 -1
  19. package/dist/set-upgradeable.js +6 -0
  20. package/dist/set-upgradeable.js.map +1 -1
  21. package/dist/signer.d.ts +7 -2
  22. package/dist/signer.d.ts.map +1 -1
  23. package/dist/signer.js +45 -65
  24. package/dist/signer.js.map +1 -1
  25. package/dist/utils/community-contracts-git-commit.d.ts +16 -0
  26. package/dist/utils/community-contracts-git-commit.d.ts.map +1 -0
  27. package/dist/utils/community-contracts-git-commit.js +37 -0
  28. package/dist/utils/community-contracts-git-commit.js.map +1 -0
  29. package/dist/utils/imports-libraries.d.ts +3 -0
  30. package/dist/utils/imports-libraries.d.ts.map +1 -0
  31. package/dist/utils/imports-libraries.js +7 -0
  32. package/dist/utils/imports-libraries.js.map +1 -0
  33. package/dist/zip-foundry.d.ts.map +1 -1
  34. package/dist/zip-foundry.js +60 -65
  35. package/dist/zip-foundry.js.map +1 -1
  36. package/dist/zip-hardhat.d.ts.map +1 -1
  37. package/dist/zip-hardhat.js +8 -3
  38. package/dist/zip-hardhat.js.map +1 -1
  39. package/package.json +2 -2
  40. package/src/account.ts +55 -29
  41. package/src/environments/hardhat/package-lock.json +463 -521
  42. package/src/environments/hardhat/upgradeable/package-lock.json +1282 -1055
  43. package/src/generate/account.ts +2 -1
  44. package/src/options.ts +8 -8
  45. package/src/print.ts +47 -14
  46. package/src/set-upgradeable.ts +6 -0
  47. package/src/signer.ts +49 -70
  48. package/src/utils/community-contracts-git-commit.ts +38 -0
  49. package/src/utils/imports-libraries.ts +5 -0
  50. package/src/zip-foundry.ts +84 -64
  51. package/src/zip-hardhat.ts +9 -3
@@ -12,47 +12,72 @@ const format_lines_1 = require("./utils/format-lines");
12
12
  function getHeader(c) {
13
13
  return [`// SPDX-License-Identifier: ${c.license}`, `pragma solidity ^${solidity_version_json_1.default};`];
14
14
  }
15
- const test = (c, opts) => {
16
- return (0, format_lines_1.formatLinesWithSpaces)(2, ...(0, format_lines_1.spaceBetween)(getHeader(c), getImports(c), getTestCase(c)));
17
- function getImports(c) {
18
- const result = ['import {Test} from "forge-std/Test.sol";'];
19
- if (c.upgradeable) {
20
- result.push('import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol";');
15
+ function shouldUseUnsafeAllowConstructor(c) {
16
+ // TODO: remove that selector when the upgrades plugin supports @custom:oz-upgrades-unsafe-allow-reachable
17
+ return c.parents.find(p => ['EIP712'].includes(p.contract.name)) !== undefined;
18
+ }
19
+ function getImports(c, prepopulateImports) {
20
+ const result = [...prepopulateImports];
21
+ if (c.upgradeable) {
22
+ const unsafeAllowConstructor = shouldUseUnsafeAllowConstructor(c);
23
+ result.push(unsafeAllowConstructor
24
+ ? 'import {Upgrades, Options} from "openzeppelin-foundry-upgrades/Upgrades.sol";'
25
+ : 'import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol";');
26
+ }
27
+ result.push(`import {${c.name}} from "src/${c.name}.sol";`);
28
+ return result;
29
+ }
30
+ function getDeploymentCode(c, args, declareContractVariable, upgradeable) {
31
+ const unsafeAllowConstructor = shouldUseUnsafeAllowConstructor(c);
32
+ const instanceDeclaration = declareContractVariable ? `${c.name} ` : '';
33
+ switch (upgradeable) {
34
+ case 'transparent':
35
+ return printDeployProxyAndAssignInstance('deployTransparentProxy', true);
36
+ case 'uups':
37
+ return printDeployProxyAndAssignInstance('deployUUPSProxy', false);
38
+ default:
39
+ return [`${instanceDeclaration}instance = new ${c.name}(${args.join(', ')});`];
40
+ }
41
+ function printDeployProxyAndAssignInstance(deployProxyFunctionName, includeInitialOwner) {
42
+ const deployProxyArgs = [`"${c.name}.sol"`];
43
+ if (includeInitialOwner) {
44
+ deployProxyArgs.push('initialOwner');
45
+ }
46
+ deployProxyArgs.push(`abi.encodeCall(${c.name}.initialize, (${args.join(', ')}))`);
47
+ if (unsafeAllowConstructor) {
48
+ deployProxyArgs.push('opts');
21
49
  }
22
- result.push(`import {${c.name}} from "src/${c.name}.sol";`);
23
- return result;
50
+ for (let i = 0; i < deployProxyArgs.length - 1; i++) {
51
+ deployProxyArgs[i] += ',';
52
+ }
53
+ return [
54
+ unsafeAllowConstructor && 'Options memory opts;',
55
+ unsafeAllowConstructor && 'opts.unsafeAllow = "constructor";',
56
+ `address proxy = Upgrades.${deployProxyFunctionName}(`,
57
+ deployProxyArgs,
58
+ ');',
59
+ // Account has a receive function, this requires a payable address
60
+ c.parents.find(p => ['Account'].includes(p.contract.name))
61
+ ? `${instanceDeclaration}instance = ${c.name}(payable(proxy));`
62
+ : `${instanceDeclaration}instance = ${c.name}(proxy);`,
63
+ ].filter(line => line !== false);
24
64
  }
65
+ }
66
+ const test = (c, opts) => {
67
+ return (0, format_lines_1.formatLinesWithSpaces)(2, ...(0, format_lines_1.spaceBetween)(getHeader(c), getImports(c, ['import {Test} from "forge-std/Test.sol";']), getTestCase(c)));
25
68
  function getTestCase(c) {
26
69
  const args = getAddressArgs(c);
27
70
  return [
28
71
  `contract ${c.name}Test is Test {`,
29
- (0, format_lines_1.spaceBetween)([`${c.name} public instance;`], ['function setUp() public {', getAddressVariables(c, args), getDeploymentCode(c, args), '}'], getContractSpecificTestFunction()),
72
+ (0, format_lines_1.spaceBetween)([`${c.name} public instance;`], [
73
+ 'function setUp() public {',
74
+ getAddressVariables(c, args),
75
+ getDeploymentCode(c, args, false, opts === null || opts === void 0 ? void 0 : opts.upgradeable),
76
+ '}',
77
+ ], getContractSpecificTestFunction()),
30
78
  '}',
31
79
  ];
32
80
  }
33
- function getDeploymentCode(c, args) {
34
- if (c.upgradeable) {
35
- if ((opts === null || opts === void 0 ? void 0 : opts.upgradeable) === 'transparent') {
36
- return [
37
- `address proxy = Upgrades.deployTransparentProxy(`,
38
- [`"${c.name}.sol",`, `initialOwner,`, `abi.encodeCall(${c.name}.initialize, (${args.join(', ')}))`],
39
- ');',
40
- `instance = ${c.name}(proxy);`,
41
- ];
42
- }
43
- else {
44
- return [
45
- `address proxy = Upgrades.deployUUPSProxy(`,
46
- [`"${c.name}.sol",`, `abi.encodeCall(${c.name}.initialize, (${args.join(', ')}))`],
47
- ');',
48
- `instance = ${c.name}(proxy);`,
49
- ];
50
- }
51
- }
52
- else {
53
- return [`instance = new ${c.name}(${args.join(', ')});`];
54
- }
55
- }
56
81
  function getAddressVariables(c, args) {
57
82
  const vars = [];
58
83
  let i = 1; // private key index starts from 1 since it must be non-zero
@@ -72,6 +97,7 @@ const test = (c, opts) => {
72
97
  return ['function testName() public view {', [`assertEq(instance.name(), "${opts.name}");`], '}'];
73
98
  case 'ERC1155':
74
99
  return ['function testUri() public view {', [`assertEq(instance.uri(0), "${opts.uri}");`], '}'];
100
+ case 'Account':
75
101
  case 'Governor':
76
102
  case 'Custom':
77
103
  return ['function testSomething() public {', ['// Add your test here'], '}'];
@@ -92,21 +118,13 @@ function getAddressArgs(c) {
92
118
  return args;
93
119
  }
94
120
  const script = (c, opts) => {
95
- return (0, format_lines_1.formatLinesWithSpaces)(2, ...(0, format_lines_1.spaceBetween)(getHeader(c), getImports(c), getScript(c)));
96
- function getImports(c) {
97
- const result = ['import {Script} from "forge-std/Script.sol";', 'import {console} from "forge-std/console.sol";'];
98
- if (c.upgradeable) {
99
- result.push('import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol";');
100
- }
101
- result.push(`import {${c.name}} from "src/${c.name}.sol";`);
102
- return result;
103
- }
121
+ return (0, format_lines_1.formatLinesWithSpaces)(2, ...(0, format_lines_1.spaceBetween)(getHeader(c), getImports(c, ['import {Script} from "forge-std/Script.sol";', 'import {console} from "forge-std/console.sol";']), getScript(c)));
104
122
  function getScript(c) {
105
123
  const args = getAddressArgs(c);
106
124
  const deploymentLines = [
107
125
  'vm.startBroadcast();',
108
126
  ...getAddressVariables(c, args),
109
- ...getDeploymentCode(c, args),
127
+ ...getDeploymentCode(c, args, true, opts === null || opts === void 0 ? void 0 : opts.upgradeable),
110
128
  `console.log("${c.upgradeable ? 'Proxy' : 'Contract'} deployed to %s", address(instance));`,
111
129
  'vm.stopBroadcast();',
112
130
  ];
@@ -116,29 +134,6 @@ const script = (c, opts) => {
116
134
  '}',
117
135
  ];
118
136
  }
119
- function getDeploymentCode(c, args) {
120
- if (c.upgradeable) {
121
- if ((opts === null || opts === void 0 ? void 0 : opts.upgradeable) === 'transparent') {
122
- return [
123
- `address proxy = Upgrades.deployTransparentProxy(`,
124
- [`"${c.name}.sol",`, `initialOwner,`, `abi.encodeCall(${c.name}.initialize, (${args.join(', ')}))`],
125
- ');',
126
- `${c.name} instance = ${c.name}(proxy);`,
127
- ];
128
- }
129
- else {
130
- return [
131
- `address proxy = Upgrades.deployUUPSProxy(`,
132
- [`"${c.name}.sol",`, `abi.encodeCall(${c.name}.initialize, (${args.join(', ')}))`],
133
- ');',
134
- `${c.name} instance = ${c.name}(proxy);`,
135
- ];
136
- }
137
- }
138
- else {
139
- return [`${c.name} instance = new ${c.name}(${args.join(', ')});`];
140
- }
141
- }
142
137
  function getAddressVariables(c, args) {
143
138
  const vars = [];
144
139
  if (c.upgradeable && (opts === null || opts === void 0 ? void 0 : opts.upgradeable) === 'transparent' && !args.includes('initialOwner')) {
@@ -1 +1 @@
1
- {"version":3,"file":"zip-foundry.js","sourceRoot":"","sources":["../src/zip-foundry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zip-foundry.js","sourceRoot":"","sources":["../src/zip-foundry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"zip-hardhat.d.ts","sourceRoot":"","sources":["../src/zip-hardhat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAuM3C,wBAAsB,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,cAAc,kBA8BlE"}
1
+ {"version":3,"file":"zip-hardhat.d.ts","sourceRoot":"","sources":["../src/zip-hardhat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA6M3C,wBAAsB,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,cAAc,kBA8BlE"}
@@ -109,6 +109,7 @@ const test = (c, opts) => {
109
109
  return [`expect(await instance.name()).to.equal("${opts.name}");`];
110
110
  case 'ERC1155':
111
111
  return [`expect(await instance.uri(0)).to.equal("${opts.uri}");`];
112
+ case 'Account':
112
113
  case 'Governor':
113
114
  case 'Custom':
114
115
  break;
@@ -136,9 +137,13 @@ function getAddressArgs(c) {
136
137
  return args;
137
138
  }
138
139
  function getDeploymentCall(c, args) {
139
- return c.upgradeable
140
- ? `upgrades.deployProxy(ContractFactory, [${args.join(', ')}])`
141
- : `ContractFactory.deploy(${args.join(', ')})`;
140
+ // TODO: remove that selector when the upgrades plugin supports @custom:oz-upgrades-unsafe-allow-reachable
141
+ const unsafeAllowConstructor = c.parents.find(p => ['EIP712'].includes(p.contract.name)) !== undefined;
142
+ return !c.upgradeable
143
+ ? `ContractFactory.deploy(${args.join(', ')})`
144
+ : unsafeAllowConstructor
145
+ ? `upgrades.deployProxy(ContractFactory, [${args.join(', ')}], { unsafeAllow: 'constructor' })`
146
+ : `upgrades.deployProxy(ContractFactory, [${args.join(', ')}])`;
142
147
  }
143
148
  const script = (c) => {
144
149
  const args = getAddressArgs(c);
@@ -1 +1 @@
1
- {"version":3,"file":"zip-hardhat.js","sourceRoot":"","sources":["../src/zip-hardhat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zip-hardhat.js","sourceRoot":"","sources":["../src/zip-hardhat.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openzeppelin/wizard",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "A boilerplate generator to get started with OpenZeppelin Contracts",
5
5
  "license": "AGPL-3.0-only",
6
6
  "repository": "https://github.com/OpenZeppelin/contracts-wizard",
@@ -22,7 +22,7 @@
22
22
  "update-env": "rm ./src/environments/hardhat/package-lock.json && npm install --package-lock-only --prefix ./src/environments/hardhat && rm ./src/environments/hardhat/upgradeable/package-lock.json && npm install --package-lock-only --prefix ./src/environments/hardhat/upgradeable"
23
23
  },
24
24
  "devDependencies": {
25
- "@openzeppelin/community-contracts": "https://github.com/OpenZeppelin/openzeppelin-community-contracts",
25
+ "@openzeppelin/community-contracts": "git+https://github.com/OpenZeppelin/openzeppelin-community-contracts.git#2d607bd",
26
26
  "@openzeppelin/contracts": "^5.4.0",
27
27
  "@openzeppelin/contracts-upgradeable": "^5.4.0",
28
28
  "@types/node": "^20.0.0",
package/src/account.ts CHANGED
@@ -3,8 +3,10 @@ import type { Contract } from './contract';
3
3
  import { defineFunctions } from './utils/define-functions';
4
4
  import { printContract } from './print';
5
5
  import { defaults as commonDefaults, withCommonDefaults, type CommonOptions } from './common-options';
6
+ import { upgradeableName } from './options';
6
7
  import { setInfo } from './set-info';
7
8
  import { addSigner, signerFunctions, signers, type SignerOptions } from './signer';
9
+ import { setUpgradeableAccount } from './set-upgradeable';
8
10
 
9
11
  export const defaults: Required<AccountOptions> = {
10
12
  ...commonDefaults,
@@ -53,19 +55,20 @@ export function printAccount(opts: AccountOptions = defaults): string {
53
55
  export function buildAccount(opts: AccountOptions): Contract {
54
56
  const allOpts = withDefaults(opts);
55
57
 
56
- allOpts.upgradeable = false; // Upgradeability is not yet available for the community contracts
57
58
  allOpts.access = false; // Access control options are not used for Account
58
59
 
59
60
  const c = new ContractBuilder(allOpts.name);
60
61
 
61
62
  addParents(c, allOpts);
62
63
  overrideRawSignatureValidation(c, allOpts);
64
+ setUpgradeableAccount(c, allOpts.upgradeable);
63
65
  setInfo(c, allOpts.info);
64
66
 
65
67
  if (opts.ERC7579Modules) {
66
68
  c.addImportOnly({
67
69
  name: 'PackedUserOperation',
68
70
  path: '@openzeppelin/contracts/interfaces/draft-IERC4337.sol',
71
+ transpiled: false, // PackedUserOperation doesn't start with "I" so its not recognized as an "interface object"
69
72
  });
70
73
  }
71
74
 
@@ -76,16 +79,17 @@ function addParents(c: ContractBuilder, opts: AccountOptions): void {
76
79
  // Base
77
80
  c.addParent({
78
81
  name: 'Account',
79
- path: `@openzeppelin/community-contracts/account/Account.sol`,
82
+ path: `@openzeppelin/contracts/account/Account.sol`,
83
+ transpiled: false,
80
84
  });
81
- c.addOverride({ name: 'Account' }, functions._validateUserOp);
85
+ c.addOverride({ name: 'Account', transpiled: false }, functions._validateUserOp);
82
86
 
83
87
  if (opts.signatureValidation === 'ERC7739') addEIP712(c, opts);
84
88
 
85
89
  // Extensions
86
90
  addSignatureValidation(c, opts);
87
91
  addERC7579Modules(c, opts);
88
- addSigner(c, opts.signer ?? false);
92
+ addSigner(c, opts.signer ?? false, opts.upgradeable ?? false);
89
93
  addMultisigFunctions(c, opts);
90
94
  addBatchedExecution(c, opts);
91
95
  addERC721Holder(c, opts);
@@ -97,7 +101,8 @@ function addSignatureValidation(c: ContractBuilder, opts: AccountOptions) {
97
101
  case 'ERC7739':
98
102
  c.addParent({
99
103
  name: 'ERC7739',
100
- path: '@openzeppelin/community-contracts/utils/cryptography/ERC7739.sol',
104
+ path: '@openzeppelin/contracts/utils/cryptography/signers/draft-ERC7739.sol',
105
+ transpiled: false,
101
106
  });
102
107
  break;
103
108
  case 'ERC1271':
@@ -123,6 +128,7 @@ function addERC721Holder(c: ContractBuilder, opts: AccountOptions): void {
123
128
  c.addParent({
124
129
  name: 'ERC721Holder',
125
130
  path: '@openzeppelin/contracts/token/ERC721/utils/ERC721Holder.sol',
131
+ transpiled: false,
126
132
  });
127
133
  }
128
134
 
@@ -131,6 +137,7 @@ function addERC1155Holder(c: ContractBuilder, opts: AccountOptions): void {
131
137
  c.addParent({
132
138
  name: 'ERC1155Holder',
133
139
  path: '@openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol',
140
+ transpiled: false,
134
141
  });
135
142
  }
136
143
 
@@ -139,9 +146,10 @@ function addBatchedExecution(c: ContractBuilder, opts: AccountOptions): void {
139
146
  if (!opts.batchedExecution || !!opts.ERC7579Modules) return;
140
147
  c.addParent({
141
148
  name: 'ERC7821',
142
- path: '@openzeppelin/community-contracts/account/extensions/ERC7821.sol',
149
+ path: '@openzeppelin/contracts/account/extensions/draft-ERC7821.sol',
150
+ transpiled: false,
143
151
  });
144
- c.addOverride({ name: 'ERC7821' }, functions._erc7821AuthorizedExecutor);
152
+ c.addOverride({ name: 'ERC7821', transpiled: false }, functions._erc7821AuthorizedExecutor);
145
153
  c.setFunctionBody(
146
154
  ['return caller == address(entryPoint()) || super._erc7821AuthorizedExecutor(caller, mode, executionData);'],
147
155
  functions._erc7821AuthorizedExecutor,
@@ -150,30 +158,42 @@ function addBatchedExecution(c: ContractBuilder, opts: AccountOptions): void {
150
158
 
151
159
  function addERC7579Modules(c: ContractBuilder, opts: AccountOptions): void {
152
160
  if (!opts.ERC7579Modules) return;
161
+
153
162
  c.addParent({
154
163
  name: opts.ERC7579Modules,
155
- path: `@openzeppelin/community-contracts/account/extensions/${opts.ERC7579Modules}.sol`,
164
+ path: `@openzeppelin/contracts/account/extensions/draft-${opts.ERC7579Modules}.sol`,
156
165
  });
157
166
  if (opts.ERC7579Modules !== 'AccountERC7579') {
158
167
  c.addImportOnly({
159
168
  name: 'AccountERC7579',
160
- path: `@openzeppelin/community-contracts/account/extensions/AccountERC7579.sol`,
169
+ path: '@openzeppelin/contracts/account/extensions/draft-AccountERC7579.sol',
161
170
  });
162
171
  }
163
- c.addOverride({ name: 'AccountERC7579' }, functions.isValidSignature);
172
+
173
+ // Accounts that use ERC7579 without a signer must be constructed with at least one module (executor of validation)
174
+ if (!opts.signer) {
175
+ c.addConstructorArgument({ type: 'uint256', name: 'moduleTypeId' });
176
+ c.addConstructorArgument({ type: 'address', name: 'module' });
177
+ c.addConstructorArgument({ type: 'bytes calldata', name: 'initData' });
178
+ c.addConstructorCode('require(moduleTypeId == MODULE_TYPE_VALIDATOR || moduleTypeId == MODULE_TYPE_EXECUTOR);');
179
+ c.addConstructorCode('_installModule(moduleTypeId, module, initData);');
180
+ }
181
+
164
182
  c.addOverride({ name: 'AccountERC7579' }, functions._validateUserOp);
183
+ c.addOverride({ name: 'AccountERC7579' }, functions.isValidSignature);
165
184
 
166
- if (opts.signatureValidation !== 'ERC7739') return;
167
- c.addOverride({ name: 'ERC7739' }, functions.isValidSignature);
168
- c.setFunctionBody(
169
- [
170
- '// ERC-7739 can return the ERC-1271 magic value, 0xffffffff (invalid) or 0x77390001 (detection).',
171
- '// If the returned value is 0xffffffff, fallback to ERC-7579 validation.',
172
- 'bytes4 erc7739magic = ERC7739.isValidSignature(hash, signature);',
173
- 'return erc7739magic == bytes4(0xffffffff) ? AccountERC7579.isValidSignature(hash, signature) : erc7739magic;',
174
- ],
175
- functions.isValidSignature,
176
- );
185
+ if (opts.signatureValidation === 'ERC7739') {
186
+ c.addOverride({ name: 'ERC7739', transpiled: false }, functions.isValidSignature);
187
+ c.setFunctionBody(
188
+ [
189
+ '// ERC-7739 can return the ERC-1271 magic value, 0xffffffff (invalid) or 0x77390001 (detection).',
190
+ '// If the returned value is 0xffffffff, fallback to ERC-7579 validation.',
191
+ 'bytes4 erc7739magic = ERC7739.isValidSignature(hash, signature);',
192
+ `return erc7739magic == bytes4(0xffffffff) ? ${opts.upgradeable ? upgradeableName('AccountERC7579') : 'AccountERC7579'}.isValidSignature(hash, signature) : erc7739magic;`,
193
+ ],
194
+ functions.isValidSignature,
195
+ );
196
+ }
177
197
  }
178
198
 
179
199
  function addMultisigFunctions(c: ContractBuilder, opts: AccountOptions): void {
@@ -203,6 +223,7 @@ function addEIP712(c: ContractBuilder, opts: AccountOptions): void {
203
223
  {
204
224
  name: 'EIP712',
205
225
  path: '@openzeppelin/contracts/utils/cryptography/EIP712.sol',
226
+ transpiled: false, // do not use the upgradeable variant for in Accounts
206
227
  },
207
228
  [opts.name, '1'],
208
229
  );
@@ -216,27 +237,32 @@ function overrideRawSignatureValidation(c: ContractBuilder, opts: AccountOptions
216
237
  // to provide a custom validation logic
217
238
  if (!opts.signer && !opts.ERC7579Modules) {
218
239
  // Custom validation logic
219
- c.addOverride({ name: 'Account' }, signerFunctions._rawSignatureValidation);
240
+ c.addOverride({ name: 'Account', transpiled: false }, signerFunctions._rawSignatureValidation);
220
241
  c.setFunctionBody(['// Custom validation logic', 'return false;'], signerFunctions._rawSignatureValidation);
221
242
  }
222
243
 
223
244
  // Disambiguate between Signer and AccountERC7579
224
245
  if (opts.signer && opts.ERC7579Modules) {
246
+ const accountName = opts.upgradeable ? upgradeableName('AccountERC7579') : 'AccountERC7579';
247
+ const signerName = opts.upgradeable ? upgradeableName(`Signer${opts.signer}`) : `Signer${opts.signer}`;
248
+
225
249
  c.addImportOnly({
226
250
  name: 'AbstractSigner',
227
- path: '@openzeppelin/community-contracts/utils/cryptography/AbstractSigner.sol',
251
+ path: '@openzeppelin/contracts/utils/cryptography/signers/AbstractSigner.sol',
252
+ transpiled: false,
228
253
  });
229
- c.addOverride({ name: 'AbstractSigner' }, signerFunctions._rawSignatureValidation);
254
+ c.addOverride({ name: 'AbstractSigner', transpiled: false }, signerFunctions._rawSignatureValidation);
230
255
  c.addOverride({ name: 'AccountERC7579' }, signerFunctions._rawSignatureValidation);
231
256
  c.setFunctionComments(
232
257
  [
233
- `// IMPORTANT: Make sure Signer${opts.signer} is most derived than AccountERC7579`,
234
- `// in the inheritance chain (i.e. contract ... is AccountERC7579, ..., Signer${opts.signer})`,
258
+ `// IMPORTANT: Make sure ${signerName} is most derived than ${accountName}`,
259
+ `// in the inheritance chain (i.e. contract ... is ${accountName}, ..., ${signerName})`,
235
260
  '// to ensure the correct order of function resolution.',
236
- '// AccountERC7579 returns false for `_rawSignatureValidation`',
261
+ `// ${accountName} returns false for _rawSignatureValidation`,
237
262
  ],
238
263
  signerFunctions._rawSignatureValidation,
239
264
  );
265
+
240
266
  // Base override for `_rawSignatureValidation` given MultiSignerERC7913Weighted is MultiSignerERC7913
241
267
  if (opts.signer === 'MultisigWeighted') {
242
268
  c.addImportOnly(signers.Multisig);
@@ -283,13 +309,13 @@ const functions = {
283
309
  },
284
310
  setThreshold: {
285
311
  kind: 'public' as const,
286
- args: [{ name: 'threshold', type: 'uint256' }],
312
+ args: [{ name: 'threshold', type: 'uint64' }],
287
313
  },
288
314
  setSignerWeights: {
289
315
  kind: 'public' as const,
290
316
  args: [
291
317
  { name: 'signers', type: 'bytes[] memory' },
292
- { name: 'weights', type: 'uint256[] memory' },
318
+ { name: 'weights', type: 'uint64[] memory' },
293
319
  ],
294
320
  },
295
321
  }),