neozipkit 0.1.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 (330) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +371 -200
  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 +256 -0
  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/{browser → blockchain/browser}/TokenVerifierBrowser.d.ts +11 -20
  20. package/dist/blockchain/browser/TokenVerifierBrowser.d.ts.map +1 -0
  21. package/dist/{browser → blockchain/browser}/TokenVerifierBrowser.js +106 -92
  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/{server/blockchain/WalletAnalyzer.d.ts → blockchain/core/WalletManager.d.ts} +69 -26
  36. package/dist/blockchain/core/WalletManager.d.ts.map +1 -0
  37. package/dist/{server/blockchain/WalletAnalyzer.js → blockchain/core/WalletManager.js} +172 -160
  38. package/dist/blockchain/core/WalletManager.js.map +1 -0
  39. package/dist/blockchain/core/ZipkitMinter.d.ts +141 -0
  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/core/ZipkitOTS.d.ts +126 -0
  44. package/dist/blockchain/core/ZipkitOTS.d.ts.map +1 -0
  45. package/dist/blockchain/core/ZipkitOTS.js +506 -0
  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 -0
  60. package/dist/blockchain/index.d.ts.map +1 -0
  61. package/dist/blockchain/index.js +34 -0
  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 -17
  87. package/dist/browser.js +13 -29
  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 +224 -81
  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/{shared → core}/version.d.ts +1 -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 -25
  157. package/dist/index.d.ts.map +1 -0
  158. package/dist/index.js +29 -47
  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 +6 -3
  192. package/examples/verify-tokenized-zip.ts +305 -0
  193. package/package.json +117 -23
  194. package/src/blockchain/README.md +222 -0
  195. package/src/{browser → blockchain/browser}/TokenVerifierBrowser.ts +125 -79
  196. package/src/blockchain/browser/WalletManagerBrowser.ts +486 -0
  197. package/src/blockchain/browser/ZipkitMinterBrowser.ts +400 -0
  198. package/src/blockchain/browser/index.ts +13 -0
  199. package/src/blockchain/core/WalletManager.ts +436 -0
  200. package/src/blockchain/core/ZipkitMinter.ts +716 -0
  201. package/src/blockchain/core/ZipkitOTS.ts +588 -0
  202. package/src/blockchain/core/ZipkitVerifier.ts +853 -0
  203. package/src/blockchain/core/contracts.ts +370 -0
  204. package/src/blockchain/core/index.ts +71 -0
  205. package/src/blockchain/index.ts +27 -0
  206. package/src/blockchain/node/WalletManagerNode.ts +171 -0
  207. package/src/blockchain/node/index.ts +40 -0
  208. package/src/browser/{ZipKitBrowser.ts → ZipkitBrowser.ts} +104 -41
  209. package/src/browser/index.esm.ts +37 -0
  210. package/src/browser/index.ts +25 -0
  211. package/src/core/ZipCompress.ts +398 -0
  212. package/src/core/ZipDecompress.ts +212 -0
  213. package/src/{shared → core}/ZipEntry.ts +239 -89
  214. package/src/core/Zipkit.ts +794 -0
  215. package/src/core/components/HashCalculator.ts +384 -0
  216. package/src/core/components/Logger.ts +180 -0
  217. package/src/core/components/ProgressTracker.ts +134 -0
  218. package/src/{shared → core}/components/Util.ts +12 -34
  219. package/src/{shared → core}/constants/Errors.ts +0 -4
  220. package/src/{shared → core}/constants/Headers.ts +19 -17
  221. package/src/core/encryption/Manager.ts +137 -0
  222. package/src/core/encryption/ZipCrypto.ts +650 -0
  223. package/src/core/encryption/index.ts +15 -0
  224. package/src/core/encryption/types.ts +33 -0
  225. package/src/core/index.ts +34 -0
  226. package/src/core/version.ts +33 -0
  227. package/src/index.ts +54 -32
  228. package/src/node/ZipCompressNode.ts +632 -0
  229. package/src/node/ZipDecompressNode.ts +508 -0
  230. package/src/node/ZipkitNode.ts +1559 -0
  231. package/src/node/index.ts +69 -0
  232. package/src/types/index.ts +131 -1
  233. package/src/types/opentimestamps.d.ts +1 -23
  234. package/contracts/Lock.sol +0 -34
  235. package/contracts/bytecode.txt +0 -1
  236. package/contracts/compile-contract.js +0 -168
  237. package/contracts/deploy/deploy-both-contracts.js +0 -286
  238. package/contracts/deploy/deploy-enhanced-contract.js +0 -197
  239. package/contracts/deploy/deploy-private-contract.js +0 -190
  240. package/contracts/deploy/deploy-public-clean.js +0 -1063
  241. package/contracts/deploy/deploy-public-contract.js +0 -1107
  242. package/contracts/deployment.config.example.js +0 -25
  243. package/contracts/remix-compile.js +0 -222
  244. package/contracts/setup-deployment.js +0 -51
  245. package/contracts/src/ZipFileNFT-DEPRECATED-6field.sol +0 -260
  246. package/contracts/src/ZipFileNFT-DEPRECATED-Enhanced.sol +0 -289
  247. package/dist/browser/CertificateGeneratorBrowser.d.ts +0 -75
  248. package/dist/browser/CertificateGeneratorBrowser.js +0 -433
  249. package/dist/browser/ZipKitBrowser.d.ts +0 -18
  250. package/dist/browser/ZipKitStampBrowser.d.ts +0 -2
  251. package/dist/browser/ZipKitStampBrowser.js +0 -12
  252. package/dist/browser-index.d.ts +0 -21
  253. package/dist/browser-index.js +0 -58
  254. package/dist/server/blockchain/CertificateToken.d.ts +0 -48
  255. package/dist/server/blockchain/CertificateToken.js +0 -386
  256. package/dist/server/blockchain/NFTMinter.d.ts +0 -41
  257. package/dist/server/blockchain/NFTMinter.js +0 -323
  258. package/dist/server/blockchain/TokenQuerier.d.ts +0 -31
  259. package/dist/server/blockchain/TokenQuerier.js +0 -259
  260. package/dist/server/blockchain/TokenVerifier.d.ts +0 -20
  261. package/dist/server/blockchain/TokenVerifier.js +0 -395
  262. package/dist/server/blockchain/WalletFormatter.d.ts +0 -39
  263. package/dist/server/blockchain/WalletFormatter.js +0 -196
  264. package/dist/server/blockchain/WalletManager.d.ts +0 -46
  265. package/dist/server/blockchain/WalletManager.js +0 -294
  266. package/dist/server/blockchain/ZipMetadata.d.ts +0 -27
  267. package/dist/server/blockchain/ZipMetadata.js +0 -131
  268. package/dist/server/blockchain/ZipTokenProcessor.d.ts +0 -44
  269. package/dist/server/blockchain/ZipTokenProcessor.js +0 -204
  270. package/dist/server/blockchain/constants.d.ts +0 -102
  271. package/dist/server/blockchain/constants.js +0 -968
  272. package/dist/server/blockchain/index.d.ts +0 -9
  273. package/dist/server/blockchain/index.js +0 -44
  274. package/dist/server/blockchain/test-certificate.d.ts +0 -8
  275. package/dist/server/blockchain/test-certificate.js +0 -100
  276. package/dist/server/blockchain/types.d.ts +0 -69
  277. package/dist/server/blockchain/types.js +0 -51
  278. package/dist/server/platform/server/ZipKitServer.d.ts +0 -105
  279. package/dist/server/platform/server/ZipKitServer.js +0 -437
  280. package/dist/server/platform/servercomponents/ZipKitOTS.d.ts +0 -91
  281. package/dist/server/platform/servercomponents/ZipKitOTS.js +0 -271
  282. package/dist/shared/ZipKit.d.ts +0 -249
  283. package/dist/shared/ZipKit.js +0 -789
  284. package/dist/shared/components/CertificateOTS.d.ts +0 -15
  285. package/dist/shared/components/CertificateOTS.js +0 -116
  286. package/dist/shared/components/FileSys.d.ts +0 -2
  287. package/dist/shared/components/FileSys.js +0 -113
  288. package/dist/shared/components/HashAccumulator.d.ts +0 -55
  289. package/dist/shared/components/HashAccumulator.js +0 -100
  290. package/dist/shared/components/ZipCrypto.d.ts +0 -3
  291. package/dist/shared/components/ZipCrypto.js +0 -78
  292. package/dist/shared/components/merkleTree.d.ts +0 -66
  293. package/dist/shared/components/merkleTree.js +0 -136
  294. package/dist/shared/types/index.d.ts +0 -21
  295. package/dist/shared/types/index.js +0 -3
  296. package/dist/shared/types.d.ts +0 -33
  297. package/dist/shared/types.js +0 -8
  298. package/dist/shared/version.js +0 -7
  299. package/src/browser/CertificateGeneratorBrowser.ts +0 -498
  300. package/src/browser/ZipKitStampBrowser.ts +0 -9
  301. package/src/browser-index.ts +0 -36
  302. package/src/server/blockchain/CertificateToken.ts +0 -444
  303. package/src/server/blockchain/NFTMinter.ts +0 -357
  304. package/src/server/blockchain/TokenQuerier.ts +0 -287
  305. package/src/server/blockchain/TokenVerifier.ts +0 -453
  306. package/src/server/blockchain/WalletAnalyzer.ts +0 -397
  307. package/src/server/blockchain/WalletFormatter.ts +0 -206
  308. package/src/server/blockchain/WalletManager.ts +0 -294
  309. package/src/server/blockchain/ZipMetadata.ts +0 -117
  310. package/src/server/blockchain/ZipTokenProcessor.ts +0 -234
  311. package/src/server/blockchain/constants.ts +0 -969
  312. package/src/server/blockchain/index.ts +0 -42
  313. package/src/server/blockchain/test-certificate.ts +0 -137
  314. package/src/server/blockchain/types.ts +0 -134
  315. package/src/server/platform/server/ZipKitServer.ts +0 -459
  316. package/src/server/platform/servercomponents/ZipKitOTS.ts +0 -313
  317. package/src/server/platform/servercomponents/opentimestamps.d.ts +0 -23
  318. package/src/shared/ZipKit.ts +0 -899
  319. package/src/shared/components/CertificateOTS.ts +0 -132
  320. package/src/shared/components/FileSys.ts +0 -87
  321. package/src/shared/components/HashAccumulator.ts +0 -113
  322. package/src/shared/components/ZipCrypto.ts +0 -91
  323. package/src/shared/components/merkleTree.ts +0 -162
  324. package/src/shared/types/index.ts +0 -25
  325. package/src/shared/types/modules.d.ts +0 -22
  326. package/src/shared/types/opentimestamps.d.ts +0 -23
  327. package/src/shared/types.d.ts +0 -8
  328. package/src/shared/types.ts +0 -43
  329. package/src/shared/version.ts +0 -4
  330. /package/src/{shared → core}/components/Support.ts +0 -0
