@openzeppelin/wizard 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/README.md +82 -0
  2. package/dist/add-pausable.d.ts +4 -0
  3. package/dist/add-pausable.d.ts.map +1 -0
  4. package/dist/add-pausable.js +30 -0
  5. package/dist/add-pausable.js.map +1 -0
  6. package/dist/api.d.ts +24 -0
  7. package/dist/api.d.ts.map +1 -0
  8. package/dist/api.js +24 -0
  9. package/dist/api.js.map +1 -0
  10. package/dist/build-generic.d.ts +21 -0
  11. package/dist/build-generic.d.ts.map +1 -0
  12. package/dist/build-generic.js +24 -0
  13. package/dist/build-generic.js.map +1 -0
  14. package/dist/common-functions.d.ts +3 -0
  15. package/dist/common-functions.d.ts.map +1 -0
  16. package/dist/common-functions.js +13 -0
  17. package/dist/common-functions.js.map +1 -0
  18. package/dist/common-options.d.ts +11 -0
  19. package/dist/common-options.d.ts.map +1 -0
  20. package/dist/common-options.js +19 -0
  21. package/dist/common-options.js.map +1 -0
  22. package/dist/contract.d.ts +86 -0
  23. package/dist/contract.d.ts.map +1 -0
  24. package/dist/contract.js +125 -0
  25. package/dist/contract.js.map +1 -0
  26. package/dist/contract.test.d.ts +2 -0
  27. package/dist/contract.test.d.ts.map +1 -0
  28. package/dist/contract.test.js +147 -0
  29. package/dist/contract.test.js.map +1 -0
  30. package/dist/erc1155.d.ts +14 -0
  31. package/dist/erc1155.d.ts.map +1 -0
  32. package/dist/erc1155.js +130 -0
  33. package/dist/erc1155.js.map +1 -0
  34. package/dist/erc1155.test.d.ts +2 -0
  35. package/dist/erc1155.test.d.ts.map +1 -0
  36. package/dist/erc1155.test.js +80 -0
  37. package/dist/erc1155.test.js.map +1 -0
  38. package/dist/erc20.d.ts +19 -0
  39. package/dist/erc20.d.ts.map +1 -0
  40. package/dist/erc20.js +202 -0
  41. package/dist/erc20.js.map +1 -0
  42. package/dist/erc20.test.d.ts +2 -0
  43. package/dist/erc20.test.d.ts.map +1 -0
  44. package/dist/erc20.test.js +126 -0
  45. package/dist/erc20.test.js.map +1 -0
  46. package/dist/erc721.d.ts +18 -0
  47. package/dist/erc721.d.ts.map +1 -0
  48. package/dist/erc721.js +200 -0
  49. package/dist/erc721.js.map +1 -0
  50. package/dist/erc721.test.d.ts +2 -0
  51. package/dist/erc721.test.d.ts.map +1 -0
  52. package/dist/erc721.test.js +106 -0
  53. package/dist/erc721.test.js.map +1 -0
  54. package/dist/error.d.ts +8 -0
  55. package/dist/error.d.ts.map +1 -0
  56. package/dist/error.js +11 -0
  57. package/dist/error.js.map +1 -0
  58. package/dist/general.d.ts +8 -0
  59. package/dist/general.d.ts.map +1 -0
  60. package/dist/general.js +22 -0
  61. package/dist/general.js.map +1 -0
  62. package/dist/general.test.d.ts +2 -0
  63. package/dist/general.test.d.ts.map +1 -0
  64. package/dist/general.test.js +42 -0
  65. package/dist/general.test.js.map +1 -0
  66. package/dist/generate/alternatives.d.ts +7 -0
  67. package/dist/generate/alternatives.d.ts.map +1 -0
  68. package/dist/generate/alternatives.js +29 -0
  69. package/dist/generate/alternatives.js.map +1 -0
  70. package/dist/generate/erc1155.d.ts +3 -0
  71. package/dist/generate/erc1155.d.ts.map +1 -0
  72. package/dist/generate/erc1155.js +24 -0
  73. package/dist/generate/erc1155.js.map +1 -0
  74. package/dist/generate/erc20.d.ts +3 -0
  75. package/dist/generate/erc20.d.ts.map +1 -0
  76. package/dist/generate/erc20.js +28 -0
  77. package/dist/generate/erc20.js.map +1 -0
  78. package/dist/generate/erc721.d.ts +3 -0
  79. package/dist/generate/erc721.d.ts.map +1 -0
  80. package/dist/generate/erc721.js +28 -0
  81. package/dist/generate/erc721.js.map +1 -0
  82. package/dist/generate/governor.d.ts +3 -0
  83. package/dist/generate/governor.d.ts.map +1 -0
  84. package/dist/generate/governor.js +32 -0
  85. package/dist/generate/governor.js.map +1 -0
  86. package/dist/generate/sources.d.ts +16 -0
  87. package/dist/generate/sources.d.ts.map +1 -0
  88. package/dist/generate/sources.js +79 -0
  89. package/dist/generate/sources.js.map +1 -0
  90. package/dist/governor.d.ts +26 -0
  91. package/dist/governor.d.ts.map +1 -0
  92. package/dist/governor.js +386 -0
  93. package/dist/governor.js.map +1 -0
  94. package/dist/governor.test.d.ts +2 -0
  95. package/dist/governor.test.d.ts.map +1 -0
  96. package/dist/governor.test.js +104 -0
  97. package/dist/governor.test.js.map +1 -0
  98. package/dist/index.d.ts +17 -0
  99. package/dist/index.d.ts.map +1 -0
  100. package/dist/index.js +25 -0
  101. package/dist/index.js.map +1 -0
  102. package/dist/kind.d.ts +4 -0
  103. package/dist/kind.d.ts.map +1 -0
  104. package/dist/kind.js +28 -0
  105. package/dist/kind.js.map +1 -0
  106. package/dist/options.d.ts +11 -0
  107. package/dist/options.d.ts.map +1 -0
  108. package/dist/options.js +40 -0
  109. package/dist/options.js.map +1 -0
  110. package/dist/print-versioned.d.ts +3 -0
  111. package/dist/print-versioned.d.ts.map +1 -0
  112. package/dist/print-versioned.js +12 -0
  113. package/dist/print-versioned.js.map +1 -0
  114. package/dist/print.d.ts +6 -0
  115. package/dist/print.d.ts.map +1 -0
  116. package/dist/print.js +182 -0
  117. package/dist/print.js.map +1 -0
  118. package/dist/scripts/prepare.d.ts +2 -0
  119. package/dist/scripts/prepare.d.ts.map +1 -0
  120. package/dist/scripts/prepare.js +52 -0
  121. package/dist/scripts/prepare.js.map +1 -0
  122. package/dist/set-access-control.d.ts +5 -0
  123. package/dist/set-access-control.d.ts.map +1 -0
  124. package/dist/set-access-control.js +38 -0
  125. package/dist/set-access-control.js.map +1 -0
  126. package/dist/set-info.d.ts +13 -0
  127. package/dist/set-info.d.ts.map +1 -0
  128. package/dist/set-info.js +17 -0
  129. package/dist/set-info.js.map +1 -0
  130. package/dist/set-upgradeable.d.ts +6 -0
  131. package/dist/set-upgradeable.d.ts.map +1 -0
  132. package/dist/set-upgradeable.js +43 -0
  133. package/dist/set-upgradeable.js.map +1 -0
  134. package/dist/test.d.ts +2 -0
  135. package/dist/test.d.ts.map +1 -0
  136. package/dist/test.js +23 -0
  137. package/dist/test.js.map +1 -0
  138. package/dist/utils/define-functions.d.ts +5 -0
  139. package/dist/utils/define-functions.d.ts.map +1 -0
  140. package/dist/utils/define-functions.js +11 -0
  141. package/dist/utils/define-functions.js.map +1 -0
  142. package/dist/utils/duration.d.ts +3 -0
  143. package/dist/utils/duration.d.ts.map +1 -0
  144. package/dist/utils/duration.js +31 -0
  145. package/dist/utils/duration.js.map +1 -0
  146. package/dist/utils/find-cover.d.ts +2 -0
  147. package/dist/utils/find-cover.d.ts.map +1 -0
  148. package/dist/utils/find-cover.js +23 -0
  149. package/dist/utils/find-cover.js.map +1 -0
  150. package/dist/utils/format-lines.d.ts +7 -0
  151. package/dist/utils/format-lines.d.ts.map +1 -0
  152. package/dist/utils/format-lines.js +30 -0
  153. package/dist/utils/format-lines.js.map +1 -0
  154. package/dist/utils/map-values.d.ts +2 -0
  155. package/dist/utils/map-values.d.ts.map +1 -0
  156. package/dist/utils/map-values.js +12 -0
  157. package/dist/utils/map-values.js.map +1 -0
  158. package/dist/utils/sorted-by.d.ts +2 -0
  159. package/dist/utils/sorted-by.d.ts.map +1 -0
  160. package/dist/utils/sorted-by.js +8 -0
  161. package/dist/utils/sorted-by.js.map +1 -0
  162. package/dist/utils/to-identifier.d.ts +2 -0
  163. package/dist/utils/to-identifier.d.ts.map +1 -0
  164. package/dist/utils/to-identifier.js +12 -0
  165. package/dist/utils/to-identifier.js.map +1 -0
  166. package/dist/utils/to-identifier.test.d.ts +2 -0
  167. package/dist/utils/to-identifier.test.d.ts.map +1 -0
  168. package/dist/utils/to-identifier.test.js +21 -0
  169. package/dist/utils/to-identifier.test.js.map +1 -0
  170. package/dist/utils/transitive-closure.d.ts +5 -0
  171. package/dist/utils/transitive-closure.d.ts.map +1 -0
  172. package/dist/utils/transitive-closure.js +27 -0
  173. package/dist/utils/transitive-closure.js.map +1 -0
  174. package/dist/zip.d.ts +4 -0
  175. package/dist/zip.d.ts.map +1 -0
  176. package/dist/zip.js +48 -0
  177. package/dist/zip.js.map +1 -0
  178. package/dist/zip.test.d.ts +2 -0
  179. package/dist/zip.test.d.ts.map +1 -0
  180. package/dist/zip.test.js +37 -0
  181. package/dist/zip.test.js.map +1 -0
  182. package/package.json +37 -0
  183. package/src/add-pausable.ts +32 -0
  184. package/src/api.ts +39 -0
  185. package/src/build-generic.ts +33 -0
  186. package/src/common-functions.ts +11 -0
  187. package/src/common-options.ts +24 -0
  188. package/src/contract.test.ts +164 -0
  189. package/src/contract.test.ts.md +272 -0
  190. package/src/contract.test.ts.snap +0 -0
  191. package/src/contract.ts +201 -0
  192. package/src/erc1155.test.ts +90 -0
  193. package/src/erc1155.test.ts.md +416 -0
  194. package/src/erc1155.test.ts.snap +0 -0
  195. package/src/erc1155.ts +160 -0
  196. package/src/erc20.test.ts +144 -0
  197. package/src/erc20.test.ts.md +571 -0
  198. package/src/erc20.test.ts.snap +0 -0
  199. package/src/erc20.ts +250 -0
  200. package/src/erc721.test.ts +122 -0
  201. package/src/erc721.test.ts.md +517 -0
  202. package/src/erc721.test.ts.snap +0 -0
  203. package/src/erc721.ts +250 -0
  204. package/src/error.ts +7 -0
  205. package/src/generate/alternatives.ts +38 -0
  206. package/src/generate/erc1155.ts +23 -0
  207. package/src/generate/erc20.ts +27 -0
  208. package/src/generate/erc721.ts +27 -0
  209. package/src/generate/governor.ts +30 -0
  210. package/src/generate/sources.ts +91 -0
  211. package/src/governor.test.ts +120 -0
  212. package/src/governor.test.ts.md +1419 -0
  213. package/src/governor.test.ts.snap +0 -0
  214. package/src/governor.ts +445 -0
  215. package/src/index.ts +23 -0
  216. package/src/kind.ts +30 -0
  217. package/src/options.ts +45 -0
  218. package/src/print-versioned.ts +12 -0
  219. package/src/print.ts +236 -0
  220. package/src/scripts/prepare.ts +60 -0
  221. package/src/set-access-control.ts +39 -0
  222. package/src/set-info.ts +24 -0
  223. package/src/set-upgradeable.ts +49 -0
  224. package/src/test.ts +21 -0
  225. package/src/utils/define-functions.ts +18 -0
  226. package/src/utils/duration.ts +34 -0
  227. package/src/utils/find-cover.ts +26 -0
  228. package/src/utils/format-lines.ts +31 -0
  229. package/src/utils/map-values.ts +10 -0
  230. package/src/utils/sorted-by.ts +3 -0
  231. package/src/utils/to-identifier.test.ts +20 -0
  232. package/src/utils/to-identifier.ts +7 -0
  233. package/src/utils/transitive-closure.ts +27 -0
  234. package/src/zip.test.ts +35 -0
  235. package/src/zip.ts +53 -0
