Skip to content

Commit 6263afc

Browse files
authored
Use named imports for Solidity (#411)
1 parent 7d88a3d commit 6263afc

27 files changed

Lines changed: 611 additions & 394 deletions

packages/core/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## 0.4.6 (2024-11-20)
4+
5+
- Use named imports. ([#411](https://github.com/OpenZeppelin/contracts-wizard/pull/411))
6+
37
## 0.4.5 (2024-11-18)
48

59
- Add `stablecoin` and `realWorldAsset` contract types. ([#404](https://github.com/OpenZeppelin/contracts-wizard/pull/404))

packages/core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@openzeppelin/wizard",
3-
"version": "0.4.5",
3+
"version": "0.4.6",
44
"description": "A boilerplate generator to get started with OpenZeppelin Contracts",
55
"license": "MIT",
66
"repository": "github:OpenZeppelin/contracts-wizard",

packages/core/src/contract.test.ts.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Generated by [AVA](https://avajs.dev).
2424
// Compatible with OpenZeppelin Contracts ^5.0.0␊
2525
pragma solidity ^0.8.22;␊
2626
27-
import "./Bar.sol";␊
27+
import {Bar} from "./Bar.sol";␊
2828
2929
contract Foo is Bar {␊
3030
}␊
@@ -38,8 +38,8 @@ Generated by [AVA](https://avajs.dev).
3838
// Compatible with OpenZeppelin Contracts ^5.0.0␊
3939
pragma solidity ^0.8.22;␊
4040
41-
import "./Bar.sol";␊
42-
import "./Quux.sol";␊
41+
import {Bar} from "./Bar.sol";␊
42+
import {Quux} from "./Quux.sol";␊
4343
4444
contract Foo is Bar, Quux {␊
4545
}␊
@@ -53,7 +53,7 @@ Generated by [AVA](https://avajs.dev).
5353
// Compatible with OpenZeppelin Contracts ^5.0.0␊
5454
pragma solidity ^0.8.22;␊
5555
56-
import "./Bar.sol";␊
56+
import {Bar} from "./Bar.sol";␊
5757
5858
contract Foo is Bar {␊
5959
constructor() Bar("param1", "param2") {}␊
@@ -68,8 +68,8 @@ Generated by [AVA](https://avajs.dev).
6868
// Compatible with OpenZeppelin Contracts ^5.0.0␊
6969
pragma solidity ^0.8.22;␊
7070
71-
import "./Bar.sol";␊
72-
import "./Quux.sol";␊
71+
import {Bar} from "./Bar.sol";␊
72+
import {Quux} from "./Quux.sol";␊
7373
7474
contract Foo is Bar, Quux {␊
7575
constructor() Bar("param1", "param2") {}␊
@@ -183,7 +183,7 @@ Generated by [AVA](https://avajs.dev).
183183
// Compatible with OpenZeppelin Contracts ^5.0.0␊
184184
pragma solidity ^0.8.22;␊
185185
186-
import "./Bar.sol";␊
186+
import {Bar} from "./Bar.sol";␊
187187
188188
contract Foo is Bar {␊
189189
constructor() Bar("param1", "param2") {␊
9 Bytes
Binary file not shown.

packages/core/src/contract.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export interface Contract {
55
license: string;
66
parents: Parent[];
77
natspecTags: NatspecTag[];
8-
imports: ParentContract[];
8+
imports: ImportContract[];
99
functions: ContractFunction[];
1010
constructorCode: string[];
1111
constructorArgs: FunctionArgument[];
@@ -16,11 +16,12 @@ export interface Contract {
1616
export type Value = string | number | { lit: string } | { note: string, value: Value };
1717

1818
export interface Parent {
19-
contract: ParentContract;
19+
contract: ImportContract;
2020
params: Value[];
21+
importOnly?: boolean;
2122
}
2223

23-
export interface ParentContract extends ReferencedContract {
24+
export interface ImportContract extends ReferencedContract {
2425
path: string;
2526
}
2627

@@ -30,7 +31,7 @@ export interface ReferencedContract {
3031
}
3132

3233
export interface Using {
33-
library: ParentContract;
34+
library: ImportContract;
3435
usingFor: string;
3536
}
3637

@@ -93,7 +94,7 @@ export class ContractBuilder implements Contract {
9394
}
9495

9596
get parents(): Parent[] {
96-
return [...this.parentMap.values()].sort((a, b) => {
97+
return [...this.parentMap.values()].filter(p => !p.importOnly).sort((a, b) => {
9798
if (a.contract.name === 'Initializable') {
9899
return -1;
99100
} else if (b.contract.name === 'Initializable') {
@@ -104,7 +105,7 @@ export class ContractBuilder implements Contract {
104105
});
105106
}
106107

107-
get imports(): ParentContract[] {
108+
get imports(): ImportContract[] {
108109
return [
109110
...[...this.parentMap.values()].map(p => p.contract),
110111
...this.using.map(u => u.library),
@@ -119,12 +120,18 @@ export class ContractBuilder implements Contract {
119120
return [...this.variableSet];
120121
}
121122

122-
addParent(contract: ParentContract, params: Value[] = []): boolean {
123+
addParent(contract: ImportContract, params: Value[] = []): boolean {
123124
const present = this.parentMap.has(contract.name);
124125
this.parentMap.set(contract.name, { contract, params });
125126
return !present;
126127
}
127128

129+
addImportOnly(contract: ImportContract): boolean {
130+
const present = this.parentMap.has(contract.name);
131+
this.parentMap.set(contract.name, { contract, params: [], importOnly: true });
132+
return !present;
133+
}
134+
128135
addOverride(parent: ReferencedContract, baseFn: BaseFunction, mutability?: FunctionMutability) {
129136
const fn = this.addFunction(baseFn);
130137
fn.override.add(parent);

packages/core/src/custom.test.ts.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ Generated by [AVA](https://avajs.dev).
2424
// Compatible with OpenZeppelin Contracts ^5.0.0␊
2525
pragma solidity ^0.8.22;␊
2626
27-
import "@openzeppelin/contracts/utils/Pausable.sol";␊
28-
import "@openzeppelin/contracts/access/Ownable.sol";␊
27+
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
28+
import {Pausable} from "@openzeppelin/contracts/utils/Pausable.sol";␊
2929
3030
contract MyContract is Pausable, Ownable {␊
3131
constructor(address initialOwner) Ownable(initialOwner) {}␊
@@ -48,7 +48,7 @@ Generated by [AVA](https://avajs.dev).
4848
// Compatible with OpenZeppelin Contracts ^5.0.0␊
4949
pragma solidity ^0.8.22;␊
5050
51-
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
51+
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
5252
5353
contract MyContract is Initializable {␊
5454
/// @custom:oz-upgrades-unsafe-allow constructor␊
@@ -66,9 +66,9 @@ Generated by [AVA](https://avajs.dev).
6666
// Compatible with OpenZeppelin Contracts ^5.0.0␊
6767
pragma solidity ^0.8.22;␊
6868
69-
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
70-
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";␊
71-
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";␊
69+
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
70+
import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";␊
71+
import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";␊
7272
7373
contract MyContract is Initializable, OwnableUpgradeable, UUPSUpgradeable {␊
7474
/// @custom:oz-upgrades-unsafe-allow constructor␊
@@ -109,7 +109,7 @@ Generated by [AVA](https://avajs.dev).
109109
// Compatible with OpenZeppelin Contracts ^5.0.0␊
110110
pragma solidity ^0.8.22;␊
111111
112-
import "@openzeppelin/contracts/access/Ownable.sol";␊
112+
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
113113
114114
contract MyContract is Ownable {␊
115115
constructor(address initialOwner) Ownable(initialOwner) {}␊
@@ -124,7 +124,7 @@ Generated by [AVA](https://avajs.dev).
124124
// Compatible with OpenZeppelin Contracts ^5.0.0␊
125125
pragma solidity ^0.8.22;␊
126126
127-
import "@openzeppelin/contracts/access/AccessControl.sol";␊
127+
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
128128
129129
contract MyContract is AccessControl {␊
130130
constructor(address defaultAdmin) {␊
@@ -141,7 +141,7 @@ Generated by [AVA](https://avajs.dev).
141141
// Compatible with OpenZeppelin Contracts ^5.0.0␊
142142
pragma solidity ^0.8.22;␊
143143
144-
import "@openzeppelin/contracts/access/manager/AccessManaged.sol";␊
144+
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";␊
145145
146146
contract MyContract is AccessManaged {␊
147147
constructor(address initialAuthority) AccessManaged(initialAuthority) {}␊
@@ -156,9 +156,9 @@ Generated by [AVA](https://avajs.dev).
156156
// Compatible with OpenZeppelin Contracts ^5.0.0␊
157157
pragma solidity ^0.8.22;␊
158158
159-
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
160-
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";␊
161-
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";␊
159+
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
160+
import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";␊
161+
import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";␊
162162
163163
contract MyContract is Initializable, OwnableUpgradeable, UUPSUpgradeable {␊
164164
/// @custom:oz-upgrades-unsafe-allow constructor␊
25 Bytes
Binary file not shown.

packages/core/src/erc1155.test.ts.md

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ Generated by [AVA](https://avajs.dev).
1212
// Compatible with OpenZeppelin Contracts ^5.0.0␊
1313
pragma solidity ^0.8.22;␊
1414
15-
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
16-
import "@openzeppelin/contracts/access/Ownable.sol";␊
15+
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
16+
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
1717
1818
contract MyToken is ERC1155, Ownable {␊
1919
constructor(address initialOwner)␊
@@ -35,8 +35,8 @@ Generated by [AVA](https://avajs.dev).
3535
// Compatible with OpenZeppelin Contracts ^5.0.0␊
3636
pragma solidity ^0.8.22;␊
3737
38-
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
39-
import "@openzeppelin/contracts/access/AccessControl.sol";␊
38+
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
39+
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
4040
4141
contract MyToken is ERC1155, AccessControl {␊
4242
bytes32 public constant URI_SETTER_ROLE = keccak256("URI_SETTER_ROLE");␊
@@ -72,8 +72,8 @@ Generated by [AVA](https://avajs.dev).
7272
// Compatible with OpenZeppelin Contracts ^5.0.0␊
7373
pragma solidity ^0.8.22;␊
7474
75-
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
76-
import "@openzeppelin/contracts/access/manager/AccessManaged.sol";␊
75+
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";␊
76+
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
7777
7878
contract MyToken is ERC1155, AccessManaged {␊
7979
constructor(address initialAuthority)␊
@@ -95,7 +95,7 @@ Generated by [AVA](https://avajs.dev).
9595
// Compatible with OpenZeppelin Contracts ^5.0.0␊
9696
pragma solidity ^0.8.22;␊
9797
98-
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
98+
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
9999
100100
contract MyToken is ERC1155 {␊
101101
constructor()␊
@@ -112,9 +112,9 @@ Generated by [AVA](https://avajs.dev).
112112
// Compatible with OpenZeppelin Contracts ^5.0.0␊
113113
pragma solidity ^0.8.22;␊
114114
115-
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
116-
import "@openzeppelin/contracts/access/Ownable.sol";␊
117-
import "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol";␊
115+
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
116+
import {ERC1155Burnable} from "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol";␊
117+
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
118118
119119
contract MyToken is ERC1155, Ownable, ERC1155Burnable {␊
120120
constructor(address initialOwner)␊
@@ -136,9 +136,9 @@ Generated by [AVA](https://avajs.dev).
136136
// Compatible with OpenZeppelin Contracts ^5.0.0␊
137137
pragma solidity ^0.8.22;␊
138138
139-
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
140-
import "@openzeppelin/contracts/access/Ownable.sol";␊
141-
import "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Pausable.sol";␊
139+
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
140+
import {ERC1155Pausable} from "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Pausable.sol";␊
141+
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
142142
143143
contract MyToken is ERC1155, Ownable, ERC1155Pausable {␊
144144
constructor(address initialOwner)␊
@@ -177,8 +177,8 @@ Generated by [AVA](https://avajs.dev).
177177
// Compatible with OpenZeppelin Contracts ^5.0.0␊
178178
pragma solidity ^0.8.22;␊
179179
180-
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
181-
import "@openzeppelin/contracts/access/Ownable.sol";␊
180+
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
181+
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
182182
183183
contract MyToken is ERC1155, Ownable {␊
184184
constructor(address initialOwner)␊
@@ -214,8 +214,8 @@ Generated by [AVA](https://avajs.dev).
214214
// Compatible with OpenZeppelin Contracts ^5.0.0␊
215215
pragma solidity ^0.8.22;␊
216216
217-
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
218-
import "@openzeppelin/contracts/access/AccessControl.sol";␊
217+
import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";␊
218+
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
219219
220220
contract MyToken is ERC1155, AccessControl {␊
221221
bytes32 public constant URI_SETTER_ROLE = keccak256("URI_SETTER_ROLE");␊
@@ -267,8 +267,8 @@ Generated by [AVA](https://avajs.dev).
267267
// Compatible with OpenZeppelin Contracts ^5.0.0␊
268268
pragma solidity ^0.8.22;␊
269269
270-
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
271-
import "@openzeppelin/contracts/access/manager/AccessManaged.sol";␊
270+
import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";␊
271+
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
272272
273273
contract MyToken is ERC1155, AccessManaged {␊
274274
constructor(address initialAuthority)␊
@@ -304,9 +304,9 @@ Generated by [AVA](https://avajs.dev).
304304
// Compatible with OpenZeppelin Contracts ^5.0.0␊
305305
pragma solidity ^0.8.22;␊
306306
307-
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
308-
import "@openzeppelin/contracts/access/Ownable.sol";␊
309-
import "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol";␊
307+
import {ERC1155} from "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";␊
308+
import {ERC1155Supply} from "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol";␊
309+
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";␊
310310
311311
contract MyToken is ERC1155, Ownable, ERC1155Supply {␊
312312
constructor(address initialOwner)␊
@@ -337,11 +337,11 @@ Generated by [AVA](https://avajs.dev).
337337
// Compatible with OpenZeppelin Contracts ^5.0.0␊
338338
pragma solidity ^0.8.22;␊
339339
340-
import "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol";␊
341-
import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";␊
342-
import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155PausableUpgradeable.sol";␊
343-
import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol";␊
344-
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
340+
import {AccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";␊
341+
import {ERC1155Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol";␊
342+
import {ERC1155BurnableUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol";␊
343+
import {ERC1155PausableUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155PausableUpgradeable.sol";␊
344+
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
345345
346346
contract MyToken is Initializable, ERC1155Upgradeable, AccessControlUpgradeable, ERC1155PausableUpgradeable, ERC1155BurnableUpgradeable {␊
347347
bytes32 public constant URI_SETTER_ROLE = keccak256("URI_SETTER_ROLE");␊
@@ -420,12 +420,12 @@ Generated by [AVA](https://avajs.dev).
420420
// Compatible with OpenZeppelin Contracts ^5.0.0␊
421421
pragma solidity ^0.8.22;␊
422422
423-
import "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol";␊
424-
import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";␊
425-
import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155PausableUpgradeable.sol";␊
426-
import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol";␊
427-
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
428-
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";␊
423+
import {AccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";␊
424+
import {ERC1155Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol";␊
425+
import {ERC1155BurnableUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol";␊
426+
import {ERC1155PausableUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155PausableUpgradeable.sol";␊
427+
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
428+
import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";␊
429429
430430
contract MyToken is Initializable, ERC1155Upgradeable, AccessControlUpgradeable, ERC1155PausableUpgradeable, ERC1155BurnableUpgradeable, UUPSUpgradeable {␊
431431
bytes32 public constant URI_SETTER_ROLE = keccak256("URI_SETTER_ROLE");␊
@@ -513,12 +513,12 @@ Generated by [AVA](https://avajs.dev).
513513
// Compatible with OpenZeppelin Contracts ^5.0.0␊
514514
pragma solidity ^0.8.22;␊
515515
516-
import "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol";␊
517-
import "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";␊
518-
import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155PausableUpgradeable.sol";␊
519-
import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol";␊
520-
import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
521-
import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";␊
516+
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";␊
517+
import {ERC1155Upgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol";␊
518+
import {ERC1155BurnableUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol";␊
519+
import {ERC1155PausableUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155PausableUpgradeable.sol";␊
520+
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";␊
521+
import {UUPSUpgradeable} from "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";␊
522522
523523
contract MyToken is Initializable, ERC1155Upgradeable, AccessManagedUpgradeable, ERC1155PausableUpgradeable, ERC1155BurnableUpgradeable, UUPSUpgradeable {␊
524524
/// @custom:oz-upgrades-unsafe-allow constructor␊
69 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)