neozipkit 0.2.1 → 0.3.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 (301) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +410 -186
  3. package/contracts/ABI.txt +889 -0
  4. package/contracts/Bytecode.txt +1 -0
  5. package/contracts/COMPILATION_NOTES.md +59 -0
  6. package/contracts/QUICK_DEPLOY.md +286 -0
  7. package/contracts/README.md +235 -131
  8. package/contracts/VERIFICATION.md +308 -0
  9. package/contracts/deploy-interactive.js +448 -0
  10. package/contracts/deployment-arbitrum-sepolia.json +12 -0
  11. package/contracts/deployment-arbitrum.json +12 -0
  12. package/contracts/deployment-eth-sepolia.json +12 -0
  13. package/contracts/hardhat.config.js +114 -0
  14. package/contracts/package.json +20 -0
  15. package/contracts/scripts/compile-and-extract.js +119 -0
  16. package/contracts/scripts/verify-contract.js +223 -0
  17. package/contracts/src/{NZIP-NFT-Private.sol → NZIP-NFT-v2.0.sol} +66 -151
  18. package/contracts/src/NZIP-NFT.sol +9 -15
  19. package/dist/blockchain/browser/TokenVerifierBrowser.d.ts +67 -0
  20. package/dist/blockchain/browser/TokenVerifierBrowser.d.ts.map +1 -0
  21. package/dist/blockchain/browser/TokenVerifierBrowser.js +313 -0
  22. package/dist/blockchain/browser/TokenVerifierBrowser.js.map +1 -0
  23. package/dist/blockchain/browser/WalletManagerBrowser.d.ts +98 -0
  24. package/dist/blockchain/browser/WalletManagerBrowser.d.ts.map +1 -0
  25. package/dist/blockchain/browser/WalletManagerBrowser.js +434 -0
  26. package/dist/blockchain/browser/WalletManagerBrowser.js.map +1 -0
  27. package/dist/blockchain/browser/ZipkitMinterBrowser.d.ts +58 -0
  28. package/dist/blockchain/browser/ZipkitMinterBrowser.d.ts.map +1 -0
  29. package/dist/blockchain/browser/ZipkitMinterBrowser.js +317 -0
  30. package/dist/blockchain/browser/ZipkitMinterBrowser.js.map +1 -0
  31. package/dist/blockchain/browser/index.d.ts +11 -0
  32. package/dist/blockchain/browser/index.d.ts.map +1 -0
  33. package/dist/blockchain/browser/index.js +16 -0
  34. package/dist/blockchain/browser/index.js.map +1 -0
  35. package/dist/blockchain/core/WalletManager.d.ts +124 -0
  36. package/dist/blockchain/core/WalletManager.d.ts.map +1 -0
  37. package/dist/blockchain/{ZipKitWallet.js → core/WalletManager.js} +157 -177
  38. package/dist/blockchain/core/WalletManager.js.map +1 -0
  39. package/dist/blockchain/{ZipKitMinter.d.ts → core/ZipkitMinter.d.ts} +46 -11
  40. package/dist/blockchain/core/ZipkitMinter.d.ts.map +1 -0
  41. package/dist/blockchain/core/ZipkitMinter.js +548 -0
  42. package/dist/blockchain/core/ZipkitMinter.js.map +1 -0
  43. package/dist/blockchain/{ZipKitOTS.d.ts → core/ZipkitOTS.d.ts} +6 -15
  44. package/dist/blockchain/core/ZipkitOTS.d.ts.map +1 -0
  45. package/dist/blockchain/{ZipKitOTS.js → core/ZipkitOTS.js} +26 -84
  46. package/dist/blockchain/core/ZipkitOTS.js.map +1 -0
  47. package/dist/blockchain/core/ZipkitVerifier.d.ts +177 -0
  48. package/dist/blockchain/core/ZipkitVerifier.d.ts.map +1 -0
  49. package/dist/blockchain/core/ZipkitVerifier.js +632 -0
  50. package/dist/blockchain/core/ZipkitVerifier.js.map +1 -0
  51. package/dist/blockchain/core/contracts.d.ts +83 -0
  52. package/dist/blockchain/core/contracts.d.ts.map +1 -0
  53. package/dist/blockchain/core/contracts.js +341 -0
  54. package/dist/blockchain/core/contracts.js.map +1 -0
  55. package/dist/blockchain/core/index.d.ts +12 -0
  56. package/dist/blockchain/core/index.d.ts.map +1 -0
  57. package/dist/blockchain/core/index.js +59 -0
  58. package/dist/blockchain/core/index.js.map +1 -0
  59. package/dist/blockchain/index.d.ts +11 -7
  60. package/dist/blockchain/index.d.ts.map +1 -0
  61. package/dist/blockchain/index.js +18 -34
  62. package/dist/blockchain/index.js.map +1 -0
  63. package/dist/blockchain/node/WalletManagerNode.d.ts +47 -0
  64. package/dist/blockchain/node/WalletManagerNode.d.ts.map +1 -0
  65. package/dist/blockchain/node/WalletManagerNode.js +203 -0
  66. package/dist/blockchain/node/WalletManagerNode.js.map +1 -0
  67. package/dist/blockchain/node/index.d.ts +12 -0
  68. package/dist/blockchain/node/index.d.ts.map +1 -0
  69. package/dist/blockchain/node/index.js +24 -0
  70. package/dist/blockchain/node/index.js.map +1 -0
  71. package/dist/browser/ZipkitBrowser.d.ts +27 -0
  72. package/dist/browser/ZipkitBrowser.d.ts.map +1 -0
  73. package/dist/browser/{ZipKitBrowser.js → ZipkitBrowser.js} +96 -43
  74. package/dist/browser/ZipkitBrowser.js.map +1 -0
  75. package/dist/browser/index.d.ts +12 -0
  76. package/dist/browser/index.d.ts.map +1 -0
  77. package/dist/browser/index.js +42 -0
  78. package/dist/browser/index.js.map +1 -0
  79. package/dist/browser-esm/index.d.ts +12 -0
  80. package/dist/browser-esm/index.js +59559 -0
  81. package/dist/browser-esm/index.js.map +7 -0
  82. package/dist/browser-umd/index.d.ts +12 -0
  83. package/dist/browser-umd/index.js +59576 -0
  84. package/dist/browser-umd/index.js.map +7 -0
  85. package/dist/browser-umd/index.min.js +63 -0
  86. package/dist/browser.d.ts +8 -14
  87. package/dist/browser.js +13 -28
  88. package/dist/core/ZipCompress.d.ts +99 -0
  89. package/dist/core/ZipCompress.d.ts.map +1 -0
  90. package/dist/core/ZipCompress.js +309 -0
  91. package/dist/core/ZipCompress.js.map +1 -0
  92. package/dist/core/ZipDecompress.d.ts +58 -0
  93. package/dist/core/ZipDecompress.d.ts.map +1 -0
  94. package/dist/core/ZipDecompress.js +172 -0
  95. package/dist/core/ZipDecompress.js.map +1 -0
  96. package/dist/{shared → core}/ZipEntry.d.ts +8 -1
  97. package/dist/core/ZipEntry.d.ts.map +1 -0
  98. package/dist/{shared → core}/ZipEntry.js +225 -82
  99. package/dist/core/ZipEntry.js.map +1 -0
  100. package/dist/core/Zipkit.d.ts +315 -0
  101. package/dist/core/Zipkit.d.ts.map +1 -0
  102. package/dist/core/Zipkit.js +647 -0
  103. package/dist/core/Zipkit.js.map +1 -0
  104. package/dist/core/components/HashCalculator.d.ts +138 -0
  105. package/dist/core/components/HashCalculator.d.ts.map +1 -0
  106. package/dist/core/components/HashCalculator.js +360 -0
  107. package/dist/core/components/HashCalculator.js.map +1 -0
  108. package/dist/core/components/Logger.d.ts +73 -0
  109. package/dist/core/components/Logger.d.ts.map +1 -0
  110. package/dist/core/components/Logger.js +156 -0
  111. package/dist/core/components/Logger.js.map +1 -0
  112. package/dist/core/components/ProgressTracker.d.ts +43 -0
  113. package/dist/core/components/ProgressTracker.d.ts.map +1 -0
  114. package/dist/core/components/ProgressTracker.js +112 -0
  115. package/dist/core/components/ProgressTracker.js.map +1 -0
  116. package/dist/{shared → core}/components/Support.d.ts +1 -0
  117. package/dist/core/components/Support.d.ts.map +1 -0
  118. package/dist/{shared → core}/components/Support.js +1 -0
  119. package/dist/core/components/Support.js.map +1 -0
  120. package/dist/{shared → core}/components/Util.d.ts +7 -2
  121. package/dist/core/components/Util.d.ts.map +1 -0
  122. package/dist/{shared → core}/components/Util.js +14 -34
  123. package/dist/core/components/Util.js.map +1 -0
  124. package/dist/{shared → core}/constants/Errors.d.ts +1 -2
  125. package/dist/core/constants/Errors.d.ts.map +1 -0
  126. package/dist/{shared → core}/constants/Errors.js +1 -3
  127. package/dist/core/constants/Errors.js.map +1 -0
  128. package/dist/{shared → core}/constants/Headers.d.ts +3 -0
  129. package/dist/core/constants/Headers.d.ts.map +1 -0
  130. package/dist/{shared → core}/constants/Headers.js +20 -17
  131. package/dist/core/constants/Headers.js.map +1 -0
  132. package/dist/core/encryption/Manager.d.ts +58 -0
  133. package/dist/core/encryption/Manager.d.ts.map +1 -0
  134. package/dist/core/encryption/Manager.js +121 -0
  135. package/dist/core/encryption/Manager.js.map +1 -0
  136. package/dist/core/encryption/ZipCrypto.d.ts +172 -0
  137. package/dist/core/encryption/ZipCrypto.d.ts.map +1 -0
  138. package/dist/core/encryption/ZipCrypto.js +554 -0
  139. package/dist/core/encryption/ZipCrypto.js.map +1 -0
  140. package/dist/core/encryption/index.d.ts +9 -0
  141. package/dist/core/encryption/index.d.ts.map +1 -0
  142. package/dist/core/encryption/index.js +17 -0
  143. package/dist/core/encryption/index.js.map +1 -0
  144. package/dist/core/encryption/types.d.ts +29 -0
  145. package/dist/core/encryption/types.d.ts.map +1 -0
  146. package/dist/core/encryption/types.js +12 -0
  147. package/dist/core/encryption/types.js.map +1 -0
  148. package/dist/core/index.d.ts +24 -0
  149. package/dist/core/index.d.ts.map +1 -0
  150. package/dist/core/index.js +57 -0
  151. package/dist/core/index.js.map +1 -0
  152. package/dist/core/version.d.ts +5 -0
  153. package/dist/core/version.d.ts.map +1 -0
  154. package/dist/core/version.js +31 -0
  155. package/dist/core/version.js.map +1 -0
  156. package/dist/index.d.ts +8 -18
  157. package/dist/index.d.ts.map +1 -0
  158. package/dist/index.js +29 -35
  159. package/dist/index.js.map +1 -0
  160. package/dist/node/ZipCompressNode.d.ts +123 -0
  161. package/dist/node/ZipCompressNode.d.ts.map +1 -0
  162. package/dist/node/ZipCompressNode.js +576 -0
  163. package/dist/node/ZipCompressNode.js.map +1 -0
  164. package/dist/node/ZipDecompressNode.d.ts +120 -0
  165. package/dist/node/ZipDecompressNode.d.ts.map +1 -0
  166. package/dist/node/ZipDecompressNode.js +461 -0
  167. package/dist/node/ZipDecompressNode.js.map +1 -0
  168. package/dist/node/ZipkitNode.d.ts +406 -0
  169. package/dist/node/ZipkitNode.d.ts.map +1 -0
  170. package/dist/node/ZipkitNode.js +1305 -0
  171. package/dist/node/ZipkitNode.js.map +1 -0
  172. package/dist/node/index.d.ts +26 -0
  173. package/dist/node/index.d.ts.map +1 -0
  174. package/dist/node/index.js +65 -0
  175. package/dist/node/index.js.map +1 -0
  176. package/dist/types/index.d.ts +59 -0
  177. package/dist/types/index.d.ts.map +1 -0
  178. package/dist/types/index.js +36 -1
  179. package/dist/types/index.js.map +1 -0
  180. package/examples/README.md +269 -0
  181. package/examples/blockchain-tokenize.ts +354 -0
  182. package/examples/create-zip.ts +172 -0
  183. package/examples/extract-zip.ts +158 -0
  184. package/examples/list-zip.ts +161 -0
  185. package/examples/test-files/data.json +116 -0
  186. package/examples/test-files/document.md +80 -0
  187. package/examples/test-files/document.txt +2 -0
  188. package/examples/test-files/file1.txt +48 -0
  189. package/examples/test-files/file2.txt +80 -0
  190. package/examples/tsconfig.json +44 -0
  191. package/examples/unzip-token.ts +491 -0
  192. package/examples/verify-tokenized-zip.ts +305 -0
  193. package/examples/zip-token.ts +604 -0
  194. package/package.json +108 -24
  195. package/src/blockchain/README.md +59 -66
  196. package/src/{browser/TokenVerifierBrowser.ts-remove → blockchain/browser/TokenVerifierBrowser.ts} +125 -79
  197. package/src/blockchain/browser/WalletManagerBrowser.ts +486 -0
  198. package/src/blockchain/browser/ZipkitMinterBrowser.ts +400 -0
  199. package/src/blockchain/browser/index.ts +13 -0
  200. package/src/blockchain/{ZipKitWallet.ts → core/WalletManager.ts} +241 -143
  201. package/src/blockchain/core/ZipkitMinter.ts +716 -0
  202. package/src/blockchain/{ZipKitOTS.ts → core/ZipkitOTS.ts} +28 -62
  203. package/src/blockchain/core/ZipkitVerifier.ts +853 -0
  204. package/src/blockchain/core/contracts.ts +370 -0
  205. package/src/blockchain/core/index.ts +71 -0
  206. package/src/blockchain/index.ts +21 -55
  207. package/src/blockchain/node/WalletManagerNode.ts +171 -0
  208. package/src/blockchain/node/index.ts +40 -0
  209. package/src/browser/{ZipKitBrowser.ts → ZipkitBrowser.ts} +104 -41
  210. package/src/browser/index.esm.ts +37 -0
  211. package/src/browser/index.ts +25 -0
  212. package/src/core/ZipCompress.ts +398 -0
  213. package/src/core/ZipDecompress.ts +212 -0
  214. package/src/{shared → core}/ZipEntry.ts +240 -90
  215. package/src/core/Zipkit.ts +794 -0
  216. package/src/core/components/HashCalculator.ts +384 -0
  217. package/src/core/components/Logger.ts +180 -0
  218. package/src/core/components/ProgressTracker.ts +134 -0
  219. package/src/{shared → core}/components/Util.ts +12 -34
  220. package/src/{shared → core}/constants/Errors.ts +0 -4
  221. package/src/{shared → core}/constants/Headers.ts +19 -17
  222. package/src/core/encryption/Manager.ts +137 -0
  223. package/src/core/encryption/ZipCrypto.ts +650 -0
  224. package/src/core/encryption/index.ts +15 -0
  225. package/src/core/encryption/types.ts +33 -0
  226. package/src/core/index.ts +34 -0
  227. package/src/core/version.ts +33 -0
  228. package/src/index.ts +54 -25
  229. package/src/node/ZipCompressNode.ts +632 -0
  230. package/src/node/ZipDecompressNode.ts +508 -0
  231. package/src/node/ZipkitNode.ts +1559 -0
  232. package/src/node/index.ts +69 -0
  233. package/src/types/index.ts +131 -1
  234. package/src/types/modules.d.ts +1 -11
  235. package/src/types/opentimestamps.d.ts +1 -23
  236. package/contracts/INTEGRATION.md +0 -338
  237. package/contracts/NETWORKS.md +0 -156
  238. package/contracts/NZIP-NFT-bytecode.txt +0 -1
  239. package/contracts/constants.ts +0 -952
  240. package/contracts/deploy-bytecode.mjs +0 -94
  241. package/dist/blockchain/CertificateToken.d.ts +0 -48
  242. package/dist/blockchain/CertificateToken.js +0 -386
  243. package/dist/blockchain/ZipKitMinter.js +0 -347
  244. package/dist/blockchain/ZipKitNFT.d.ts +0 -3
  245. package/dist/blockchain/ZipKitNFT.js +0 -7
  246. package/dist/blockchain/ZipKitVerifier.d.ts +0 -69
  247. package/dist/blockchain/ZipKitVerifier.js +0 -289
  248. package/dist/blockchain/ZipKitWallet.d.ts +0 -69
  249. package/dist/blockchain/contracts.d.ts +0 -14
  250. package/dist/blockchain/contracts.js +0 -77
  251. package/dist/blockchain/types.d.ts +0 -47
  252. package/dist/blockchain/types.js +0 -30
  253. package/dist/browser/ZipKitBrowser.d.ts +0 -18
  254. package/dist/browser/ZipKitStampBrowser.d.ts +0 -2
  255. package/dist/browser/ZipKitStampBrowser.js +0 -12
  256. package/dist/browser-index.d.ts +0 -18
  257. package/dist/browser-index.js +0 -57
  258. package/dist/server/ZipKitServer.d.ts +0 -74
  259. package/dist/server/ZipKitServer.js +0 -310
  260. package/dist/shared/ZipKit.d.ts +0 -243
  261. package/dist/shared/ZipKit.js +0 -772
  262. package/dist/shared/components/CertificateOTS.d.ts +0 -15
  263. package/dist/shared/components/CertificateOTS.js +0 -116
  264. package/dist/shared/components/FileSys.d.ts +0 -2
  265. package/dist/shared/components/FileSys.js +0 -113
  266. package/dist/shared/components/HashAccumulator.d.ts +0 -55
  267. package/dist/shared/components/HashAccumulator.js +0 -100
  268. package/dist/shared/components/ZipCrypto.d.ts +0 -3
  269. package/dist/shared/components/ZipCrypto.js +0 -78
  270. package/dist/shared/components/merkleTree.d.ts +0 -66
  271. package/dist/shared/components/merkleTree.js +0 -136
  272. package/dist/shared/types/index.d.ts +0 -21
  273. package/dist/shared/types/index.js +0 -3
  274. package/dist/shared/types.d.ts +0 -33
  275. package/dist/shared/types.js +0 -8
  276. package/dist/shared/version.d.ts +0 -2
  277. package/dist/shared/version.js +0 -6
  278. package/src/blockchain/CertificateToken.ts +0 -444
  279. package/src/blockchain/ZipKitMinter.ts +0 -470
  280. package/src/blockchain/ZipKitNFT.ts +0 -12
  281. package/src/blockchain/ZipKitVerifier.ts +0 -382
  282. package/src/blockchain/contracts.ts +0 -88
  283. package/src/blockchain/types.ts +0 -91
  284. package/src/browser/CertificateGeneratorBrowser.ts-remove +0 -498
  285. package/src/browser/ZipKitStampBrowser.ts +0 -9
  286. package/src/browser-index.ts +0 -36
  287. package/src/server/README.md +0 -25
  288. package/src/server/ZipKitServer.ts +0 -305
  289. package/src/shared/ZipKit.ts +0 -881
  290. package/src/shared/components/CertificateOTS.ts +0 -132
  291. package/src/shared/components/FileSys.ts +0 -87
  292. package/src/shared/components/HashAccumulator.ts +0 -113
  293. package/src/shared/components/ZipCrypto.ts +0 -91
  294. package/src/shared/components/merkleTree.ts +0 -162
  295. package/src/shared/types/index.ts +0 -25
  296. package/src/shared/types/modules.d.ts +0 -22
  297. package/src/shared/types/opentimestamps.d.ts +0 -23
  298. package/src/shared/types.d.ts +0 -8
  299. package/src/shared/types.ts +0 -43
  300. package/src/shared/version.ts +0 -3
  301. /package/src/{shared → core}/components/Support.ts +0 -0