@@ -1,104 +1,185 @@
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 = void 0;
7
+ exports.WalletAnalyzer = exports.CoreWalletManager = void 0;
37
8
  const ethers_1 = require("ethers");
38
- const fs = __importStar(require("fs"));
39
- const path = __importStar(require("path"));
40
- // Contract ABI for NZIP tokens
9
+ const types_1 = require("../../types");
10
+ const Logger_1 = require("../../core/components/Logger");
41
11
  const NZIP_CONTRACT_ABI = [
42
- "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))",
43
13
  "function ownerOf(uint256 tokenId) view returns (address)",
44
14
  "function name() view returns (string)",
45
15
  "function symbol() view returns (string)",
46
16
  "function totalSupply() view returns (uint256)",
47
17
  "function getTokensByMerkleRoot(string merkleRootHash) view returns (uint256[])",
48
- "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)"
49
19
  ];
50
- // ERC-20 token ABI for checking other tokens
51
20
  const ERC20_ABI = [
52
21
  "function balanceOf(address owner) view returns (uint256)",
53
22
  "function name() view returns (string)",
54
23
  "function symbol() view returns (string)",
55
24
  "function decimals() view returns (uint8)"
56
25
  ];
57
- // ERC-721 NFT ABI
58
26
  const ERC721_ABI = [
59
27
  "function balanceOf(address owner) view returns (uint256)",
60
28
  "function name() view returns (string)",
61
29
  "function symbol() view returns (string)",
62
30
  "function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)"
63
31
  ];
