create-fhevm-example 1.3.2 → 1.4.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 (125) hide show
  1. package/contracts/advanced/BlindAuction.sol +255 -0
  2. package/contracts/advanced/EncryptedEscrow.sol +315 -0
  3. package/contracts/advanced/HiddenVoting.sol +231 -0
  4. package/contracts/advanced/PrivateKYC.sol +309 -0
  5. package/contracts/advanced/PrivatePayroll.sol +285 -0
  6. package/contracts/basic/decryption/PublicDecryptMultipleValues.sol +160 -0
  7. package/contracts/basic/decryption/PublicDecryptSingleValue.sol +142 -0
  8. package/contracts/basic/decryption/UserDecryptMultipleValues.sol +61 -0
  9. package/contracts/basic/decryption/UserDecryptSingleValue.sol +59 -0
  10. package/contracts/basic/encryption/EncryptMultipleValues.sol +72 -0
  11. package/contracts/basic/encryption/EncryptSingleValue.sol +44 -0
  12. package/contracts/basic/encryption/FHECounter.sol +54 -0
  13. package/contracts/basic/fhe-operations/FHEAdd.sol +51 -0
  14. package/contracts/basic/fhe-operations/FHEArithmetic.sol +99 -0
  15. package/contracts/basic/fhe-operations/FHEComparison.sol +116 -0
  16. package/contracts/basic/fhe-operations/FHEIfThenElse.sol +53 -0
  17. package/contracts/concepts/FHEAccessControl.sol +94 -0
  18. package/contracts/concepts/FHEAntiPatterns.sol +329 -0
  19. package/contracts/concepts/FHEHandles.sol +128 -0
  20. package/contracts/concepts/FHEInputProof.sol +104 -0
  21. package/contracts/gaming/EncryptedLottery.sol +298 -0
  22. package/contracts/gaming/EncryptedPoker.sol +337 -0
  23. package/contracts/gaming/RockPaperScissors.sol +213 -0
  24. package/contracts/openzeppelin/ERC7984.sol +85 -0
  25. package/contracts/openzeppelin/ERC7984ERC20Wrapper.sol +43 -0
  26. package/contracts/openzeppelin/SwapERC7984ToERC20.sol +110 -0
  27. package/contracts/openzeppelin/SwapERC7984ToERC7984.sol +48 -0
  28. package/contracts/openzeppelin/VestingWallet.sol +147 -0
  29. package/contracts/openzeppelin/mocks/ERC20Mock.sol +31 -0
  30. package/dist/scripts/commands/add-mode.d.ts.map +1 -0
  31. package/dist/scripts/{add-mode.js → commands/add-mode.js} +27 -61
  32. package/dist/scripts/commands/doctor.d.ts.map +1 -0
  33. package/dist/scripts/{doctor.js → commands/doctor.js} +2 -2
  34. package/dist/scripts/commands/generate-config.d.ts.map +1 -0
  35. package/dist/scripts/{generate-config.js → commands/generate-config.js} +3 -10
  36. package/dist/scripts/commands/generate-docs.d.ts.map +1 -0
  37. package/dist/scripts/{generate-docs.js → commands/generate-docs.js} +4 -3
  38. package/dist/scripts/commands/maintenance.d.ts.map +1 -0
  39. package/dist/scripts/{maintenance.js → commands/maintenance.js} +11 -10
  40. package/dist/scripts/index.js +14 -33
  41. package/dist/scripts/{builders.d.ts → shared/builders.d.ts} +2 -2
  42. package/dist/scripts/shared/builders.d.ts.map +1 -0
  43. package/dist/scripts/{builders.js → shared/builders.js} +49 -30
  44. package/dist/scripts/{config.d.ts → shared/config.d.ts} +0 -2
  45. package/dist/scripts/shared/config.d.ts.map +1 -0
  46. package/dist/scripts/{config.js → shared/config.js} +48 -59
  47. package/dist/scripts/shared/generators.d.ts +42 -0
  48. package/dist/scripts/shared/generators.d.ts.map +1 -0
  49. package/dist/scripts/{utils.js → shared/generators.js} +34 -271
  50. package/dist/scripts/shared/ui.d.ts.map +1 -0
  51. package/dist/scripts/{ui.js → shared/ui.js} +3 -2
  52. package/dist/scripts/{utils.d.ts → shared/utils.d.ts} +4 -27
  53. package/dist/scripts/shared/utils.d.ts.map +1 -0
  54. package/dist/scripts/shared/utils.js +228 -0
  55. package/fhevm-hardhat-template/.eslintignore +26 -0
  56. package/fhevm-hardhat-template/.eslintrc.yml +21 -0
  57. package/fhevm-hardhat-template/.github/workflows/main.yml +47 -0
  58. package/fhevm-hardhat-template/.github/workflows/manual-windows.yml +28 -0
  59. package/fhevm-hardhat-template/.github/workflows/manual.yml +28 -0
  60. package/fhevm-hardhat-template/.prettierignore +25 -0
  61. package/fhevm-hardhat-template/.prettierrc.yml +15 -0
  62. package/fhevm-hardhat-template/.solcover.js +4 -0
  63. package/fhevm-hardhat-template/.solhint.json +12 -0
  64. package/fhevm-hardhat-template/.solhintignore +3 -0
  65. package/fhevm-hardhat-template/.vscode/extensions.json +3 -0
  66. package/fhevm-hardhat-template/.vscode/settings.json +9 -0
  67. package/fhevm-hardhat-template/LICENSE +33 -0
  68. package/fhevm-hardhat-template/README.md +110 -0
  69. package/fhevm-hardhat-template/contracts/FHECounter.sol +46 -0
  70. package/fhevm-hardhat-template/deploy/deploy.ts +17 -0
  71. package/fhevm-hardhat-template/hardhat.config.ts +90 -0
  72. package/fhevm-hardhat-template/package-lock.json +10405 -0
  73. package/fhevm-hardhat-template/package.json +104 -0
  74. package/fhevm-hardhat-template/tasks/FHECounter.ts +184 -0
  75. package/fhevm-hardhat-template/tasks/accounts.ts +9 -0
  76. package/fhevm-hardhat-template/test/FHECounter.ts +104 -0
  77. package/fhevm-hardhat-template/test/FHECounterSepolia.ts +104 -0
  78. package/fhevm-hardhat-template/tsconfig.json +23 -0
  79. package/package.json +11 -8
  80. package/test/advanced/BlindAuction.ts +246 -0
  81. package/test/advanced/EncryptedEscrow.ts +295 -0
  82. package/test/advanced/HiddenVoting.ts +268 -0
  83. package/test/advanced/PrivateKYC.ts +382 -0
  84. package/test/advanced/PrivatePayroll.ts +253 -0
  85. package/test/basic/decryption/PublicDecryptMultipleValues.ts +254 -0
  86. package/test/basic/decryption/PublicDecryptSingleValue.ts +264 -0
  87. package/test/basic/decryption/UserDecryptMultipleValues.ts +107 -0
  88. package/test/basic/decryption/UserDecryptSingleValue.ts +97 -0
  89. package/test/basic/encryption/EncryptMultipleValues.ts +110 -0
  90. package/test/basic/encryption/EncryptSingleValue.ts +124 -0
  91. package/test/basic/encryption/FHECounter.ts +112 -0
  92. package/test/basic/fhe-operations/FHEAdd.ts +97 -0
  93. package/test/basic/fhe-operations/FHEArithmetic.ts +161 -0
  94. package/test/basic/fhe-operations/FHEComparison.ts +167 -0
  95. package/test/basic/fhe-operations/FHEIfThenElse.ts +97 -0
  96. package/test/concepts/FHEAccessControl.ts +154 -0
  97. package/test/concepts/FHEAntiPatterns.ts +111 -0
  98. package/test/concepts/FHEHandles.ts +156 -0
  99. package/test/concepts/FHEInputProof.ts +151 -0
  100. package/test/gaming/EncryptedLottery.ts +214 -0
  101. package/test/gaming/EncryptedPoker.ts +349 -0
  102. package/test/gaming/RockPaperScissors.ts +205 -0
  103. package/test/openzeppelin/ERC7984.ts +142 -0
  104. package/test/openzeppelin/ERC7984ERC20Wrapper.ts +71 -0
  105. package/test/openzeppelin/SwapERC7984ToERC20.ts +76 -0
  106. package/test/openzeppelin/SwapERC7984ToERC7984.ts +113 -0
  107. package/test/openzeppelin/VestingWallet.ts +89 -0
  108. package/dist/scripts/add-mode.d.ts.map +0 -1
  109. package/dist/scripts/builders.d.ts.map +0 -1
  110. package/dist/scripts/config.d.ts.map +0 -1
  111. package/dist/scripts/doctor.d.ts.map +0 -1
  112. package/dist/scripts/generate-config.d.ts.map +0 -1
  113. package/dist/scripts/generate-docs.d.ts.map +0 -1
  114. package/dist/scripts/help.d.ts +0 -9
  115. package/dist/scripts/help.d.ts.map +0 -1
  116. package/dist/scripts/help.js +0 -73
  117. package/dist/scripts/maintenance.d.ts.map +0 -1
  118. package/dist/scripts/ui.d.ts.map +0 -1
  119. package/dist/scripts/utils.d.ts.map +0 -1
  120. /package/dist/scripts/{add-mode.d.ts → commands/add-mode.d.ts} +0 -0
  121. /package/dist/scripts/{doctor.d.ts → commands/doctor.d.ts} +0 -0
  122. /package/dist/scripts/{generate-config.d.ts → commands/generate-config.d.ts} +0 -0
  123. /package/dist/scripts/{generate-docs.d.ts → commands/generate-docs.d.ts} +0 -0
  124. /package/dist/scripts/{maintenance.d.ts → commands/maintenance.d.ts} +0 -0
  125. /package/dist/scripts/{ui.d.ts → shared/ui.d.ts} +0 -0
