@openzeppelin/wizard 0.5.0 → 0.5.1

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.
@@ -4,6 +4,7 @@ import { ERC721Options } from './erc721';
4
4
  import { ERC1155Options } from './erc1155';
5
5
  import { StablecoinOptions } from './stablecoin';
6
6
  import { GovernorOptions } from './governor';
7
+ import { Contract } from './contract';
7
8
  export interface KindedOptions {
8
9
  ERC20: {
9
10
  kind: 'ERC20';
@@ -28,5 +29,5 @@ export interface KindedOptions {
28
29
  } & CustomOptions;
29
30
  }
30
31
  export type GenericOptions = KindedOptions[keyof KindedOptions];
31
- export declare function buildGeneric(opts: GenericOptions): import("./contract").Contract;
32
+ export declare function buildGeneric(opts: GenericOptions): Contract;
32
33
  //# sourceMappingURL=build-generic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-generic.d.ts","sourceRoot":"","sources":["../src/build-generic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,YAAY,EAAc,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,cAAc,EAAgB,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,eAAe,EAAiB,MAAM,YAAY,CAAC;AAE5D,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAK;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,GAAM,YAAY,CAAC;IAC9C,MAAM,EAAI;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAK,aAAa,CAAC;IAC/C,OAAO,EAAG;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,GAAI,cAAc,CAAC;IAChD,UAAU,EAAG;QAAE,IAAI,EAAE,YAAY,CAAA;KAAE,GAAI,iBAAiB,CAAC;IACzD,cAAc,EAAG;QAAE,IAAI,EAAE,gBAAgB,CAAA;KAAE,GAAI,iBAAiB,CAAC;IACjE,QAAQ,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,GAAG,eAAe,CAAC;IACjD,MAAM,EAAG;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAI,aAAa,CAAC;CAC9C;AAED,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,aAAa,CAAC,CAAC;AAEhE,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,iCA2BhD"}
1
+ {"version":3,"file":"build-generic.d.ts","sourceRoot":"","sources":["../src/build-generic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,YAAY,EAAc,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,aAAa,EAAe,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,cAAc,EAAgB,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,eAAe,EAAiB,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAK;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,GAAM,YAAY,CAAC;IAC9C,MAAM,EAAI;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAK,aAAa,CAAC;IAC/C,OAAO,EAAG;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,GAAI,cAAc,CAAC;IAChD,UAAU,EAAG;QAAE,IAAI,EAAE,YAAY,CAAA;KAAE,GAAI,iBAAiB,CAAC;IACzD,cAAc,EAAG;QAAE,IAAI,EAAE,gBAAgB,CAAA;KAAE,GAAI,iBAAiB,CAAC;IACjE,QAAQ,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,GAAG,eAAe,CAAC;IACjD,MAAM,EAAG;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAI,aAAa,CAAC;CAC9C;AAED,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,aAAa,CAAC,CAAC;AAEhE,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,QAAQ,CA2B3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"build-generic.js","sourceRoot":"","sources":["../src/build-generic.ts"],"names":[],"mappings":";;AAmBA,oCA2BC;AA9CD,qCAAsD;AACtD,mCAAmD;AACnD,qCAAsD;AACtD,uCAAyD;AACzD,6CAAkE;AAClE,yCAA4D;AAc5D,SAAgB,YAAY,CAAC,IAAoB;IAC/C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,IAAA,kBAAU,EAAC,IAAI,CAAC,CAAC;QAE1B,KAAK,QAAQ;YACX,OAAO,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;QAE3B,KAAK,SAAS;YACZ,OAAO,IAAA,sBAAY,EAAC,IAAI,CAAC,CAAC;QAE5B,KAAK,YAAY;YACf,OAAO,IAAA,4BAAe,EAAC,IAAI,CAAC,CAAC;QAE/B,KAAK,gBAAgB;YACnB,OAAO,IAAA,4BAAe,EAAC,IAAI,CAAC,CAAC;QAE/B,KAAK,UAAU;YACb,OAAO,IAAA,wBAAa,EAAC,IAAI,CAAC,CAAC;QAE7B,KAAK,QAAQ;YACX,OAAO,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;QAE3B;YACE,MAAM,CAAC,GAAU,IAAI,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"build-generic.js","sourceRoot":"","sources":["../src/build-generic.ts"],"names":[],"mappings":";;AAoBA,oCA2BC;AA/CD,qCAAsD;AACtD,mCAAmD;AACnD,qCAAsD;AACtD,uCAAyD;AACzD,6CAAkE;AAClE,yCAA4D;AAe5D,SAAgB,YAAY,CAAC,IAAoB;IAC/C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,IAAA,kBAAU,EAAC,IAAI,CAAC,CAAC;QAE1B,KAAK,QAAQ;YACX,OAAO,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;QAE3B,KAAK,SAAS;YACZ,OAAO,IAAA,sBAAY,EAAC,IAAI,CAAC,CAAC;QAE5B,KAAK,YAAY;YACf,OAAO,IAAA,4BAAe,EAAC,IAAI,CAAC,CAAC;QAE/B,KAAK,gBAAgB;YACnB,OAAO,IAAA,4BAAe,EAAC,IAAI,CAAC,CAAC;QAE/B,KAAK,UAAU;YACb,OAAO,IAAA,wBAAa,EAAC,IAAI,CAAC,CAAC;QAE7B,KAAK,QAAQ;YACX,OAAO,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;QAE3B;YACE,MAAM,CAAC,GAAU,IAAI,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
package/dist/erc20.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Contract } from './contract';
1
+ import { ContractBuilder } from './contract';
2
2
  import { CommonOptions } from './common-options';
3
3
  import { ClockMode } from './set-clock-mode';
4
4
  export interface ERC20Options extends CommonOptions {
@@ -17,8 +17,10 @@ export interface ERC20Options extends CommonOptions {
17
17
  flashmint?: boolean;
18
18
  }
19
19
  export declare const defaults: Required<ERC20Options>;
20
+ export declare function withDefaults(opts: ERC20Options): Required<ERC20Options>;
20
21
  export declare function printERC20(opts?: ERC20Options): string;
21
22
  export declare function isAccessControlRequired(opts: Partial<ERC20Options>): boolean;
22
- export declare function buildERC20(opts: ERC20Options): Contract;
23
+ export declare function buildERC20(opts: ERC20Options): ContractBuilder;
23
24
  export declare const premintPattern: RegExp;
25
+ export declare const functions: Record<"pause" | "unpause" | "_update" | "_approve" | "mint" | "snapshot" | "nonces", import("./contract").BaseFunction>;
24
26
  //# sourceMappingURL=erc20.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"erc20.d.ts","sourceRoot":"","sources":["../src/erc20.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AAIvD,OAAO,EAAE,aAAa,EAAkD,MAAM,kBAAkB,CAAC;AAIjG,OAAO,EAAE,SAAS,EAAkC,MAAM,kBAAkB,CAAC;AAE7E,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAalC,CAAC;AAgBX,wBAAgB,UAAU,CAAC,IAAI,GAAE,YAAuB,GAAG,MAAM,CAEhE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAE5E;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,CA4CvD;AAiCD,eAAO,MAAM,cAAc,QAAmC,CAAC"}
1
+ {"version":3,"file":"erc20.d.ts","sourceRoot":"","sources":["../src/erc20.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,eAAe,EAAE,MAAM,YAAY,CAAC;AAIvD,OAAO,EAAE,aAAa,EAAkD,MAAM,kBAAkB,CAAC;AAIjG,OAAO,EAAE,SAAS,EAAkC,MAAM,kBAAkB,CAAC;AAE7E,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAalC,CAAC;AAEX,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,CAYvE;AAED,wBAAgB,UAAU,CAAC,IAAI,GAAE,YAAuB,GAAG,MAAM,CAEhE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAE5E;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,eAAe,CA4C9D;AAkCD,eAAO,MAAM,cAAc,QAAmC,CAAC;AAiE/D,eAAO,MAAM,SAAS,0HAmDpB,CAAC"}
package/dist/erc20.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.premintPattern = exports.defaults = void 0;
3
+ exports.functions = exports.premintPattern = exports.defaults = void 0;
4
+ exports.withDefaults = withDefaults;
4
5
  exports.printERC20 = printERC20;
5
6
  exports.isAccessControlRequired = isAccessControlRequired;
6
7
  exports.buildERC20 = buildERC20;
@@ -86,7 +87,8 @@ function addBase(c, name, symbol) {
86
87
  path: '@openzeppelin/contracts/token/ERC20/ERC20.sol',
87
88
  };
88
89
  c.addParent(ERC20, [name, symbol]);
89
- c.addOverride(ERC20, functions._update);
90
+ c.addOverride(ERC20, exports.functions._update);
91
+ c.addOverride(ERC20, exports.functions._approve); // allows override from stablecoin
90
92
  }
91
93
  function addPausableExtension(c, access) {
92
94
  const ERC20Pausable = {
@@ -94,7 +96,7 @@ function addPausableExtension(c, access) {
94
96
  path: '@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol',
95
97
  };
96
98
  c.addParent(ERC20Pausable);
97
- c.addOverride(ERC20Pausable, functions._update);
99
+ c.addOverride(ERC20Pausable, exports.functions._update);
98
100
  (0, add_pausable_1.addPauseFunctions)(c, access);
99
101
  }
100
102
  function addBurnable(c) {
@@ -116,13 +118,14 @@ function addPremint(c, amount) {
116
118
  const zeroes = new Array(Math.max(0, -decimalPlace)).fill('0').join('');
117
119
  const units = integer + decimals + zeroes;
118
120
  const exp = decimalPlace <= 0 ? 'decimals()' : `(decimals() - ${decimalPlace})`;
119
- c.addConstructorCode(`_mint(msg.sender, ${units} * 10 ** ${exp});`);
121
+ c.addConstructorArgument({ type: 'address', name: 'recipient' });
122
+ c.addConstructorCode(`_mint(recipient, ${units} * 10 ** ${exp});`);
120
123
  }
121
124
  }
122
125
  }
123
126
  function addMintable(c, access) {
124
- (0, set_access_control_1.requireAccessControl)(c, functions.mint, access, 'MINTER', 'minter');
125
- c.addFunctionCode('_mint(to, amount);', functions.mint);
127
+ (0, set_access_control_1.requireAccessControl)(c, exports.functions.mint, access, 'MINTER', 'minter');
128
+ c.addFunctionCode('_mint(to, amount);', exports.functions.mint);
126
129
  }
127
130
  function addPermit(c, name) {
128
131
  const ERC20Permit = {
@@ -130,7 +133,7 @@ function addPermit(c, name) {
130
133
  path: '@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol',
131
134
  };
132
135
  c.addParent(ERC20Permit, [name]);
133
- c.addOverride(ERC20Permit, functions.nonces);
136
+ c.addOverride(ERC20Permit, exports.functions.nonces);
134
137
  }
135
138
  function addVotes(c, clockMode) {
136
139
  if (!c.parents.some(p => p.contract.name === 'ERC20Permit')) {
@@ -141,14 +144,14 @@ function addVotes(c, clockMode) {
141
144
  path: '@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol',
142
145
  };
143
146
  c.addParent(ERC20Votes);
144
- c.addOverride(ERC20Votes, functions._update);
147
+ c.addOverride(ERC20Votes, exports.functions._update);
145
148
  c.addImportOnly({
146
149
  name: 'Nonces',
147
150
  path: '@openzeppelin/contracts/utils/Nonces.sol',
148
151
  });
149
152
  c.addOverride({
150
153
  name: 'Nonces',
151
- }, functions.nonces);
154
+ }, exports.functions.nonces);
152
155
  (0, set_clock_mode_1.setClockMode)(c, ERC20Votes, clockMode);
153
156
  }
154
157
  function addFlashMint(c) {
@@ -157,7 +160,7 @@ function addFlashMint(c) {
157
160
  path: '@openzeppelin/contracts/token/ERC20/extensions/ERC20FlashMint.sol',
158
161
  });
159
162
  }
160
- const functions = (0, define_functions_1.defineFunctions)({
163
+ exports.functions = (0, define_functions_1.defineFunctions)({
161
164
  _update: {
162
165
  kind: 'internal',
163
166
  args: [
@@ -166,6 +169,15 @@ const functions = (0, define_functions_1.defineFunctions)({
166
169
  { name: 'value', type: 'uint256' },
167
170
  ],
168
171
  },
172
+ _approve: {
173
+ kind: 'internal',
174
+ args: [
175
+ { name: 'owner', type: 'address' },
176
+ { name: 'spender', type: 'address' },
177
+ { name: 'value', type: 'uint256' },
178
+ { name: 'emitEvent', type: 'bool' },
179
+ ],
180
+ },
169
181
  mint: {
170
182
  kind: 'public',
171
183
  args: [
package/dist/erc20.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"erc20.js","sourceRoot":"","sources":["../src/erc20.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"erc20.js","sourceRoot":"","sources":["../src/erc20.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,11 @@
1
1
  import { Contract } from './contract';
2
- import { CommonOptions } from './common-options';
3
- import { ClockMode } from './set-clock-mode';
4
- export interface StablecoinOptions extends CommonOptions {
5
- name: string;
6
- symbol: string;
7
- burnable?: boolean;
8
- pausable?: boolean;
9
- premint?: string;
10
- mintable?: boolean;
11
- permit?: boolean;
2
+ import { ERC20Options } from './erc20';
3
+ export interface StablecoinOptions extends ERC20Options {
12
4
  limitations?: false | "allowlist" | "blocklist";
13
- /**
14
- * Whether to keep track of historical balances for voting in on-chain governance, and optionally specify the clock mode.
15
- * Setting `true` is equivalent to 'blocknumber'. Setting a clock mode implies voting is enabled.
16
- */
17
- votes?: boolean | ClockMode;
18
- flashmint?: boolean;
19
5
  custodian?: boolean;
20
6
  }
21
7
  export declare const defaults: Required<StablecoinOptions>;
22
8
  export declare function printStablecoin(opts?: StablecoinOptions): string;
23
9
  export declare function isAccessControlRequired(opts: Partial<StablecoinOptions>): boolean;
24
10
  export declare function buildStablecoin(opts: StablecoinOptions): Contract;
25
- export declare const premintPattern: RegExp;
26
11
  //# sourceMappingURL=stablecoin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stablecoin.d.ts","sourceRoot":"","sources":["../src/stablecoin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AAIvD,OAAO,EAAE,aAAa,EAAkD,MAAM,kBAAkB,CAAC;AAIjG,OAAO,EAAE,SAAS,EAAkC,MAAM,kBAAkB,CAAC;AAE7E,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC;IAChD;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAevC,CAAC;AAkBX,wBAAgB,eAAe,CAAC,IAAI,GAAE,iBAA4B,GAAG,MAAM,CAE1E;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAEjF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,QAAQ,CAuDjE;AAkCD,eAAO,MAAM,cAAc,QAAmC,CAAC"}
1
+ {"version":3,"file":"stablecoin.d.ts","sourceRoot":"","sources":["../src/stablecoin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AAIvD,OAAO,EAAc,YAAY,EAA6F,MAAM,SAAS,CAAC;AAE9I,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,WAAW,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC;IAChD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAMvC,CAAC;AAYX,wBAAgB,eAAe,CAAC,IAAI,GAAE,iBAA4B,GAAG,MAAM,CAE1E;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAEjF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,QAAQ,CAiBjE"}
@@ -1,47 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.premintPattern = exports.defaults = void 0;
3
+ exports.defaults = void 0;
4
4
  exports.printStablecoin = printStablecoin;
5
5
  exports.isAccessControlRequired = isAccessControlRequired;
6
6
  exports.buildStablecoin = buildStablecoin;
7
- const contract_1 = require("./contract");
8
7
  const set_access_control_1 = require("./set-access-control");
9
- const add_pausable_1 = require("./add-pausable");
10
8
  const define_functions_1 = require("./utils/define-functions");
11
- const common_options_1 = require("./common-options");
12
- const set_info_1 = require("./set-info");
13
9
  const print_1 = require("./print");
14
- const set_clock_mode_1 = require("./set-clock-mode");
10
+ const erc20_1 = require("./erc20");
15
11
  exports.defaults = {
12
+ ...erc20_1.defaults,
16
13
  name: 'MyStablecoin',
17
14
  symbol: 'MST',
18
- burnable: false,
19
- pausable: false,
20
- premint: '0',
21
- mintable: false,
22
- permit: true,
23
15
  limitations: false,
24
- votes: false,
25
- flashmint: false,
26
16
  custodian: false,
27
- access: common_options_1.defaults.access,
28
- upgradeable: common_options_1.defaults.upgradeable,
29
- info: common_options_1.defaults.info,
30
17
  };
31
18
  function withDefaults(opts) {
32
- var _a, _b, _c, _d, _e, _f, _g, _h;
19
+ var _a, _b, _c, _d;
33
20
  return {
34
- ...opts,
35
- ...(0, common_options_1.withCommonDefaults)(opts),
36
- burnable: (_a = opts.burnable) !== null && _a !== void 0 ? _a : exports.defaults.burnable,
37
- pausable: (_b = opts.pausable) !== null && _b !== void 0 ? _b : exports.defaults.pausable,
38
- premint: opts.premint || exports.defaults.premint,
39
- mintable: (_c = opts.mintable) !== null && _c !== void 0 ? _c : exports.defaults.mintable,
40
- permit: (_d = opts.permit) !== null && _d !== void 0 ? _d : exports.defaults.permit,
41
- limitations: (_e = opts.limitations) !== null && _e !== void 0 ? _e : exports.defaults.limitations,
42
- votes: (_f = opts.votes) !== null && _f !== void 0 ? _f : exports.defaults.votes,
43
- flashmint: (_g = opts.flashmint) !== null && _g !== void 0 ? _g : exports.defaults.flashmint,
44
- custodian: (_h = opts.custodian) !== null && _h !== void 0 ? _h : exports.defaults.custodian,
21
+ ...(0, erc20_1.withDefaults)(opts),
22
+ name: (_a = opts.name) !== null && _a !== void 0 ? _a : exports.defaults.name,
23
+ symbol: (_b = opts.symbol) !== null && _b !== void 0 ? _b : exports.defaults.symbol,
24
+ limitations: (_c = opts.limitations) !== null && _c !== void 0 ? _c : exports.defaults.limitations,
25
+ custodian: (_d = opts.custodian) !== null && _d !== void 0 ? _d : exports.defaults.custodian,
45
26
  };
46
27
  }
47
28
  function printStablecoin(opts = exports.defaults) {
@@ -52,89 +33,17 @@ function isAccessControlRequired(opts) {
52
33
  }
53
34
  function buildStablecoin(opts) {
54
35
  const allOpts = withDefaults(opts);
55
- const c = new contract_1.ContractBuilder(allOpts.name);
56
- const { access, upgradeable, info } = allOpts;
57
- addBase(c, allOpts.name, allOpts.symbol);
58
- if (allOpts.burnable) {
59
- addBurnable(c);
60
- }
61
- if (allOpts.pausable) {
62
- addPausableExtension(c, access);
63
- }
64
- if (allOpts.premint) {
65
- addPremint(c, allOpts.premint);
66
- }
67
- if (allOpts.mintable) {
68
- addMintable(c, access);
69
- }
70
- if (allOpts.limitations) {
71
- addLimitations(c, access, allOpts.limitations);
72
- }
36
+ // Upgradeability is not yet available for the community contracts
37
+ allOpts.upgradeable = false;
38
+ const c = (0, erc20_1.buildERC20)(allOpts);
73
39
  if (allOpts.custodian) {
74
- addCustodian(c, access);
75
- }
76
- // Note: Votes requires Permit
77
- if (allOpts.permit || allOpts.votes) {
78
- addPermit(c, allOpts.name);
40
+ addCustodian(c, allOpts.access);
79
41
  }
80
- if (allOpts.votes) {
81
- const clockMode = allOpts.votes === true ? set_clock_mode_1.clockModeDefault : allOpts.votes;
82
- addVotes(c, clockMode);
83
- }
84
- if (allOpts.flashmint) {
85
- addFlashMint(c);
42
+ if (allOpts.limitations) {
43
+ addLimitations(c, allOpts.access, allOpts.limitations);
86
44
  }
87
- (0, set_access_control_1.setAccessControl)(c, access);
88
- // Upgradeability is not yet available for the community contracts
89
- // setUpgradeable(c, upgradeable, access);
90
- (0, set_info_1.setInfo)(c, info);
91
45
  return c;
92
46
  }
93
- function addBase(c, name, symbol) {
94
- const ERC20 = {
95
- name: 'ERC20',
96
- path: '@openzeppelin/contracts/token/ERC20/ERC20.sol',
97
- };
98
- c.addParent(ERC20, [name, symbol]);
99
- c.addOverride(ERC20, functions._update);
100
- c.addOverride(ERC20, functions._approve);
101
- }
102
- function addPausableExtension(c, access) {
103
- const ERC20Pausable = {
104
- name: 'ERC20Pausable',
105
- path: '@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol',
106
- };
107
- c.addParent(ERC20Pausable);
108
- c.addOverride(ERC20Pausable, functions._update);
109
- (0, add_pausable_1.addPauseFunctions)(c, access);
110
- }
111
- function addBurnable(c) {
112
- c.addParent({
113
- name: 'ERC20Burnable',
114
- path: '@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol',
115
- });
116
- }
117
- exports.premintPattern = /^(\d*)(?:\.(\d+))?(?:e(\d+))?$/;
118
- function addPremint(c, amount) {
119
- var _a, _b, _c, _d, _e;
120
- const m = amount.match(exports.premintPattern);
121
- if (m) {
122
- const integer = (_b = (_a = m[1]) === null || _a === void 0 ? void 0 : _a.replace(/^0+/, '')) !== null && _b !== void 0 ? _b : '';
123
- const decimals = (_d = (_c = m[2]) === null || _c === void 0 ? void 0 : _c.replace(/0+$/, '')) !== null && _d !== void 0 ? _d : '';
124
- const exponent = Number((_e = m[3]) !== null && _e !== void 0 ? _e : 0);
125
- if (Number(integer + decimals) > 0) {
126
- const decimalPlace = decimals.length - exponent;
127
- const zeroes = new Array(Math.max(0, -decimalPlace)).fill('0').join('');
128
- const units = integer + decimals + zeroes;
129
- const exp = decimalPlace <= 0 ? 'decimals()' : `(decimals() - ${decimalPlace})`;
130
- c.addConstructorCode(`_mint(msg.sender, ${units} * 10 ** ${exp});`);
131
- }
132
- }
133
- }
134
- function addMintable(c, access) {
135
- (0, set_access_control_1.requireAccessControl)(c, functions.mint, access, 'MINTER', 'minter');
136
- c.addFunctionCode('_mint(to, amount);', functions.mint);
137
- }
138
47
  function addLimitations(c, access, mode) {
139
48
  const type = mode === 'allowlist';
140
49
  const ERC20Limitation = {
@@ -194,115 +103,41 @@ function addCustodian(c, access) {
194
103
  }
195
104
  }
196
105
  }
197
- function addPermit(c, name) {
198
- const ERC20Permit = {
199
- name: 'ERC20Permit',
200
- path: '@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol',
201
- };
202
- c.addParent(ERC20Permit, [name]);
203
- c.addOverride(ERC20Permit, functions.nonces);
204
- }
205
- function addVotes(c, clockMode) {
206
- if (!c.parents.some(p => p.contract.name === 'ERC20Permit')) {
207
- throw new Error('Missing ERC20Permit requirement for ERC20Votes');
208
- }
209
- const ERC20Votes = {
210
- name: 'ERC20Votes',
211
- path: '@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol',
212
- };
213
- c.addParent(ERC20Votes);
214
- c.addOverride(ERC20Votes, functions._update);
215
- c.addImportOnly({
216
- name: 'Nonces',
217
- path: '@openzeppelin/contracts/utils/Nonces.sol',
218
- });
219
- c.addOverride({
220
- name: 'Nonces',
221
- }, functions.nonces);
222
- (0, set_clock_mode_1.setClockMode)(c, ERC20Votes, clockMode);
223
- }
224
- function addFlashMint(c) {
225
- c.addParent({
226
- name: 'ERC20FlashMint',
227
- path: '@openzeppelin/contracts/token/ERC20/extensions/ERC20FlashMint.sol',
228
- });
229
- }
230
- const functions = (0, define_functions_1.defineFunctions)({
231
- _update: {
232
- kind: 'internal',
233
- args: [
234
- { name: 'from', type: 'address' },
235
- { name: 'to', type: 'address' },
236
- { name: 'value', type: 'uint256' },
237
- ],
238
- },
239
- _approve: {
240
- kind: 'internal',
241
- args: [
242
- { name: 'owner', type: 'address' },
243
- { name: 'spender', type: 'address' },
244
- { name: 'value', type: 'uint256' },
245
- { name: 'emitEvent', type: 'bool' },
246
- ],
247
- },
248
- _isCustodian: {
249
- kind: 'internal',
250
- args: [
251
- { name: 'user', type: 'address' },
252
- ],
253
- returns: ['bool'],
254
- mutability: 'view'
255
- },
256
- mint: {
257
- kind: 'public',
258
- args: [
259
- { name: 'to', type: 'address' },
260
- { name: 'amount', type: 'uint256' },
261
- ],
262
- },
263
- allowUser: {
264
- kind: 'public',
265
- args: [
266
- { name: 'user', type: 'address' }
267
- ],
268
- },
269
- disallowUser: {
270
- kind: 'public',
271
- args: [
272
- { name: 'user', type: 'address' }
273
- ],
274
- },
275
- blockUser: {
276
- kind: 'public',
277
- args: [
278
- { name: 'user', type: 'address' }
279
- ],
280
- },
281
- unblockUser: {
282
- kind: 'public',
283
- args: [
284
- { name: 'user', type: 'address' }
285
- ],
286
- },
287
- pause: {
288
- kind: 'public',
289
- args: [],
290
- },
291
- unpause: {
292
- kind: 'public',
293
- args: [],
294
- },
295
- snapshot: {
296
- kind: 'public',
297
- args: [],
298
- },
299
- nonces: {
300
- kind: 'public',
301
- args: [
302
- { name: 'owner', type: 'address' },
303
- ],
304
- returns: ['uint256'],
305
- mutability: 'view',
306
- }
307
- });
106
+ const functions = {
107
+ ...erc20_1.functions,
108
+ ...(0, define_functions_1.defineFunctions)({
109
+ _isCustodian: {
110
+ kind: 'internal',
111
+ args: [
112
+ { name: 'user', type: 'address' },
113
+ ],
114
+ returns: ['bool'],
115
+ mutability: 'view'
116
+ },
117
+ allowUser: {
118
+ kind: 'public',
119
+ args: [
120
+ { name: 'user', type: 'address' }
121
+ ],
122
+ },
123
+ disallowUser: {
124
+ kind: 'public',
125
+ args: [
126
+ { name: 'user', type: 'address' }
127
+ ],
128
+ },
129
+ blockUser: {
130
+ kind: 'public',
131
+ args: [
132
+ { name: 'user', type: 'address' }
133
+ ],
134
+ },
135
+ unblockUser: {
136
+ kind: 'public',
137
+ args: [
138
+ { name: 'user', type: 'address' }
139
+ ],
140
+ },
141
+ })
142
+ };
308
143
  //# sourceMappingURL=stablecoin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stablecoin.js","sourceRoot":"","sources":["../src/stablecoin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stablecoin.js","sourceRoot":"","sources":["../src/stablecoin.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.5.0",
3
+ "version": "0.5.1",
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",
@@ -4,6 +4,7 @@ import { ERC721Options, buildERC721 } from './erc721';
4
4
  import { ERC1155Options, buildERC1155 } from './erc1155';
5
5
  import { StablecoinOptions, buildStablecoin } from './stablecoin';
6
6
  import { GovernorOptions, buildGovernor } from './governor';
7
+ import { Contract } from './contract';
7
8
 
8
9
  export interface KindedOptions {
9
10
  ERC20: { kind: 'ERC20' } & ERC20Options;
@@ -17,7 +18,7 @@ export interface KindedOptions {
17
18
 
18
19
  export type GenericOptions = KindedOptions[keyof KindedOptions];
19
20
 
20
- export function buildGeneric(opts: GenericOptions) {
21
+ export function buildGeneric(opts: GenericOptions): Contract {
21
22
  switch (opts.kind) {
22
23
  case 'ERC20':
23
24
  return buildERC20(opts);
package/src/erc20.ts CHANGED
@@ -39,7 +39,7 @@ export const defaults: Required<ERC20Options> = {
39
39
  info: commonDefaults.info,
40
40
  } as const;
41
41
 
42
- function withDefaults(opts: ERC20Options): Required<ERC20Options> {
42
+ export function withDefaults(opts: ERC20Options): Required<ERC20Options> {
43
43
  return {
44
44
  ...opts,
45
45
  ...withCommonDefaults(opts),
@@ -61,7 +61,7 @@ export function isAccessControlRequired(opts: Partial<ERC20Options>): boolean {
61
61
  return opts.mintable || opts.pausable || opts.upgradeable === 'uups';
62
62
  }
63
63
 
64
- export function buildERC20(opts: ERC20Options): Contract {
64
+ export function buildERC20(opts: ERC20Options): ContractBuilder {
65
65
  const allOpts = withDefaults(opts);
66
66
 
67
67
  const c = new ContractBuilder(allOpts.name);
@@ -118,6 +118,7 @@ function addBase(c: ContractBuilder, name: string, symbol: string) {
118
118
  );
119
119
 
120
120
  c.addOverride(ERC20, functions._update);
121
+ c.addOverride(ERC20, functions._approve); // allows override from stablecoin
121
122
  }
122
123
 
123
124
  function addPausableExtension(c: ContractBuilder, access: Access) {
@@ -152,7 +153,8 @@ function addPremint(c: ContractBuilder, amount: string) {
152
153
  const zeroes = new Array(Math.max(0, -decimalPlace)).fill('0').join('');
153
154
  const units = integer + decimals + zeroes;
154
155
  const exp = decimalPlace <= 0 ? 'decimals()' : `(decimals() - ${decimalPlace})`;
155
- c.addConstructorCode(`_mint(msg.sender, ${units} * 10 ** ${exp});`);
156
+ c.addConstructorArgument({type: 'address', name: 'recipient'});
157
+ c.addConstructorCode(`_mint(recipient, ${units} * 10 ** ${exp});`);
156
158
  }
157
159
  }
158
160
  }
@@ -202,7 +204,7 @@ function addFlashMint(c: ContractBuilder) {
202
204
  });
203
205
  }
204
206
 
205
- const functions = defineFunctions({
207
+ export const functions = defineFunctions({
206
208
  _update: {
207
209
  kind: 'internal' as const,
208
210
  args: [
@@ -212,6 +214,16 @@ const functions = defineFunctions({
212
214
  ],
213
215
  },
214
216
 
217
+ _approve: {
218
+ kind: 'internal' as const,
219
+ args: [
220
+ { name: 'owner', type: 'address' },
221
+ { name: 'spender', type: 'address' },
222
+ { name: 'value', type: 'uint256' },
223
+ { name: 'emitEvent', type: 'bool' },
224
+ ],
225
+ },
226
+
215
227
  mint: {
216
228
  kind: 'public' as const,
217
229
  args: [
package/src/stablecoin.ts CHANGED
@@ -1,60 +1,28 @@
1
1
  import { Contract, ContractBuilder } from './contract';
2
2
  import { Access, setAccessControl, requireAccessControl } from './set-access-control';
3
- import { addPauseFunctions } from './add-pausable';
4
3
  import { defineFunctions } from './utils/define-functions';
5
- import { CommonOptions, withCommonDefaults, defaults as commonDefaults } from './common-options';
6
- import { setUpgradeable } from './set-upgradeable';
7
- import { setInfo } from './set-info';
8
4
  import { printContract } from './print';
9
- import { ClockMode, clockModeDefault, setClockMode } from './set-clock-mode';
5
+ import { buildERC20, ERC20Options, defaults as erc20defaults, withDefaults as withERC20Defaults, functions as erc20functions } from './erc20';
10
6
 
11
- export interface StablecoinOptions extends CommonOptions {
12
- name: string;
13
- symbol: string;
14
- burnable?: boolean;
15
- pausable?: boolean;
16
- premint?: string;
17
- mintable?: boolean;
18
- permit?: boolean;
7
+ export interface StablecoinOptions extends ERC20Options {
19
8
  limitations?: false | "allowlist" | "blocklist";
20
- /**
21
- * Whether to keep track of historical balances for voting in on-chain governance, and optionally specify the clock mode.
22
- * Setting `true` is equivalent to 'blocknumber'. Setting a clock mode implies voting is enabled.
23
- */
24
- votes?: boolean | ClockMode;
25
- flashmint?: boolean;
26
9
  custodian?: boolean;
27
10
  }
28
11
 
29
12
  export const defaults: Required<StablecoinOptions> = {
13
+ ...erc20defaults,
30
14
  name: 'MyStablecoin',
31
15
  symbol: 'MST',
32
- burnable: false,
33
- pausable: false,
34
- premint: '0',
35
- mintable: false,
36
- permit: true,
37
16
  limitations: false,
38
- votes: false,
39
- flashmint: false,
40
17
  custodian: false,
41
- access: commonDefaults.access,
42
- upgradeable: commonDefaults.upgradeable,
43
- info: commonDefaults.info,
44
18
  } as const;
45
19
 
46
20
  function withDefaults(opts: StablecoinOptions): Required<StablecoinOptions> {
47
21
  return {
48
- ...opts,
49
- ...withCommonDefaults(opts),
50
- burnable: opts.burnable ?? defaults.burnable,
51
- pausable: opts.pausable ?? defaults.pausable,
52
- premint: opts.premint || defaults.premint,
53
- mintable: opts.mintable ?? defaults.mintable,
54
- permit: opts.permit ?? defaults.permit,
22
+ ...withERC20Defaults(opts),
23
+ name: opts.name ?? defaults.name,
24
+ symbol: opts.symbol ?? defaults.symbol,
55
25
  limitations: opts.limitations ?? defaults.limitations,
56
- votes: opts.votes ?? defaults.votes,
57
- flashmint: opts.flashmint ?? defaults.flashmint,
58
26
  custodian: opts.custodian ?? defaults.custodian,
59
27
  };
60
28
  }
@@ -70,116 +38,22 @@ export function isAccessControlRequired(opts: Partial<StablecoinOptions>): boole
70
38
  export function buildStablecoin(opts: StablecoinOptions): Contract {
71
39
  const allOpts = withDefaults(opts);
72
40
 
73
- const c = new ContractBuilder(allOpts.name);
74
-
75
- const { access, upgradeable, info } = allOpts;
76
-
77
- addBase(c, allOpts.name, allOpts.symbol);
78
-
79
- if (allOpts.burnable) {
80
- addBurnable(c);
81
- }
82
-
83
- if (allOpts.pausable) {
84
- addPausableExtension(c, access);
85
- }
86
-
87
- if (allOpts.premint) {
88
- addPremint(c, allOpts.premint);
89
- }
90
-
91
- if (allOpts.mintable) {
92
- addMintable(c, access);
93
- }
41
+ // Upgradeability is not yet available for the community contracts
42
+ allOpts.upgradeable = false;
94
43
 
95
- if (allOpts.limitations) {
96
- addLimitations(c, access, allOpts.limitations);
97
- }
44
+ const c = buildERC20(allOpts);
98
45
 
99
46
  if (allOpts.custodian) {
100
- addCustodian(c, access);
101
- }
102
-
103
- // Note: Votes requires Permit
104
- if (allOpts.permit || allOpts.votes) {
105
- addPermit(c, allOpts.name);
106
- }
107
-
108
- if (allOpts.votes) {
109
- const clockMode = allOpts.votes === true ? clockModeDefault : allOpts.votes;
110
- addVotes(c, clockMode);
47
+ addCustodian(c, allOpts.access);
111
48
  }
112
49
 
113
- if (allOpts.flashmint) {
114
- addFlashMint(c);
50
+ if (allOpts.limitations) {
51
+ addLimitations(c, allOpts.access, allOpts.limitations);
115
52
  }
116
53
 
117
- setAccessControl(c, access);
118
-
119
- // Upgradeability is not yet available for the community contracts
120
- // setUpgradeable(c, upgradeable, access);
121
-
122
- setInfo(c, info);
123
-
124
54
  return c;
125
55
  }
126
56
 
127
- function addBase(c: ContractBuilder, name: string, symbol: string) {
128
- const ERC20 = {
129
- name: 'ERC20',
130
- path: '@openzeppelin/contracts/token/ERC20/ERC20.sol',
131
- };
132
- c.addParent(
133
- ERC20,
134
- [name, symbol],
135
- );
136
-
137
- c.addOverride(ERC20, functions._update);
138
- c.addOverride(ERC20, functions._approve);
139
- }
140
-
141
- function addPausableExtension(c: ContractBuilder, access: Access) {
142
- const ERC20Pausable = {
143
- name: 'ERC20Pausable',
144
- path: '@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol',
145
- };
146
- c.addParent(ERC20Pausable);
147
- c.addOverride(ERC20Pausable, functions._update);
148
-
149
- addPauseFunctions(c, access);
150
- }
151
-
152
- function addBurnable(c: ContractBuilder) {
153
- c.addParent({
154
- name: 'ERC20Burnable',
155
- path: '@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol',
156
- });
157
- }
158
-
159
- export const premintPattern = /^(\d*)(?:\.(\d+))?(?:e(\d+))?$/;
160
-
161
- function addPremint(c: ContractBuilder, amount: string) {
162
- const m = amount.match(premintPattern);
163
- if (m) {
164
- const integer = m[1]?.replace(/^0+/, '') ?? '';
165
- const decimals = m[2]?.replace(/0+$/, '') ?? '';
166
- const exponent = Number(m[3] ?? 0);
167
-
168
- if (Number(integer + decimals) > 0) {
169
- const decimalPlace = decimals.length - exponent;
170
- const zeroes = new Array(Math.max(0, -decimalPlace)).fill('0').join('');
171
- const units = integer + decimals + zeroes;
172
- const exp = decimalPlace <= 0 ? 'decimals()' : `(decimals() - ${decimalPlace})`;
173
- c.addConstructorCode(`_mint(msg.sender, ${units} * 10 ** ${exp});`);
174
- }
175
- }
176
- }
177
-
178
- function addMintable(c: ContractBuilder, access: Access) {
179
- requireAccessControl(c, functions.mint, access, 'MINTER', 'minter');
180
- c.addFunctionCode('_mint(to, amount);', functions.mint);
181
- }
182
-
183
57
  function addLimitations(c: ContractBuilder, access: Access, mode: boolean | 'allowlist' | 'blocklist') {
184
58
  const type = mode === 'allowlist';
185
59
  const ERC20Limitation = {
@@ -249,132 +123,45 @@ function addCustodian(c: ContractBuilder, access: Access) {
249
123
  }
250
124
  }
251
125
 
252
- function addPermit(c: ContractBuilder, name: string) {
253
- const ERC20Permit = {
254
- name: 'ERC20Permit',
255
- path: '@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol',
256
- };
257
- c.addParent(ERC20Permit, [name]);
258
- c.addOverride(ERC20Permit, functions.nonces);
259
-
260
- }
261
-
262
- function addVotes(c: ContractBuilder, clockMode: ClockMode) {
263
- if (!c.parents.some(p => p.contract.name === 'ERC20Permit')) {
264
- throw new Error('Missing ERC20Permit requirement for ERC20Votes');
265
- }
266
-
267
- const ERC20Votes = {
268
- name: 'ERC20Votes',
269
- path: '@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol',
270
- };
271
- c.addParent(ERC20Votes);
272
- c.addOverride(ERC20Votes, functions._update);
273
-
274
- c.addImportOnly({
275
- name: 'Nonces',
276
- path: '@openzeppelin/contracts/utils/Nonces.sol',
277
- });
278
- c.addOverride({
279
- name: 'Nonces',
280
- }, functions.nonces);
281
-
282
- setClockMode(c, ERC20Votes, clockMode);
283
- }
284
-
285
- function addFlashMint(c: ContractBuilder) {
286
- c.addParent({
287
- name: 'ERC20FlashMint',
288
- path: '@openzeppelin/contracts/token/ERC20/extensions/ERC20FlashMint.sol',
289
- });
290
- }
291
-
292
- const functions = defineFunctions({
293
- _update: {
294
- kind: 'internal' as const,
295
- args: [
296
- { name: 'from', type: 'address' },
297
- { name: 'to', type: 'address' },
298
- { name: 'value', type: 'uint256' },
299
- ],
300
- },
301
-
302
- _approve: {
303
- kind: 'internal' as const,
304
- args: [
305
- { name: 'owner', type: 'address' },
306
- { name: 'spender', type: 'address' },
307
- { name: 'value', type: 'uint256' },
308
- { name: 'emitEvent', type: 'bool' },
309
- ],
310
- },
311
-
312
- _isCustodian: {
313
- kind: 'internal' as const,
314
- args: [
315
- { name: 'user', type: 'address' },
316
- ],
317
- returns: ['bool'],
318
- mutability: 'view' as const
319
- },
320
-
321
- mint: {
322
- kind: 'public' as const,
323
- args: [
324
- { name: 'to', type: 'address' },
325
- { name: 'amount', type: 'uint256' },
326
- ],
327
- },
126
+ const functions = {
127
+ ...erc20functions,
128
+ ...defineFunctions({
129
+ _isCustodian: {
130
+ kind: 'internal' as const,
131
+ args: [
132
+ { name: 'user', type: 'address' },
133
+ ],
134
+ returns: ['bool'],
135
+ mutability: 'view' as const
136
+ },
137
+
138
+ allowUser: {
139
+ kind: 'public' as const,
140
+ args: [
141
+ { name: 'user', type: 'address' }
142
+ ],
143
+ },
144
+
145
+ disallowUser: {
146
+ kind: 'public' as const,
147
+ args: [
148
+ { name: 'user', type: 'address' }
149
+ ],
150
+ },
151
+
152
+ blockUser: {
153
+ kind: 'public' as const,
154
+ args: [
155
+ { name: 'user', type: 'address' }
156
+ ],
157
+ },
158
+
159
+ unblockUser: {
160
+ kind: 'public' as const,
161
+ args: [
162
+ { name: 'user', type: 'address' }
163
+ ],
164
+ },
165
+ })
166
+ };
328
167
 
329
- allowUser: {
330
- kind: 'public' as const,
331
- args: [
332
- { name: 'user', type: 'address' }
333
- ],
334
- },
335
-
336
- disallowUser: {
337
- kind: 'public' as const,
338
- args: [
339
- { name: 'user', type: 'address' }
340
- ],
341
- },
342
-
343
- blockUser: {
344
- kind: 'public' as const,
345
- args: [
346
- { name: 'user', type: 'address' }
347
- ],
348
- },
349
-
350
- unblockUser: {
351
- kind: 'public' as const,
352
- args: [
353
- { name: 'user', type: 'address' }
354
- ],
355
- },
356
-
357
- pause: {
358
- kind: 'public' as const,
359
- args: [],
360
- },
361
-
362
- unpause: {
363
- kind: 'public' as const,
364
- args: [],
365
- },
366
-
367
- snapshot: {
368
- kind: 'public' as const,
369
- args: [],
370
- },
371
-
372
- nonces: {
373
- kind: 'public' as const,
374
- args: [
375
- { name: 'owner', type: 'address' },
376
- ],
377
- returns: ['uint256'],
378
- mutability: 'view' as const,
379
- }
380
- });