@diamondslab/diamonds 1.0.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 (229) hide show
  1. package/README.md +618 -0
  2. package/diamonds/README.md +3 -0
  3. package/dist/core/CallbackManager.d.ts +13 -0
  4. package/dist/core/CallbackManager.d.ts.map +1 -0
  5. package/dist/core/CallbackManager.js +95 -0
  6. package/dist/core/CallbackManager.js.map +1 -0
  7. package/dist/core/DeploymentManager.d.ts +10 -0
  8. package/dist/core/DeploymentManager.d.ts.map +1 -0
  9. package/dist/core/DeploymentManager.js +50 -0
  10. package/dist/core/DeploymentManager.js.map +1 -0
  11. package/dist/core/Diamond.d.ts +58 -0
  12. package/dist/core/Diamond.d.ts.map +1 -0
  13. package/dist/core/Diamond.js +146 -0
  14. package/dist/core/Diamond.js.map +1 -0
  15. package/dist/core/DiamondDeployer.d.ts +10 -0
  16. package/dist/core/DiamondDeployer.d.ts.map +1 -0
  17. package/dist/core/DiamondDeployer.js +33 -0
  18. package/dist/core/DiamondDeployer.js.map +1 -0
  19. package/dist/core/index.d.ts +5 -0
  20. package/dist/core/index.d.ts.map +1 -0
  21. package/dist/core/index.js +12 -0
  22. package/dist/core/index.js.map +1 -0
  23. package/dist/index.d.ts +6 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +22 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/repositories/DBDeploymentRepository.d.ts +1 -0
  28. package/dist/repositories/DBDeploymentRepository.d.ts.map +1 -0
  29. package/dist/repositories/DBDeploymentRepository.js +20 -0
  30. package/dist/repositories/DBDeploymentRepository.js.map +1 -0
  31. package/dist/repositories/DeploymentRepository.d.ts +8 -0
  32. package/dist/repositories/DeploymentRepository.d.ts.map +1 -0
  33. package/dist/repositories/DeploymentRepository.js +7 -0
  34. package/dist/repositories/DeploymentRepository.js.map +1 -0
  35. package/dist/repositories/FileDeploymentRepository.d.ts +18 -0
  36. package/dist/repositories/FileDeploymentRepository.d.ts.map +1 -0
  37. package/dist/repositories/FileDeploymentRepository.js +58 -0
  38. package/dist/repositories/FileDeploymentRepository.js.map +1 -0
  39. package/dist/repositories/databaseHandler.d.ts +1 -0
  40. package/dist/repositories/databaseHandler.d.ts.map +1 -0
  41. package/dist/repositories/databaseHandler.js +13 -0
  42. package/dist/repositories/databaseHandler.js.map +1 -0
  43. package/dist/repositories/index.d.ts +4 -0
  44. package/dist/repositories/index.d.ts.map +1 -0
  45. package/dist/repositories/index.js +20 -0
  46. package/dist/repositories/index.js.map +1 -0
  47. package/dist/repositories/jsonFileHandler.d.ts +81 -0
  48. package/dist/repositories/jsonFileHandler.d.ts.map +1 -0
  49. package/dist/repositories/jsonFileHandler.js +223 -0
  50. package/dist/repositories/jsonFileHandler.js.map +1 -0
  51. package/dist/repositories/prismaDBHandler.d.ts +1 -0
  52. package/dist/repositories/prismaDBHandler.d.ts.map +1 -0
  53. package/dist/repositories/prismaDBHandler.js +11 -0
  54. package/dist/repositories/prismaDBHandler.js.map +1 -0
  55. package/dist/schemas/DeploymentSchema.d.ts +309 -0
  56. package/dist/schemas/DeploymentSchema.d.ts.map +1 -0
  57. package/dist/schemas/DeploymentSchema.js +56 -0
  58. package/dist/schemas/DeploymentSchema.js.map +1 -0
  59. package/dist/schemas/index.d.ts +2 -0
  60. package/dist/schemas/index.d.ts.map +1 -0
  61. package/dist/schemas/index.js +18 -0
  62. package/dist/schemas/index.js.map +1 -0
  63. package/dist/strategies/BaseDeploymentStrategy.d.ts +41 -0
  64. package/dist/strategies/BaseDeploymentStrategy.d.ts.map +1 -0
  65. package/dist/strategies/BaseDeploymentStrategy.js +545 -0
  66. package/dist/strategies/BaseDeploymentStrategy.js.map +1 -0
  67. package/dist/strategies/DeploymentStrategy.d.ts +19 -0
  68. package/dist/strategies/DeploymentStrategy.d.ts.map +1 -0
  69. package/dist/strategies/DeploymentStrategy.js +3 -0
  70. package/dist/strategies/DeploymentStrategy.js.map +1 -0
  71. package/dist/strategies/LocalDeploymentStrategy.d.ts +4 -0
  72. package/dist/strategies/LocalDeploymentStrategy.d.ts.map +1 -0
  73. package/dist/strategies/LocalDeploymentStrategy.js +8 -0
  74. package/dist/strategies/LocalDeploymentStrategy.js.map +1 -0
  75. package/dist/strategies/OZDefenderDeploymentStrategy.d.ts +62 -0
  76. package/dist/strategies/OZDefenderDeploymentStrategy.d.ts.map +1 -0
  77. package/dist/strategies/OZDefenderDeploymentStrategy.js +757 -0
  78. package/dist/strategies/OZDefenderDeploymentStrategy.js.map +1 -0
  79. package/dist/strategies/RPCDeploymentStrategy.d.ts +139 -0
  80. package/dist/strategies/RPCDeploymentStrategy.d.ts.map +1 -0
  81. package/dist/strategies/RPCDeploymentStrategy.js +710 -0
  82. package/dist/strategies/RPCDeploymentStrategy.js.map +1 -0
  83. package/dist/strategies/index.d.ts +6 -0
  84. package/dist/strategies/index.d.ts.map +1 -0
  85. package/dist/strategies/index.js +12 -0
  86. package/dist/strategies/index.js.map +1 -0
  87. package/dist/types/config.d.ts +26 -0
  88. package/dist/types/config.d.ts.map +1 -0
  89. package/dist/types/config.js +3 -0
  90. package/dist/types/config.js.map +1 -0
  91. package/dist/types/defender.d.ts +22 -0
  92. package/dist/types/defender.d.ts.map +1 -0
  93. package/dist/types/defender.js +3 -0
  94. package/dist/types/defender.js.map +1 -0
  95. package/dist/types/deployments.d.ts +71 -0
  96. package/dist/types/deployments.d.ts.map +1 -0
  97. package/dist/types/deployments.js +20 -0
  98. package/dist/types/deployments.js.map +1 -0
  99. package/dist/types/index.d.ts +5 -0
  100. package/dist/types/index.d.ts.map +1 -0
  101. package/dist/types/index.js +21 -0
  102. package/dist/types/index.js.map +1 -0
  103. package/dist/types/rpc.d.ts +35 -0
  104. package/dist/types/rpc.d.ts.map +1 -0
  105. package/dist/types/rpc.js +3 -0
  106. package/dist/types/rpc.js.map +1 -0
  107. package/dist/utils/common.d.ts +20 -0
  108. package/dist/utils/common.d.ts.map +1 -0
  109. package/dist/utils/common.js +45 -0
  110. package/dist/utils/common.js.map +1 -0
  111. package/dist/utils/configurationResolver.d.ts +30 -0
  112. package/dist/utils/configurationResolver.d.ts.map +1 -0
  113. package/dist/utils/configurationResolver.js +151 -0
  114. package/dist/utils/configurationResolver.js.map +1 -0
  115. package/dist/utils/contractMapping.d.ts +29 -0
  116. package/dist/utils/contractMapping.d.ts.map +1 -0
  117. package/dist/utils/contractMapping.js +224 -0
  118. package/dist/utils/contractMapping.js.map +1 -0
  119. package/dist/utils/defenderClients.d.ts +5 -0
  120. package/dist/utils/defenderClients.d.ts.map +1 -0
  121. package/dist/utils/defenderClients.js +21 -0
  122. package/dist/utils/defenderClients.js.map +1 -0
  123. package/dist/utils/defenderStore.d.ts +14 -0
  124. package/dist/utils/defenderStore.d.ts.map +1 -0
  125. package/dist/utils/defenderStore.js +92 -0
  126. package/dist/utils/defenderStore.js.map +1 -0
  127. package/dist/utils/diamondAbiGenerator.d.ts +113 -0
  128. package/dist/utils/diamondAbiGenerator.d.ts.map +1 -0
  129. package/dist/utils/diamondAbiGenerator.js +415 -0
  130. package/dist/utils/diamondAbiGenerator.js.map +1 -0
  131. package/dist/utils/diffDeployedFacets.d.ts +26 -0
  132. package/dist/utils/diffDeployedFacets.d.ts.map +1 -0
  133. package/dist/utils/diffDeployedFacets.js +106 -0
  134. package/dist/utils/diffDeployedFacets.js.map +1 -0
  135. package/dist/utils/index.d.ts +16 -0
  136. package/dist/utils/index.d.ts.map +1 -0
  137. package/dist/utils/index.js +35 -0
  138. package/dist/utils/index.js.map +1 -0
  139. package/dist/utils/loupe.d.ts +44 -0
  140. package/dist/utils/loupe.d.ts.map +1 -0
  141. package/dist/utils/loupe.js +128 -0
  142. package/dist/utils/loupe.js.map +1 -0
  143. package/dist/utils/rpcStore.d.ts +36 -0
  144. package/dist/utils/rpcStore.d.ts.map +1 -0
  145. package/dist/utils/rpcStore.js +166 -0
  146. package/dist/utils/rpcStore.js.map +1 -0
  147. package/dist/utils/signer.d.ts +36 -0
  148. package/dist/utils/signer.d.ts.map +1 -0
  149. package/dist/utils/signer.js +91 -0
  150. package/dist/utils/signer.js.map +1 -0
  151. package/dist/utils/txlogging.d.ts +13 -0
  152. package/dist/utils/txlogging.d.ts.map +1 -0
  153. package/dist/utils/txlogging.js +87 -0
  154. package/dist/utils/txlogging.js.map +1 -0
  155. package/dist/utils/workspaceSetup.d.ts +32 -0
  156. package/dist/utils/workspaceSetup.d.ts.map +1 -0
  157. package/dist/utils/workspaceSetup.js +311 -0
  158. package/dist/utils/workspaceSetup.js.map +1 -0
  159. package/docs/DIAMOND_ABI_CONFIGURATION_SUMMARY.md +40 -0
  160. package/docs/DIAMOND_ABI_GENERATION.md +220 -0
  161. package/docs/DIAMOND_ABI_GENERATOR_EXAMPLES.md +1204 -0
  162. package/docs/DIAMOND_ABI_GENERATOR_IMPLEMENTATION.md +947 -0
  163. package/docs/DIAMOND_ABI_GENERATOR_QUICK_REFERENCE.md +336 -0
  164. package/docs/README-DEFENDER.md +394 -0
  165. package/docs/README_DIAMOND_ABI_GENERATOR.md +303 -0
  166. package/docs/ROADMAP.md +250 -0
  167. package/docs/assets/image.png +0 -0
  168. package/docs/defender-integration.md +451 -0
  169. package/docs/diamond_module-BaseStrategy_design-v2.uxf +247 -0
  170. package/docs/diamond_module-BaseStrategy_design.uxf +272 -0
  171. package/docs/monitoring-troubleshooting.md +556 -0
  172. package/docs/testing-guide.md +713 -0
  173. package/examples/Diamond_Config_and_Deployment_examples/diamonds/ProxyDiamond/callbacks/ERC20ProxyFacet.ts +31 -0
  174. package/examples/Diamond_Config_and_Deployment_examples/diamonds/ProxyDiamond/proxydiamond.config.json +27 -0
  175. package/examples/Local_Hardhat_Deployer_Script_example/LocalDiamondDeployer.ts +180 -0
  176. package/examples/OZ_Defender_Deployer_Script_example/OZDiamondDeployer.ts +107 -0
  177. package/examples/OZ_Defender_Deployer_Script_example/run-oz-deploy.ts +17 -0
  178. package/examples/Test_examples/ProxyDiamondDeployment.test.ts +202 -0
  179. package/examples/defender-deployment/.env.example +35 -0
  180. package/examples/defender-deployment/README.md +415 -0
  181. package/examples/defender-deployment/contracts/ExampleDiamond.sol +41 -0
  182. package/examples/defender-deployment/contracts/ExampleFacet1.sol +84 -0
  183. package/examples/defender-deployment/contracts/ExampleFacet2.sol +104 -0
  184. package/examples/defender-deployment/contracts/UpgradeFacet.sol +92 -0
  185. package/examples/defender-deployment/deploy-script.ts +170 -0
  186. package/examples/defender-deployment/diamond-config.json +36 -0
  187. package/examples/defender-deployment/upgrade-script.ts +237 -0
  188. package/examples/hardhat-diamonds-config.example.ts +41 -0
  189. package/package.json +228 -0
  190. package/src/core/CallbackManager.ts +70 -0
  191. package/src/core/DeploymentManager.ts +64 -0
  192. package/src/core/Diamond.ts +197 -0
  193. package/src/core/DiamondDeployer.ts +36 -0
  194. package/src/core/index.ts +4 -0
  195. package/src/index.ts +5 -0
  196. package/src/repositories/DBDeploymentRepository.ts +22 -0
  197. package/src/repositories/DeploymentRepository.ts +12 -0
  198. package/src/repositories/FileDeploymentRepository.ts +67 -0
  199. package/src/repositories/databaseHandler.ts +14 -0
  200. package/src/repositories/index.ts +4 -0
  201. package/src/repositories/jsonFileHandler.ts +252 -0
  202. package/src/repositories/prismaDBHandler.ts +10 -0
  203. package/src/schemas/DeploymentSchema.ts +71 -0
  204. package/src/schemas/index.ts +1 -0
  205. package/src/strategies/BaseDeploymentStrategy.ts +649 -0
  206. package/src/strategies/DeploymentStrategy.ts +25 -0
  207. package/src/strategies/LocalDeploymentStrategy.ts +5 -0
  208. package/src/strategies/OZDefenderDeploymentStrategy.ts +849 -0
  209. package/src/strategies/RPCDeploymentStrategy.ts +881 -0
  210. package/src/strategies/index.ts +5 -0
  211. package/src/types/config.ts +34 -0
  212. package/src/types/defender.ts +24 -0
  213. package/src/types/deployments.ts +102 -0
  214. package/src/types/index.ts +4 -0
  215. package/src/types/rpc.ts +37 -0
  216. package/src/utils/common.ts +54 -0
  217. package/src/utils/configurationResolver.ts +141 -0
  218. package/src/utils/contractMapping.ts +220 -0
  219. package/src/utils/defenderClients.ts +22 -0
  220. package/src/utils/defenderStore.ts +62 -0
  221. package/src/utils/diamondAbiGenerator.ts +523 -0
  222. package/src/utils/diffDeployedFacets.ts +131 -0
  223. package/src/utils/index.ts +15 -0
  224. package/src/utils/loupe.ts +159 -0
  225. package/src/utils/rpcStore.ts +152 -0
  226. package/src/utils/signer.ts +93 -0
  227. package/src/utils/txlogging.ts +97 -0
  228. package/src/utils/workspaceSetup.ts +315 -0
  229. package/test/README.md +136 -0
