@diamondslab/diamonds 1.1.0 → 1.1.2

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 (215) hide show
  1. package/dist/core/CallbackManager.d.ts +13 -0
  2. package/dist/core/CallbackManager.d.ts.map +1 -0
  3. package/dist/core/CallbackManager.js +95 -0
  4. package/dist/core/CallbackManager.js.map +1 -0
  5. package/dist/core/DeploymentManager.d.ts +10 -0
  6. package/dist/core/DeploymentManager.d.ts.map +1 -0
  7. package/dist/core/DeploymentManager.js +50 -0
  8. package/dist/core/DeploymentManager.js.map +1 -0
  9. package/dist/core/Diamond.d.ts +58 -0
  10. package/dist/core/Diamond.d.ts.map +1 -0
  11. package/dist/core/Diamond.js +146 -0
  12. package/dist/core/Diamond.js.map +1 -0
  13. package/dist/core/DiamondDeployer.d.ts +10 -0
  14. package/dist/core/DiamondDeployer.d.ts.map +1 -0
  15. package/dist/core/DiamondDeployer.js +33 -0
  16. package/dist/core/DiamondDeployer.js.map +1 -0
  17. package/{src/core/index.ts → dist/core/index.d.ts} +2 -1
  18. package/dist/core/index.d.ts.map +1 -0
  19. package/dist/core/index.js +12 -0
  20. package/dist/core/index.js.map +1 -0
  21. package/{src/index.ts → dist/index.d.ts} +1 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +22 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/repositories/DBDeploymentRepository.d.ts +1 -0
  26. package/dist/repositories/DBDeploymentRepository.d.ts.map +1 -0
  27. package/{src/repositories/DBDeploymentRepository.ts → dist/repositories/DBDeploymentRepository.js} +2 -4
  28. package/dist/repositories/DBDeploymentRepository.js.map +1 -0
  29. package/dist/repositories/DeploymentRepository.d.ts +8 -0
  30. package/dist/repositories/DeploymentRepository.d.ts.map +1 -0
  31. package/dist/repositories/DeploymentRepository.js +7 -0
  32. package/dist/repositories/DeploymentRepository.js.map +1 -0
  33. package/dist/repositories/FileDeploymentRepository.d.ts +18 -0
  34. package/dist/repositories/FileDeploymentRepository.d.ts.map +1 -0
  35. package/dist/repositories/FileDeploymentRepository.js +58 -0
  36. package/dist/repositories/FileDeploymentRepository.js.map +1 -0
  37. package/dist/repositories/databaseHandler.d.ts +1 -0
  38. package/dist/repositories/databaseHandler.d.ts.map +1 -0
  39. package/{src/repositories/databaseHandler.ts → dist/repositories/databaseHandler.js} +2 -3
  40. package/dist/repositories/databaseHandler.js.map +1 -0
  41. package/{src/repositories/index.ts → dist/repositories/index.d.ts} +1 -1
  42. package/dist/repositories/index.d.ts.map +1 -0
  43. package/dist/repositories/index.js +20 -0
  44. package/dist/repositories/index.js.map +1 -0
  45. package/dist/repositories/jsonFileHandler.d.ts +81 -0
  46. package/dist/repositories/jsonFileHandler.d.ts.map +1 -0
  47. package/dist/repositories/jsonFileHandler.js +223 -0
  48. package/dist/repositories/jsonFileHandler.js.map +1 -0
  49. package/dist/repositories/prismaDBHandler.d.ts +1 -0
  50. package/dist/repositories/prismaDBHandler.d.ts.map +1 -0
  51. package/{src/repositories/prismaDBHandler.ts → dist/repositories/prismaDBHandler.js} +2 -1
  52. package/dist/repositories/prismaDBHandler.js.map +1 -0
  53. package/dist/schemas/DeploymentSchema.d.ts +95 -0
  54. package/dist/schemas/DeploymentSchema.d.ts.map +1 -0
  55. package/dist/schemas/DeploymentSchema.js +56 -0
  56. package/dist/schemas/DeploymentSchema.js.map +1 -0
  57. package/{src/schemas/index.ts → dist/schemas/index.d.ts} +1 -0
  58. package/dist/schemas/index.d.ts.map +1 -0
  59. package/dist/schemas/index.js +18 -0
  60. package/dist/schemas/index.js.map +1 -0
  61. package/dist/strategies/BaseDeploymentStrategy.d.ts +41 -0
  62. package/dist/strategies/BaseDeploymentStrategy.d.ts.map +1 -0
  63. package/dist/strategies/BaseDeploymentStrategy.js +545 -0
  64. package/dist/strategies/BaseDeploymentStrategy.js.map +1 -0
  65. package/dist/strategies/DeploymentStrategy.d.ts +19 -0
  66. package/dist/strategies/DeploymentStrategy.d.ts.map +1 -0
  67. package/dist/strategies/DeploymentStrategy.js +3 -0
  68. package/dist/strategies/DeploymentStrategy.js.map +1 -0
  69. package/dist/strategies/LocalDeploymentStrategy.d.ts +4 -0
  70. package/dist/strategies/LocalDeploymentStrategy.d.ts.map +1 -0
  71. package/dist/strategies/LocalDeploymentStrategy.js +8 -0
  72. package/dist/strategies/LocalDeploymentStrategy.js.map +1 -0
  73. package/dist/strategies/OZDefenderDeploymentStrategy.d.ts +62 -0
  74. package/dist/strategies/OZDefenderDeploymentStrategy.d.ts.map +1 -0
  75. package/dist/strategies/OZDefenderDeploymentStrategy.js +757 -0
  76. package/dist/strategies/OZDefenderDeploymentStrategy.js.map +1 -0
  77. package/dist/strategies/RPCDeploymentStrategy.d.ts +139 -0
  78. package/dist/strategies/RPCDeploymentStrategy.d.ts.map +1 -0
  79. package/dist/strategies/RPCDeploymentStrategy.js +710 -0
  80. package/dist/strategies/RPCDeploymentStrategy.js.map +1 -0
  81. package/{src/strategies/index.ts → dist/strategies/index.d.ts} +2 -1
  82. package/dist/strategies/index.d.ts.map +1 -0
  83. package/dist/strategies/index.js +12 -0
  84. package/dist/strategies/index.js.map +1 -0
  85. package/dist/types/config.d.ts +26 -0
  86. package/dist/types/config.d.ts.map +1 -0
  87. package/dist/types/config.js +3 -0
  88. package/dist/types/config.js.map +1 -0
  89. package/dist/types/defender.d.ts +22 -0
  90. package/dist/types/defender.d.ts.map +1 -0
  91. package/dist/types/defender.js +3 -0
  92. package/dist/types/defender.js.map +1 -0
  93. package/dist/types/deployments.d.ts +71 -0
  94. package/dist/types/deployments.d.ts.map +1 -0
  95. package/dist/types/deployments.js +20 -0
  96. package/dist/types/deployments.js.map +1 -0
  97. package/{src/types/index.ts → dist/types/index.d.ts} +2 -1
  98. package/dist/types/index.d.ts.map +1 -0
  99. package/dist/types/index.js +21 -0
  100. package/dist/types/index.js.map +1 -0
  101. package/dist/types/rpc.d.ts +35 -0
  102. package/dist/types/rpc.d.ts.map +1 -0
  103. package/dist/types/rpc.js +3 -0
  104. package/dist/types/rpc.js.map +1 -0
  105. package/dist/utils/common.d.ts +20 -0
  106. package/dist/utils/common.d.ts.map +1 -0
  107. package/dist/utils/common.js +45 -0
  108. package/dist/utils/common.js.map +1 -0
  109. package/dist/utils/configurationResolver.d.ts +30 -0
  110. package/dist/utils/configurationResolver.d.ts.map +1 -0
  111. package/dist/utils/configurationResolver.js +151 -0
  112. package/dist/utils/configurationResolver.js.map +1 -0
  113. package/dist/utils/contractMapping.d.ts +29 -0
  114. package/dist/utils/contractMapping.d.ts.map +1 -0
  115. package/dist/utils/contractMapping.js +224 -0
  116. package/dist/utils/contractMapping.js.map +1 -0
  117. package/dist/utils/defenderClients.d.ts +5 -0
  118. package/dist/utils/defenderClients.d.ts.map +1 -0
  119. package/dist/utils/defenderClients.js +21 -0
  120. package/dist/utils/defenderClients.js.map +1 -0
  121. package/dist/utils/defenderStore.d.ts +14 -0
  122. package/dist/utils/defenderStore.d.ts.map +1 -0
  123. package/dist/utils/defenderStore.js +92 -0
  124. package/dist/utils/defenderStore.js.map +1 -0
  125. package/dist/utils/diamondAbiGenerator.d.ts +113 -0
  126. package/dist/utils/diamondAbiGenerator.d.ts.map +1 -0
  127. package/dist/utils/diamondAbiGenerator.js +415 -0
  128. package/dist/utils/diamondAbiGenerator.js.map +1 -0
  129. package/dist/utils/diffDeployedFacets.d.ts +26 -0
  130. package/dist/utils/diffDeployedFacets.d.ts.map +1 -0
  131. package/dist/utils/diffDeployedFacets.js +106 -0
  132. package/dist/utils/diffDeployedFacets.js.map +1 -0
  133. package/{src/utils/index.ts → dist/utils/index.d.ts} +2 -1
  134. package/dist/utils/index.d.ts.map +1 -0
  135. package/dist/utils/index.js +35 -0
  136. package/dist/utils/index.js.map +1 -0
  137. package/dist/utils/loupe.d.ts +44 -0
  138. package/dist/utils/loupe.d.ts.map +1 -0
  139. package/dist/utils/loupe.js +128 -0
  140. package/dist/utils/loupe.js.map +1 -0
  141. package/dist/utils/rpcStore.d.ts +36 -0
  142. package/dist/utils/rpcStore.d.ts.map +1 -0
  143. package/dist/utils/rpcStore.js +166 -0
  144. package/dist/utils/rpcStore.js.map +1 -0
  145. package/dist/utils/signer.d.ts +36 -0
  146. package/dist/utils/signer.d.ts.map +1 -0
  147. package/dist/utils/signer.js +91 -0
  148. package/dist/utils/signer.js.map +1 -0
  149. package/dist/utils/txlogging.d.ts +13 -0
  150. package/dist/utils/txlogging.d.ts.map +1 -0
  151. package/dist/utils/txlogging.js +87 -0
  152. package/dist/utils/txlogging.js.map +1 -0
  153. package/dist/utils/workspaceSetup.d.ts +32 -0
  154. package/dist/utils/workspaceSetup.d.ts.map +1 -0
  155. package/dist/utils/workspaceSetup.js +311 -0
  156. package/dist/utils/workspaceSetup.js.map +1 -0
  157. package/package.json +3 -7
  158. package/docs/DIAMOND_ABI_CONFIGURATION_SUMMARY.md +0 -40
  159. package/docs/DIAMOND_ABI_GENERATION.md +0 -220
  160. package/docs/DIAMOND_ABI_GENERATOR_EXAMPLES.md +0 -1204
  161. package/docs/DIAMOND_ABI_GENERATOR_IMPLEMENTATION.md +0 -947
  162. package/docs/DIAMOND_ABI_GENERATOR_QUICK_REFERENCE.md +0 -336
  163. package/docs/README-DEFENDER.md +0 -394
  164. package/docs/README_DIAMOND_ABI_GENERATOR.md +0 -303
  165. package/docs/ROADMAP.md +0 -250
  166. package/docs/assets/image.png +0 -0
  167. package/docs/defender-integration.md +0 -451
  168. package/docs/diamond_module-BaseStrategy_design-v2.uxf +0 -247
  169. package/docs/diamond_module-BaseStrategy_design.uxf +0 -272
  170. package/docs/monitoring-troubleshooting.md +0 -556
  171. package/docs/testing-guide.md +0 -713
  172. package/examples/Diamond_Config_and_Deployment_examples/diamonds/ProxyDiamond/callbacks/ERC20ProxyFacet.ts +0 -31
  173. package/examples/Diamond_Config_and_Deployment_examples/diamonds/ProxyDiamond/proxydiamond.config.json +0 -27
  174. package/examples/Local_Hardhat_Deployer_Script_example/LocalDiamondDeployer.ts +0 -180
  175. package/examples/OZ_Defender_Deployer_Script_example/OZDiamondDeployer.ts +0 -107
  176. package/examples/OZ_Defender_Deployer_Script_example/run-oz-deploy.ts +0 -17
  177. package/examples/Test_examples/ProxyDiamondDeployment.test.ts +0 -202
  178. package/examples/defender-deployment/.env.example +0 -35
  179. package/examples/defender-deployment/contracts/ExampleDiamond.sol +0 -41
  180. package/examples/defender-deployment/contracts/ExampleFacet1.sol +0 -84
  181. package/examples/defender-deployment/contracts/ExampleFacet2.sol +0 -104
  182. package/examples/defender-deployment/contracts/UpgradeFacet.sol +0 -92
  183. package/examples/defender-deployment/deploy-script.ts +0 -170
  184. package/examples/defender-deployment/diamond-config.json +0 -36
  185. package/examples/defender-deployment/upgrade-script.ts +0 -237
  186. package/examples/hardhat-diamonds-config.example.ts +0 -41
  187. package/src/core/CallbackManager.ts +0 -70
  188. package/src/core/DeploymentManager.ts +0 -64
  189. package/src/core/Diamond.ts +0 -197
  190. package/src/core/DiamondDeployer.ts +0 -36
  191. package/src/repositories/DeploymentRepository.ts +0 -12
  192. package/src/repositories/FileDeploymentRepository.ts +0 -67
  193. package/src/repositories/jsonFileHandler.ts +0 -252
  194. package/src/schemas/DeploymentSchema.ts +0 -71
  195. package/src/strategies/BaseDeploymentStrategy.ts +0 -649
  196. package/src/strategies/DeploymentStrategy.ts +0 -25
  197. package/src/strategies/LocalDeploymentStrategy.ts +0 -5
  198. package/src/strategies/OZDefenderDeploymentStrategy.ts +0 -849
  199. package/src/strategies/RPCDeploymentStrategy.ts +0 -881
  200. package/src/types/config.ts +0 -34
  201. package/src/types/defender.ts +0 -24
  202. package/src/types/deployments.ts +0 -102
  203. package/src/types/rpc.ts +0 -37
  204. package/src/utils/common.ts +0 -54
  205. package/src/utils/configurationResolver.ts +0 -141
  206. package/src/utils/contractMapping.ts +0 -220
  207. package/src/utils/defenderClients.ts +0 -22
  208. package/src/utils/defenderStore.ts +0 -62
  209. package/src/utils/diamondAbiGenerator.ts +0 -523
  210. package/src/utils/diffDeployedFacets.ts +0 -131
  211. package/src/utils/loupe.ts +0 -159
  212. package/src/utils/rpcStore.ts +0 -152
  213. package/src/utils/signer.ts +0 -93
  214. package/src/utils/txlogging.ts +0 -97
  215. package/src/utils/workspaceSetup.ts +0 -315
