@openzeppelin/wizard 0.5.3 → 0.5.4

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/erc20.d.ts CHANGED
@@ -11,6 +11,7 @@ export interface ERC20Options extends CommonOptions {
11
11
  premint?: string;
12
12
  premintChainId?: string;
13
13
  mintable?: boolean;
14
+ callback?: boolean;
14
15
  permit?: boolean;
15
16
  /**
16
17
  * Whether to keep track of historical balances for voting in on-chain governance, and optionally specify the clock mode.
@@ -1 +1 @@
1
- {"version":3,"file":"erc20.d.ts","sourceRoot":"","sources":["../src/erc20.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAK7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAKlD,eAAO,MAAM,yBAAyB,0CAA2C,CAAC;AAClF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,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,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,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;IACpB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAelC,CAAC;AAEX,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,CAcvE;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,CAgD9D;AA+BD,eAAO,MAAM,cAAc,QAAmC,CAAC;AAE/D,eAAO,MAAM,cAAc,QAAoB,CAAC;AAEhD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEnD;AA6MD,eAAO,MAAM,SAAS,gJAsDpB,CAAC"}
1
+ {"version":3,"file":"erc20.d.ts","sourceRoot":"","sources":["../src/erc20.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAK7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAMlD,eAAO,MAAM,yBAAyB,0CAA2C,CAAC;AAClF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,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,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,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;IACpB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAgBlC,CAAC;AAEX,wBAAgB,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,CAevE;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,CAoD9D;AA+BD,eAAO,MAAM,cAAc,QAAmC,CAAC;AAE/D,eAAO,MAAM,cAAc,QAAoB,CAAC;AAEhD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEnD;AAmPD,eAAO,MAAM,SAAS,gJAsDpB,CAAC"}
package/dist/erc20.js CHANGED
@@ -17,6 +17,7 @@ const print_1 = require("./print");
17
17
  const set_clock_mode_1 = require("./set-clock-mode");
18
18
  const common_functions_1 = require("./common-functions");
19
19
  const error_1 = require("./error");
20
+ const convert_strings_1 = require("./utils/convert-strings");
20
21
  exports.crossChainBridgingOptions = [false, 'custom', 'superchain'];
21
22
  exports.defaults = {
22
23
  name: 'MyToken',
@@ -26,6 +27,7 @@ exports.defaults = {
26
27
  premint: '0',
27
28
  premintChainId: '',
28
29
  mintable: false,
30
+ callback: false,
29
31
  permit: true,
30
32
  votes: false,
31
33
  flashmint: false,
@@ -35,7 +37,7 @@ exports.defaults = {
35
37
  info: common_options_1.defaults.info,
36
38
  };
37
39
  function withDefaults(opts) {
38
- var _a, _b, _c, _d, _e, _f, _g;
40
+ var _a, _b, _c, _d, _e, _f, _g, _h;
39
41
  return {
40
42
  ...opts,
41
43
  ...(0, common_options_1.withCommonDefaults)(opts),
@@ -44,10 +46,11 @@ function withDefaults(opts) {
44
46
  premint: opts.premint || exports.defaults.premint,
45
47
  premintChainId: opts.premintChainId || exports.defaults.premintChainId,
46
48
  mintable: (_c = opts.mintable) !== null && _c !== void 0 ? _c : exports.defaults.mintable,
47
- permit: (_d = opts.permit) !== null && _d !== void 0 ? _d : exports.defaults.permit,
48
- votes: (_e = opts.votes) !== null && _e !== void 0 ? _e : exports.defaults.votes,
49
- flashmint: (_f = opts.flashmint) !== null && _f !== void 0 ? _f : exports.defaults.flashmint,
50
- crossChainBridging: (_g = opts.crossChainBridging) !== null && _g !== void 0 ? _g : exports.defaults.crossChainBridging,
49
+ callback: (_d = opts.callback) !== null && _d !== void 0 ? _d : exports.defaults.callback,
50
+ permit: (_e = opts.permit) !== null && _e !== void 0 ? _e : exports.defaults.permit,
51
+ votes: (_f = opts.votes) !== null && _f !== void 0 ? _f : exports.defaults.votes,
52
+ flashmint: (_g = opts.flashmint) !== null && _g !== void 0 ? _g : exports.defaults.flashmint,
53
+ crossChainBridging: (_h = opts.crossChainBridging) !== null && _h !== void 0 ? _h : exports.defaults.crossChainBridging,
51
54
  };
52
55
  }
53
56
  function printERC20(opts = exports.defaults) {
@@ -76,6 +79,9 @@ function buildERC20(opts) {
76
79
  if (allOpts.mintable) {
77
80
  addMintable(c, access);
78
81
  }
82
+ if (allOpts.callback) {
83
+ addCallback(c);
84
+ }
79
85
  // Note: Votes requires Permit
80
86
  if (allOpts.permit || allOpts.votes) {
81
87
  addPermit(c, allOpts.name);
@@ -121,6 +127,14 @@ exports.chainIdPattern = /^(?!$)[1-9]\d*$/;
121
127
  function isValidChainId(str) {
122
128
  return exports.chainIdPattern.test(str);
123
129
  }
130
+ function scaleByPowerOfTen(base, exponent) {
131
+ if (exponent < 0) {
132
+ return base / BigInt(10) ** BigInt(-exponent);
133
+ }
134
+ else {
135
+ return base * BigInt(10) ** BigInt(exponent);
136
+ }
137
+ }
124
138
  function addPremint(c, amount, premintChainId, crossChainBridging) {
125
139
  var _a, _b, _c, _d, _e;
126
140
  const m = amount.match(exports.premintPattern);
@@ -133,6 +147,8 @@ function addPremint(c, amount, premintChainId, crossChainBridging) {
133
147
  const zeroes = new Array(Math.max(0, -decimalPlace)).fill('0').join('');
134
148
  const units = integer + decimals + zeroes;
135
149
  const exp = decimalPlace <= 0 ? 'decimals()' : `(decimals() - ${decimalPlace})`;
150
+ const validatedBaseUnits = (0, convert_strings_1.toUint256)(units, 'premint');
151
+ checkPotentialPremintOverflow(validatedBaseUnits, decimalPlace);
136
152
  c.addConstructorArgument({ type: 'address', name: 'recipient' });
137
153
  const mintLine = `_mint(recipient, ${units} * 10 ** ${exp});`;
138
154
  if (crossChainBridging) {
@@ -161,10 +177,34 @@ function addPremint(c, amount, premintChainId, crossChainBridging) {
161
177
  });
162
178
  }
163
179
  }
180
+ /**
181
+ * Check for potential premint overflow assuming the user's contract has decimals() = 18
182
+ *
183
+ * @param baseUnits The base units of the token, before applying power of 10
184
+ * @param decimalPlace If positive, the number of assumed decimal places in the least significant digits of `validatedBaseUnits`. Ignored if <= 0.
185
+ * @throws OptionsError if the calculated value would overflow uint256
186
+ */
187
+ function checkPotentialPremintOverflow(baseUnits, decimalPlace) {
188
+ const assumedExp = decimalPlace <= 0 ? 18 : 18 - decimalPlace;
189
+ const calculatedValue = scaleByPowerOfTen(baseUnits, assumedExp);
190
+ if (calculatedValue > convert_strings_1.UINT256_MAX) {
191
+ throw new error_1.OptionsError({
192
+ premint: 'Amount would overflow uint256 after applying decimals',
193
+ });
194
+ }
195
+ }
164
196
  function addMintable(c, access) {
165
197
  (0, set_access_control_1.requireAccessControl)(c, exports.functions.mint, access, 'MINTER', 'minter');
166
198
  c.addFunctionCode('_mint(to, amount);', exports.functions.mint);
167
199
  }
200
+ function addCallback(c) {
201
+ const ERC1363 = {
202
+ name: 'ERC1363',
203
+ path: '@openzeppelin/contracts/token/ERC20/extensions/ERC1363.sol',
204
+ };
205
+ c.addParent(ERC1363);
206
+ c.addOverride(ERC1363, common_functions_1.supportsInterface);
207
+ }
168
208
  function addPermit(c, name) {
169
209
  const ERC20Permit = {
170
210
  name: 'ERC20Permit',
package/dist/erc20.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"erc20.js","sourceRoot":"","sources":["../src/erc20.ts"],"names":[],"mappings":";;;AAsDA,oCAcC;AAED,gCAEC;AAED,0DAEC;AAED,gCAgDC;AAmCD,wCAEC;AAnKD,yCAA6C;AAE7C,6DAA8E;AAC9E,iDAAmD;AACnD,+DAA2D;AAE3D,qDAAkF;AAElF,uDAAmD;AACnD,yCAAqC;AACrC,mCAAwC;AAExC,qDAAkE;AAClE,yDAAuD;AACvD,mCAAuC;AAE1B,QAAA,yBAAyB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAU,CAAC;AAqBrE,QAAA,QAAQ,GAA2B;IAC9C,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,GAAG;IACZ,cAAc,EAAE,EAAE;IAClB,QAAQ,EAAE,KAAK;IACf,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,KAAK;IAChB,kBAAkB,EAAE,KAAK;IACzB,MAAM,EAAE,yBAAc,CAAC,MAAM;IAC7B,WAAW,EAAE,yBAAc,CAAC,WAAW;IACvC,IAAI,EAAE,yBAAc,CAAC,IAAI;CACjB,CAAC;AAEX,SAAgB,YAAY,CAAC,IAAkB;;IAC7C,OAAO;QACL,GAAG,IAAI;QACP,GAAG,IAAA,mCAAkB,EAAC,IAAI,CAAC;QAC3B,QAAQ,EAAE,MAAA,IAAI,CAAC,QAAQ,mCAAI,gBAAQ,CAAC,QAAQ;QAC5C,QAAQ,EAAE,MAAA,IAAI,CAAC,QAAQ,mCAAI,gBAAQ,CAAC,QAAQ;QAC5C,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,gBAAQ,CAAC,OAAO;QACzC,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,gBAAQ,CAAC,cAAc;QAC9D,QAAQ,EAAE,MAAA,IAAI,CAAC,QAAQ,mCAAI,gBAAQ,CAAC,QAAQ;QAC5C,MAAM,EAAE,MAAA,IAAI,CAAC,MAAM,mCAAI,gBAAQ,CAAC,MAAM;QACtC,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,mCAAI,gBAAQ,CAAC,KAAK;QACnC,SAAS,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,gBAAQ,CAAC,SAAS;QAC/C,kBAAkB,EAAE,MAAA,IAAI,CAAC,kBAAkB,mCAAI,gBAAQ,CAAC,kBAAkB;KAC3E,CAAC;AACJ,CAAC;AAED,SAAgB,UAAU,CAAC,OAAqB,gBAAQ;IACtD,OAAO,IAAA,qBAAa,EAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,uBAAuB,CAAC,IAA2B;IACjE,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC;AACvE,CAAC;AAED,SAAgB,UAAU,CAAC,IAAkB;IAC3C,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAEnC,MAAM,CAAC,GAAG,IAAI,0BAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAE9C,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzC,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/B,qBAAqB,CAAC,CAAC,EAAE,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrF,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,WAAW,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,oBAAoB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC;IAED,8BAA8B;IAC9B,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACpC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,iCAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QAC5E,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,YAAY,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAA,qCAAgB,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5B,IAAA,gCAAc,EAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IACvC,IAAA,kBAAO,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAEjB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,OAAO,CAAC,CAAkB,EAAE,IAAY,EAAE,MAAc;IAC/D,MAAM,KAAK,GAAG;QACZ,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,+CAA+C;KACtD,CAAC;IACF,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAEnC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,iBAAS,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,iBAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,kCAAkC;AAC9E,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAkB,EAAE,MAAc;IAC9D,MAAM,aAAa,GAAG;QACpB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,kEAAkE;KACzE,CAAC;IACF,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC3B,CAAC,CAAC,WAAW,CAAC,aAAa,EAAE,iBAAS,CAAC,OAAO,CAAC,CAAC;IAEhD,IAAA,gCAAiB,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,WAAW,CAAC,CAAkB;IACrC,CAAC,CAAC,SAAS,CAAC;QACV,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,kEAAkE;KACzE,CAAC,CAAC;AACL,CAAC;AAEY,QAAA,cAAc,GAAG,gCAAgC,CAAC;AAElD,QAAA,cAAc,GAAG,iBAAiB,CAAC;AAEhD,SAAgB,cAAc,CAAC,GAAW;IACxC,OAAO,sBAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,UAAU,CACjB,CAAkB,EAClB,MAAc,EACd,cAAsB,EACtB,kBAAsC;;IAEtC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,sBAAc,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,CAAC;QACN,MAAM,OAAO,GAAG,MAAA,MAAA,CAAC,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,mCAAI,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAA,MAAA,CAAC,CAAC,CAAC,CAAC,0CAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,mCAAI,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAA,CAAC,CAAC,CAAC,CAAC,mCAAI,CAAC,CAAC,CAAC;QAEnC,IAAI,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;YAChD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxE,MAAM,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;YAC1C,MAAM,GAAG,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,YAAY,GAAG,CAAC;YAEhF,CAAC,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YAEjE,MAAM,QAAQ,GAAG,oBAAoB,KAAK,YAAY,GAAG,IAAI,CAAC;YAE9D,IAAI,kBAAkB,EAAE,CAAC;gBACvB,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;oBAC1B,MAAM,IAAI,oBAAY,CAAC;wBACrB,cAAc,EAAE,mEAAmE;qBACpF,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC;oBACpC,MAAM,IAAI,oBAAY,CAAC;wBACrB,cAAc,EAAE,sBAAsB;qBACvC,CAAC,CAAC;gBACL,CAAC;gBAED,CAAC,CAAC,kBAAkB,CAAC,wBAAwB,cAAc,KAAK,CAAC,CAAC;gBAClE,CAAC,CAAC,kBAAkB,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAC;gBACxC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,oBAAY,CAAC;YACrB,OAAO,EAAE,oBAAoB;SAC9B,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,CAAkB,EAAE,MAAc;IACrD,IAAA,yCAAoB,EAAC,CAAC,EAAE,iBAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC,CAAC,eAAe,CAAC,oBAAoB,EAAE,iBAAS,CAAC,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,SAAS,CAAC,CAAkB,EAAE,IAAY;IACjD,MAAM,WAAW,GAAG;QAClB,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,gEAAgE;KACvE,CAAC;IACF,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,iBAAS,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,QAAQ,CAAC,CAAkB,EAAE,SAAoB;IACxD,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,UAAU,GAAG;QACjB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,+DAA+D;KACtE,CAAC;IACF,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC,CAAC,WAAW,CAAC,UAAU,EAAE,iBAAS,CAAC,OAAO,CAAC,CAAC;IAE7C,CAAC,CAAC,aAAa,CAAC;QACd,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,0CAA0C;KACjD,CAAC,CAAC;IACH,CAAC,CAAC,WAAW,CACX;QACE,IAAI,EAAE,QAAQ;KACf,EACD,iBAAS,CAAC,MAAM,CACjB,CAAC;IAEF,IAAA,6BAAY,EAAC,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,YAAY,CAAC,CAAkB;IACtC,CAAC,CAAC,SAAS,CAAC;QACV,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,mEAAmE;KAC1E,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAC5B,CAAkB,EAClB,kBAA2C,EAC3C,WAAwB,EACxB,MAAc;IAEd,MAAM,eAAe,GAAG;QACtB,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,wFAAwF;KAC/F,CAAC;IAEF,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC7B,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,oCAAiB,CAAC,CAAC;IAElD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,IAAI,oBAAY,CAAC;YACrB,kBAAkB,EAAE,qEAAqE;SAC1F,CAAC,CAAC;IACL,CAAC;IAED,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,iBAAS,CAAC,iBAAiB,CAAC,CAAC;IAC5D,QAAQ,kBAAkB,EAAE,CAAC;QAC3B,KAAK,QAAQ;YACX,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC7B,MAAM;QACR,KAAK,YAAY;YACf,kBAAkB,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM;QACR,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,CAAC,GAAU,kBAAkB,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAkB,EAAE,MAAc;IAC3D,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK,CAAC;QACX,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC,wCAAwC,CAAC,CAAC;YACrF,IAAI,oBAAoB,EAAE,CAAC;gBACzB,CAAC,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;gBACnE,CAAC,CAAC,kBAAkB,CAAC,qEAAqE,CAAC,CAAC;gBAC5F,CAAC,CAAC,kBAAkB,CAAC,6BAA6B,CAAC,CAAC;YACtD,CAAC;YACD,CAAC,CAAC,eAAe,CAAC,CAAC,oDAAoD,CAAC,EAAE,iBAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAC/G,MAAM;QACR,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAA,qCAAgB,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC5B,MAAM,SAAS,GAAG,aAAa,CAAC;YAChC,MAAM,MAAM,GAAG,mBAAmB,CAAC;YACnC,MAAM,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,2BAA2B,MAAM,iBAAiB,MAAM,KAAK,CAAC,CAAC;YACvG,IAAI,iBAAiB,EAAE,CAAC;gBACtB,CAAC,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC/D,CAAC,CAAC,kBAAkB,CAAC,cAAc,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC;YAC/D,CAAC;YACD,CAAC,CAAC,eAAe,CACf,CAAC,gBAAgB,MAAM,mCAAmC,CAAC,EAC3D,iBAAS,CAAC,iBAAiB,EAC3B,MAAM,CACP,CAAC;YACF,MAAM;QACR,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAA,qCAAgB,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC5B,CAAC,CAAC,aAAa,CAAC;gBACd,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,2DAA2D;aAClE,CAAC,CAAC;YACH,CAAC,CAAC,eAAe,CACf;gBACE,mHAAmH;gBACnH,wCAAwC;aACzC,EACD,iBAAS,CAAC,iBAAiB,EAC3B,MAAM,CACP,CAAC;YACF,MAAM;QACR,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,CAAC,GAAU,MAAM,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAkB;IAC5C,CAAC,CAAC,WAAW,CAAC,iGAAiG,CAAC,CAAC;IACjH,CAAC,CAAC,eAAe,CACf,CAAC,+DAA+D,CAAC,EACjE,iBAAS,CAAC,iBAAiB,EAC3B,MAAM,CACP,CAAC;IACF,CAAC,CAAC,mBAAmB,CACnB;QACE,KAAK;QACL,2FAA2F;QAC3F,IAAI;QACJ,oGAAoG;QACpG,KAAK;KACN,EACD,iBAAS,CAAC,iBAAiB,CAC5B,CAAC;AACJ,CAAC;AAEY,QAAA,SAAS,GAAG,IAAA,kCAAe,EAAC;IACvC,OAAO,EAAE;QACP,IAAI,EAAE,UAAmB;QACzB,IAAI,EAAE;YACJ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YACjC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;YAC/B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;SACnC;KACF;IAED,QAAQ,EAAE;QACR,IAAI,EAAE,UAAmB;QACzB,IAAI,EAAE;YACJ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;YAClC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YACpC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;YAClC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE;SACpC;KACF;IAED,IAAI,EAAE;QACJ,IAAI,EAAE,QAAiB;QACvB,IAAI,EAAE;YACJ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;YAC/B,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;SACpC;KACF;IAED,KAAK,EAAE;QACL,IAAI,EAAE,QAAiB;QACvB,IAAI,EAAE,EAAE;KACT;IAED,OAAO,EAAE;QACP,IAAI,EAAE,QAAiB;QACvB,IAAI,EAAE,EAAE;KACT;IAED,QAAQ,EAAE;QACR,IAAI,EAAE,QAAiB;QACvB,IAAI,EAAE,EAAE;KACT;IAED,MAAM,EAAE;QACN,IAAI,EAAE,QAAiB;QACvB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC,SAAS,CAAC;QACpB,UAAU,EAAE,MAAe;KAC5B;IAED,iBAAiB,EAAE;QACjB,IAAI,EAAE,UAAmB;QACzB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;KAC5C;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"erc20.js","sourceRoot":"","sources":["../src/erc20.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"erc20.d.ts","sourceRoot":"","sources":["../../src/generate/erc20.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AA0BxE,wBAAiB,oBAAoB,IAAI,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAOzE"}
1
+ {"version":3,"file":"erc20.d.ts","sourceRoot":"","sources":["../../src/generate/erc20.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AA2BxE,wBAAiB,oBAAoB,IAAI,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAOzE"}
@@ -14,6 +14,7 @@ const blueprint = {
14
14
  burnable: booleans,
15
15
  pausable: booleans,
16
16
  mintable: booleans,
17
+ callback: booleans,
17
18
  permit: booleans,
18
19
  votes: [...booleans, ...set_clock_mode_1.clockModeOptions],
19
20
  flashmint: booleans,
@@ -1 +1 @@
1
- {"version":3,"file":"erc20.js","sourceRoot":"","sources":["../../src/generate/erc20.ts"],"names":[],"mappings":";;AA0BA,oDAOC;AAjCD,oCAAwE;AACxE,8DAAsD;AACtD,sDAAqD;AACrD,0CAA0C;AAC1C,wDAAwD;AACxD,iDAAsD;AAEtD,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAE/B,MAAM,SAAS,GAAG;IAChB,IAAI,EAAE,CAAC,SAAS,CAAC;IACjB,MAAM,EAAE,CAAC,KAAK,CAAC;IACf,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,iCAAgB,CAAU;IAClD,SAAS,EAAE,QAAQ;IACnB,OAAO,EAAE,CAAC,GAAG,CAAC;IACd,cAAc,EAAE,CAAC,IAAI,CAAC;IACtB,kBAAkB,EAAE,iCAAyB;IAC7C,MAAM,EAAE,kCAAa;IACrB,WAAW,EAAE,oCAAkB;IAC/B,IAAI,EAAE,sBAAW;CAClB,CAAC;AAEF,QAAe,CAAC,CAAC,oBAAoB;IACnC,KAAK,MAAM,IAAI,IAAI,IAAA,mCAAoB,EAAC,SAAS,CAAC,EAAE,CAAC;QACnD,4DAA4D;QAC5D,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,CAAC;QACb,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"erc20.js","sourceRoot":"","sources":["../../src/generate/erc20.ts"],"names":[],"mappings":";;AA2BA,oDAOC;AAlCD,oCAAwE;AACxE,8DAAsD;AACtD,sDAAqD;AACrD,0CAA0C;AAC1C,wDAAwD;AACxD,iDAAsD;AAEtD,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAE/B,MAAM,SAAS,GAAG;IAChB,IAAI,EAAE,CAAC,SAAS,CAAC;IACjB,MAAM,EAAE,CAAC,KAAK,CAAC;IACf,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,iCAAgB,CAAU;IAClD,SAAS,EAAE,QAAQ;IACnB,OAAO,EAAE,CAAC,GAAG,CAAC;IACd,cAAc,EAAE,CAAC,IAAI,CAAC;IACtB,kBAAkB,EAAE,iCAAyB;IAC7C,MAAM,EAAE,kCAAa;IACrB,WAAW,EAAE,oCAAkB;IAC/B,IAAI,EAAE,sBAAW;CAClB,CAAC;AAEF,QAAe,CAAC,CAAC,oBAAoB;IACnC,KAAK,MAAM,IAAI,IAAI,IAAA,mCAAoB,EAAC,SAAS,CAAC,EAAE,CAAC;QACnD,4DAA4D;QAC5D,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,CAAC;QACb,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stablecoin.d.ts","sourceRoot":"","sources":["../../src/generate/stablecoin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AA2CvD,wBAAiB,yBAAyB,IAAI,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAGnF"}
1
+ {"version":3,"file":"stablecoin.d.ts","sourceRoot":"","sources":["../../src/generate/stablecoin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AA6CvD,wBAAiB,yBAAyB,IAAI,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAGnF"}
@@ -12,6 +12,7 @@ const erc20Basic = {
12
12
  burnable: [false],
13
13
  pausable: [false],
14
14
  mintable: [false],
15
+ callback: [false],
15
16
  permit: [false],
16
17
  votes: [false],
17
18
  flashmint: [false],
@@ -27,6 +28,7 @@ const erc20Full = {
27
28
  burnable: [true],
28
29
  pausable: [true],
29
30
  mintable: [true],
31
+ callback: [true],
30
32
  permit: [true],
31
33
  votes: ['timestamp'],
32
34
  flashmint: [true],
@@ -1 +1 @@
1
- {"version":3,"file":"stablecoin.js","sourceRoot":"","sources":["../../src/generate/stablecoin.ts"],"names":[],"mappings":";;AA8CA,8DAGC;AAjDD,oCAAqD;AACrD,8DAAsD;AACtD,0CAA0C;AAE1C,iDAAsD;AAEtD,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAE/B,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,CAAC,cAAc,CAAC;IACtB,MAAM,EAAE,CAAC,KAAK,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,CAAU;IAC1B,QAAQ,EAAE,CAAC,KAAK,CAAU;IAC1B,QAAQ,EAAE,CAAC,KAAK,CAAU;IAC1B,MAAM,EAAE,CAAC,KAAK,CAAU;IACxB,KAAK,EAAE,CAAC,KAAK,CAAU;IACvB,SAAS,EAAE,CAAC,KAAK,CAAU;IAC3B,OAAO,EAAE,CAAC,GAAG,CAAC;IACd,cAAc,EAAE,CAAC,EAAE,CAAC;IACpB,kBAAkB,EAAE,CAAC,KAAK,CAAU;IACpC,MAAM,EAAE,CAAC,KAAK,CAAU;IACxB,IAAI,EAAE,CAAC,EAAE,CAAU;CACpB,CAAC;AAEF,MAAM,SAAS,GAAG;IAChB,IAAI,EAAE,CAAC,cAAc,CAAC;IACtB,MAAM,EAAE,CAAC,KAAK,CAAC;IACf,QAAQ,EAAE,CAAC,IAAI,CAAU;IACzB,QAAQ,EAAE,CAAC,IAAI,CAAU;IACzB,QAAQ,EAAE,CAAC,IAAI,CAAU;IACzB,MAAM,EAAE,CAAC,IAAI,CAAU;IACvB,KAAK,EAAE,CAAC,WAAW,CAAU;IAC7B,SAAS,EAAE,CAAC,IAAI,CAAU;IAC1B,OAAO,EAAE,CAAC,GAAG,CAAC;IACd,cAAc,EAAE,CAAC,IAAI,CAAC;IACtB,kBAAkB,EAAE,iCAAyB;IAC7C,MAAM,EAAE,kCAAa;IACrB,IAAI,EAAE,sBAAW;CAClB,CAAC;AAEF,MAAM,oBAAoB,GAAG;IAC3B,WAAW,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAU;IACvD,SAAS,EAAE,QAAQ;IACnB,WAAW,EAAE,CAAC,KAAK,CAAU;CAC9B,CAAC;AAEF,QAAe,CAAC,CAAC,yBAAyB;IACxC,KAAK,CAAC,CAAC,IAAA,mCAAoB,EAAC,EAAE,GAAG,UAAU,EAAE,GAAG,oBAAoB,EAAE,CAAC,CAAC;IACxE,KAAK,CAAC,CAAC,IAAA,mCAAoB,EAAC,EAAE,GAAG,SAAS,EAAE,GAAG,oBAAoB,EAAE,CAAC,CAAC;AACzE,CAAC"}
1
+ {"version":3,"file":"stablecoin.js","sourceRoot":"","sources":["../../src/generate/stablecoin.ts"],"names":[],"mappings":";;AAgDA,8DAGC;AAnDD,oCAAqD;AACrD,8DAAsD;AACtD,0CAA0C;AAE1C,iDAAsD;AAEtD,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAE/B,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,CAAC,cAAc,CAAC;IACtB,MAAM,EAAE,CAAC,KAAK,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,CAAU;IAC1B,QAAQ,EAAE,CAAC,KAAK,CAAU;IAC1B,QAAQ,EAAE,CAAC,KAAK,CAAU;IAC1B,QAAQ,EAAE,CAAC,KAAK,CAAU;IAC1B,MAAM,EAAE,CAAC,KAAK,CAAU;IACxB,KAAK,EAAE,CAAC,KAAK,CAAU;IACvB,SAAS,EAAE,CAAC,KAAK,CAAU;IAC3B,OAAO,EAAE,CAAC,GAAG,CAAC;IACd,cAAc,EAAE,CAAC,EAAE,CAAC;IACpB,kBAAkB,EAAE,CAAC,KAAK,CAAU;IACpC,MAAM,EAAE,CAAC,KAAK,CAAU;IACxB,IAAI,EAAE,CAAC,EAAE,CAAU;CACpB,CAAC;AAEF,MAAM,SAAS,GAAG;IAChB,IAAI,EAAE,CAAC,cAAc,CAAC;IACtB,MAAM,EAAE,CAAC,KAAK,CAAC;IACf,QAAQ,EAAE,CAAC,IAAI,CAAU;IACzB,QAAQ,EAAE,CAAC,IAAI,CAAU;IACzB,QAAQ,EAAE,CAAC,IAAI,CAAU;IACzB,QAAQ,EAAE,CAAC,IAAI,CAAU;IACzB,MAAM,EAAE,CAAC,IAAI,CAAU;IACvB,KAAK,EAAE,CAAC,WAAW,CAAU;IAC7B,SAAS,EAAE,CAAC,IAAI,CAAU;IAC1B,OAAO,EAAE,CAAC,GAAG,CAAC;IACd,cAAc,EAAE,CAAC,IAAI,CAAC;IACtB,kBAAkB,EAAE,iCAAyB;IAC7C,MAAM,EAAE,kCAAa;IACrB,IAAI,EAAE,sBAAW;CAClB,CAAC;AAEF,MAAM,oBAAoB,GAAG;IAC3B,WAAW,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAU;IACvD,SAAS,EAAE,QAAQ;IACnB,WAAW,EAAE,CAAC,KAAK,CAAU;CAC9B,CAAC;AAEF,QAAe,CAAC,CAAC,yBAAyB;IACxC,KAAK,CAAC,CAAC,IAAA,mCAAoB,EAAC,EAAE,GAAG,UAAU,EAAE,GAAG,oBAAoB,EAAE,CAAC,CAAC;IACxE,KAAK,CAAC,CAAC,IAAA,mCAAoB,EAAC,EAAE,GAAG,SAAS,EAAE,GAAG,oBAAoB,EAAE,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare const UINT256_MAX: bigint;
2
+ /**
3
+ * Checks that a string is a valid `uint256` value and converts it to bigint.
4
+ *
5
+ * @param value The value to check.
6
+ * @param field The field name to use in the error if the value is invalid.
7
+ * @throws OptionsError if the value is not a valid number or is greater than the maximum value for `uint256`.
8
+ * @returns The value as a bigint.
9
+ */
10
+ export declare function toUint256(value: string, field: string): bigint;
11
+ //# sourceMappingURL=convert-strings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-strings.d.ts","sourceRoot":"","sources":["../../src/utils/convert-strings.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,QAAuC,CAAC;AAEhE;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAc9D"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UINT256_MAX = void 0;
4
+ exports.toUint256 = toUint256;
5
+ const error_1 = require("../error");
6
+ exports.UINT256_MAX = BigInt(2) ** BigInt(256) - BigInt(1);
7
+ /**
8
+ * Checks that a string is a valid `uint256` value and converts it to bigint.
9
+ *
10
+ * @param value The value to check.
11
+ * @param field The field name to use in the error if the value is invalid.
12
+ * @throws OptionsError if the value is not a valid number or is greater than the maximum value for `uint256`.
13
+ * @returns The value as a bigint.
14
+ */
15
+ function toUint256(value, field) {
16
+ const isValidNumber = /^\d+$/.test(value);
17
+ if (!isValidNumber) {
18
+ throw new error_1.OptionsError({
19
+ [field]: 'Not a valid number',
20
+ });
21
+ }
22
+ const numValue = BigInt(value);
23
+ if (numValue > exports.UINT256_MAX) {
24
+ throw new error_1.OptionsError({
25
+ [field]: 'Value is greater than uint256 max value',
26
+ });
27
+ }
28
+ return numValue;
29
+ }
30
+ //# sourceMappingURL=convert-strings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-strings.js","sourceRoot":"","sources":["../../src/utils/convert-strings.ts"],"names":[],"mappings":";;;AAYA,8BAcC;AA1BD,oCAAwC;AAE3B,QAAA,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAEhE;;;;;;;GAOG;AACH,SAAgB,SAAS,CAAC,KAAa,EAAE,KAAa;IACpD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,oBAAY,CAAC;YACrB,CAAC,KAAK,CAAC,EAAE,oBAAoB;SAC9B,CAAC,CAAC;IACL,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,QAAQ,GAAG,mBAAW,EAAE,CAAC;QAC3B,MAAM,IAAI,oBAAY,CAAC;YACrB,CAAC,KAAK,CAAC,EAAE,yCAAyC;SACnD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openzeppelin/wizard",
3
- "version": "0.5.3",
3
+ "version": "0.5.4",
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",
@@ -37,4 +37,4 @@
37
37
  "ts-node": "^10.4.0",
38
38
  "typescript": "^5.0.0"
39
39
  }
40
- }
40
+ }
package/src/erc20.ts CHANGED
@@ -13,6 +13,7 @@ import type { ClockMode } from './set-clock-mode';
13
13
  import { clockModeDefault, setClockMode } from './set-clock-mode';
14
14
  import { supportsInterface } from './common-functions';
15
15
  import { OptionsError } from './error';
16
+ import { toUint256, UINT256_MAX } from './utils/convert-strings';
16
17
 
17
18
  export const crossChainBridgingOptions = [false, 'custom', 'superchain'] as const;
18
19
  export type CrossChainBridging = (typeof crossChainBridgingOptions)[number];
@@ -25,6 +26,7 @@ export interface ERC20Options extends CommonOptions {
25
26
  premint?: string;
26
27
  premintChainId?: string;
27
28
  mintable?: boolean;
29
+ callback?: boolean;
28
30
  permit?: boolean;
29
31
  /**
30
32
  * Whether to keep track of historical balances for voting in on-chain governance, and optionally specify the clock mode.
@@ -43,6 +45,7 @@ export const defaults: Required<ERC20Options> = {
43
45
  premint: '0',
44
46
  premintChainId: '',
45
47
  mintable: false,
48
+ callback: false,
46
49
  permit: true,
47
50
  votes: false,
48
51
  flashmint: false,
@@ -61,6 +64,7 @@ export function withDefaults(opts: ERC20Options): Required<ERC20Options> {
61
64
  premint: opts.premint || defaults.premint,
62
65
  premintChainId: opts.premintChainId || defaults.premintChainId,
63
66
  mintable: opts.mintable ?? defaults.mintable,
67
+ callback: opts.callback ?? defaults.callback,
64
68
  permit: opts.permit ?? defaults.permit,
65
69
  votes: opts.votes ?? defaults.votes,
66
70
  flashmint: opts.flashmint ?? defaults.flashmint,
@@ -105,6 +109,10 @@ export function buildERC20(opts: ERC20Options): ContractBuilder {
105
109
  addMintable(c, access);
106
110
  }
107
111
 
112
+ if (allOpts.callback) {
113
+ addCallback(c);
114
+ }
115
+
108
116
  // Note: Votes requires Permit
109
117
  if (allOpts.permit || allOpts.votes) {
110
118
  addPermit(c, allOpts.name);
@@ -163,6 +171,14 @@ export function isValidChainId(str: string): boolean {
163
171
  return chainIdPattern.test(str);
164
172
  }
165
173
 
174
+ function scaleByPowerOfTen(base: bigint, exponent: number): bigint {
175
+ if (exponent < 0) {
176
+ return base / BigInt(10) ** BigInt(-exponent);
177
+ } else {
178
+ return base * BigInt(10) ** BigInt(exponent);
179
+ }
180
+ }
181
+
166
182
  function addPremint(
167
183
  c: ContractBuilder,
168
184
  amount: string,
@@ -181,6 +197,9 @@ function addPremint(
181
197
  const units = integer + decimals + zeroes;
182
198
  const exp = decimalPlace <= 0 ? 'decimals()' : `(decimals() - ${decimalPlace})`;
183
199
 
200
+ const validatedBaseUnits = toUint256(units, 'premint');
201
+ checkPotentialPremintOverflow(validatedBaseUnits, decimalPlace);
202
+
184
203
  c.addConstructorArgument({ type: 'address', name: 'recipient' });
185
204
 
186
205
  const mintLine = `_mint(recipient, ${units} * 10 ** ${exp});`;
@@ -212,11 +231,38 @@ function addPremint(
212
231
  }
213
232
  }
214
233
 
234
+ /**
235
+ * Check for potential premint overflow assuming the user's contract has decimals() = 18
236
+ *
237
+ * @param baseUnits The base units of the token, before applying power of 10
238
+ * @param decimalPlace If positive, the number of assumed decimal places in the least significant digits of `validatedBaseUnits`. Ignored if <= 0.
239
+ * @throws OptionsError if the calculated value would overflow uint256
240
+ */
241
+ function checkPotentialPremintOverflow(baseUnits: bigint, decimalPlace: number) {
242
+ const assumedExp = decimalPlace <= 0 ? 18 : 18 - decimalPlace;
243
+ const calculatedValue = scaleByPowerOfTen(baseUnits, assumedExp);
244
+
245
+ if (calculatedValue > UINT256_MAX) {
246
+ throw new OptionsError({
247
+ premint: 'Amount would overflow uint256 after applying decimals',
248
+ });
249
+ }
250
+ }
251
+
215
252
  function addMintable(c: ContractBuilder, access: Access) {
216
253
  requireAccessControl(c, functions.mint, access, 'MINTER', 'minter');
217
254
  c.addFunctionCode('_mint(to, amount);', functions.mint);
218
255
  }
219
256
 
257
+ function addCallback(c: ContractBuilder) {
258
+ const ERC1363 = {
259
+ name: 'ERC1363',
260
+ path: '@openzeppelin/contracts/token/ERC20/extensions/ERC1363.sol',
261
+ };
262
+ c.addParent(ERC1363);
263
+ c.addOverride(ERC1363, supportsInterface);
264
+ }
265
+
220
266
  function addPermit(c: ContractBuilder, name: string) {
221
267
  const ERC20Permit = {
222
268
  name: 'ERC20Permit',
@@ -13,6 +13,7 @@ const blueprint = {
13
13
  burnable: booleans,
14
14
  pausable: booleans,
15
15
  mintable: booleans,
16
+ callback: booleans,
16
17
  permit: booleans,
17
18
  votes: [...booleans, ...clockModeOptions] as const,
18
19
  flashmint: booleans,
@@ -12,6 +12,7 @@ const erc20Basic = {
12
12
  burnable: [false] as const,
13
13
  pausable: [false] as const,
14
14
  mintable: [false] as const,
15
+ callback: [false] as const,
15
16
  permit: [false] as const,
16
17
  votes: [false] as const,
17
18
  flashmint: [false] as const,
@@ -28,6 +29,7 @@ const erc20Full = {
28
29
  burnable: [true] as const,
29
30
  pausable: [true] as const,
30
31
  mintable: [true] as const,
32
+ callback: [true] as const,
31
33
  permit: [true] as const,
32
34
  votes: ['timestamp'] as const,
33
35
  flashmint: [true] as const,
@@ -0,0 +1,27 @@
1
+ import { OptionsError } from '../error';
2
+
3
+ export const UINT256_MAX = BigInt(2) ** BigInt(256) - BigInt(1);
4
+
5
+ /**
6
+ * Checks that a string is a valid `uint256` value and converts it to bigint.
7
+ *
8
+ * @param value The value to check.
9
+ * @param field The field name to use in the error if the value is invalid.
10
+ * @throws OptionsError if the value is not a valid number or is greater than the maximum value for `uint256`.
11
+ * @returns The value as a bigint.
12
+ */
13
+ export function toUint256(value: string, field: string): bigint {
14
+ const isValidNumber = /^\d+$/.test(value);
15
+ if (!isValidNumber) {
16
+ throw new OptionsError({
17
+ [field]: 'Not a valid number',
18
+ });
19
+ }
20
+ const numValue = BigInt(value);
21
+ if (numValue > UINT256_MAX) {
22
+ throw new OptionsError({
23
+ [field]: 'Value is greater than uint256 max value',
24
+ });
25
+ }
26
+ return numValue;
27
+ }