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
@@ -0,0 +1,317 @@
1
+ "use strict";
2
+ /**
3
+ * ZipkitMinterBrowser - Browser-specific NFT minting for ZIP files
4
+ * Extends core minting functionality with browser-specific features
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ZipkitMinterBrowser = void 0;
8
+ class ZipkitMinterBrowser {
9
+ constructor(merkleRoot, walletManager) {
10
+ this.merkleRoot = merkleRoot;
11
+ this.walletManager = walletManager;
12
+ }
13
+ /**
14
+ * Initialize the minter with wallet manager
15
+ */
16
+ async initialize() {
17
+ if (!this.walletManager.getContract() || !this.walletManager.getBrowserProvider()) {
18
+ throw new Error("Wallet manager not initialized");
19
+ }
20
+ // Browser minter uses wallet manager directly, no core minter needed
21
+ console.log('ZipkitMinterBrowser initialized with wallet manager');
22
+ }
23
+ getNetworkName(chainId) {
24
+ const networkNames = {
25
+ 1: "homestead",
26
+ 11155111: "sepolia",
27
+ 84532: "base-sepolia",
28
+ 8453: "base"
29
+ };
30
+ return networkNames[chainId] || `chain-${chainId}`;
31
+ }
32
+ /**
33
+ * Check for any existing tokens with the same Merkle Root
34
+ */
35
+ async findTokensByMerkleRoot() {
36
+ const contract = this.walletManager.getContract();
37
+ if (!contract) {
38
+ throw new Error("Service not initialized");
39
+ }
40
+ try {
41
+ const tokenIds = await contract.getFunction("getTokensByMerkleRoot")(this.merkleRoot);
42
+ if (tokenIds.length === 0) {
43
+ return [];
44
+ }
45
+ const existingTokens = [];
46
+ for (const tokenId of tokenIds) {
47
+ try {
48
+ const owner = await contract.getFunction("ownerOf")(tokenId);
49
+ const zipFileInfo = await contract.getFunction("getZipFileInfo")(tokenId);
50
+ existingTokens.push({
51
+ tokenId: tokenId.toString(),
52
+ owner: owner,
53
+ creationTimestamp: Number(zipFileInfo.tokenizationTime) || 0,
54
+ mintedAt: new Date(Number(zipFileInfo.tokenizationTime) * 1000).toISOString(),
55
+ transactionHash: ''
56
+ });
57
+ }
58
+ catch (error) {
59
+ console.warn(`Could not get info for token ${tokenId}:`, error);
60
+ }
61
+ }
62
+ return existingTokens;
63
+ }
64
+ catch (error) {
65
+ console.error("Error finding tokens by merkle root:", error);
66
+ return [];
67
+ }
68
+ }
69
+ /**
70
+ * Estimate gas cost for minting
71
+ */
72
+ async estimateGasCost() {
73
+ const contract = this.walletManager.getContract();
74
+ const provider = this.walletManager.getBrowserProvider();
75
+ if (!contract || !provider) {
76
+ throw new Error("Service not initialized");
77
+ }
78
+ try {
79
+ console.log(`⛽ Estimating gas for ZIP archive (${this.merkleRoot.slice(0, 10)}...)`);
80
+ const signer = await provider.getSigner();
81
+ const contractWithSigner = contract.connect(signer);
82
+ // Create a timestamp for the archive (current time)
83
+ const creationTimestamp = Math.floor(Date.now() / 1000);
84
+ // Placeholder values for IPFS hash and token URI
85
+ const ipfsHash = ""; // Empty for now, could be implemented later
86
+ const tokenURI = ""; // Empty for now, could be implemented later
87
+ // Estimate gas for the mint function with timeout
88
+ const GAS_ESTIMATION_TIMEOUT = 30000; // 30 seconds
89
+ const gasEstimate = await Promise.race([
90
+ contractWithSigner.getFunction("publicMintZipFile").estimateGas(this.merkleRoot, creationTimestamp, ipfsHash, tokenURI),
91
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Gas estimation timeout')), GAS_ESTIMATION_TIMEOUT))
92
+ ]);
93
+ // Get current gas price (use read provider if available) with timeout
94
+ const readProvider = this.walletManager.getReadProvider();
95
+ const providerForRead = readProvider || provider;
96
+ const gasPrice = await Promise.race([
97
+ providerForRead.getFeeData(),
98
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Gas price fetch timeout')), 10000))
99
+ ]);
100
+ const gasCost = gasEstimate * (gasPrice.gasPrice || BigInt(0));
101
+ // Convert to ETH (18 decimals)
102
+ const costInEth = Number(gasCost) / 1e18;
103
+ console.log(`⛽ Estimated gas: ${gasEstimate.toString()} units`);
104
+ console.log(`💰 Estimated cost: ${costInEth.toFixed(6)} ETH`);
105
+ return costInEth.toFixed(6);
106
+ }
107
+ catch (error) {
108
+ console.warn('Gas estimation failed:', error);
109
+ // Provide fallback estimate based on error type
110
+ if (error instanceof Error) {
111
+ if (error.message.includes("not supported") || error.message.includes("method")) {
112
+ console.warn("RPC method not supported by wallet provider, using fallback estimate");
113
+ return "0.002"; // Higher fallback estimate for complex contract calls
114
+ }
115
+ }
116
+ return "0.001"; // Default fallback estimate
117
+ }
118
+ }
119
+ /**
120
+ * Mint a new token
121
+ */
122
+ async mintToken() {
123
+ const contract = this.walletManager.getContract();
124
+ const provider = this.walletManager.getBrowserProvider();
125
+ const config = this.walletManager.getCurrentConfig();
126
+ if (!contract || !provider || !config.address) {
127
+ throw new Error("Service not initialized");
128
+ }
129
+ try {
130
+ console.log("🎯 Minting NFT token for ZIP archive...");
131
+ console.log(`📝 Minting token for ZIP archive (filename stored in ZIP metadata only for privacy)`);
132
+ console.log(`🔐 Merkle Root: ${this.merkleRoot}`);
133
+ console.log(`📍 Contract: ${config.address}`);
134
+ // Call the actual contract to mint the token
135
+ const signer = await provider.getSigner();
136
+ const contractWithSigner = contract.connect(signer);
137
+ // Create a timestamp for the archive (current time)
138
+ const creationTimestamp = Math.floor(Date.now() / 1000);
139
+ // Placeholder values for IPFS hash and token URI
140
+ const ipfsHash = ""; // Empty for now, could be implemented later
141
+ const tokenURI = ""; // Empty for now, could be implemented later
142
+ console.log("📡 Submitting transaction to blockchain...");
143
+ console.log(`🕐 Creation timestamp: ${creationTimestamp}`);
144
+ console.log("🔒 Note: Filename is not stored on blockchain for privacy");
145
+ // Get the function to call
146
+ const functionCall = contractWithSigner.getFunction("publicMintZipFile");
147
+ // Send the transaction (this will trigger wallet approval)
148
+ // Note: We don't populateTransaction first as it may trigger gas estimation
149
+ // which can hang on some networks. Let the wallet handle it directly.
150
+ // Add timeout to prevent hanging if wallet doesn't respond
151
+ const TX_SEND_TIMEOUT = 60000; // 60 seconds for user to approve
152
+ console.log("⏳ Waiting for wallet approval...");
153
+ const tx = await Promise.race([
154
+ functionCall(this.merkleRoot, creationTimestamp, ipfsHash, tokenURI),
155
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Transaction send timeout - wallet approval dialog may not have appeared. Please check your wallet.')), TX_SEND_TIMEOUT))
156
+ ]);
157
+ console.log(`📜 Transaction submitted: ${tx.hash}`);
158
+ console.log("⏳ Waiting for confirmation...");
159
+ // Use read provider for waiting to avoid rate limiting with timeout
160
+ let receipt;
161
+ const CONFIRMATION_TIMEOUT = 120000; // 2 minutes timeout
162
+ try {
163
+ const readProvider = this.walletManager.getReadProvider();
164
+ if (readProvider) {
165
+ receipt = await Promise.race([
166
+ readProvider.waitForTransaction(tx.hash),
167
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Transaction confirmation timeout')), CONFIRMATION_TIMEOUT))
168
+ ]);
169
+ }
170
+ else {
171
+ receipt = await Promise.race([
172
+ tx.wait(),
173
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Transaction confirmation timeout')), CONFIRMATION_TIMEOUT))
174
+ ]);
175
+ }
176
+ }
177
+ catch (confirmationError) {
178
+ // If timeout, still try to get receipt manually
179
+ if (confirmationError?.message?.includes?.('timeout')) {
180
+ try {
181
+ const readProvider = this.walletManager.getReadProvider();
182
+ const providerForRead = readProvider || provider;
183
+ receipt = await providerForRead.getTransactionReceipt(tx.hash);
184
+ if (!receipt) {
185
+ throw new Error(`Transaction ${tx.hash} not found after timeout. It may still be pending.`);
186
+ }
187
+ }
188
+ catch (manualError) {
189
+ throw new Error(`Transaction confirmation failed: ${confirmationError?.message || 'Unknown error'}. Manual lookup also failed: ${manualError?.message || 'Unknown error'}`);
190
+ }
191
+ }
192
+ else {
193
+ throw confirmationError;
194
+ }
195
+ }
196
+ console.log(`✅ Transaction confirmed in block: ${receipt?.blockNumber}`);
197
+ // Extract token ID from the transaction logs
198
+ let tokenId;
199
+ // Extract token ID from transaction logs
200
+ for (let i = 0; i < receipt.logs.length; i++) {
201
+ const log = receipt.logs[i];
202
+ try {
203
+ const parsed = contract.interface.parseLog(log);
204
+ if (parsed) {
205
+ if (parsed.name === 'ZipFileTokenized') {
206
+ tokenId = parsed.args.tokenId.toString();
207
+ break;
208
+ }
209
+ else if (parsed.name === 'Transfer') {
210
+ // ERC721 Transfer event: Transfer(from, to, tokenId)
211
+ const from = parsed.args.from;
212
+ const transferTokenId = parsed.args.tokenId;
213
+ // Only use Transfer events that are minting (from zero address)
214
+ if (from === '0x0000000000000000000000000000000000000000') {
215
+ tokenId = transferTokenId.toString();
216
+ break;
217
+ }
218
+ }
219
+ }
220
+ }
221
+ catch (parseError) {
222
+ console.warn(`⚠️ Could not parse log ${i}:`, parseError);
223
+ // Try manual parsing for standard ERC721 Transfer event
224
+ if (log.topics.length >= 4 && log.topics[0] === '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef') {
225
+ try {
226
+ // ERC721 Transfer event signature
227
+ const from = log.topics[1];
228
+ const to = log.topics[2];
229
+ const transferTokenId = log.topics[3];
230
+ console.log(`🔄 Manual Transfer parse: from=${from}, to=${to}, tokenId=${transferTokenId}`);
231
+ // Check if this is a mint (from zero address)
232
+ if (from === '0x0000000000000000000000000000000000000000000000000000000000000000') {
233
+ tokenId = parseInt(transferTokenId, 16).toString();
234
+ console.log(`🎯 Found minting via manual parse with token ID: ${tokenId}`);
235
+ break;
236
+ }
237
+ }
238
+ catch (manualParseError) {
239
+ console.warn(`⚠️ Manual parsing also failed:`, manualParseError);
240
+ }
241
+ }
242
+ }
243
+ }
244
+ if (!tokenId) {
245
+ console.error("❌ Could not extract token ID from any logs");
246
+ console.error("📋 Full receipt for debugging:", JSON.stringify(receipt, null, 2));
247
+ throw new Error("Could not extract token ID from transaction receipt");
248
+ }
249
+ console.log(`✅ NFT token minted successfully!`);
250
+ console.log(`🎫 Token ID: ${tokenId}`);
251
+ console.log(`📜 Transaction: ${tx.hash}`);
252
+ return {
253
+ success: true,
254
+ tokenId: tokenId,
255
+ transactionHash: tx.hash
256
+ };
257
+ }
258
+ catch (error) {
259
+ console.error("Token minting failed:", error);
260
+ let errorMessage = "Unknown error occurred";
261
+ if (error.code === 'ACTION_REJECTED') {
262
+ errorMessage = "Transaction was rejected by user";
263
+ }
264
+ else if (error.code === 'INSUFFICIENT_FUNDS') {
265
+ errorMessage = "Insufficient funds for transaction";
266
+ }
267
+ else if (error.reason) {
268
+ errorMessage = error.reason;
269
+ }
270
+ else if (error.message) {
271
+ errorMessage = error.message;
272
+ }
273
+ return {
274
+ success: false,
275
+ error: errorMessage
276
+ };
277
+ }
278
+ }
279
+ /**
280
+ * Create token metadata
281
+ */
282
+ createTokenMetadata(tokenId, transactionHash) {
283
+ const now = new Date();
284
+ const config = this.walletManager.getCurrentConfig();
285
+ return {
286
+ version: "1.0",
287
+ tokenId,
288
+ contractAddress: config.address,
289
+ network: config.network,
290
+ networkChainId: config.chainId,
291
+ transactionHash,
292
+ merkleRoot: this.merkleRoot,
293
+ mintedAt: now.toISOString(),
294
+ creationTimestamp: Math.floor(now.getTime() / 1000)
295
+ };
296
+ }
297
+ /**
298
+ * Get explorer URL for transaction
299
+ */
300
+ getExplorerUrl(transactionHash) {
301
+ return this.walletManager.getExplorerUrl(transactionHash);
302
+ }
303
+ /**
304
+ * Get explorer URL for contract
305
+ */
306
+ getContractExplorerUrl() {
307
+ return this.walletManager.getContractExplorerUrl();
308
+ }
309
+ /**
310
+ * Get explorer URL for token
311
+ */
312
+ getTokenExplorerUrl(tokenId) {
313
+ return this.walletManager.getTokenExplorerUrl(tokenId);
314
+ }
315
+ }
316
+ exports.ZipkitMinterBrowser = ZipkitMinterBrowser;
317
+ //# sourceMappingURL=ZipkitMinterBrowser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZipkitMinterBrowser.js","sourceRoot":"","sources":["../../../src/blockchain/browser/ZipkitMinterBrowser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Browser Blockchain Module Exports
3
+ * Browser-specific blockchain functionality for ZIP file tokenization
4
+ */
5
+ export { WalletManagerBrowser } from './WalletManagerBrowser';
6
+ export type { WalletConfigBrowser } from './WalletManagerBrowser';
7
+ export { ZipkitMinterBrowser } from './ZipkitMinterBrowser';
8
+ export type { TokenizationResult, ExistingToken } from './ZipkitMinterBrowser';
9
+ export { TokenVerifierBrowser, createTokenVerifier, checkForTokenization } from './TokenVerifierBrowser';
10
+ export type { TokenVerificationResult, TokenVerificationOptions, BlockchainVerification } from './TokenVerifierBrowser';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blockchain/browser/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE/E,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzG,YAAY,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ /**
3
+ * Browser Blockchain Module Exports
4
+ * Browser-specific blockchain functionality for ZIP file tokenization
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.checkForTokenization = exports.createTokenVerifier = exports.TokenVerifierBrowser = exports.ZipkitMinterBrowser = exports.WalletManagerBrowser = void 0;
8
+ var WalletManagerBrowser_1 = require("./WalletManagerBrowser");
9
+ Object.defineProperty(exports, "WalletManagerBrowser", { enumerable: true, get: function () { return WalletManagerBrowser_1.WalletManagerBrowser; } });
10
+ var ZipkitMinterBrowser_1 = require("./ZipkitMinterBrowser");
11
+ Object.defineProperty(exports, "ZipkitMinterBrowser", { enumerable: true, get: function () { return ZipkitMinterBrowser_1.ZipkitMinterBrowser; } });
12
+ var TokenVerifierBrowser_1 = require("./TokenVerifierBrowser");
13
+ Object.defineProperty(exports, "TokenVerifierBrowser", { enumerable: true, get: function () { return TokenVerifierBrowser_1.TokenVerifierBrowser; } });
14
+ Object.defineProperty(exports, "createTokenVerifier", { enumerable: true, get: function () { return TokenVerifierBrowser_1.createTokenVerifier; } });
15
+ Object.defineProperty(exports, "checkForTokenization", { enumerable: true, get: function () { return TokenVerifierBrowser_1.checkForTokenization; } });
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/blockchain/browser/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAG7B,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAG5B,+DAAyG;AAAhG,4HAAA,oBAAoB,OAAA;AAAE,2HAAA,mBAAmB,OAAA;AAAE,4HAAA,oBAAoB,OAAA"}
@@ -1,4 +1,15 @@
1
+ /**
2
+ * Core WalletManager - Platform-agnostic wallet functionality
3
+ * Provides core wallet operations that work in both browser and server environments
4
+ */
1
5
  import { ethers } from 'ethers';