package/README.md ADDED
@@ -0,0 +1,82 @@
1
+ # OpenZeppelin Contracts Wizard for Solidity
2
+
3
+ Interactively build a contract out of components from OpenZeppelin Contracts. Provide parameters and desired features for the kind of contract that you want, and the Wizard will generate all of the code necessary. The resulting code is ready to be compiled and deployed, or it can serve as a starting point and customized further with application specific logic.
4
+
5
+ This package provides a programmatic API. For a web interface, see https://wizard.openzeppelin.com
6
+
7
+ ### Installation
8
+
9
+ `npm install @openzeppelin/wizard`
10
+
11
+ ### Contract types
12
+
13
+ The following contract types are supported:
14
+ - `erc20`
15
+ - `erc721`
16
+ - `erc1155`
17
+ - `governor`
18
+
19
+ Each contract type has a `print` function and a `defaults` constant as defined below.
20
+
21
+ ### Functions
22
+
23
+ #### `print`
24
+ ```js
25
+ function print(opts?: ERC20Options): string
26
+ ```
27
+ ```js
28
+ function print(opts?: ERC721Options): string
29
+ ```
30
+ ```js
31
+ function print(opts?: ERC1155Options): string
32
+ ```
33
+ ```js
34
+ function print(opts?: GovernorOptions): string
35
+ ```
36
+ Returns a string representation of a contract generated using the provided options. If `opts` is not provided, uses [`defaults`](#defaults).
37
+
38
+ #### `defaults`
39
+ ```js
40
+ const defaults: Required<ERC20Options>
41
+ ```
42
+ ```js
43
+ const defaults: Required<ERC721Options>
44
+ ```
45
+ ```js
46
+ const defaults: Required<ERC1155Options>
47
+ ```
48
+ ```js
49
+ const defaults: Required<GovernorOptions>
50
+ ```
51
+ The default options that are used for [`print`](#print).
52
+
53
+ ### Examples
54
+
55
+ Import the contract type(s) that you want to use from the `@openzeppelin/wizard` package:
56
+
57
+ ```js
58
+ import { erc20 } from '@openzeppelin/wizard';
59
+ ```
60
+
61
+ To generate the source code for an ERC20 contract with all of the default settings:
62
+ ```js
63
+ const contract = erc20.print();
64
+ ```
65
+
66
+ To generate the source code for an ERC20 contract with a custom name and symbol, along with some custom settings:
67
+ ```js
68
+ const contract = erc20.print({
69
+ name: 'ExampleToken',
70
+ symbol: 'ETK',
71
+ burnable: true,
72
+ premint: '1000000',
73
+ });
74
+ ```
75
+
76
+ To generate the source code for an ERC20 contract with all of the defaults but is upgradeable using the UUPS proxy pattern:
77
+ ```js
78
+ const contract = erc20.print({
79
+ ...erc20.defaults,
80
+ upgradeable: 'uups',
81
+ });
82
+ ```
@@ -0,0 +1,4 @@
1
+ import type { ContractBuilder, BaseFunction } from './contract';
2
+ import { Access } from './set-access-control';
3
+ export declare function addPausable(c: ContractBuilder, access: Access, pausableFns: BaseFunction[]): void;
4
+ //# sourceMappingURL=add-pausable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-pausable.d.ts","sourceRoot":"","sources":["../src/add-pausable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,MAAM,EAAoB,MAAM,sBAAsB,CAAC;AAGhE,wBAAgB,WAAW,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,QAe1F"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addPausable = void 0;
4
+ const set_access_control_1 = require("./set-access-control");
5
+ const define_functions_1 = require("./utils/define-functions");
6
+ function addPausable(c, access, pausableFns) {
7
+ c.addParent({
8
+ name: 'Pausable',
9
+ path: '@openzeppelin/contracts/security/Pausable.sol',
10
+ });
11
+ for (const fn of pausableFns) {
12
+ c.addModifier('whenNotPaused', fn);
13
+ }
14
+ (0, set_access_control_1.setAccessControl)(c, functions.pause, access, 'PAUSER');
15
+ c.addFunctionCode('_pause();', functions.pause);
16
+ (0, set_access_control_1.setAccessControl)(c, functions.unpause, access, 'PAUSER');
17
+ c.addFunctionCode('_unpause();', functions.unpause);
18
+ }
19
+ exports.addPausable = addPausable;
20
+ const functions = (0, define_functions_1.defineFunctions)({
21
+ pause: {
22
+ kind: 'public',
23
+ args: [],
24
+ },
25
+ unpause: {
26
+ kind: 'public',
27
+ args: [],
28
+ },
29
+ });
30
+ //# sourceMappingURL=add-pausable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-pausable.js","sourceRoot":"","sources":["../src/add-pausable.ts"],"names":[],"mappings":";;;AACA,6DAAgE;AAChE,+DAA2D;AAE3D,SAAgB,WAAW,CAAC,CAAkB,EAAE,MAAc,EAAE,WAA2B;IACzF,CAAC,CAAC,SAAS,CAAC;QACV,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,+CAA+C;KACtD,CAAC,CAAC;IAEH,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE;QAC5B,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;KACpC;IAED,IAAA,qCAAgB,EAAC,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAEhD,IAAA,qCAAgB,EAAC,CAAC,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC,CAAC,eAAe,CAAC,aAAa,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;AACtD,CAAC;AAfD,kCAeC;AAED,MAAM,SAAS,GAAG,IAAA,kCAAe,EAAC;IAChC,KAAK,EAAE;QACL,IAAI,EAAE,QAAiB;QACvB,IAAI,EAAE,EAAE;KACT;IAED,OAAO,EAAE;QACP,IAAI,EAAE,QAAiB;QACvB,IAAI,EAAE,EAAE;KACT;CACF,CAAC,CAAC"}
package/dist/api.d.ts ADDED
@@ -0,0 +1,24 @@
1
+ import type { CommonOptions } from './common-options';
2
+ import { ERC20Options } from './erc20';
3
+ import { ERC721Options } from './erc721';
4
+ import { ERC1155Options } from './erc1155';
5
+ import { GovernorOptions } from './governor';
6
+ export interface WizardContractAPI<Options extends CommonOptions> {
7
+ /**
8
+ * Returns a string representation of a contract generated using the provided options. If opts is not provided, uses `defaults`.
9
+ */
10
+ print: (opts?: Options) => string;
11
+ /**
12
+ * The default options that are used for `print`.
13
+ */
14
+ defaults: Required<Options>;
15
+ }
16
+ export declare type ERC20 = WizardContractAPI<ERC20Options>;
17
+ export declare type ERC721 = WizardContractAPI<ERC721Options>;
18
+ export declare type ERC1155 = WizardContractAPI<ERC1155Options>;
19
+ export declare type Governor = WizardContractAPI<GovernorOptions>;
20
+ export declare const erc20: ERC20;
21
+ export declare const erc721: ERC721;
22
+ export declare const erc1155: ERC1155;
23
+ export declare const governor: Governor;
24
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAyC,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAA2C,aAAa,EAAE,MAAM,UAAU,CAAC;AAClF,OAAO,EAA6C,cAAc,EAAE,MAAM,WAAW,CAAC;AACtF,OAAO,EAA+C,eAAe,EAAE,MAAM,YAAY,CAAC;AAE1F,MAAM,WAAW,iBAAiB,CAAC,OAAO,SAAS,aAAa;IAC9D;;OAEG;IACH,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;IAElC;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;CAC7B;AAED,oBAAY,KAAK,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;AACpD,oBAAY,MAAM,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;AACtD,oBAAY,OAAO,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;AACxD,oBAAY,QAAQ,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAE1D,eAAO,MAAM,KAAK,EAAE,KAGnB,CAAA;AACD,eAAO,MAAM,MAAM,EAAE,MAGpB,CAAA;AACD,eAAO,MAAM,OAAO,EAAE,OAGrB,CAAA;AACD,eAAO,MAAM,QAAQ,EAAE,QAGtB,CAAA"}
package/dist/api.js ADDED
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.governor = exports.erc1155 = exports.erc721 = exports.erc20 = void 0;
4
+ const erc20_1 = require("./erc20");
5
+ const erc721_1 = require("./erc721");
6
+ const erc1155_1 = require("./erc1155");
7
+ const governor_1 = require("./governor");
8
+ exports.erc20 = {
9
+ print: erc20_1.printERC20,
10
+ defaults: erc20_1.defaults
11
+ };
12
+ exports.erc721 = {
13
+ print: erc721_1.printERC721,
14
+ defaults: erc721_1.defaults
15
+ };
16
+ exports.erc1155 = {
17
+ print: erc1155_1.printERC1155,
18
+ defaults: erc1155_1.defaults
19
+ };
20
+ exports.governor = {
21
+ print: governor_1.printGovernor,
22
+ defaults: governor_1.defaults
23
+ };
24
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;AACA,mCAA8E;AAC9E,qCAAkF;AAClF,uCAAsF;AACtF,yCAA0F;AAmB7E,QAAA,KAAK,GAAU;IAC1B,KAAK,EAAE,kBAAU;IACjB,QAAQ,EAAE,gBAAa;CACxB,CAAA;AACY,QAAA,MAAM,GAAW;IAC5B,KAAK,EAAE,oBAAW;IAClB,QAAQ,EAAE,iBAAc;CACzB,CAAA;AACY,QAAA,OAAO,GAAY;IAC9B,KAAK,EAAE,sBAAY;IACnB,QAAQ,EAAE,kBAAe;CAC1B,CAAA;AACY,QAAA,QAAQ,GAAa;IAChC,KAAK,EAAE,wBAAa;IACpB,QAAQ,EAAE,mBAAgB;CAC3B,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { ERC20Options } from './erc20';
2
+ import { ERC721Options } from './erc721';
3
+ import { ERC1155Options } from './erc1155';
4
+ import { GovernorOptions } from './governor';
5
+ export interface KindedOptions {
6
+ ERC20: {
7
+ kind: 'ERC20';
8
+ } & ERC20Options;
9
+ ERC721: {
10
+ kind: 'ERC721';
11
+ } & ERC721Options;
12
+ ERC1155: {
13
+ kind: 'ERC1155';
14
+ } & ERC1155Options;
15
+ Governor: {
16
+ kind: 'Governor';
17
+ } & GovernorOptions;
18
+ }
19
+ export declare type GenericOptions = KindedOptions[keyof KindedOptions];
20
+ export declare function buildGeneric(opts: GenericOptions): import("./contract").Contract;
21
+ //# sourceMappingURL=build-generic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-generic.d.ts","sourceRoot":"","sources":["../src/build-generic.ts"],"names":[],"mappings":"AAAA,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,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,QAAQ,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,GAAG,eAAe,CAAC;CAClD;AAED,oBAAY,cAAc,GAAG,aAAa,CAAC,MAAM,aAAa,CAAC,CAAC;AAEhE,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,iCAkBhD"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildGeneric = void 0;
4
+ const erc20_1 = require("./erc20");
5
+ const erc721_1 = require("./erc721");
6
+ const erc1155_1 = require("./erc1155");
7
+ const governor_1 = require("./governor");
8
+ function buildGeneric(opts) {
9
+ switch (opts.kind) {
10
+ case 'ERC20':
11
+ return (0, erc20_1.buildERC20)(opts);
12
+ case 'ERC721':
13
+ return (0, erc721_1.buildERC721)(opts);
14
+ case 'ERC1155':
15
+ return (0, erc1155_1.buildERC1155)(opts);
16
+ case 'Governor':
17
+ return (0, governor_1.buildGovernor)(opts);
18
+ default:
19
+ const _ = opts;
20
+ throw new Error('Unknown ERC');
21
+ }
22
+ }
23
+ exports.buildGeneric = buildGeneric;
24
+ //# sourceMappingURL=build-generic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-generic.js","sourceRoot":"","sources":["../src/build-generic.ts"],"names":[],"mappings":";;;AAAA,mCAAmD;AACnD,qCAAsD;AACtD,uCAAyD;AACzD,yCAA4D;AAW5D,SAAgB,YAAY,CAAC,IAAoB;IAC/C,QAAQ,IAAI,CAAC,IAAI,EAAE;QACjB,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,UAAU;YACb,OAAO,IAAA,wBAAa,EAAC,IAAI,CAAC,CAAC;QAE7B;YACE,MAAM,CAAC,GAAU,IAAI,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;KAClC;AACH,CAAC;AAlBD,oCAkBC"}
@@ -0,0 +1,3 @@
1
+ import type { BaseFunction } from './contract';
2
+ export declare const supportsInterface: BaseFunction;
3
+ //# sourceMappingURL=common-functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-functions.d.ts","sourceRoot":"","sources":["../src/common-functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,iBAAiB,EAAE,YAQ/B,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.supportsInterface = void 0;
4
+ exports.supportsInterface = {
5
+ name: 'supportsInterface',
6
+ kind: 'public',
7
+ args: [
8
+ { name: 'interfaceId', type: 'bytes4' },
9
+ ],
10
+ returns: ['bool'],
11
+ mutability: 'view',
12
+ };
13
+ //# sourceMappingURL=common-functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-functions.js","sourceRoot":"","sources":["../src/common-functions.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAAiB;IAC7C,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE;QACJ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE;KACxC;IACD,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM;CACnB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Access } from "./set-access-control";
2
+ import type { Info } from "./set-info";
3
+ import type { Upgradeable } from "./set-upgradeable";
4
+ export declare const defaults: Required<CommonOptions>;
5
+ export interface CommonOptions {
6
+ access?: Access;
7
+ upgradeable?: Upgradeable;
8
+ info?: Info;
9
+ }
10
+ export declare function withCommonDefaults(opts: CommonOptions): Required<CommonOptions>;
11
+ //# sourceMappingURL=common-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-options.d.ts","sourceRoot":"","sources":["../src/common-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAInC,CAAC;AAEX,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,CAM/E"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withCommonDefaults = exports.defaults = void 0;
4
+ const set_info_1 = require("./set-info");
5
+ exports.defaults = {
6
+ access: 'ownable',
7
+ upgradeable: false,
8
+ info: set_info_1.defaults,
9
+ };
10
+ function withCommonDefaults(opts) {
11
+ var _a, _b, _c;
12
+ return {
13
+ access: (_a = opts.access) !== null && _a !== void 0 ? _a : 'ownable',
14
+ upgradeable: (_b = opts.upgradeable) !== null && _b !== void 0 ? _b : false,
15
+ info: (_c = opts.info) !== null && _c !== void 0 ? _c : {},
16
+ };
17
+ }
18
+ exports.withCommonDefaults = withCommonDefaults;
19
+ //# sourceMappingURL=common-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-options.js","sourceRoot":"","sources":["../src/common-options.ts"],"names":[],"mappings":";;;AAEA,yCAAsD;AAGzC,QAAA,QAAQ,GAA4B;IAC/C,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE,KAAK;IAClB,IAAI,EAAE,mBAAY;CACV,CAAC;AAQX,SAAgB,kBAAkB,CAAC,IAAmB;;IACpD,OAAO;QACL,MAAM,EAAE,MAAA,IAAI,CAAC,MAAM,mCAAI,SAAS;QAChC,WAAW,EAAE,MAAA,IAAI,CAAC,WAAW,mCAAI,KAAK;QACtC,IAAI,EAAE,MAAA,IAAI,CAAC,IAAI,mCAAI,EAAE;KACtB,CAAC;AACJ,CAAC;AAND,gDAMC"}
@@ -0,0 +1,86 @@
1
+ export interface Contract {
2
+ name: string;
3
+ license: string;
4
+ parents: Parent[];
5
+ using: Using[];
6
+ natspecTags: NatspecTag[];
7
+ imports: string[];
8
+ functions: ContractFunction[];
9
+ constructorCode: string[];
10
+ constructorArgs: FunctionArgument[];
11
+ variables: string[];
12
+ upgradeable: boolean;
13
+ }
14
+ export declare type Value = string | number | {
15
+ lit: string;
16
+ } | {
17
+ note: string;
18
+ value: Value;
19
+ };
20
+ export interface Parent {
21
+ contract: ParentContract;
22
+ params: Value[];
23
+ }
24
+ export interface ParentContract {
25
+ name: string;
26
+ path: string;
27
+ }
28
+ export interface Using {
29
+ library: ParentContract;
30
+ usingFor: string;
31
+ }
32
+ export interface BaseFunction {
33
+ name: string;
34
+ args: FunctionArgument[];
35
+ returns?: string[];
36
+ kind: FunctionKind;
37
+ mutability?: FunctionMutability;
38
+ }
39
+ export interface ContractFunction extends BaseFunction {
40
+ override: Set<string>;
41
+ modifiers: string[];
42
+ code: string[];
43
+ mutability: FunctionMutability;
44
+ final: boolean;
45
+ }
46
+ export declare type FunctionKind = 'internal' | 'public';
47
+ export declare type FunctionMutability = typeof mutabilityRank[number];
48
+ declare const mutabilityRank: readonly ["pure", "view", "nonpayable", "payable"];
49
+ export interface FunctionArgument {
50
+ type: string;
51
+ name: string;
52
+ }
53
+ export interface NatspecTag {
54
+ key: string;
55
+ value: string;
56
+ }
57
+ export declare class ContractBuilder implements Contract {
58
+ readonly name: string;
59
+ license: string;
60
+ upgradeable: boolean;
61
+ readonly using: Using[];
62
+ readonly natspecTags: NatspecTag[];
63
+ readonly constructorArgs: FunctionArgument[];
64
+ readonly constructorCode: string[];
65
+ readonly variableSet: Set<string>;
66
+ private parentMap;
67
+ private functionMap;
68
+ constructor(name: string);
69
+ get parents(): Parent[];
70
+ get imports(): string[];
71
+ get functions(): ContractFunction[];
72
+ get variables(): string[];
73
+ addParent(contract: ParentContract, params?: Value[]): boolean;
74
+ addUsing(library: ParentContract, usingFor: string): void;
75
+ addOverride(parent: string, baseFn: BaseFunction, mutability?: FunctionMutability): void;
76
+ addModifier(modifier: string, baseFn: BaseFunction): void;
77
+ addNatspecTag(key: string, value: string): void;
78
+ private addFunction;
79
+ addConstructorArgument(arg: FunctionArgument): void;
80
+ addConstructorCode(code: string): void;
81
+ addFunctionCode(code: string, baseFn: BaseFunction, mutability?: FunctionMutability): void;
82
+ setFunctionBody(code: string[], baseFn: BaseFunction, mutability?: FunctionMutability): void;
83
+ addVariable(code: string): boolean;
84
+ }
85
+ export {};
86
+ //# sourceMappingURL=contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContractBuilder = void 0;
4
+ const to_identifier_1 = require("./utils/to-identifier");
5
+ // Order is important
6
+ const mutabilityRank = ['pure', 'view', 'nonpayable', 'payable'];
7
+ function maxMutability(a, b) {
8
+ return mutabilityRank[Math.max(mutabilityRank.indexOf(a), mutabilityRank.indexOf(b))];
9
+ }
10
+ class ContractBuilder {
11
+ constructor(name) {
12
+ this.license = 'MIT';
13
+ this.upgradeable = false;
14
+ this.using = [];
15
+ this.natspecTags = [];
16
+ this.constructorArgs = [];
17
+ this.constructorCode = [];
18
+ this.variableSet = new Set();
19
+ this.parentMap = new Map();
20
+ this.functionMap = new Map();
21
+ this.name = (0, to_identifier_1.toIdentifier)(name, true);
22
+ }
23
+ get parents() {
24
+ return [...this.parentMap.values()].sort((a, b) => {
25
+ if (a.contract.name === 'Initializable') {
26
+ return -1;
27
+ }
28
+ else if (b.contract.name === 'Initializable') {
29
+ return 1;
30
+ }
31
+ else {
32
+ return 0;
33
+ }
34
+ });
35
+ }
36
+ get imports() {
37
+ return [
38
+ ...[...this.parentMap.values()].map(p => p.contract.path),
39
+ ...this.using.map(u => u.library.path),
40
+ ];
41
+ }
42
+ get functions() {
43
+ return [...this.functionMap.values()];
44
+ }
45
+ get variables() {
46
+ return [...this.variableSet];
47
+ }
48
+ addParent(contract, params = []) {
49
+ const present = this.parentMap.has(contract.name);
50
+ this.parentMap.set(contract.name, { contract, params });
51
+ return !present;
52
+ }
53
+ addUsing(library, usingFor) {
54
+ this.using.push({ library, usingFor });
55
+ }
56
+ addOverride(parent, baseFn, mutability) {
57
+ const fn = this.addFunction(baseFn);
58
+ fn.override.add(parent);
59
+ if (mutability) {
60
+ fn.mutability = maxMutability(fn.mutability, mutability);
61
+ }
62
+ }
63
+ addModifier(modifier, baseFn) {
64
+ const fn = this.addFunction(baseFn);
65
+ fn.modifiers.push(modifier);
66
+ }
67
+ addNatspecTag(key, value) {
68
+ if (!/^(@custom:)?[a-z][a-z\-]*$/.exec(key))
69
+ throw new Error(`Invalid natspec key: ${key}`);
70
+ this.natspecTags.push({ key, value });
71
+ }
72
+ addFunction(baseFn) {
73
+ const signature = [baseFn.name, '(', ...baseFn.args.map(a => a.name), ')'].join('');
74
+ const got = this.functionMap.get(signature);
75
+ if (got !== undefined) {
76
+ return got;
77
+ }
78
+ else {
79
+ const fn = {
80
+ override: new Set(),
81
+ modifiers: [],
82
+ code: [],
83
+ mutability: 'nonpayable',
84
+ final: false,
85
+ ...baseFn,
86
+ };
87
+ this.functionMap.set(signature, fn);
88
+ return fn;
89
+ }
90
+ }
91
+ addConstructorArgument(arg) {
92
+ this.constructorArgs.push(arg);
93
+ }
94
+ addConstructorCode(code) {
95
+ this.constructorCode.push(code);
96
+ }
97
+ addFunctionCode(code, baseFn, mutability) {
98
+ const fn = this.addFunction(baseFn);
99
+ if (fn.final) {
100
+ throw new Error(`Function ${baseFn.name} is already finalized`);
101
+ }
102
+ fn.code.push(code);
103
+ if (mutability) {
104
+ fn.mutability = maxMutability(fn.mutability, mutability);
105
+ }
106
+ }
107
+ setFunctionBody(code, baseFn, mutability) {
108
+ const fn = this.addFunction(baseFn);
109
+ if (fn.code.length > 0) {
110
+ throw new Error(`Function ${baseFn.name} has additional code`);
111
+ }
112
+ fn.code.push(...code);
113
+ fn.final = true;
114
+ if (mutability) {
115
+ fn.mutability = mutability;
116
+ }
117
+ }
118
+ addVariable(code) {
119
+ const present = this.variableSet.has(code);
120
+ this.variableSet.add(code);
121
+ return !present;
122
+ }
123
+ }
124
+ exports.ContractBuilder = ContractBuilder;
125
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=contract.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.test.d.ts","sourceRoot":"","sources":["../src/contract.test.ts"],"names":[],"mappings":""}