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
@@ -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"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Core WalletManager - Platform-agnostic wallet functionality
3
+ * Provides core wallet operations that work in both browser and server environments
4
+ */
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
+ }
13
+ export interface TokenInfo {
14
+ address: string;
15
+ name: string;
16
+ symbol: string;
17
+ balance: string;
18
+ decimals?: number;
19
+ type: 'ERC20' | 'ERC721' | 'NZIP';
20
+ }
21
+ export interface WalletBasicInfo {
22
+ ethBalance: string;
23
+ transactionCount: number;
24
+ networkName: string;
25
+ chainId: bigint;
26
+ latestBlock: number;
27
+ }
28
+ export interface TokenScanResult {
29
+ foundTokens: number[];
30
+ searchMethod: 'recent-events' | 'iteration' | 'common-ids' | 'none';
31
+ }
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;
80
+ }
81
+ /**
82
+ * Wallet analyzer for blockchain operations
83
+ */
84
+ export declare class WalletAnalyzer {
85
+ private provider;
86
+ constructor(provider: ethers.JsonRpcProvider);
87
+ /**
88
+ * Get basic wallet information
89
+ */
90
+ getWalletBasics(address: string): Promise<WalletBasicInfo>;
91
+ /**
92
+ * Scan for NZIP tokens owned by an address
93
+ */
94
+ scanForNZipTokens(contractAddress: string, ownerAddress: string): Promise<TokenScanResult>;
95
+ /**
96
+ * Get detailed information for NZIP tokens
97
+ */
98
+ getNZipTokenDetails(contractAddress: string, tokenIds: number[]): Promise<NZipTokenDetails[]>;
99
+ /**
100
+ * Get contract information
101
+ */
102
+ getContractInfo(contractAddress: string): Promise<{
103
+ name: string;
104
+ symbol: string;
105
+ totalSupply: string;
106
+ } | null>;
107
+ /**
108
+ * Check for ERC20 tokens
109
+ */
110
+ checkERC20Tokens(ownerAddress: string, tokenConfigs: CommonTokenConfig[]): Promise<TokenInfo[]>;
111
+ /**
112
+ * Check for NFT collections
113
+ */
114
+ checkNFTCollections(ownerAddress: string, nftConfigs: CommonTokenConfig[]): Promise<TokenInfo[]>;
115
+ /**
116
+ * Get common token configurations for a network
117
+ */
118
+ static getCommonTokens(network: string): CommonTokenConfig[];
119
+ /**
120
+ * Get common NFT configurations for a network
121
+ */
122
+ static getCommonNFTs(network: string): CommonTokenConfig[];
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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"}