@@ -1,52 +1,21 @@
1
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
2
+ /**
3
+ * Core WalletManager - Platform-agnostic wallet functionality
4
+ * Provides core wallet operations that work in both browser and server environments
5
+ */
35
6
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.WalletAnalyzer = exports.ZipKitWallet = void 0;
37
- const fs = __importStar(require("fs"));
38
- const path = __importStar(require("path"));
39
- const readline = __importStar(require("readline"));
7
+ exports.WalletAnalyzer = exports.CoreWalletManager = void 0;
40
8
  const ethers_1 = require("ethers");
41
- const types_1 = require("./types");
9
+ const types_1 = require("../../types");
10
+ const Logger_1 = require("../../core/components/Logger");
42
11
  const NZIP_CONTRACT_ABI = [
43
- "function getZipFileInfo(uint256 tokenId) view returns (tuple(string fileName, string merkleRootHash, uint256 creationTimestamp, string ipfsHash, uint256 tokenizationTime, address creator))",
12
+ "function getZipFileInfo(uint256 tokenId) view returns (tuple(string merkleRootHash, string ipfsHash, address creator, uint256 creationTimestamp, uint256 tokenizationTime, uint256 blockNumber))",
44
13
  "function ownerOf(uint256 tokenId) view returns (address)",
45
14
  "function name() view returns (string)",
46
15
  "function symbol() view returns (string)",
47
16
  "function totalSupply() view returns (uint256)",
48
17
  "function getTokensByMerkleRoot(string merkleRootHash) view returns (uint256[])",
49
- "event ZipFileTokenized(uint256 indexed tokenId, address indexed creator, string fileName, string merkleRootHash, uint256 creationTimestamp, string ipfsHash)"
18
+ "event ZipFileTokenized(uint256 indexed tokenId, address indexed creator, string merkleRootHash, uint256 creationTimestamp, string ipfsHash, uint256 tokenizationTime, uint256 blockNumber)"
50
19
  ];