@@ -1,315 +0,0 @@
1
- import * as fs from 'fs-extra';
2
- import * as path from 'path';
3
- import { ConfigurationResolver } from './configurationResolver';
4
-
5
- /**
6
- * Workspace setup utility for diamonds module
7
- * Supports both standalone and hardhat-diamonds plugin configurations
8
- */
9
- export class WorkspaceSetup {
10
-
11
- /**
12
- * Initialize a new diamond workspace with default structure
13
- */
14
- static async initializeWorkspace(
15
- diamondName: string,
16
- options: {
17
- useHardhatPlugin?: boolean;
18
- contractsPath?: string;
19
- deploymentsPath?: string;
20
- createExampleConfig?: boolean;
21
- } = {}
22
- ): Promise<void> {
23
- const {
24
- useHardhatPlugin = false,
25
- contractsPath = './contracts',
26
- deploymentsPath = './diamonds',
27
- createExampleConfig = true
28
- } = options;
29
-
30
- console.log(`Initializing ${diamondName} workspace...`);
31
-
32
- // Create basic directory structure
33
- const diamondsDir = path.join(process.cwd(), deploymentsPath);
34
- const diamondDir = path.join(diamondsDir, diamondName);
35
- const deploymentsDir = path.join(diamondDir, 'deployments');
36
- const callbacksDir = path.join(diamondDir, 'callbacks');
37
- const contractsDir = path.join(process.cwd(), contractsPath);
38
-
39
- await fs.ensureDir(diamondsDir);
40
- await fs.ensureDir(diamondDir);
41
- await fs.ensureDir(deploymentsDir);
42
- await fs.ensureDir(callbacksDir);
43
- await fs.ensureDir(contractsDir);
44
-
45
- console.log(`✅ Created directory structure for ${diamondName}`);
46
-
47
- // Create default configuration file
48
- if (createExampleConfig) {
49
- await this.createDefaultConfig(diamondName, diamondDir);
50
- }
51
-
52
- // Create example callback file
53
- await this.createExampleCallback(diamondName, callbacksDir);
54
-
55
- // Create example contracts if they don't exist
56
- await this.createExampleContracts(contractsDir);
57
-
58
- // Create hardhat config extension example if requested
59
- if (useHardhatPlugin) {
60
- await this.createHardhatConfigExample(diamondName);
61
- }
62
-
63
- console.log(`✅ ${diamondName} workspace initialized successfully!`);
64
- console.log(`
65
- Configuration files created:
66
- - Diamond config: ${path.join(diamondDir, `${diamondName.toLowerCase()}.config.json`)}
67
- - Callbacks: ${path.join(callbacksDir, 'ExampleFacet.ts')}
68
- - Contracts: ${contractsDir}
69
-
70
- ${useHardhatPlugin ?
71
- '- Hardhat config example: ./hardhat-diamonds-config.example.ts' :
72
- '- Using standalone mode (no hardhat plugin required)'
73
- }
74
-
75
- Next steps:
76
- 1. Customize your diamond configuration in the config file
77
- 2. Add your facet contracts to ${contractsPath}
78
- 3. Implement callback functions in ${path.join(callbacksDir)}
79
- 4. Deploy using: DiamondDeployer with your chosen strategy
80
- `);
81
- }
82
-
83
- /**
84
- * Create a default diamond configuration file
85
- */
86
- private static async createDefaultConfig(diamondName: string, diamondDir: string): Promise<void> {
87
- const configPath = path.join(diamondDir, `${diamondName.toLowerCase()}.config.json`);
88
-
89
- if (await fs.pathExists(configPath)) {
90
- console.log(`⚠️ Configuration file already exists: ${configPath}`);
91
- return;
92
- }
93
-
94
- const defaultConfig = {
95
- protocolVersion: 0.0,
96
- facets: {
97
- DiamondCutFacet: {
98
- priority: 10,
99
- versions: {
100
- "0.0": {}
101
- }
102
- },
103
- DiamondLoupeFacet: {
104
- priority: 20,
105
- versions: {
106
- "0.0": {}
107
- }
108
- },
109
- ExampleFacet: {
110
- priority: 30,
111
- versions: {
112
- "0.0": {
113
- callbacks: ["exampleCallback"],
114
- deployInit: "initialize()",
115
- upgradeInit: "reinitialize()"
116
- }
117
- }
118
- }
119
- }
120
- };
121
-
122
- await fs.writeJson(configPath, defaultConfig, { spaces: 2 });
123
- console.log(`✅ Created default configuration: ${configPath}`);
124
- }
125
-
126
- /**
127
- * Create an example callback file
128
- */
129
- private static async createExampleCallback(diamondName: string, callbacksDir: string): Promise<void> {
130
- const callbackPath = path.join(callbacksDir, 'ExampleFacet.ts');
131
-
132
- if (await fs.pathExists(callbackPath)) {
133
- console.log(`⚠️ Callback file already exists: ${callbackPath}`);
134
- return;
135
- }
136
-
137
- const callbackContent = `import { CallbackArgs } from "../../../src/types";
138
-
139
- /**
140
- * Example callback function for ExampleFacet
141
- * This function will be called after the facet is deployed
142
- */
143
- export async function exampleCallback(args: CallbackArgs) {
144
- const { diamond } = args;
145
-
146
- console.log(\`Running example callback for \${diamond.diamondName} on \${diamond.networkName}\`);
147
-
148
- // Add your post-deployment logic here
149
- // For example:
150
- // - Initialize contract state
151
- // - Set up permissions
152
- // - Configure parameters
153
-
154
- console.log('Example callback completed successfully');
155
- }
156
-
157
- /**
158
- * Initialize function called during initial deployment
159
- */
160
- export async function initialize(args: CallbackArgs) {
161
- const { diamond } = args;
162
- console.log(\`Initializing \${diamond.diamondName}...\`);
163
- // Add initialization logic here
164
- }
165
-
166
- /**
167
- * Reinitialize function called during upgrades
168
- */
169
- export async function reinitialize(args: CallbackArgs) {
170
- const { diamond } = args;
171
- console.log(\`Reinitializing \${diamond.diamondName}...\`);
172
- // Add reinitialization logic here
173
- }
174
- `;
175
-
176
- await fs.writeFile(callbackPath, callbackContent);
177
- console.log(`✅ Created example callback: ${callbackPath}`);
178
- }
179
-
180
- /**
181
- * Create example contract files if they don't exist
182
- */
183
- private static async createExampleContracts(contractsDir: string): Promise<void> {
184
- const exampleFacetPath = path.join(contractsDir, 'ExampleFacet.sol');
185
-
186
- if (await fs.pathExists(exampleFacetPath)) {
187
- console.log(`⚠️ Example contract already exists: ${exampleFacetPath}`);
188
- return;
189
- }
190
-
191
- const exampleFacetContent = `// SPDX-License-Identifier: MIT
192
- pragma solidity ^0.8.0;
193
-
194
- /**
195
- * @title ExampleFacet
196
- * @dev Example facet contract for diamond pattern
197
- */
198
- contract ExampleFacet {
199
- // State variables
200
- uint256 private value;
201
- bool private initialized;
202
-
203
- // Events
204
- event ValueSet(uint256 newValue);
205
- event Initialized();
206
-
207
- /**
208
- * @dev Initialize the facet
209
- */
210
- function initialize() external {
211
- require(!initialized, "Already initialized");
212
- initialized = true;
213
- value = 0;
214
- emit Initialized();
215
- }
216
-
217
- /**
218
- * @dev Reinitialize during upgrades
219
- */
220
- function reinitialize() external {
221
- initialized = true;
222
- emit Initialized();
223
- }
224
-
225
- /**
226
- * @dev Set a value
227
- */
228
- function setValue(uint256 _value) external {
229
- require(initialized, "Not initialized");
230
- value = _value;
231
- emit ValueSet(_value);
232
- }
233
-
234
- /**
235
- * @dev Get the current value
236
- */
237
- function getValue() external view returns (uint256) {
238
- return value;
239
- }
240
-
241
- /**
242
- * @dev Check if initialized
243
- */
244
- function isInitialized() external view returns (bool) {
245
- return initialized;
246
- }
247
- }
248
- `;
249
-
250
- await fs.writeFile(exampleFacetPath, exampleFacetContent);
251
- console.log(`✅ Created example contract: ${exampleFacetPath}`);
252
- }
253
-
254
- /**
255
- * Create hardhat config example for hardhat-diamonds plugin
256
- */
257
- private static async createHardhatConfigExample(diamondName: string): Promise<void> {
258
- const configPath = path.join(process.cwd(), 'hardhat-diamonds-config.example.ts');
259
-
260
- if (await fs.pathExists(configPath)) {
261
- console.log(`⚠️ Hardhat config example already exists: ${configPath}`);
262
- return;
263
- }
264
-
265
- const configContent = `// Example hardhat.config.ts extension for hardhat-diamonds
266
- // Copy this configuration to your hardhat.config.ts when using the hardhat-diamonds plugin
267
-
268
- import { HardhatUserConfig } from "hardhat/config";
269
- import "@nomiclabs/hardhat-waffle";
270
- import "@nomiclabs/hardhat-ethers";
271
- // import "@gnus.ai/hardhat-diamonds"; // Uncomment when plugin is available
272
-
273
- declare module "hardhat/types/config" {
274
- interface HardhatUserConfig {
275
- diamonds?: {
276
- [diamondName: string]: {
277
- deploymentsPath?: string;
278
- contractsPath?: string;
279
- callbacksPath?: string;
280
- configFilePath?: string;
281
- };
282
- };
283
- }
284
- }
285
-
286
- const config: HardhatUserConfig = {
287
- solidity: "0.8.17",
288
-
289
- // Diamond configurations
290
- diamonds: {
291
- ${diamondName}: {
292
- deploymentsPath: "./diamonds",
293
- contractsPath: "./contracts",
294
- callbacksPath: "./diamonds/${diamondName}/callbacks",
295
- configFilePath: "./diamonds/${diamondName}/${diamondName.toLowerCase()}.config.json",
296
- },
297
-
298
- // Add more diamond configurations as needed
299
- },
300
-
301
- networks: {
302
- hardhat: {
303
- chainId: 31337,
304
- },
305
- // Add other networks as needed
306
- },
307
- };
308
-
309
- export default config;
310
- `;
311
-
312
- await fs.writeFile(configPath, configContent);
313
- console.log(`✅ Created Hardhat config example: ${configPath}`);
314
- }
315
- }