64
- class WalletAnalyzer {
65
- constructor(provider) {
66
- this.provider = provider;
32
+ /**
33
+ * Core wallet functionality that works in both browser and server environments
34
+ */
35
+ class CoreWalletManager {
36
+ constructor() {
37
+ this.wallet = null;
38
+ this.provider = null;
67
39
  }
68
40
  /**
69
- * Get basic wallet information (balance, transaction count, etc.)
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
70
49
  */
71
- async getWalletBasics(address) {
50
+ async setupWallet(privateKey, network, mintToken = false) {
72
51
  try {
73
- // Get ETH balance
74
- const balance = await this.provider.getBalance(address);
75
- const ethBalance = ethers_1.ethers.formatEther(balance);
76
- // Get transaction count (nonce)
77
- const txCount = await this.provider.getTransactionCount(address);
78
- // Get network info
79
- const network = await this.provider.getNetwork();
80
- // Get latest block
81
- const latestBlock = await this.provider.getBlockNumber();
52
+ const networkConfig = types_1.NETWORKS[network] || types_1.NETWORKS['base-sepolia'];
53
+ this.wallet = new ethers_1.ethers.Wallet(privateKey);
54
+ Logger_1.Logger.log(`Using wallet: ${this.wallet.address}`);
55
+ const ok = await this.connectToNetwork(networkConfig, mintToken);
56
+ if (!ok) {
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
+ };
63
+ }
82
64
  return {
83
- ethBalance,
84
- transactionCount: txCount,
85
- networkName: network.name,
86
- chainId: network.chainId,
87
- latestBlock
65
+ wallet: this.wallet,
66
+ provider: this.provider,
67
+ success: true,
68
+ message: `Wallet setup successful for ${networkConfig.name}`
88
69
  };
89
70
  }
90
71
  catch (error) {
91
- throw new Error(`Failed to get wallet basics: ${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
+ };
79
+ }
80
+ }
81
+ /**
82
+ * Connect to the specified network
83
+ */
84
+ async connectToNetwork(networkConfig, mintToken) {
85
+ try {
86
+ Logger_1.Logger.log(`Attempting to connect to ${networkConfig.name} network...`);
87
+ this.provider = new ethers_1.ethers.JsonRpcProvider(networkConfig.rpcUrl);
88
+ let networkTimedOut = false;
89
+ const networkTimeout = setTimeout(() => {
90
+ networkTimedOut = true;
91
+ Logger_1.Logger.error("Network connection timeout");
92
+ }, 5000);
93
+ await Promise.race([
94
+ this.provider.getNetwork(),
95
+ new Promise((_, reject) => setTimeout(() => {
96
+ if (networkTimedOut)
97
+ reject(new Error("Network connection timeout"));
98
+ }, 5100))
99
+ ]);
100
+ clearTimeout(networkTimeout);
101
+ if (this.wallet) {
102
+ this.wallet = this.wallet.connect(this.provider);
103
+ const balance = await this.provider.getBalance(this.wallet.address);
104
+ const balanceEth = ethers_1.ethers.formatEther(balance);
105
+ Logger_1.Logger.log(`Wallet balance: ${balanceEth} ETH`);
106
+ const minBalance = 0.0001;
107
+ if (parseFloat(balanceEth) < minBalance && mintToken) {
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');
110
+ throw new Error(`Insufficient balance for minting. Current: ${balanceEth} ETH, Required: ${minBalance} ETH`);
111
+ }
112
+ else if (mintToken) {
113
+ Logger_1.Logger.log(`✅ Sufficient balance for token minting`);
114
+ }
115
+ }
116
+ Logger_1.Logger.log(`✅ Successfully connected to ${networkConfig.name}`);
117
+ return true;
92
118
  }
119
+ catch (networkError) {
120
+ const errorMessage = networkError instanceof Error ? networkError.message : String(networkError);
121
+ Logger_1.Logger.error(`Failed to connect to ${networkConfig.name} network: ${errorMessage}`);
122
+ this.provider = null;
123
+ return false;
124
+ }
125
+ }
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
+ }
150
+ }
151
+ exports.CoreWalletManager = CoreWalletManager;
152
+ /**
153
+ * Wallet analyzer for blockchain operations
154
+ */
155
+ class WalletAnalyzer {
156
+ constructor(provider) {
157
+ this.provider = provider;
93
158
  }
94
159
  /**
95
- * Scan for NZIP tokens owned by an address using multiple methods
160
+ * Get basic wallet information
161
+ */
162
+ async getWalletBasics(address) {
163
+ const balance = await this.provider.getBalance(address);
164
+ const ethBalance = ethers_1.ethers.formatEther(balance);
165
+ const txCount = await this.provider.getTransactionCount(address);
166
+ const network = await this.provider.getNetwork();
167
+ const latestBlock = await this.provider.getBlockNumber();
168
+ return {
169
+ ethBalance,
170
+ transactionCount: txCount,
171
+ networkName: network.name,
172
+ chainId: network.chainId,
173
+ latestBlock
174
+ };
175
+ }
176
+ /**
177
+ * Scan for NZIP tokens owned by an address
96
178
  */
97
179
  async scanForNZipTokens(contractAddress, ownerAddress) {
98
180
  const contract = new ethers_1.ethers.Contract(contractAddress, NZIP_CONTRACT_ABI, this.provider);
99
181
  let foundTokens = [];
100
182
  let searchMethod = 'none';
101
- // Method 1: Try events with recent blocks only
102
183
  try {
103
184
  const latestBlock = await this.provider.getBlockNumber();
104
185
  const startBlock = Math.max(0, latestBlock - 50000);
@@ -107,62 +188,43 @@ class WalletAnalyzer {
107
188
  for (const event of events) {
108
189
  if ('args' in event && event.args && event.args.tokenId) {
109
190
  const tokenId = Number(event.args.tokenId);
110
- if (!foundTokens.includes(tokenId)) {
191
+ if (!foundTokens.includes(tokenId))
111
192
  foundTokens.push(tokenId);
112
- }
113
193
  }
114
194
  }
115
195
  if (foundTokens.length > 0) {
116
- searchMethod = 'recent-events';
117
- return { foundTokens, searchMethod };
196
+ return { foundTokens, searchMethod: 'recent-events' };
118
197
  }
119
198
  }
120
- catch (eventError) {
121
- // Continue to next method
122
- }
123
- // Method 2: Direct token ID checking (brute force for small supply)
199
+ catch { }
124
200
  try {
125
201
  const totalSupply = await contract.totalSupply();
126
- const maxCheck = Math.min(Number(totalSupply), 50); // Limit to 50 tokens max
202
+ const maxCheck = Math.min(Number(totalSupply), 50);
127
203
  for (let tokenId = 0; tokenId < maxCheck; tokenId++) {
128
204
  try {
129
205
  const owner = await contract.ownerOf(tokenId);
130
- if (owner.toLowerCase() === ownerAddress.toLowerCase()) {
206
+ if (owner.toLowerCase() === ownerAddress.toLowerCase())
131
207
  foundTokens.push(tokenId);
132
- }
133
- }
134
- catch (ownerError) {
135
- // Token doesn't exist or other error, skip
136
208
  }
209
+ catch { }
137
210
  }
138
- if (foundTokens.length > 0) {
139
- searchMethod = 'iteration';
140
- return { foundTokens, searchMethod };
141
- }
142
- }
143
- catch (iterationError) {
144
- // Continue to next method
211
+ if (foundTokens.length > 0)
212
+ return { foundTokens, searchMethod: 'iteration' };
145
213
  }
146
- // Method 3: Check specific token IDs that commonly exist
147
- const commonTokenIds = Array.from({ length: 20 }, (_, i) => i); // 0-19
214
+ catch { }
215
+ const commonTokenIds = Array.from({ length: 20 }, (_, i) => i);
148
216
  for (const tokenId of commonTokenIds) {
149
217
  try {
150
218
  const owner = await contract.ownerOf(tokenId);
151
- if (owner.toLowerCase() === ownerAddress.toLowerCase()) {
219
+ if (owner.toLowerCase() === ownerAddress.toLowerCase())
152
220
  foundTokens.push(tokenId);
153
- }
154
- }
155
- catch (ownerError) {
156
- // Token doesn't exist, skip
157
221
  }
222
+ catch { }
158
223
  }
159
- if (foundTokens.length > 0) {
160
- searchMethod = 'common-ids';
161
- }
162
- return { foundTokens, searchMethod };
224
+ return { foundTokens, searchMethod: foundTokens.length > 0 ? 'common-ids' : 'none' };
163
225
  }
164
226
  /**
165
- * Get detailed information about NZIP tokens
227
+ * Get detailed information for NZIP tokens
166
228
  */
167
229
  async getNZipTokenDetails(contractAddress, tokenIds) {
168
230
  const contract = new ethers_1.ethers.Contract(contractAddress, NZIP_CONTRACT_ABI, this.provider);
@@ -173,7 +235,6 @@ class WalletAnalyzer {
173
235
  tokenDetails.push({
174
236
  tokenId: tokenId.toString(),
175
237
  merkleRootHash: zipInfo.merkleRootHash,
176
- fileName: zipInfo.fileName,
177
238
  timestamp: Number(zipInfo.creationTimestamp),
178
239
  creator: zipInfo.creator,
179
240
  creationTimestamp: Number(zipInfo.creationTimestamp),
@@ -182,13 +243,13 @@ class WalletAnalyzer {
182
243
  });
183
244
  }
184
245
  catch (error) {
185
- console.error(`Error fetching details for token ${tokenId}:`, error);
246
+ Logger_1.Logger.error(`Error fetching details for token ${tokenId}:`, error);
186
247
  }
187
248
  }
188
249
  return tokenDetails;
189
250
  }
190
251
  /**
191
- * Get contract information (name, symbol, total supply)
252
+ * Get contract information
192
253
  */
193
254
  async getContractInfo(contractAddress) {
194
255
  try {
@@ -198,18 +259,14 @@ class WalletAnalyzer {
198
259
  contract.symbol(),
199
260
  contract.totalSupply()
200
261
  ]);
201
- return {
202
- name,
203
- symbol,
204
- totalSupply: totalSupply.toString()
205
- };
262
+ return { name, symbol, totalSupply: totalSupply.toString() };
206
263
  }
207
- catch (error) {
264
+ catch {
208
265
  return null;
209
266
  }
210
267
  }
211
268
  /**
212
- * Check ERC-20 token balances for common tokens
269
+ * Check for ERC20 tokens
213
270
  */
214
271
  async checkERC20Tokens(ownerAddress, tokenConfigs) {
215
272
  const foundTokens = [];
@@ -218,7 +275,7 @@ class WalletAnalyzer {
218
275
  const contract = new ethers_1.ethers.Contract(tokenConfig.address, ERC20_ABI, this.provider);
219
276
  const balance = await contract.balanceOf(ownerAddress);
220
277
  if (balance > 0) {
221
- let name, symbol, decimals;
278
+ let name = tokenConfig.name, symbol = tokenConfig.symbol, decimals = 18;
222
279
  try {
223
280
  [name, symbol, decimals] = await Promise.all([
224
281
  contract.name(),
@@ -226,12 +283,7 @@ class WalletAnalyzer {
226
283
  contract.decimals()
227
284
  ]);
228
285
  }
229
- catch (metadataError) {
230
- // Use fallback info if contract calls fail
231
- name = tokenConfig.name;
232
- symbol = tokenConfig.symbol;
233
- decimals = 18; // Default decimals
234
- }
286
+ catch { }
235
287
  const formattedBalance = ethers_1.ethers.formatUnits(balance, decimals);
236
288
  foundTokens.push({
237
289
  address: tokenConfig.address,
@@ -243,14 +295,12 @@ class WalletAnalyzer {
243
295
  });
244
296
  }
245
297
  }
246
- catch (error) {
247
- // Token might not exist or might not be ERC20, continue silently
248
- }
298
+ catch { }
249
299
  }
250
300
  return foundTokens;
251
301
  }
252
302
  /**
253
- * Check NFT collection balances
303
+ * Check for NFT collections
254
304
  */
255
305
  async checkNFTCollections(ownerAddress, nftConfigs) {
256
306
  const foundNFTs = [];
@@ -259,30 +309,14 @@ class WalletAnalyzer {
259
309
  const contract = new ethers_1.ethers.Contract(nftConfig.address, ERC721_ABI, this.provider);
260
310
  const balance = await contract.balanceOf(ownerAddress);
261
311
  if (balance > 0) {
262
- let name, symbol;
312
+ let name = nftConfig.name, symbol = nftConfig.symbol;
263
313
  try {
264
314
  [name, symbol] = await Promise.all([
265
315
  contract.name(),
266
316
  contract.symbol()
267
317
  ]);
268
318
  }
269
- catch (metadataError) {
270
- name = nftConfig.name;
271
- symbol = nftConfig.symbol;
272
- }
273
- // Try to get token IDs if balance is small
274
- let tokenIds = [];
275
- if (Number(balance) <= 5) {
276
- try {
277
- for (let i = 0; i < Number(balance); i++) {
278
- const tokenId = await contract.tokenOfOwnerByIndex(ownerAddress, i);
279
- tokenIds.push(tokenId.toString());
280
- }
281
- }
282
- catch (enumError) {
283
- // Unable to enumerate, that's okay
284
- }
285
- }
319
+ catch { }
286
320
  foundNFTs.push({
287
321
  address: nftConfig.address,
288
322
  name,
@@ -292,30 +326,10 @@ class WalletAnalyzer {
292
326
  });
293
327
  }
294
328
  }
295
- catch (error) {
296
- // Contract might not exist or might not be ERC-721, continue silently
297
- }
329
+ catch { }
298
330
  }
299
331
  return foundNFTs;
300
332
  }
301
- /**
302
- * Detect NZIP contract from deployment file
303
- */
304
- static detectNZipContract() {
305
- const deploymentPath = path.join(process.cwd(), 'zipfile-nft-deployment.json');
306
- if (fs.existsSync(deploymentPath)) {
307
- try {
308
- const deploymentInfo = JSON.parse(fs.readFileSync(deploymentPath, 'utf8'));
309
- if (deploymentInfo.address) {
310
- return deploymentInfo.address;
311
- }
312
- }
313
- catch (error) {
314
- // Could not read deployment file
315
- }
316
- }
317
- return undefined;
318
- }
319
333
  /**
320
334
  * Get common token configurations for a network
321
335
  */
@@ -341,11 +355,8 @@ class WalletAnalyzer {
341
355
  */
342
356
  static getCommonNFTs(network) {
343
357
  const commonNFTs = {
344
- 'base-sepolia': [
345
- // Add known testnet NFTs here when they become available
346
- ],
358
+ 'base-sepolia': [],
347
359
  'base': [
348
- // Base mainnet NFTs - these are examples, real addresses would be different
349
360
  { address: '0x1234567890123456789012345678901234567890', name: 'Base Punks', symbol: 'BPUNK', type: 'ERC721' },
350
361
  { address: '0x0987654321098765432109876543210987654321', name: 'Base Bears', symbol: 'BBEAR', type: 'ERC721' },
351
362
  ]
@@ -354,3 +365,4 @@ class WalletAnalyzer {
354
365
  }
355
366
  }
356
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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"}
@@ -0,0 +1,141 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * ZipkitMinter - Handles NFT token minting for ZIP files
4
+ * Minter API for NZIP-NFT smart contract.
5
+ */
6
+ import { ethers } from 'ethers';
7
+ import { type ContractConfig } from './contracts';
8
+ import type { TokenMetadata } from '../../types';
9
+ export interface MintingOptions {
10
+ walletPrivateKey: string;
11
+ network: string;
12
+ verbose?: boolean;
13
+ debug?: boolean;
14
+ rpcUrlIndex?: number;
15
+ }
16
+ export interface MintingResult {
17
+ success: boolean;
18
+ message: string;
19
+ tokenId?: string;
20
+ transactionHash?: string;
21
+ contractAddress?: string;
22
+ blockNumber?: number;
23
+ walletAddress?: string;
24
+ gasUsed?: string;
25
+ gasCost?: string;
26
+ }
27
+ export interface TokenInfo {
28
+ tokenId: string;
29
+ owner: string;
30
+ isOwnedByUser: boolean;
31
+ tokenData?: any;
32
+ }
33
+ export interface DuplicateCheckResult {
34
+ hasExistingTokens: boolean;
35
+ allTokens: TokenInfo[];
36
+ userOwnedTokens: TokenInfo[];
37
+ othersTokens: TokenInfo[];
38
+ }
39
+ export interface WalletInfo {
40
+ address: string;
41
+ balance: string;
42
+ networkName: string;
43
+ }
44
+ /**
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
53
+ */
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);
63
+ /**
64
+ * Get wallet information
65
+ */
66
+ getWalletInfo(): Promise<WalletInfo>;
67
+ /**
68
+ * Check for existing tokens with same merkle root and verify ownership
69
+ */
70
+ checkForDuplicates(): Promise<DuplicateCheckResult>;
71
+ /**
72
+ * Estimate gas costs for minting
73
+ */
74
+ estimateGasCosts(): Promise<{
75
+ gasLimit: bigint;
76
+ gasPrice: bigint;
77
+ estimatedCost: string;
78
+ }>;
79
+ /**
80
+ * Create token metadata string
81
+ */
82
+ private createTokenMetadataString;
83
+ /**
84
+ * Create TokenMetadata object from minting result
85
+ */
86
+ private createTokenMetadata;
87
+ /**
88
+ * Mint new token on blockchain
89
+ */
90
+ mintToken(): Promise<MintingResult>;
91
+ /**
92
+ * Main minting process - checks for duplicates, then mints if needed
93
+ */
94
+ processMinting(): Promise<{
95
+ walletInfo: WalletInfo;
96
+ duplicateCheck: DuplicateCheckResult;
97
+ gasCosts?: {
98
+ gasLimit: bigint;
99
+ gasPrice: bigint;
100
+ estimatedCost: string;
101
+ };
102
+ mintingResult?: MintingResult;
103
+ tokenMetadata?: TokenMetadata;
104
+ }>;
105
+ /**
106
+ * Complete the minting after user confirmation
107
+ */
108
+ completeMinting(): Promise<{
109
+ mintingResult: MintingResult;
110
+ tokenMetadata?: TokenMetadata;
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[]>;
136
+ }
137
+ /**
138
+ * Utility function to validate Ethereum private key
139
+ */
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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"}