51
20
  const ERC20_ABI = [
52
21
  "function balanceOf(address owner) view returns (uint256)",
@@ -60,172 +29,153 @@ const ERC721_ABI = [
60
29
  "function symbol() view returns (string)",
61
30
  "function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)"
62
31
  ];
63
- class ZipKitWallet {
32
+ /**
33
+ * Core wallet functionality that works in both browser and server environments
34
+ */
35
+ class CoreWalletManager {
64
36
  constructor() {
65
37
  this.wallet = null;
66
38
  this.provider = null;
67
39
  }
68
- async promptUser(question) {
69
- const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
70
- return new Promise((resolve) => {
71
- rl.question(question, (answer) => { rl.close(); resolve(answer.trim()); });
72
- });
73
- }
74
- findExistingWallets() {
75
- const walletFiles = [];
76
- const currentDir = process.cwd();
77
- const walletDir = path.join(currentDir, 'wallet');
78
- const walletFileNames = ['neozip-wallet.json'];
79
- for (const fileName of walletFileNames) {
80
- const filePath = path.join(currentDir, fileName);
81
- if (fs.existsSync(filePath))
82
- walletFiles.push(filePath);
83
- }
84
- if (fs.existsSync(walletDir)) {
85
- for (const fileName of walletFileNames) {
86
- const filePath = path.join(walletDir, fileName);
87
- if (fs.existsSync(filePath))
88
- walletFiles.push(filePath);
89
- }
90
- }
91
- return walletFiles;
92
- }
93
- loadWalletFromFile(filePath) {
94
- try {
95
- const content = fs.readFileSync(filePath, 'utf8').trim();
96
- try {
97
- const walletData = JSON.parse(content);
98
- if (walletData.privateKey) {
99
- console.log(`Found wallet file: ${filePath}`);
100
- console.log(`Wallet address: ${walletData.address}`);
101
- return walletData.privateKey;
102
- }
103
- }
104
- catch {
105
- if (content.startsWith('0x') && content.length === 66) {
106
- console.log(`Found private key file: ${filePath}`);
107
- return content;
108
- }
109
- }
110
- return null;
111
- }
112
- catch (error) {
113
- console.warn(`Could not read wallet file ${filePath}:`, error);
114
- return null;
115
- }
116
- }
117
- async setupWallet(options) {
40
+ /**
41
+ * Setup wallet with private key and connect to network
42
+ *
43
+ * SECURITY WARNING: This method accepts a private key as a parameter.
44
+ * - Never hardcode private keys in source code
45
+ * - Always use environment variables for private keys
46
+ * - Use testnet keys for development/testing
47
+ * - Use secure key management (HSMs, KMS) for production
48
+ * - See SECURITY.md for complete security guidelines
49
+ */
50
+ async setupWallet(privateKey, network, mintToken = false) {
118
51
  try {
119
- const networkConfig = types_1.NETWORKS[options.network] || types_1.NETWORKS['base-sepolia'];
120
- let privateKey;
121
- if (options.wallet) {
122
- const val = options.wallet;
123
- if (fs.existsSync(val)) {
124
- const loaded = this.loadWalletFromFile(val);
125
- if (!loaded)
126
- throw new Error(`Could not load valid private key from ${val}`);
127
- privateKey = loaded;
128
- }
129
- else {
130
- privateKey = val;
131
- }
132
- }
133
- else {
134
- const existing = this.findExistingWallets();
135
- if (existing.length > 0) {
136
- const selected = existing[0];
137
- const relativePath = path.relative(process.cwd(), selected);
138
- console.log(`Using existing wallet: ${relativePath}`);
139
- const loaded = this.loadWalletFromFile(selected);
140
- if (!loaded)
141
- throw new Error(`Could not load valid private key from ${selected}`);
142
- privateKey = loaded;
143
- }
144
- else {
145
- console.log('No existing wallet found. Creating new wallet...');
146
- privateKey = await this.createNewWallet();
147
- }
148
- }
52
+ const networkConfig = types_1.NETWORKS[network] || types_1.NETWORKS['base-sepolia'];
149
53
  this.wallet = new ethers_1.ethers.Wallet(privateKey);
150
- console.log(`Using wallet: ${this.wallet.address}`);
151
- const ok = await this.connectToNetwork(networkConfig, options.mintToken === true);
54
+ Logger_1.Logger.log(`Using wallet: ${this.wallet.address}`);
55
+ const ok = await this.connectToNetwork(networkConfig, mintToken);
152
56
  if (!ok) {
153
- return { wallet: null, provider: null, success: false, message: `Failed to connect to ${networkConfig.name} network. Blockchain operations require network connectivity.` };
57
+ return {
58
+ wallet: null,
59
+ provider: null,
60
+ success: false,
61
+ message: `Failed to connect to ${networkConfig.name} network. Blockchain operations require network connectivity.`
62
+ };
154
63
  }
155
- return { wallet: this.wallet, provider: this.provider, success: true, message: `Wallet setup successful for ${networkConfig.name}` };
64
+ return {
65
+ wallet: this.wallet,
66
+ provider: this.provider,
67
+ success: true,
68
+ message: `Wallet setup successful for ${networkConfig.name}`
69
+ };
156
70
  }
157
71
  catch (error) {
158
- console.error('Error setting up wallet:', error);
159
- return { wallet: null, provider: null, success: false, message: `Wallet setup failed: ${error instanceof Error ? error.message : String(error)}` };
72
+ Logger_1.Logger.error('Error setting up wallet:', error);
73
+ return {
74
+ wallet: null,
75
+ provider: null,
76
+ success: false,
77
+ message: `Wallet setup failed: ${error instanceof Error ? error.message : String(error)}`
78
+ };
160
79
  }
161
80
  }
162
- async createNewWallet() {
163
- console.log('Creating a new wallet...');
164
- const newWallet = ethers_1.ethers.Wallet.createRandom();
165
- const walletInfo = { address: newWallet.address, privateKey: newWallet.privateKey, mnemonic: newWallet.mnemonic?.phrase || "" };
166
- const walletDir = path.join(process.cwd(), 'wallet');
167
- if (!fs.existsSync(walletDir))
168
- fs.mkdirSync(walletDir, { recursive: true });
169
- const walletFilePath = path.join(walletDir, 'neozip-wallet.json');
170
- fs.writeFileSync(walletFilePath, JSON.stringify(walletInfo, null, 2));
171
- console.log(`New wallet created and saved to ${walletFilePath}`);
172
- console.log(`Wallet address: ${newWallet.address}`);
173
- console.log(`IMPORTANT: Please fund this wallet with BASE to use for minting NFTs!`);
174
- return newWallet.privateKey;
175
- }
81
+ /**
82
+ * Connect to the specified network
83
+ */
176
84
  async connectToNetwork(networkConfig, mintToken) {
177
85
  try {
178
- console.log(`Attempting to connect to ${networkConfig.name} network...`);
86
+ Logger_1.Logger.log(`Attempting to connect to ${networkConfig.name} network...`);
179
87
  this.provider = new ethers_1.ethers.JsonRpcProvider(networkConfig.rpcUrl);
180
88
  let networkTimedOut = false;
181
- const networkTimeout = setTimeout(() => { networkTimedOut = true; console.error("Network connection timeout"); }, 5000);
89
+ const networkTimeout = setTimeout(() => {
90
+ networkTimedOut = true;
91
+ Logger_1.Logger.error("Network connection timeout");
92
+ }, 5000);
182
93
  await Promise.race([
183
94
  this.provider.getNetwork(),
184
- new Promise((_, reject) => setTimeout(() => { if (networkTimedOut)
185
- reject(new Error("Network connection timeout")); }, 5100))
95
+ new Promise((_, reject) => setTimeout(() => {
96
+ if (networkTimedOut)
97
+ reject(new Error("Network connection timeout"));
98
+ }, 5100))
186
99
  ]);
187
100
  clearTimeout(networkTimeout);
188
101
  if (this.wallet) {
189
102
  this.wallet = this.wallet.connect(this.provider);
190
103
  const balance = await this.provider.getBalance(this.wallet.address);
191
104
  const balanceEth = ethers_1.ethers.formatEther(balance);
192
- console.log(`Wallet balance: ${balanceEth} ETH`);
105
+ Logger_1.Logger.log(`Wallet balance: ${balanceEth} ETH`);
193
106
  const minBalance = 0.0001;
194
107
  if (parseFloat(balanceEth) < minBalance && mintToken) {
195
- console.error(`ERROR: Insufficient balance (${balanceEth} ETH). Minimum required: ${minBalance} ETH`);
196
- console.error('Get testnet ETH from: https://www.coinbase.com/faucets/base-ethereum-sepolia-faucet');
108
+ Logger_1.Logger.error(`ERROR: Insufficient balance (${balanceEth} ETH). Minimum required: ${minBalance} ETH`);
109
+ Logger_1.Logger.error('Get testnet ETH from: https://www.coinbase.com/faucets/base-ethereum-sepolia-faucet');
197
110
  throw new Error(`Insufficient balance for minting. Current: ${balanceEth} ETH, Required: ${minBalance} ETH`);
198
111
  }
199
112
  else if (mintToken) {
200
- console.log(`✅ Sufficient balance for token minting`);
113
+ Logger_1.Logger.log(`✅ Sufficient balance for token minting`);
201
114
  }
202
115
  }
203
- console.log(`✅ Successfully connected to ${networkConfig.name}`);
116
+ Logger_1.Logger.log(`✅ Successfully connected to ${networkConfig.name}`);
204
117
  return true;
205
118
  }
206
119
  catch (networkError) {
207
120
  const errorMessage = networkError instanceof Error ? networkError.message : String(networkError);
208
- console.error(`Failed to connect to ${networkConfig.name} network: ${errorMessage}`);
121
+ Logger_1.Logger.error(`Failed to connect to ${networkConfig.name} network: ${errorMessage}`);
209
122
  this.provider = null;
210
123
  return false;
211
124
  }
212
125
  }
213
- getWallet() { return this.wallet; }
214
- getProvider() { return this.provider; }
215
- isReady() { return this.wallet !== null; }
216
- isOnline() { return this.provider !== null; }
126
+ /**
127
+ * Get the current wallet instance
128
+ */
129
+ getWallet() {
130
+ return this.wallet;
131
+ }
132
+ /**
133
+ * Get the current provider instance
134
+ */
135
+ getProvider() {
136
+ return this.provider;
137
+ }
138
+ /**
139
+ * Check if wallet is ready
140
+ */
141
+ isReady() {
142
+ return this.wallet !== null;
143
+ }
144
+ /**
145
+ * Check if connected to network
146
+ */
147
+ isOnline() {
148
+ return this.provider !== null;
149
+ }
217
150
  }
218
- exports.ZipKitWallet = ZipKitWallet;
151
+ exports.CoreWalletManager = CoreWalletManager;
152
+ /**
153
+ * Wallet analyzer for blockchain operations
154
+ */
219
155
  class WalletAnalyzer {
220
- constructor(provider) { this.provider = provider; }
156
+ constructor(provider) {
157
+ this.provider = provider;
158
+ }
159
+ /**
160
+ * Get basic wallet information
161
+ */
221
162
  async getWalletBasics(address) {
222
163
  const balance = await this.provider.getBalance(address);
223
164
  const ethBalance = ethers_1.ethers.formatEther(balance);
224
165
  const txCount = await this.provider.getTransactionCount(address);
225
166
  const network = await this.provider.getNetwork();
226
167
  const latestBlock = await this.provider.getBlockNumber();
227
- return { ethBalance, transactionCount: txCount, networkName: network.name, chainId: network.chainId, latestBlock };
168
+ return {
169
+ ethBalance,
170
+ transactionCount: txCount,
171
+ networkName: network.name,
172
+ chainId: network.chainId,
173
+ latestBlock
174
+ };
228
175
  }
176
+ /**
177
+ * Scan for NZIP tokens owned by an address
178
+ */
229
179
  async scanForNZipTokens(contractAddress, ownerAddress) {
230
180
  const contract = new ethers_1.ethers.Contract(contractAddress, NZIP_CONTRACT_ABI, this.provider);
231
181
  let foundTokens = [];
@@ -273,6 +223,9 @@ class WalletAnalyzer {
273
223
  }
274
224
  return { foundTokens, searchMethod: foundTokens.length > 0 ? 'common-ids' : 'none' };
275
225
  }
226
+ /**
227
+ * Get detailed information for NZIP tokens
228
+ */
276
229
  async getNZipTokenDetails(contractAddress, tokenIds) {
277
230
  const contract = new ethers_1.ethers.Contract(contractAddress, NZIP_CONTRACT_ABI, this.provider);
278
231
  const tokenDetails = [];
@@ -282,7 +235,6 @@ class WalletAnalyzer {
282
235
  tokenDetails.push({
283
236
  tokenId: tokenId.toString(),
284
237
  merkleRootHash: zipInfo.merkleRootHash,
285
- fileName: zipInfo.fileName,
286
238
  timestamp: Number(zipInfo.creationTimestamp),
287
239
  creator: zipInfo.creator,
288
240
  creationTimestamp: Number(zipInfo.creationTimestamp),
@@ -291,21 +243,31 @@ class WalletAnalyzer {
291
243
  });
292
244
  }
293
245
  catch (error) {
294
- console.error(`Error fetching details for token ${tokenId}:`, error);
246
+ Logger_1.Logger.error(`Error fetching details for token ${tokenId}:`, error);
295
247
  }
296
248
  }
297
249
  return tokenDetails;
298
250
  }
251
+ /**
252
+ * Get contract information
253
+ */
299
254
  async getContractInfo(contractAddress) {
300
255
  try {
301
256
  const contract = new ethers_1.ethers.Contract(contractAddress, NZIP_CONTRACT_ABI, this.provider);
302
- const [name, symbol, totalSupply] = await Promise.all([contract.name(), contract.symbol(), contract.totalSupply()]);
257
+ const [name, symbol, totalSupply] = await Promise.all([
258
+ contract.name(),
259
+ contract.symbol(),
260
+ contract.totalSupply()
261
+ ]);
303
262
  return { name, symbol, totalSupply: totalSupply.toString() };
304
263
  }
305
264
  catch {
306
265
  return null;
307
266
  }
308
267
  }
268
+ /**
269
+ * Check for ERC20 tokens
270
+ */
309
271
  async checkERC20Tokens(ownerAddress, tokenConfigs) {
310
272
  const foundTokens = [];
311
273
  for (const tokenConfig of tokenConfigs.filter(t => t.type === 'ERC20')) {
@@ -315,17 +277,31 @@ class WalletAnalyzer {
315
277
  if (balance > 0) {
316
278
  let name = tokenConfig.name, symbol = tokenConfig.symbol, decimals = 18;
317
279
  try {
318
- [name, symbol, decimals] = await Promise.all([contract.name(), contract.symbol(), contract.decimals()]);
280
+ [name, symbol, decimals] = await Promise.all([
281
+ contract.name(),
282
+ contract.symbol(),
283
+ contract.decimals()
284
+ ]);
319
285
  }
320
286
  catch { }
321
287
  const formattedBalance = ethers_1.ethers.formatUnits(balance, decimals);
322
- foundTokens.push({ address: tokenConfig.address, name, symbol, balance: formattedBalance, decimals, type: 'ERC20' });
288
+ foundTokens.push({
289
+ address: tokenConfig.address,
290
+ name,
291
+ symbol,
292
+ balance: formattedBalance,
293
+ decimals,
294
+ type: 'ERC20'
295
+ });
323
296
  }
324
297
  }
325
298
  catch { }
326
299
  }
327
300
  return foundTokens;
328
301
  }
302
+ /**
303
+ * Check for NFT collections
304
+ */
329
305
  async checkNFTCollections(ownerAddress, nftConfigs) {
330
306
  const foundNFTs = [];
331
307
  for (const nftConfig of nftConfigs) {
@@ -335,28 +311,28 @@ class WalletAnalyzer {
335
311
  if (balance > 0) {
336
312
  let name = nftConfig.name, symbol = nftConfig.symbol;
337
313
  try {
338
- [name, symbol] = await Promise.all([contract.name(), contract.symbol()]);
314
+ [name, symbol] = await Promise.all([
315
+ contract.name(),
316
+ contract.symbol()
317
+ ]);
339
318
  }
340
319
  catch { }
341
- foundNFTs.push({ address: nftConfig.address, name, symbol, balance: balance.toString(), type: 'ERC721' });
320
+ foundNFTs.push({
321
+ address: nftConfig.address,
322
+ name,
323
+ symbol,
324
+ balance: balance.toString(),
325
+ type: 'ERC721'
326
+ });
342
327
  }
343
328
  }
344
329
  catch { }
345
330
  }
346
331
  return foundNFTs;
347
332
  }
348
- static detectNZipContract() {
349
- const deploymentPath = path.join(process.cwd(), 'zipfile-nft-deployment.json');
350
- if (fs.existsSync(deploymentPath)) {
351
- try {
352
- const deploymentInfo = JSON.parse(fs.readFileSync(deploymentPath, 'utf8'));
353
- if (deploymentInfo.address)
354
- return deploymentInfo.address;
355
- }
356
- catch { }
357
- }
358
- return undefined;
359
- }
333
+ /**
334
+ * Get common token configurations for a network
335
+ */
360
336
  static getCommonTokens(network) {
361
337
  const commonTokens = {
362
338
  'base-sepolia': [
@@ -374,6 +350,9 @@ class WalletAnalyzer {
374
350
  };
375
351
  return commonTokens[network] || [];
376
352
  }
353
+ /**
354
+ * Get common NFT configurations for a network
355
+ */
377
356
  static getCommonNFTs(network) {
378
357
  const commonNFTs = {
379
358
  'base-sepolia': [],
@@ -386,3 +365,4 @@ class WalletAnalyzer {
386
365
  }
387
366
  }
388
367
  exports.WalletAnalyzer = WalletAnalyzer;
368
+ //# sourceMappingURL=WalletManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletManager.js","sourceRoot":"","sources":["../../../src/blockchain/core/WalletManager.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * ZipKitMinter - Handles NFT token minting for ZIP files
3
+ * ZipkitMinter - Handles NFT token minting for ZIP files
4
4
  * Minter API for NZIP-NFT smart contract.
5
5
  */
6
- import type { TokenMetadata } from './types';
6
+ import { ethers } from 'ethers';
7
+ import { type ContractConfig } from './contracts';
8
+ import type { TokenMetadata } from '../../types';
7
9
  export interface MintingOptions {
8
10
  walletPrivateKey: string;
9
11
  network: string;
10
12
  verbose?: boolean;
11
13
  debug?: boolean;
14
+ rpcUrlIndex?: number;
12
15
  }
13
16
  export interface MintingResult {
14
17
  success: boolean;
@@ -40,16 +43,23 @@ export interface WalletInfo {
40
43
  }
41
44
  /**
42
45
  * Blockchain Token Minter for ZIP files
46
+ *
47
+ * SECURITY WARNING: This class handles private keys for blockchain operations.
48
+ * - Never hardcode private keys in source code
49
+ * - Always use environment variables for private keys (e.g., NEOZIP_WALLET_PASSKEY)
50
+ * - Use testnet keys for development/testing
51
+ * - Use secure key management (HSMs, KMS) for production
52
+ * - See SECURITY.md for complete security guidelines
43
53
  */
44
- export declare class ZipKitMinter {
45
- private provider;
46
- private wallet;
47
- private contract;
48
- private merkleRoot;
49
- private archiveName;
50
- private networkConfig;
51
- private debug;
52
- constructor(archiveName: string, merkleRoot: string, options: MintingOptions);
54
+ export declare class ZipkitMinter {
55
+ protected provider: ethers.JsonRpcProvider;
56
+ protected wallet: ethers.Wallet;
57
+ protected contract: ethers.Contract;
58
+ protected merkleRoot: string;
59
+ protected networkConfig: ContractConfig;
60
+ protected debug: boolean;
61
+ protected rpcUrlIndex: number;
62
+ constructor(merkleRoot: string, options: MintingOptions);
53
63
  /**
54
64
  * Get wallet information
55
65
  */
@@ -99,8 +109,33 @@ export declare class ZipKitMinter {
99
109
  mintingResult: MintingResult;
100
110
  tokenMetadata?: TokenMetadata;
101
111
  }>;
112
+ /**
113
+ * Switch to a different RPC URL by index
114
+ * This recreates the provider, wallet, and contract with the new RPC
115
+ */
116
+ switchRpcUrl(newIndex: number): void;
117
+ /**
118
+ * Destroy provider to allow process to exit
119
+ */
120
+ destroy(): void;
121
+ /**
122
+ * Mint token with retry logic and exponential backoff
123
+ * @param maxRetries Maximum number of retry attempts (default: 3)
124
+ * @returns Minting result with retry information
125
+ */
126
+ mintTokenWithRetry(maxRetries?: number): Promise<MintingResult>;
127
+ /**
128
+ * Batch minting for multiple archives
129
+ * @param archives Array of archive objects with name and merkleRoot
130
+ * @returns Array of minting results
131
+ */
132
+ mintBatch(archives: Array<{
133
+ name: string;
134
+ merkleRoot: string;
135
+ }>): Promise<MintingResult[]>;
102
136
  }
103
137
  /**
104
138
  * Utility function to validate Ethereum private key
105
139
  */
106
140
  export declare function validatePrivateKey(privateKey: string): boolean;
141
+ //# sourceMappingURL=ZipkitMinter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZipkitMinter.d.ts","sourceRoot":"","sources":["../../../src/blockchain/core/ZipkitMinter.ts"],"names":[],"mappings":"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"}