@@ -0,0 +1,415 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DiamondAbiGenerator = void 0;
7
+ exports.generateDiamondAbi = generateDiamondAbi;
8
+ exports.previewDiamondAbi = previewDiamondAbi;
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const ethers_1 = require("ethers");
11
+ const fs_1 = require("fs");
12
+ const path_1 = require("path");
13
+ const types_1 = require("../types");
14
+ const contractMapping_1 = require("../utils/contractMapping");
15
+ /**
16
+ * Comprehensive Diamond ABI Generator
17
+ *
18
+ * This class generates a complete ABI for a diamond contract based on:
19
+ * - Current deployment state (deployed facets)
20
+ * - Planned diamond cuts (upgrades, additions, removals)
21
+ * - Function selector registry
22
+ * - Deployment configuration
23
+ */
24
+ class DiamondAbiGenerator {
25
+ diamond;
26
+ options;
27
+ seenSelectors = new Set();
28
+ selectorToFacet = {};
29
+ combinedAbi = [];
30
+ stats = {
31
+ totalFunctions: 0,
32
+ totalEvents: 0,
33
+ totalErrors: 0,
34
+ facetCount: 0,
35
+ duplicateSelectorsSkipped: 0
36
+ };
37
+ constructor(options) {
38
+ this.diamond = options.diamond;
39
+ this.options = {
40
+ outputDir: options.outputDir || this.diamond.getDiamondAbiPath(),
41
+ includeSourceInfo: true,
42
+ validateSelectors: true,
43
+ verbose: false,
44
+ ...options
45
+ };
46
+ }
47
+ /**
48
+ * Generate the complete diamond ABI
49
+ */
50
+ async generateAbi() {
51
+ if (this.options.verbose) {
52
+ console.log(chalk_1.default.blue('šŸ”§ Generating Diamond ABI...'));
53
+ }
54
+ // Reset state
55
+ this.seenSelectors.clear();
56
+ this.selectorToFacet = {};
57
+ this.combinedAbi = [];
58
+ this.stats = {
59
+ totalFunctions: 0,
60
+ totalEvents: 0,
61
+ totalErrors: 0,
62
+ facetCount: 0,
63
+ duplicateSelectorsSkipped: 0
64
+ };
65
+ // Get facets to include in ABI
66
+ const facetsToInclude = await this.getFacetsToInclude();
67
+ // Process each facet
68
+ for (const [facetName, facetInfo] of Object.entries(facetsToInclude)) {
69
+ await this.processFacet(facetName, facetInfo);
70
+ }
71
+ // Add DiamondLoupe functions if not already included
72
+ await this.ensureDiamondLoupeFunctions();
73
+ // Sort ABI for consistency
74
+ this.sortAbi();
75
+ // Generate output
76
+ const result = await this.generateOutput();
77
+ if (this.options.verbose) {
78
+ this.logStats();
79
+ }
80
+ return result;
81
+ }
82
+ /**
83
+ * Get all facets that should be included in the ABI
84
+ */
85
+ async getFacetsToInclude() {
86
+ const facetsToInclude = {};
87
+ // 1. Get currently deployed facets
88
+ const deployedData = this.diamond.getDeployedDiamondData();
89
+ if (deployedData.DeployedFacets) {
90
+ for (const [facetName, facetData] of Object.entries(deployedData.DeployedFacets)) {
91
+ if (facetData.address && facetData.funcSelectors) {
92
+ facetsToInclude[facetName] = {
93
+ address: facetData.address,
94
+ selectors: facetData.funcSelectors,
95
+ action: types_1.RegistryFacetCutAction.Deployed,
96
+ source: 'deployed'
97
+ };
98
+ }
99
+ }
100
+ }
101
+ // 2. Get planned cuts from function selector registry
102
+ const registry = this.diamond.functionSelectorRegistry;
103
+ for (const [selector, entry] of registry.entries()) {
104
+ if (entry.action === types_1.RegistryFacetCutAction.Add || entry.action === types_1.RegistryFacetCutAction.Replace) {
105
+ const facetName = entry.facetName;
106
+ if (!facetsToInclude[facetName]) {
107
+ facetsToInclude[facetName] = {
108
+ address: entry.address,
109
+ selectors: [],
110
+ action: entry.action,
111
+ source: 'registry'
112
+ };
113
+ }
114
+ facetsToInclude[facetName].selectors.push(selector);
115
+ }
116
+ else if (entry.action === types_1.RegistryFacetCutAction.Remove) {
117
+ // Remove selector from existing facet
118
+ const facetName = entry.facetName;
119
+ if (facetsToInclude[facetName]) {
120
+ facetsToInclude[facetName].selectors = facetsToInclude[facetName].selectors.filter(s => s !== selector);
121
+ }
122
+ }
123
+ }
124
+ // 3. Apply custom facet cuts if provided
125
+ if (this.options.customFacetCuts) {
126
+ for (const cut of this.options.customFacetCuts) {
127
+ const facetName = cut.name;
128
+ if (cut.action === 0) { // Add
129
+ if (!facetsToInclude[facetName]) {
130
+ facetsToInclude[facetName] = {
131
+ address: cut.facetAddress,
132
+ selectors: [],
133
+ action: types_1.RegistryFacetCutAction.Add,
134
+ source: 'custom'
135
+ };
136
+ }
137
+ facetsToInclude[facetName].selectors.push(...cut.functionSelectors);
138
+ }
139
+ else if (cut.action === 2) { // Remove
140
+ if (facetsToInclude[facetName]) {
141
+ facetsToInclude[facetName].selectors = facetsToInclude[facetName].selectors.filter(s => !cut.functionSelectors.includes(s));
142
+ }
143
+ }
144
+ }
145
+ }
146
+ // Remove facets with no selectors
147
+ for (const [facetName, facetInfo] of Object.entries(facetsToInclude)) {
148
+ if (facetInfo.selectors.length === 0) {
149
+ delete facetsToInclude[facetName];
150
+ }
151
+ }
152
+ return facetsToInclude;
153
+ }
154
+ /**
155
+ * Process a single facet and add its ABI items
156
+ */
157
+ async processFacet(facetName, facetInfo) {
158
+ try {
159
+ if (this.options.verbose) {
160
+ console.log(chalk_1.default.cyan(`šŸ“„ Processing ${facetName}...`));
161
+ }
162
+ // Get the contract artifact
163
+ let artifact;
164
+ try {
165
+ artifact = await (0, contractMapping_1.getContractArtifact)(facetName, this.diamond);
166
+ }
167
+ catch (artifactError) {
168
+ if (this.options.verbose) {
169
+ console.log(chalk_1.default.yellow(`āš ļø Artifact loading failed for ${facetName}: ${artifactError}`));
170
+ }
171
+ artifact = null;
172
+ }
173
+ if (!artifact || !artifact.abi) {
174
+ if (this.options.verbose) {
175
+ console.log(chalk_1.default.yellow(`āš ļø No ABI found for ${facetName}`));
176
+ }
177
+ // Still add selectors to mapping even if artifact can't be loaded
178
+ // This handles cases where selectors are in the registry but no artifact exists
179
+ for (const selector of facetInfo.selectors) {
180
+ if (!this.seenSelectors.has(selector)) {
181
+ this.selectorToFacet[selector] = facetName;
182
+ this.seenSelectors.add(selector);
183
+ }
184
+ }
185
+ return;
186
+ }
187
+ // Create interface for selector calculation
188
+ const iface = new ethers_1.Interface(artifact.abi);
189
+ // Process each ABI item
190
+ for (const abiItem of artifact.abi) {
191
+ await this.processAbiItem(abiItem, facetName, facetInfo, iface);
192
+ }
193
+ // For facets from the registry, add any selectors that weren't found in the ABI
194
+ // This handles cases where selectors are manually registered but don't have corresponding ABI items
195
+ if (facetInfo.source === 'registry') {
196
+ for (const selector of facetInfo.selectors) {
197
+ if (!this.seenSelectors.has(selector)) {
198
+ this.selectorToFacet[selector] = facetName;
199
+ this.seenSelectors.add(selector);
200
+ }
201
+ }
202
+ }
203
+ this.stats.facetCount++;
204
+ }
205
+ catch (error) {
206
+ console.error(chalk_1.default.red(`āŒ Error processing ${facetName}:`), error);
207
+ // Still add selectors to mapping even if there was an error
208
+ for (const selector of facetInfo.selectors) {
209
+ if (!this.seenSelectors.has(selector)) {
210
+ this.selectorToFacet[selector] = facetName;
211
+ this.seenSelectors.add(selector);
212
+ }
213
+ }
214
+ }
215
+ }
216
+ /**
217
+ * Process a single ABI item
218
+ */
219
+ async processAbiItem(abiItem, facetName, facetInfo, iface) {
220
+ // Skip constructors for diamond
221
+ if (abiItem.type === 'constructor') {
222
+ return;
223
+ }
224
+ // Handle functions
225
+ if (abiItem.type === 'function') {
226
+ const selector = iface.getFunction(abiItem.name)?.selector;
227
+ if (!selector) {
228
+ if (this.options.verbose) {
229
+ console.log(chalk_1.default.yellow(`āš ļø Could not calculate selector for ${abiItem.name}`));
230
+ }
231
+ return;
232
+ }
233
+ // Check if this function should be included
234
+ if (facetInfo.selectors.length > 0 && !facetInfo.selectors.includes(selector)) {
235
+ return; // Function not in the deployment
236
+ }
237
+ // Check for duplicates
238
+ if (this.seenSelectors.has(selector)) {
239
+ if (this.options.verbose) {
240
+ console.log(chalk_1.default.yellow(`āš ļø Skipping duplicate function: ${abiItem.name} (${selector})`));
241
+ }
242
+ this.stats.duplicateSelectorsSkipped++;
243
+ return;
244
+ }
245
+ this.seenSelectors.add(selector);
246
+ this.selectorToFacet[selector] = facetName;
247
+ // Add source information if requested
248
+ if (this.options.includeSourceInfo) {
249
+ abiItem._diamondFacet = facetName;
250
+ abiItem._diamondSelector = selector;
251
+ }
252
+ this.combinedAbi.push(abiItem);
253
+ this.stats.totalFunctions++;
254
+ }
255
+ // Handle events
256
+ else if (abiItem.type === 'event') {
257
+ // Events are global to the diamond, so include all of them
258
+ this.combinedAbi.push(abiItem);
259
+ this.stats.totalEvents++;
260
+ }
261
+ // Handle errors
262
+ else if (abiItem.type === 'error') {
263
+ // Errors are global to the diamond, so include all of them
264
+ this.combinedAbi.push(abiItem);
265
+ this.stats.totalErrors++;
266
+ }
267
+ }
268
+ /**
269
+ * Ensure DiamondLoupe functions are included
270
+ */
271
+ async ensureDiamondLoupeFunctions() {
272
+ const loupeSelectors = ['0xcdffacc6', '0x52ef6b2c', '0xadfca15e', '0x7a0ed627']; // facets(), facetFunctionSelectors(), facetAddresses(), facetAddress()
273
+ // Check if any loupe selectors are already included
274
+ for (const selector of loupeSelectors) {
275
+ if (!this.seenSelectors.has(selector)) {
276
+ try {
277
+ await this.processFacet('DiamondLoupeFacet', {
278
+ address: '0x0000000000000000000000000000000000000000',
279
+ selectors: [selector],
280
+ action: types_1.RegistryFacetCutAction.Deployed,
281
+ source: 'loupe'
282
+ });
283
+ }
284
+ catch (error) {
285
+ // DiamondLoupeFacet might not be available, continue
286
+ }
287
+ }
288
+ }
289
+ }
290
+ /**
291
+ * Sort the ABI for consistency
292
+ */
293
+ sortAbi() {
294
+ this.combinedAbi.sort((a, b) => {
295
+ // Sort by type first (functions, events, errors)
296
+ if (a.type !== b.type) {
297
+ const typeOrder = { 'function': 0, 'event': 1, 'error': 2 };
298
+ return (typeOrder[a.type] || 99) - (typeOrder[b.type] || 99);
299
+ }
300
+ // Then by name
301
+ return (a.name || '').localeCompare(b.name || '');
302
+ });
303
+ }
304
+ /**
305
+ * Generate the output files and result
306
+ */
307
+ async generateOutput() {
308
+ const result = {
309
+ abi: this.combinedAbi,
310
+ selectorMap: this.selectorToFacet,
311
+ facetAddresses: [...new Set(Object.values(this.selectorToFacet))],
312
+ stats: { ...this.stats }
313
+ };
314
+ // Create output directory if specified
315
+ if (this.options.outputDir) {
316
+ (0, fs_1.mkdirSync)(this.options.outputDir, { recursive: true });
317
+ // Generate the diamond artifact
318
+ const diamondArtifact = {
319
+ "_format": "hh-sol-artifact-1",
320
+ "contractName": this.diamond.diamondName,
321
+ "sourceName": "diamond-abi/DiamondABI.sol",
322
+ "abi": this.combinedAbi,
323
+ "bytecode": "",
324
+ "deployedBytecode": "",
325
+ "linkReferences": {},
326
+ "deployedLinkReferences": {},
327
+ "_diamondMetadata": {
328
+ "generatedAt": new Date().toISOString(),
329
+ "diamondName": this.diamond.diamondName,
330
+ "networkName": this.diamond.networkName,
331
+ "chainId": this.diamond.chainId,
332
+ "selectorMap": this.selectorToFacet,
333
+ "stats": this.stats
334
+ }
335
+ };
336
+ // Write the combined artifact
337
+ const outputPath = (0, path_1.join)(this.options.outputDir, `${this.diamond.getDiamondAbiFileName()}.json`);
338
+ (0, fs_1.writeFileSync)(outputPath, JSON.stringify(diamondArtifact, null, 2));
339
+ // Write a TypeScript interface file
340
+ const interfacePath = (0, path_1.join)(this.options.outputDir, `${this.diamond.getDiamondAbiFileName()}.d.ts`);
341
+ this.generateTypeScriptInterface(interfacePath);
342
+ result.outputPath = outputPath;
343
+ if (this.options.verbose) {
344
+ console.log(chalk_1.default.green(`āœ… Diamond ABI artifact created at: ${outputPath}`));
345
+ }
346
+ }
347
+ return result;
348
+ }
349
+ /**
350
+ * Generate TypeScript interface for the diamond
351
+ */
352
+ generateTypeScriptInterface(outputPath) {
353
+ const interfaceContent = `
354
+ // Auto-generated Diamond ABI interface
355
+ // Generated at: ${new Date().toISOString()}
356
+ // Diamond: ${this.diamond.diamondName}
357
+ // Network: ${this.diamond.networkName}
358
+
359
+ export interface ${this.diamond.diamondName}Interface {
360
+ // Function selectors to facet mapping
361
+ readonly selectorMap: {
362
+ ${Object.entries(this.selectorToFacet).map(([selector, facet]) => ` "${selector}": "${facet}";`).join('\n')}
363
+ };
364
+
365
+ // Facet addresses
366
+ readonly facetAddresses: string[];
367
+
368
+ // ABI for ethers.js Contract instantiation
369
+ readonly abi: AbiItem[];
370
+ }
371
+
372
+ export const ${this.diamond.diamondName}ABI: ${this.diamond.diamondName}Interface;
373
+ `;
374
+ (0, fs_1.writeFileSync)(outputPath, interfaceContent);
375
+ }
376
+ /**
377
+ * Log generation statistics
378
+ */
379
+ logStats() {
380
+ console.log(chalk_1.default.blue('\nšŸ“Š Diamond ABI Generation Statistics:'));
381
+ console.log(chalk_1.default.cyan(` Functions: ${this.stats.totalFunctions}`));
382
+ console.log(chalk_1.default.cyan(` Events: ${this.stats.totalEvents}`));
383
+ console.log(chalk_1.default.cyan(` Errors: ${this.stats.totalErrors}`));
384
+ console.log(chalk_1.default.cyan(` Facets: ${this.stats.facetCount}`));
385
+ console.log(chalk_1.default.cyan(` Unique selectors: ${this.seenSelectors.size}`));
386
+ if (this.stats.duplicateSelectorsSkipped > 0) {
387
+ console.log(chalk_1.default.yellow(` Duplicate selectors skipped: ${this.stats.duplicateSelectorsSkipped}`));
388
+ }
389
+ }
390
+ /**
391
+ * Static method to generate ABI for a diamond
392
+ */
393
+ static async generate(options) {
394
+ const generator = new DiamondAbiGenerator(options);
395
+ return generator.generateAbi();
396
+ }
397
+ }
398
+ exports.DiamondAbiGenerator = DiamondAbiGenerator;
399
+ /**
400
+ * Generate ABI for a diamond (convenience function)
401
+ */
402
+ async function generateDiamondAbi(diamond, options = {}) {
403
+ return DiamondAbiGenerator.generate({ diamond, ...options });
404
+ }
405
+ /**
406
+ * Preview what the ABI would look like after planned cuts
407
+ */
408
+ async function previewDiamondAbi(diamond, plannedCuts, options = {}) {
409
+ return DiamondAbiGenerator.generate({
410
+ diamond,
411
+ customFacetCuts: plannedCuts,
412
+ ...options
413
+ });
414
+ }
415
+ //# sourceMappingURL=diamondAbiGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diamondAbiGenerator.js","sourceRoot":"","sources":["../../src/utils/diamondAbiGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Fragment, JsonFragment } from "@ethersproject/abi";
2
+ import { Signer } from "@ethersproject/abstract-signer";
3
+ import { JsonRpcProvider } from "ethers";
4
+ import { DeployedDiamondData } from "../schemas";
5
+ export declare function diffDeployedFacets(deployedDiamondData: DeployedDiamondData, signerOrProvider: Signer | JsonRpcProvider, verboseGetDeployedFacets?: boolean): Promise<boolean>;
6
+ export declare function printFacetSelectorFunctions(abi: readonly (string | Fragment | JsonFragment)[], selectors: string[]): void;
7
+ export declare function isProtocolInitRegistered(deployedDiamondData: DeployedDiamondData, protocolInitFacet: string, initializerSig: string): Promise<boolean>;
8
+ /**
9
+ * Compares facet selectors from on-chain DiamondLoupe with local DeployedDiamondData
10
+ *
11
+ * @param deployedFacetData - local metadata (facetName -> { address, funcSelectors[] })
12
+ * @param onChainFacets - list of { facetAddress, functionSelectors[] } from DiamondLoupe
13
+ * @returns map of facetName -> { extraOnChain[], missingOnChain[], matched[] }
14
+ */
15
+ export declare function compareFacetSelectors(deployedFacetData: Record<string, {
16
+ address?: string;
17
+ funcSelectors?: string[];
18
+ }>, onChainFacets: {
19
+ facetAddress: string;
20
+ functionSelectors: string[];
21
+ }[]): Record<string, {
22
+ extraOnChain: string[];
23
+ missingOnChain: string[];
24
+ matched: string[];
25
+ }>;
26
+ //# sourceMappingURL=diffDeployedFacets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diffDeployedFacets.d.ts","sourceRoot":"","sources":["../../src/utils/diffDeployedFacets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGjD,wBAAsB,kBAAkB,CACtC,mBAAmB,EAAE,mBAAmB,EACxC,gBAAgB,EAAE,MAAM,GAAG,eAAe,EAC1C,wBAAwB,CAAC,EAAE,OAAO,GACjC,OAAO,CAAC,OAAO,CAAC,CAiDlB;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAUlH;AAED,wBAAsB,wBAAwB,CAC5C,mBAAmB,EAAE,mBAAmB,EACxC,iBAAiB,EAAE,MAAM,EACzB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC,CAalB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,EACjF,aAAa,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAAE,EAAE;kBAGtD,MAAM,EAAE;oBACN,MAAM,EAAE;aACf,MAAM,EAAE;GAuBpB"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.diffDeployedFacets = diffDeployedFacets;
7
+ exports.printFacetSelectorFunctions = printFacetSelectorFunctions;
8
+ exports.isProtocolInitRegistered = isProtocolInitRegistered;
9
+ exports.compareFacetSelectors = compareFacetSelectors;
10
+ const abi_1 = require("@ethersproject/abi");
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const loupe_1 = require("./loupe");
13
+ async function diffDeployedFacets(deployedDiamondData, signerOrProvider, verboseGetDeployedFacets) {
14
+ const diamondAddress = deployedDiamondData.DiamondAddress;
15
+ const onChainFacets = await (0, loupe_1.getDeployedFacets)(diamondAddress, signerOrProvider, undefined, verboseGetDeployedFacets);
16
+ const localFacets = deployedDiamondData.DeployedFacets ?? {};
17
+ const seen = new Set();
18
+ let pass = true;
19
+ console.log(chalk_1.default.magentaBright("\nšŸ” Diffing on-chain facets against deployment metadata:\n"));
20
+ for (const facet of onChainFacets) {
21
+ const match = Object.entries(localFacets).find(([_, meta]) => meta.address?.toLowerCase() === facet.facetAddress.toLowerCase());
22
+ if (!match) {
23
+ console.log(chalk_1.default.red(` āŒ On-chain facet ${facet.facetAddress} not found in deployment record.`));
24
+ continue;
25
+ }
26
+ const [name, meta] = match;
27
+ seen.add(name);
28
+ const expected = meta.funcSelectors ?? [];
29
+ const actual = facet.functionSelectors;
30
+ const added = actual.filter((sel) => !expected.includes(sel));
31
+ const removed = expected.filter(sel => !actual.includes(sel));
32
+ if (added.length ?? removed.length) {
33
+ console.log(chalk_1.default.yellow(` āš ļø Mismatch in selectors for facet ${name} (${facet.facetAddress})`));
34
+ if (added.length)
35
+ console.log(chalk_1.default.green(` + Added: ${added.join(", ")}`));
36
+ if (removed.length)
37
+ console.log(chalk_1.default.red(` - Missing: ${removed.join(", ")}`));
38
+ }
39
+ else {
40
+ console.log(chalk_1.default.green(` āœ… ${name} matches.`));
41
+ }
42
+ }
43
+ for (const localFacetName of Object.keys(localFacets)) {
44
+ if (pass && !seen.has(localFacetName)) {
45
+ console.log(chalk_1.default.red(` āŒ Deployed facet ${localFacetName} missing from on-chain state.`));
46
+ pass = false;
47
+ }
48
+ }
49
+ if (pass) {
50
+ console.log(chalk_1.default.bgGreenBright(" āœ… All facets exist in deplyoment metadata!"));
51
+ }
52
+ else {
53
+ console.log(chalk_1.default.bgRed(" āŒ Some facets do not match!"));
54
+ }
55
+ return pass;
56
+ }
57
+ function printFacetSelectorFunctions(abi, selectors) {
58
+ const iface = new abi_1.Interface(abi);
59
+ console.log(chalk_1.default.cyan("\nšŸ”Ž Matching selectors to functions:"));
60
+ for (const selector of selectors) {
61
+ const fragment = Object.values(iface.functions).find(fn => iface.getSighash(fn) === selector);
62
+ console.log(` ${selector} → ${fragment ? fragment.format() : chalk_1.default.gray("unknown")}`);
63
+ }
64
+ }
65
+ async function isProtocolInitRegistered(deployedDiamondData, protocolInitFacet, initializerSig) {
66
+ const facet = deployedDiamondData.DeployedFacets?.[protocolInitFacet];
67
+ console.log(`Checking if ${protocolInitFacet} is registered with ${initializerSig}...`);
68
+ if (!facet || !facet.funcSelectors)
69
+ return false;
70
+ if (!initializerSig) {
71
+ console.warn(chalk_1.default.yellow(` āŒ No initializer signature provided for ${protocolInitFacet}.`));
72
+ return false;
73
+ }
74
+ const iface = new abi_1.Interface([`function ${initializerSig}`]);
75
+ const selector = iface.getSighash(initializerSig);
76
+ console.log(` Found selector: ${selector}`);
77
+ return facet.funcSelectors.includes(selector);
78
+ }
79
+ /**
80
+ * Compares facet selectors from on-chain DiamondLoupe with local DeployedDiamondData
81
+ *
82
+ * @param deployedFacetData - local metadata (facetName -> { address, funcSelectors[] })
83
+ * @param onChainFacets - list of { facetAddress, functionSelectors[] } from DiamondLoupe
84
+ * @returns map of facetName -> { extraOnChain[], missingOnChain[], matched[] }
85
+ */
86
+ function compareFacetSelectors(deployedFacetData, onChainFacets) {
87
+ const result = {};
88
+ const addressToName = Object.entries(deployedFacetData).reduce((acc, [name, meta]) => {
89
+ if (meta.address)
90
+ acc[meta.address.toLowerCase()] = name;
91
+ return acc;
92
+ }, {});
93
+ for (const { facetAddress, functionSelectors } of onChainFacets) {
94
+ const lowerAddr = facetAddress.toLowerCase();
95
+ const name = addressToName[lowerAddr] ?? "unknown";
96
+ const expected = new Set(deployedFacetData[name]?.funcSelectors ?? []);
97
+ const actual = new Set(functionSelectors);
98
+ result[name] = {
99
+ extraOnChain: [...actual].filter(sel => !expected.has(sel)).sort(),
100
+ missingOnChain: [...expected].filter(sel => !actual.has(sel)).sort(),
101
+ matched: [...actual].filter(sel => expected.has(sel)).sort(),
102
+ };
103
+ }
104
+ return result;
105
+ }
106
+ //# sourceMappingURL=diffDeployedFacets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diffDeployedFacets.js","sourceRoot":"","sources":["../../src/utils/diffDeployedFacets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export * from '../repositories/jsonFileHandler';
2
+ export { FileDeploymentRepository } from '../repositories/FileDeploymentRepository';
3
+ export { DeploymentRepository } from '../repositories/DeploymentRepository';
4
+ export * from './common';
5
+ export * from './signer';
6
+ export * from './txlogging';
7
+ export * from './diffDeployedFacets';
8
+ export * from './loupe';
9
+ export * from './defenderStore';
10
+ export * from './defenderClients';
11
+ export * from './contractMapping';
12
+ export * from './configurationResolver';
13
+ export * from './workspaceSetup';
14
+ export * from './diamondAbiGenerator';
15
+ export * from './rpcStore';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.DeploymentRepository = exports.FileDeploymentRepository = void 0;
18
+ __exportStar(require("../repositories/jsonFileHandler"), exports);
19
+ var FileDeploymentRepository_1 = require("../repositories/FileDeploymentRepository");
20
+ Object.defineProperty(exports, "FileDeploymentRepository", { enumerable: true, get: function () { return FileDeploymentRepository_1.FileDeploymentRepository; } });
21
+ var DeploymentRepository_1 = require("../repositories/DeploymentRepository");
22
+ Object.defineProperty(exports, "DeploymentRepository", { enumerable: true, get: function () { return DeploymentRepository_1.DeploymentRepository; } });
23
+ __exportStar(require("./common"), exports);
24
+ __exportStar(require("./signer"), exports);
25
+ __exportStar(require("./txlogging"), exports);
26
+ __exportStar(require("./diffDeployedFacets"), exports);
27
+ __exportStar(require("./loupe"), exports);
28
+ __exportStar(require("./defenderStore"), exports);
29
+ __exportStar(require("./defenderClients"), exports);
30
+ __exportStar(require("./contractMapping"), exports);
31
+ __exportStar(require("./configurationResolver"), exports);
32
+ __exportStar(require("./workspaceSetup"), exports);
33
+ __exportStar(require("./diamondAbiGenerator"), exports);
34
+ __exportStar(require("./rpcStore"), exports);
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,kEAAgD;AAChD,qFAAoF;AAA3E,oIAAA,wBAAwB,OAAA;AACjC,6EAA4E;AAAnE,4HAAA,oBAAoB,OAAA;AAC7B,2CAAyB;AACzB,2CAAyB;AACzB,8CAA4B;AAC5B,uDAAqC;AACrC,0CAAwB;AACxB,kDAAgC;AAChC,oDAAkC;AAClC,oDAAkC;AAClC,0DAAwC;AACxC,mDAAiC;AACjC,wDAAsC;AACtC,6CAA2B"}