@@ -6,18 +6,13 @@
6
6
  * Run 'npm run generate:config' to regenerate
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.CATEGORIES = exports.EXAMPLES = exports.REPO_BRANCH = exports.REPO_URL = void 0;
9
+ exports.CATEGORIES = exports.EXAMPLES = void 0;
10
10
  exports.getExampleNames = getExampleNames;
11
11
  exports.getCategoryNames = getCategoryNames;
12
12
  exports.getExample = getExample;
13
13
  exports.getCategory = getCategory;
14
14
  exports.getDocsFileName = getDocsFileName;
15
15
  // =============================================================================
16
- // GitHub Repository Configuration
17
- // =============================================================================
18
- exports.REPO_URL = "https://github.com/NecipAkgz/fhevm-example-factory";
19
- exports.REPO_BRANCH = "main";
20
- // =============================================================================
21
16
  // Example Configurations
22
17
  // =============================================================================
23
18
  exports.EXAMPLES = {
@@ -27,7 +22,7 @@ exports.EXAMPLES = {
27
22
  description: "Blind Auction with encrypted bids - only the winning price is revealed",
28
23
  category: "Advanced",
29
24
  docsOutput: "docs/advanced/blind-auction.md",
30
- title: "Blind Auction"
25
+ title: "Blind Auction",
31
26
  },
32
27
  "encrypted-escrow": {
33
28
  contract: "contracts/advanced/EncryptedEscrow.sol",
@@ -35,7 +30,7 @@ exports.EXAMPLES = {
35
30
  description: "Encrypted Escrow service - amounts hidden until release!",
36
31
  category: "Advanced",
37
32
  docsOutput: "docs/advanced/encrypted-escrow.md",
38
- title: "Encrypted Escrow"
33
+ title: "Encrypted Escrow",
39
34
  },
40
35
  "hidden-voting": {
41
36
  contract: "contracts/advanced/HiddenVoting.sol",
@@ -43,7 +38,7 @@ exports.EXAMPLES = {
43
38
  description: "Hidden Voting with encrypted ballots and homomorphic tallying",
44
39
  category: "Advanced",
45
40
  docsOutput: "docs/advanced/hidden-voting.md",
46
- title: "Hidden Voting"
41
+ title: "Hidden Voting",
47
42
  },
48
43
  "private-kyc": {
49
44
  contract: "contracts/advanced/PrivateKYC.sol",
@@ -51,7 +46,7 @@ exports.EXAMPLES = {
51
46
  description: "Private KYC - verify identity without revealing personal data!",
52
47
  category: "Advanced",
53
48
  docsOutput: "docs/advanced/private-kyc.md",
54
- title: "Private KYC"
49
+ title: "Private KYC",
55
50
  },
56
51
  "private-payroll": {
57
52
  contract: "contracts/advanced/PrivatePayroll.sol",
@@ -59,7 +54,7 @@ exports.EXAMPLES = {
59
54
  description: "Private Payroll system - salaries stay encrypted, only employees see their own!",
60
55
  category: "Advanced",
61
56
  docsOutput: "docs/advanced/private-payroll.md",
62
- title: "Private Payroll"
57
+ title: "Private Payroll",
63
58
  },
64
59
  "public-decrypt-multiple-values": {
65
60
  contract: "contracts/basic/decryption/PublicDecryptMultipleValues.sol",
@@ -67,7 +62,7 @@ exports.EXAMPLES = {
67
62
  description: "Implements a simple 8-sided Die Roll game demonstrating public, permissionless decryption",
68
63
  category: "Basic - Decryption",
69
64
  docsOutput: "docs/basic/decryption/public-decrypt-multiple-values.md",
70
- title: "Public Decrypt Multiple Values"
65
+ title: "Public Decrypt Multiple Values",
71
66
  },
72
67
  "public-decrypt-single-value": {
73
68
  contract: "contracts/basic/decryption/PublicDecryptSingleValue.sol",
@@ -75,7 +70,7 @@ exports.EXAMPLES = {
75
70
  description: "Implements a simple Heads or Tails game demonstrating public, permissionless decryption",
76
71
  category: "Basic - Decryption",
77
72
  docsOutput: "docs/basic/decryption/public-decrypt-single-value.md",
78
- title: "Public Decrypt Single Value"
73
+ title: "Public Decrypt Single Value",
79
74
  },
80
75
  "user-decrypt-multiple-values": {
81
76
  contract: "contracts/basic/decryption/UserDecryptMultipleValues.sol",
@@ -83,7 +78,7 @@ exports.EXAMPLES = {
83
78
  description: "Demonstrates user decryption of multiple encrypted values",
84
79
  category: "Basic - Decryption",
85
80
  docsOutput: "docs/basic/decryption/user-decrypt-multiple-values.md",
86
- title: "User Decrypt Multiple Values"
81
+ title: "User Decrypt Multiple Values",
87
82
  },
88
83
  "user-decrypt-single-value": {
89
84
  contract: "contracts/basic/decryption/UserDecryptSingleValue.sol",
@@ -91,7 +86,7 @@ exports.EXAMPLES = {
91
86
  description: "Demonstrates the FHE decryption mechanism and highlights common pitfalls",
92
87
  category: "Basic - Decryption",
93
88
  docsOutput: "docs/basic/decryption/user-decrypt-single-value.md",
94
- title: "User Decrypt Single Value"
89
+ title: "User Decrypt Single Value",
95
90
  },
96
91
  "encrypt-multiple-values": {
97
92
  contract: "contracts/basic/encryption/EncryptMultipleValues.sol",
@@ -99,7 +94,7 @@ exports.EXAMPLES = {
99
94
  description: "Encrypting and handling multiple values in a single transaction efficiently.",
100
95
  category: "Basic - Encryption",
101
96
  docsOutput: "docs/basic/encryption/encrypt-multiple-values.md",
102
- title: "Encrypt Multiple Values"
97
+ title: "Encrypt Multiple Values",
103
98
  },
104
99
  "encrypt-single-value": {
105
100
  contract: "contracts/basic/encryption/EncryptSingleValue.sol",
@@ -107,7 +102,7 @@ exports.EXAMPLES = {
107
102
  description: "FHE encryption mechanism with single values, including common pitfalls and best practices for developers.",
108
103
  category: "Basic - Encryption",
109
104
  docsOutput: "docs/basic/encryption/encrypt-single-value.md",
110
- title: "Encrypt Single Value"
105
+ title: "Encrypt Single Value",
111
106
  },
112
107
  "fhe-counter": {
113
108
  contract: "contracts/basic/encryption/FHECounter.sol",
@@ -115,7 +110,7 @@ exports.EXAMPLES = {
115
110
  description: "Confidential counter implementation using FHEVM, compared with a standard counter to highlight encryption benefits.",
116
111
  category: "Basic - Encryption",
117
112
  docsOutput: "docs/basic/encryption/fhe-counter.md",
118
- title: "FHE Counter"
113
+ title: "FHE Counter",
119
114
  },
120
115
  "fhe-add": {
121
116
  contract: "contracts/basic/fhe-operations/FHEAdd.sol",
@@ -123,7 +118,7 @@ exports.EXAMPLES = {
123
118
  description: "Simple example: adding two encrypted values (a + b)",
124
119
  category: "Basic - FHE Operations",
125
120
  docsOutput: "docs/basic/fhe-operations/fhe-add.md",
126
- title: "FHE Add"
121
+ title: "FHE Add",
127
122
  },
128
123
  "fhe-arithmetic": {
129
124
  contract: "contracts/basic/fhe-operations/FHEArithmetic.sol",
@@ -131,7 +126,7 @@ exports.EXAMPLES = {
131
126
  description: "Demonstrates all FHE arithmetic operations on encrypted integers",
132
127
  category: "Basic - FHE Operations",
133
128
  docsOutput: "docs/basic/fhe-operations/fhe-arithmetic.md",
134
- title: "FHE Arithmetic"
129
+ title: "FHE Arithmetic",
135
130
  },
136
131
  "fhe-comparison": {
137
132
  contract: "contracts/basic/fhe-operations/FHEComparison.sol",
@@ -139,7 +134,7 @@ exports.EXAMPLES = {
139
134
  description: "Demonstrates all FHE comparison operations on encrypted integers",
140
135
  category: "Basic - FHE Operations",
141
136
  docsOutput: "docs/basic/fhe-operations/fhe-comparison.md",
142
- title: "FHE Comparison"
137
+ title: "FHE Comparison",
143
138
  },
144
139
  "fhe-if-then-else": {
145
140
  contract: "contracts/basic/fhe-operations/FHEIfThenElse.sol",
@@ -147,7 +142,7 @@ exports.EXAMPLES = {
147
142
  description: "Demonstrates conditional logic: max(a, b) using encrypted comparison",
148
143
  category: "Basic - FHE Operations",
149
144
  docsOutput: "docs/basic/fhe-operations/fhe-if-then-else.md",
150
- title: "FHE If Then Else"
145
+ title: "FHE If Then Else",
151
146
  },
152
147
  "fhe-access-control": {
153
148
  contract: "contracts/concepts/FHEAccessControl.sol",
@@ -155,7 +150,7 @@ exports.EXAMPLES = {
155
150
  description: "Critical access control patterns in FHEVM: FHE.allow, FHE.allowThis, FHE.allowTransient. Includes common mistakes and correct implementations.",
156
151
  category: "Concepts",
157
152
  docsOutput: "docs/concepts/fhe-access-control.md",
158
- title: "FHE Access Control"
153
+ title: "FHE Access Control",
159
154
  },
160
155
  "fhe-anti-patterns": {
161
156
  contract: "contracts/concepts/FHEAntiPatterns.sol",
@@ -163,7 +158,7 @@ exports.EXAMPLES = {
163
158
  description: "Common FHE mistakes and their correct alternatives. Covers: branching, permissions, require/revert, re-encryption, loops, noise, and deprecated APIs.",
164
159
  category: "Concepts",
165
160
  docsOutput: "docs/concepts/fhe-anti-patterns.md",
166
- title: "FHE Anti Patterns"
161
+ title: "FHE Anti Patterns",
167
162
  },
168
163
  "fhe-handles": {
169
164
  contract: "contracts/concepts/FHEHandles.sol",
@@ -171,7 +166,7 @@ exports.EXAMPLES = {
171
166
  description: "Understanding FHE handles: creation, computation, immutability, and symbolic execution in mock mode.",
172
167
  category: "Concepts",
173
168
  docsOutput: "docs/concepts/fhe-handles.md",
174
- title: "FHE Handles"
169
+ title: "FHE Handles",
175
170
  },
176
171
  "fhe-input-proof": {
177
172
  contract: "contracts/concepts/FHEInputProof.sol",
@@ -179,7 +174,7 @@ exports.EXAMPLES = {
179
174
  description: "Explains input proof validation in FHEVM: what proofs are, why they are needed, and how to use them correctly with single and batched inputs.",
180
175
  category: "Concepts",
181
176
  docsOutput: "docs/concepts/fhe-input-proof.md",
182
- title: "FHE Input Proof"
177
+ title: "FHE Input Proof",
183
178
  },
184
179
  "encrypted-lottery": {
185
180
  contract: "contracts/gaming/EncryptedLottery.sol",
@@ -187,7 +182,7 @@ exports.EXAMPLES = {
187
182
  description: "Encrypted Lottery with private ticket numbers - fair and verifiable!",
188
183
  category: "Gaming",
189
184
  docsOutput: "docs/gaming/encrypted-lottery.md",
190
- title: "Encrypted Lottery"
185
+ title: "Encrypted Lottery",
191
186
  },
192
187
  "encrypted-poker": {
193
188
  contract: "contracts/gaming/EncryptedPoker.sol",
@@ -195,7 +190,7 @@ exports.EXAMPLES = {
195
190
  description: "Encrypted Poker - Texas Hold'em with hidden hole cards!",
196
191
  category: "Gaming",
197
192
  docsOutput: "docs/gaming/encrypted-poker.md",
198
- title: "Encrypted Poker"
193
+ title: "Encrypted Poker",
199
194
  },
200
195
  "rock-paper-scissors": {
201
196
  contract: "contracts/gaming/RockPaperScissors.sol",
@@ -203,80 +198,74 @@ exports.EXAMPLES = {
203
198
  description: "Rock-Paper-Scissors game with encrypted moves - fair play guaranteed!",
204
199
  category: "Gaming",
205
200
  docsOutput: "docs/gaming/rock-paper-scissors.md",
206
- title: "Rock Paper Scissors"
201
+ title: "Rock Paper Scissors",
207
202
  },
208
- "erc7984": {
203
+ erc7984: {
209
204
  contract: "contracts/openzeppelin/ERC7984.sol",
210
205
  test: "test/openzeppelin/ERC7984.ts",
211
206
  npmDependencies: {
212
207
  "@openzeppelin/contracts": "^5.4.0",
213
- "@openzeppelin/confidential-contracts": "^0.3.0"
208
+ "@openzeppelin/confidential-contracts": "^0.3.0",
214
209
  },
215
210
  description: "Confidential token using OpenZeppelin's ERC7984 standard",
216
211
  category: "Openzeppelin",
217
212
  docsOutput: "docs/openzeppelin/erc7984.md",
218
- title: "ERC7984"
213
+ title: "ERC7984",
219
214
  },
220
215
  "erc7984-erc20-wrapper": {
221
216
  contract: "contracts/openzeppelin/ERC7984ERC20Wrapper.sol",
222
217
  test: "test/openzeppelin/ERC7984ERC20Wrapper.ts",
223
218
  npmDependencies: {
224
219
  "@openzeppelin/contracts": "^5.4.0",
225
- "@openzeppelin/confidential-contracts": "^0.3.0"
220
+ "@openzeppelin/confidential-contracts": "^0.3.0",
226
221
  },
227
- dependencies: [
228
- "contracts/openzeppelin/mocks/ERC20Mock.sol"
229
- ],
222
+ dependencies: ["contracts/openzeppelin/mocks/ERC20Mock.sol"],
230
223
  description: "Wraps ERC20 tokens into confidential ERC7984 tokens",
231
224
  category: "Openzeppelin",
232
225
  docsOutput: "docs/openzeppelin/erc7984-erc20-wrapper.md",
233
- title: "ERC7984 ERC20 Wrapper"
226
+ title: "ERC7984 ERC20 Wrapper",
234
227
  },
235
228
  "swap-erc7984-to-erc20": {
236
229
  contract: "contracts/openzeppelin/SwapERC7984ToERC20.sol",
237
230
  test: "test/openzeppelin/SwapERC7984ToERC20.ts",
238
231
  npmDependencies: {
239
232
  "@openzeppelin/contracts": "^5.4.0",
240
- "@openzeppelin/confidential-contracts": "^0.3.0"
233
+ "@openzeppelin/confidential-contracts": "^0.3.0",
241
234
  },
242
235
  dependencies: [
243
236
  "contracts/openzeppelin/mocks/ERC20Mock.sol",
244
- "contracts/openzeppelin/ERC7984.sol"
237
+ "contracts/openzeppelin/ERC7984.sol",
245
238
  ],
246
239
  description: "Swap confidential ERC7984 tokens to regular ERC20 tokens",
247
240
  category: "Openzeppelin",
248
241
  docsOutput: "docs/openzeppelin/swap-erc7984-to-erc20.md",
249
- title: "Swap ERC7984 To ERC20"
242
+ title: "Swap ERC7984 To ERC20",
250
243
  },
251
244
  "swap-erc7984-to-erc7984": {
252
245
  contract: "contracts/openzeppelin/SwapERC7984ToERC7984.sol",
253
246
  test: "test/openzeppelin/SwapERC7984ToERC7984.ts",
254
247
  npmDependencies: {
255
- "@openzeppelin/confidential-contracts": "^0.3.0"
248
+ "@openzeppelin/confidential-contracts": "^0.3.0",
256
249
  },
257
- dependencies: [
258
- "contracts/openzeppelin/ERC7984.sol"
259
- ],
250
+ dependencies: ["contracts/openzeppelin/ERC7984.sol"],
260
251
  description: "Fully confidential swap between two ERC7984 tokens",
261
252
  category: "Openzeppelin",
262
253
  docsOutput: "docs/openzeppelin/swap-erc7984-to-erc7984.md",
263
- title: "Swap ERC7984 To ERC7984"
254
+ title: "Swap ERC7984 To ERC7984",
264
255
  },
265
256
  "vesting-wallet": {
266
257
  contract: "contracts/openzeppelin/VestingWallet.sol",
267
258
  test: "test/openzeppelin/VestingWallet.ts",
268
259
  npmDependencies: {
269
260
  "@openzeppelin/contracts": "^5.4.0",
270
- "@openzeppelin/confidential-contracts": "^0.3.0"
261
+ "@openzeppelin/confidential-contracts": "^0.3.0",
271
262
  },
272
- dependencies: [
273
- "contracts/openzeppelin/ERC7984.sol"
274
- ],
263
+ dependencies: ["contracts/openzeppelin/ERC7984.sol"],
275
264
  description: "Linear vesting wallet for ERC7984 tokens - amounts stay encrypted!",
276
265
  category: "Openzeppelin",
277
266
  docsOutput: "docs/openzeppelin/vesting-wallet.md",
278
- title: "Vesting Wallet"
279
- }
267
+ title: "Vesting Wallet",
268
+ },
280
269
  };
281
270
  // =============================================================================
282
271
  // Category Configurations
@@ -304,7 +293,7 @@ exports.CATEGORIES = {
304
293
  {
305
294
  sol: "contracts/advanced/PrivatePayroll.sol",
306
295
  test: "test/advanced/PrivatePayroll.ts",
307
- }
296
+ },
308
297
  ],
309
298
  },
310
299
  basicdecryption: {
@@ -325,7 +314,7 @@ exports.CATEGORIES = {
325
314
  {
326
315
  sol: "contracts/basic/decryption/UserDecryptSingleValue.sol",
327
316
  test: "test/basic/decryption/UserDecryptSingleValue.ts",
328
- }
317
+ },
329
318
  ],
330
319
  },
331
320
  basicencryption: {
@@ -342,7 +331,7 @@ exports.CATEGORIES = {
342
331
  {
343
332
  sol: "contracts/basic/encryption/FHECounter.sol",
344
333
  test: "test/basic/encryption/FHECounter.ts",
345
- }
334
+ },
346
335
  ],
347
336
  },
348
337
  basicfheoperations: {
@@ -363,7 +352,7 @@ exports.CATEGORIES = {
363
352
  {
364
353
  sol: "contracts/basic/fhe-operations/FHEIfThenElse.sol",
365
354
  test: "test/basic/fhe-operations/FHEIfThenElse.ts",
366
- }
355
+ },
367
356
  ],
368
357
  },
369
358
  concepts: {
@@ -384,7 +373,7 @@ exports.CATEGORIES = {
384
373
  {
385
374
  sol: "contracts/concepts/FHEInputProof.sol",
386
375
  test: "test/concepts/FHEInputProof.ts",
387
- }
376
+ },
388
377
  ],
389
378
  },
390
379
  gaming: {
@@ -401,7 +390,7 @@ exports.CATEGORIES = {
401
390
  {
402
391
  sol: "contracts/gaming/RockPaperScissors.sol",
403
392
  test: "test/gaming/RockPaperScissors.ts",
404
- }
393
+ },
405
394
  ],
406
395
  },
407
396
  openzeppelin: {
@@ -426,9 +415,9 @@ exports.CATEGORIES = {
426
415
  {
427
416
  sol: "contracts/openzeppelin/VestingWallet.sol",
428
417
  test: "test/openzeppelin/VestingWallet.ts",
429
- }
418
+ },
430
419
  ],
431
- }
420
+ },
432
421
  };
433
422
  // =============================================================================
434
423
  // Helper Functions
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Generators - Template processing and code generation utilities.
3
+ *
4
+ * Contains functions for scaffolding templates, generating deploy scripts,
5
+ * and creating documentation.
6
+ */
7
+ /**
8
+ * Cleans up the template directory after copying
9
+ */
10
+ export declare function cleanupTemplate(outputDir: string): void;
11
+ /**
12
+ * Generates a deploy script for a contract
13
+ */
14
+ export declare function generateDeployScript(contractName: string): string;
15
+ /**
16
+ * Generates GitBook-compatible markdown documentation
17
+ */
18
+ export declare function generateGitBookMarkdown(description: string, contractContent: string, testContent: string, contractName: string, testFileName: string): string;
19
+ /**
20
+ * Updates package.json with project name and dependencies
21
+ */
22
+ export declare function updateProjectPackageJson(outputDir: string, projectName: string, description?: string, npmDependencies?: Record<string, string>): void;
23
+ /**
24
+ * Runs a command and returns the output
25
+ */
26
+ export declare function runCommand(cmd: string, args: string[], cwd: string): Promise<string>;
27
+ /**
28
+ * Runs a command and returns success status with output
29
+ */
30
+ export declare function runCommandWithStatus(cmd: string, args: string[], cwd: string): Promise<{
31
+ success: boolean;
32
+ output: string;
33
+ }>;
34
+ /**
35
+ * Extracts test results from command output
36
+ */
37
+ export declare function extractTestResults(output: string): string | null;
38
+ /**
39
+ * Extracts error messages from command output
40
+ */
41
+ export declare function extractErrorMessage(output: string): string;
42
+ //# sourceMappingURL=generators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../../scripts/shared/generators.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAiDvD;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAkCjE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,CA2BR;AAMD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,IAAI,CAiBN;AAMD;;GAEG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA2B/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAchE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA4B1D"}