6
+ import { WalletSetupResult, NetworkConfig } from '../../types';
7
+ export interface CommonTokenConfig {
8
+ address: string;
9
+ name: string;
10
+ symbol: string;
11
+ type: 'ERC20' | 'ERC721';
12
+ }
2
13
  export interface TokenInfo {
3
14
  address: string;
4
15
  name: string;
@@ -7,17 +18,6 @@ export interface TokenInfo {
7
18
  decimals?: number;
8
19
  type: 'ERC20' | 'ERC721' | 'NZIP';
9
20
  }
10
- export interface NZipTokenDetails {
11
- tokenId: string;
12
- merkleRootHash: string;
13
- fileName: string;
14
- timestamp: number;
15
- tokenURI?: string;
16
- creator: string;
17
- creationTimestamp: number;
18
- tokenizationTime: number;
19
- ipfsHash?: string;
20
- }
21
21
  export interface WalletBasicInfo {
22
22
  ethBalance: string;
23
23
  transactionCount: number;
@@ -29,29 +29,75 @@ export interface TokenScanResult {
29
29
  foundTokens: number[];
30
30
  searchMethod: 'recent-events' | 'iteration' | 'common-ids' | 'none';
31
31
  }
32
- export interface CommonTokenConfig {
33
- address: string;
34
- name: string;
35
- symbol: string;
36
- type: 'ERC20' | 'ERC721';
32
+ export interface NZipTokenDetails {
33
+ tokenId: string;
34
+ merkleRootHash: string;
35
+ timestamp: number;
36
+ tokenURI?: string;
37
+ creator: string;
38
+ creationTimestamp: number;
39
+ tokenizationTime: number;
40
+ ipfsHash?: string;
41
+ }
42
+ /**
43
+ * Core wallet functionality that works in both browser and server environments
44
+ */
45
+ export declare class CoreWalletManager {
46
+ protected wallet: ethers.Wallet | null;
47
+ protected provider: ethers.JsonRpcProvider | null;
48
+ constructor();
49
+ /**
50
+ * Setup wallet with private key and connect to network
51
+ *
52
+ * SECURITY WARNING: This method accepts a private key as a parameter.
53
+ * - Never hardcode private keys in source code
54
+ * - Always use environment variables for private keys
55
+ * - Use testnet keys for development/testing
56
+ * - Use secure key management (HSMs, KMS) for production
57
+ * - See SECURITY.md for complete security guidelines
58
+ */
59
+ setupWallet(privateKey: string, network: string, mintToken?: boolean): Promise<WalletSetupResult>;
60
+ /**
61
+ * Connect to the specified network
62
+ */
63
+ protected connectToNetwork(networkConfig: NetworkConfig, mintToken: boolean): Promise<boolean>;
64
+ /**
65
+ * Get the current wallet instance
66
+ */
67
+ getWallet(): ethers.Wallet | null;
68
+ /**
69
+ * Get the current provider instance
70
+ */
71
+ getProvider(): ethers.JsonRpcProvider | null;
72
+ /**
73
+ * Check if wallet is ready
74
+ */
75
+ isReady(): boolean;
76
+ /**
77
+ * Check if connected to network
78
+ */
79
+ isOnline(): boolean;
37
80
  }
81
+ /**
82
+ * Wallet analyzer for blockchain operations
83
+ */
38
84
  export declare class WalletAnalyzer {
39
85
  private provider;
40
86
  constructor(provider: ethers.JsonRpcProvider);
41
87
  /**
42
- * Get basic wallet information (balance, transaction count, etc.)
88
+ * Get basic wallet information
43
89
  */
44
90
  getWalletBasics(address: string): Promise<WalletBasicInfo>;
45
91
  /**
46
- * Scan for NZIP tokens owned by an address using multiple methods
92
+ * Scan for NZIP tokens owned by an address
47
93
  */
48
94
  scanForNZipTokens(contractAddress: string, ownerAddress: string): Promise<TokenScanResult>;
49
95
  /**
50
- * Get detailed information about NZIP tokens
96
+ * Get detailed information for NZIP tokens
51
97
  */
52
98
  getNZipTokenDetails(contractAddress: string, tokenIds: number[]): Promise<NZipTokenDetails[]>;
53
99
  /**
54
- * Get contract information (name, symbol, total supply)
100
+ * Get contract information
55
101
  */
56
102
  getContractInfo(contractAddress: string): Promise<{
57
103
  name: string;
@@ -59,17 +105,13 @@ export declare class WalletAnalyzer {
59
105
  totalSupply: string;
60
106
  } | null>;
61
107
  /**
62
- * Check ERC-20 token balances for common tokens
108
+ * Check for ERC20 tokens
63
109
  */
64
110
  checkERC20Tokens(ownerAddress: string, tokenConfigs: CommonTokenConfig[]): Promise<TokenInfo[]>;
65
111
  /**
66
- * Check NFT collection balances
112
+ * Check for NFT collections
67
113
  */
68
114
  checkNFTCollections(ownerAddress: string, nftConfigs: CommonTokenConfig[]): Promise<TokenInfo[]>;
69
- /**
70
- * Detect NZIP contract from deployment file
71
- */
72
- static detectNZipContract(): string | undefined;
73
115
  /**
74
116
  * Get common token configurations for a network
75
117
  */
@@ -79,3 +121,4 @@ export declare class WalletAnalyzer {
79
121
  */
80
122
  static getCommonNFTs(network: string): CommonTokenConfig[];
81
123
  }
124
+ //# sourceMappingURL=WalletManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletManager.d.ts","sourceRoot":"","sources":["../../../src/blockchain/core/WalletManager.ts"],"names":[],"mappings":"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"}