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
@@ -6,7 +6,7 @@ import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
6
6
  import "@openzeppelin/contracts/access/Ownable.sol";
7
7
 
8
8
  /**
9
- * @title NZIP NFT Contract v2.0
9
+ * @title NZIP NFT Contract v2.10
10
10
  * @dev Main NFT contract for tokenizing ZIP files with blockchain metadata
11
11
  * Features:
12
12
  * - Blockchain metadata (block number, timestamps)
@@ -16,19 +16,18 @@ import "@openzeppelin/contracts/access/Ownable.sol";
16
16
  * - Improved input validation and error handling
17
17
  * - Removed unreliable block hash storage
18
18
  *
19
- * Version: 2.0 (New Production Contract - Previous contract deprecated)
20
- * Previous Contract: 0xb78CB3bcC788fca38c731b1E9D70CF60b04CA015 (DEPRECATED)
19
+ * Version: 2.10 (Production Contract)
20
+ * Previous Contract: 0xb78CB3bcC788fca38c731b1E9D70CF60b04CA015 (No longer supported)
21
21
  * Network: Base Sepolia (for testing) / Base Mainnet (for production)
22
22
  */
23
- contract ZipFileNFT is ERC721, ERC721URIStorage, Ownable {
23
+ contract ZipFileNFTPublic is ERC721, ERC721URIStorage, Ownable {
24
24
 
25
25
  // Counter for token IDs
26
26
  uint256 private _tokenIdCounter;
27
27
 
28
28
  // Struct to store ZIP file information - Latest Version
29
29
  struct ZipFileInfo {
30
- // File identification
31
- string fileName; // Original ZIP file name
30
+ // File identification (filename removed for privacy - stored in ZIP metadata only)
32
31
  string merkleRootHash; // Merkle root hash of the ZIP contents
33
32
  string ipfsHash; // IPFS hash where the ZIP file is stored
34
33
  address creator; // Address that created/minted this token
@@ -48,11 +47,10 @@ contract ZipFileNFT is ERC721, ERC721URIStorage, Ownable {
48
47
  // This prevents duplicate tokens with same content AND same timestamp
49
48
  mapping(bytes32 => uint256) public compositeKeyToTokenId;
50
49
 
51
- // Events - Enhanced with blockchain metadata
50
+ // Events - Enhanced with blockchain metadata (filename removed for privacy)
52
51
  event ZipFileTokenized(
53
52
  uint256 indexed tokenId,
54
53
  address indexed creator,
55
- string fileName,
56
54
  string merkleRootHash,
57
55
  uint256 creationTimestamp,
58
56
  string ipfsHash,
@@ -60,14 +58,14 @@ contract ZipFileNFT is ERC721, ERC721URIStorage, Ownable {
60
58
  uint256 blockNumber
61
59
  );
62
60
 
63
- constructor() ERC721("NeoZip File NFT v2", "NZIP") Ownable(msg.sender) {}
61
+ constructor() ERC721("NeoZip File NFT v2.10", "NZIP") Ownable(msg.sender) {}
64
62
 
65
63
  /**
66
64
  * @dev Get the contract version
67
65
  * @return version The version string of this contract
68
66
  */
69
67
  function getVersion() public pure returns (string memory) {
70
- return "2.0.0";
68
+ return "2.10.0";
71
69
  }
72
70
 
73
71
  /**
@@ -85,22 +83,20 @@ contract ZipFileNFT is ERC721, ERC721URIStorage, Ownable {
85
83
 
86
84
  /**
87
85
  * @dev Public minting function for ZIP files
88
- * @param fileName Name of the ZIP file
89
86
  * @param merkleRootHash Merkle root hash of the ZIP contents
90
87
  * @param creationTimestamp Timestamp when the ZIP was created
91
88
  * @param ipfsHash IPFS hash where the ZIP is stored
92
89
  * @param metadataURI URI for the token metadata
93
90
  * @return The newly minted token ID
91
+ * Note: fileName is not stored on blockchain for privacy - it's stored in ZIP metadata only
94
92
  */
95
93
  function publicMintZipFile(
96
- string memory fileName,
97
94
  string memory merkleRootHash,
98
95
  uint256 creationTimestamp,
99
96
  string memory ipfsHash,
100
97
  string memory metadataURI
101
98
  ) public returns (uint256) {
102
99
  // Input validation
103
- require(bytes(fileName).length > 0, "File name cannot be empty");
104
100
  require(bytes(merkleRootHash).length > 0, "Merkle root hash cannot be empty");
105
101
  require(creationTimestamp > 0, "Creation timestamp must be greater than 0");
106
102
 
@@ -124,7 +120,6 @@ contract ZipFileNFT is ERC721, ERC721URIStorage, Ownable {
124
120
 
125
121
  // Store the ZIP file information with blockchain metadata
126
122
  zipFileInfo[tokenId] = ZipFileInfo({
127
- fileName: fileName,
128
123
  merkleRootHash: merkleRootHash,
129
124
  ipfsHash: ipfsHash,
130
125
  creator: msg.sender,
@@ -140,7 +135,6 @@ contract ZipFileNFT is ERC721, ERC721URIStorage, Ownable {
140
135
  emit ZipFileTokenized(
141
136
  tokenId,
142
137
  msg.sender,
143
- fileName,
144
138
  merkleRootHash,
145
139
  creationTimestamp,
146
140
  ipfsHash,
@@ -1,16 +1,6 @@
1
- import ZipKitBrowser from './ZipKitBrowser';
2
- import { ZipEntry } from '../shared/ZipKit';
3
- export interface NZipTokenInfo {
4
- version: string;
5
- tokenId: string;
6
- contractAddress: string;
7
- network: string;
8
- networkChainId: number;
9
- transactionHash: string;
10
- merkleRoot: string;
11
- fileName: string;
12
- mintedAt: string;
13
- }
1
+ import ZipkitBrowser from '../../browser/ZipkitBrowser';
2
+ import { ZipEntry } from '../../core';
3
+ import { TokenMetadata } from '../../types';
14
4
  export interface TokenVerificationOptions {
15
5
  skipHash?: boolean;
16
6
  skipToken?: boolean;
@@ -19,7 +9,7 @@ export interface TokenVerificationOptions {
19
9
  }
20
10
  export interface TokenVerificationResult {
21
11
  isTokenized: boolean;
22
- tokenMetadata: NZipTokenInfo | null;
12
+ tokenMetadata: TokenMetadata | null;
23
13
  calculatedMerkleRoot: string | null;
24
14
  blockchainMerkleRoot: string | null;
25
15
  blockchainTimestamp?: number;
@@ -39,8 +29,8 @@ export interface BlockchainVerification {
39
29
  * Browser-compatible token verification class
40
30
  */
41
31
  export declare class TokenVerifierBrowser {
42
- private zipKit;
43
- constructor(zipKit: ZipKitBrowser);
32
+ private zipkit;
33
+ constructor(zipkit: ZipkitBrowser);
44
34
  /**
45
35
  * Checks if the ZIP file contains NFT token metadata and verifies the merkle root
46
36
  */
@@ -54,7 +44,7 @@ export declare class TokenVerifierBrowser {
54
44
  */
55
45
  private calculateMerkleRootExcludingToken;
56
46
  /**
57
- * Queries the blockchain to get the actual merkle root and timestamp stored in the smart contract
47
+ * Queries the blockchain to get the actual merkle root, timestamp, and owner stored in the smart contract
58
48
  */
59
49
  private queryBlockchainData;
60
50
  /**
@@ -64,13 +54,14 @@ export declare class TokenVerifierBrowser {
64
54
  /**
65
55
  * Creates a formatted summary of token information
66
56
  */
67
- createTokenSummary(tokenMetadata: NZipTokenInfo): string;
57
+ createTokenSummary(tokenMetadata: TokenMetadata): string;
68
58
  }
69
59
  /**
70
60
  * Creates a new TokenVerifierBrowser instance
71
61
  */
72
- export declare function createTokenVerifier(zipKit: ZipKitBrowser): TokenVerifierBrowser;
62
+ export declare function createTokenVerifier(zipkit: ZipkitBrowser): TokenVerifierBrowser;
73
63
  /**
74
64
  * Convenience function to check for tokenization
75
65
  */
76
- export declare function checkForTokenization(zipKit: ZipKitBrowser, zipEntries: ZipEntry[], options?: TokenVerificationOptions): Promise<TokenVerificationResult>;
66
+ export declare function checkForTokenization(zipkit: ZipkitBrowser, zipEntries: ZipEntry[], options?: TokenVerificationOptions): Promise<TokenVerificationResult>;
67
+ //# sourceMappingURL=TokenVerifierBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenVerifierBrowser.d.ts","sourceRoot":"","sources":["../../../src/blockchain/browser/TokenVerifierBrowser.ts"],"names":[],"mappings":"AAMA,OAAO,aAAa,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5C,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC;IACxD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAKD;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa;IAIjC;;OAEG;IACG,oBAAoB,CACxB,UAAU,EAAE,QAAQ,EAAE,EACtB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,uBAAuB,CAAC;IAiInC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;OAEG;YACW,iCAAiC;IAiC/C;;OAEG;YACW,mBAAmB;IAsGjC;;OAEG;YACW,YAAY;IAS1B;;OAEG;IACH,kBAAkB,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM;CAWzD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,oBAAoB,CAE/E;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,QAAQ,EAAE,EACtB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,uBAAuB,CAAC,CAGlC"}
@@ -4,74 +4,21 @@
4
4
  // Browser-compatible blockchain token verification utilities for ZIP archives
5
5
  // Copyright (c) 2025 NeoWare, Inc. All rights reserved.
6
6
  // ======================================
7
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
- if (k2 === undefined) k2 = k;
9
- var desc = Object.getOwnPropertyDescriptor(m, k);
10
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
- desc = { enumerable: true, get: function() { return m[k]; } };
12
- }
13
- Object.defineProperty(o, k2, desc);
14
- }) : (function(o, m, k, k2) {
15
- if (k2 === undefined) k2 = k;
16
- o[k2] = m[k];
17
- }));
18
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
- Object.defineProperty(o, "default", { enumerable: true, value: v });
20
- }) : function(o, v) {
21
- o["default"] = v;
22
- });
23
- var __importStar = (this && this.__importStar) || (function () {
24
- var ownKeys = function(o) {
25
- ownKeys = Object.getOwnPropertyNames || function (o) {
26
- var ar = [];
27
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
- return ar;
29
- };
30
- return ownKeys(o);
31
- };
32
- return function (mod) {
33
- if (mod && mod.__esModule) return mod;
34
- var result = {};
35
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
- __setModuleDefault(result, mod);
37
- return result;
38
- };
39
- })();
40
7
  Object.defineProperty(exports, "__esModule", { value: true });
41
8
  exports.TokenVerifierBrowser = void 0;
42
9
  exports.createTokenVerifier = createTokenVerifier;
43
10
  exports.checkForTokenization = checkForTokenization;
44
- const Headers_1 = require("../shared/constants/Headers");
45
- const constants_1 = require("../server/blockchain/constants");
46
- // Network configuration for blockchain queries
47
- const NETWORK_CONFIG = {
48
- 'Base Sepolia': {
49
- chainId: 84532,
50
- rpcUrls: [
51
- 'https://sepolia.base.org',
52
- 'https://base-sepolia.g.alchemy.com/v2/demo',
53
- 'https://base-sepolia-rpc.publicnode.com',
54
- 'https://base-sepolia.blockpi.network/v1/rpc/public'
55
- ]
56
- },
57
- 'Base Mainnet': {
58
- chainId: 8453,
59
- rpcUrls: [
60
- 'https://mainnet.base.org',
61
- 'https://base-mainnet.g.alchemy.com/v2/demo',
62
- 'https://base-rpc.publicnode.com',
63
- 'https://base.blockpi.network/v1/rpc/public'
64
- ]
65
- }
66
- };
11
+ const Headers_1 = require("../../core/constants/Headers");
12
+ const contracts_1 = require("../core/contracts");
13
+ const ethers_1 = require("ethers");
67
14
  // Use the complete contract ABI from constants
68
- const CONTRACT_ABI = constants_1.NZIP_CONTRACT_ABI;
15
+ const CONTRACT_ABI = contracts_1.NZIP_CONTRACT_ABI;
69
16
  /**
70
17
  * Browser-compatible token verification class
71
18
  */
72
19
  class TokenVerifierBrowser {
73
- constructor(zipKit) {
74
- this.zipKit = zipKit;
20
+ constructor(zipkit) {
21
+ this.zipkit = zipkit;
75
22
  }
76
23
  /**
77
24
  * Checks if the ZIP file contains NFT token metadata and verifies the merkle root
@@ -90,7 +37,7 @@ class TokenVerifierBrowser {
90
37
  }
91
38
  try {
92
39
  // Extract the token metadata
93
- const tokenData = await this.zipKit.extractBlob(tokenEntry);
40
+ const tokenData = await this.zipkit.extractBlob(tokenEntry);
94
41
  if (!tokenData) {
95
42
  return {
96
43
  isTokenized: false,
@@ -140,9 +87,14 @@ class TokenVerifierBrowser {
140
87
  // Query blockchain for the actual merkle root and timestamp
141
88
  const blockchainData = await this.queryBlockchainData(tokenMetadata);
142
89
  if (!blockchainData.merkleRoot) {
90
+ // Add owner information to tokenMetadata even if merkle root is not available
91
+ const enhancedTokenMetadata = {
92
+ ...tokenMetadata,
93
+ owner: blockchainData.owner || undefined
94
+ };
143
95
  return {
144
96
  isTokenized: true,
145
- tokenMetadata,
97
+ tokenMetadata: enhancedTokenMetadata,
146
98
  calculatedMerkleRoot,
147
99
  blockchainMerkleRoot: null,
148
100
  blockchainTimestamp: blockchainData.timestamp ?? undefined,
@@ -150,15 +102,27 @@ class TokenVerifierBrowser {
150
102
  errorMessage: 'Could not retrieve merkle root from blockchain'
151
103
  };
152
104
  }
153
- const verificationPassed = blockchainData.merkleRoot === calculatedMerkleRoot;
105
+ // Normalize both merkle roots for comparison (trim whitespace, lowercase)
106
+ const normalizedBlockchain = blockchainData.merkleRoot?.toLowerCase().trim() || '';
107
+ const normalizedCalculated = calculatedMerkleRoot?.toLowerCase().trim() || '';
108
+ const verificationPassed = normalizedBlockchain === normalizedCalculated;
109
+ // Log mismatch only (success is silent)
110
+ if (!verificationPassed) {
111
+ console.warn(`[TokenVerifier] ⚠️ Merkle root mismatch - Calculated: ${calculatedMerkleRoot}, Blockchain: ${blockchainData.merkleRoot}`);
112
+ }
113
+ // Add owner information to tokenMetadata
114
+ const enhancedTokenMetadata = {
115
+ ...tokenMetadata,
116
+ owner: blockchainData.owner || undefined
117
+ };
154
118
  return {
155
119
  isTokenized: true,
156
- tokenMetadata,
120
+ tokenMetadata: enhancedTokenMetadata,
157
121
  calculatedMerkleRoot,
158
122
  blockchainMerkleRoot: blockchainData.merkleRoot,
159
123
  blockchainTimestamp: blockchainData.timestamp ?? undefined,
160
124
  verificationPassed,
161
- errorMessage: verificationPassed ? undefined : 'Merkle root mismatch - archive may be tampered'
125
+ errorMessage: verificationPassed ? undefined : `Merkle root mismatch - Calculated: ${calculatedMerkleRoot}, Blockchain: ${blockchainData.merkleRoot}`
162
126
  };
163
127
  }
164
128
  catch (error) {
@@ -184,7 +148,6 @@ class TokenVerifierBrowser {
184
148
  typeof tokenMetadata.networkChainId === 'number' &&
185
149
  typeof tokenMetadata.transactionHash === 'string' &&
186
150
  typeof tokenMetadata.merkleRoot === 'string' &&
187
- typeof tokenMetadata.fileName === 'string' &&
188
151
  typeof tokenMetadata.mintedAt === 'string';
189
152
  }
190
153
  /**
@@ -195,66 +158,116 @@ class TokenVerifierBrowser {
195
158
  // Get all entries except the token file
196
159
  const contentEntries = zipEntries.filter(entry => entry.filename !== Headers_1.TOKENIZED_METADATA);
197
160
  if (contentEntries.length === 0) {
161
+ console.error(`[TokenVerifier] ❌ No content entries found after filtering`);
198
162
  return null;
199
163
  }
200
164
  // For each content entry, ensure we have SHA-256 hash calculated
201
165
  for (const entry of contentEntries) {
202
166
  if (!entry.sha256) {
203
167
  // Extract the file to calculate its SHA-256 hash
204
- await this.zipKit.extractBlob(entry);
168
+ await this.zipkit.extractBlob(entry);
205
169
  }
206
170
  }
207
171
  // Calculate merkle root from content files
208
- // This would need to be implemented based on the ZipKit's merkle tree functionality
209
- // For now, we'll use a placeholder that would need to be implemented
210
- return await this.zipKit.getMerkleRoot?.() || null;
172
+ // getMerkleRoot() already excludes TOKENIZED_METADATA, TIMESTAMP_SUBMITTED, and TIMESTAMP_METADATA
173
+ const merkleRoot = await this.zipkit.getMerkleRoot?.() || null;
174
+ if (!merkleRoot) {
175
+ console.error(`[TokenVerifier] ❌ Failed to calculate merkle root`);
176
+ }
177
+ return merkleRoot;
211
178
  }
212
179
  catch (error) {
213
- console.error('Error calculating merkle root:', error);
180
+ console.error(`[TokenVerifier] ❌ Error calculating merkle root:`, error);
214
181
  return null;
215
182
  }
216
183
  }
217
184
  /**
218
- * Queries the blockchain to get the actual merkle root and timestamp stored in the smart contract
185
+ * Queries the blockchain to get the actual merkle root, timestamp, and owner stored in the smart contract
219
186
  */
220
187
  async queryBlockchainData(tokenMetadata) {
221
188
  try {
222
- // Dynamic import of ethers to avoid SSR issues
223
- const { ethers } = await Promise.resolve().then(() => __importStar(require('ethers')));
224
- const networkConfig = NETWORK_CONFIG[tokenMetadata.network];
189
+ // Get network configuration from contracts.ts (single source of truth)
190
+ if (!tokenMetadata.networkChainId) {
191
+ console.error(`[TokenVerifier] ❌ No chainId in token metadata`);
192
+ return { merkleRoot: null, timestamp: null, owner: null };
193
+ }
194
+ const networkConfig = (0, contracts_1.getContractConfig)(tokenMetadata.networkChainId);
225
195
  if (!networkConfig) {
226
- console.warn(`Unsupported network: ${tokenMetadata.network}`);
227
- return { merkleRoot: null, timestamp: null };
196
+ console.error(`[TokenVerifier] ❌ Could not resolve network configuration for chainId: ${tokenMetadata.networkChainId}`);
197
+ return { merkleRoot: null, timestamp: null, owner: null };
228
198
  }
229
- // Try multiple RPC endpoints
199
+ // Test RPC endpoints first to find working ones (same as server-side)
200
+ const workingRpcUrls = [];
230
201
  for (const rpcUrl of networkConfig.rpcUrls) {
231
202
  try {
232
- const provider = new ethers.JsonRpcProvider(rpcUrl);
203
+ const controller = new AbortController();
204
+ const timeoutId = setTimeout(() => controller.abort(), 5000);
205
+ const testResponse = await fetch(rpcUrl, {
206
+ method: 'POST',
207
+ headers: { 'Content-Type': 'application/json' },
208
+ body: JSON.stringify({
209
+ jsonrpc: '2.0',
210
+ method: 'eth_chainId',
211
+ params: [],
212
+ id: 1
213
+ }),
214
+ signal: controller.signal
215
+ });
216
+ clearTimeout(timeoutId);
217
+ if (testResponse.ok) {
218
+ const contentType = testResponse.headers.get('content-type');
219
+ if (contentType && contentType.includes('application/json')) {
220
+ const testData = await testResponse.json();
221
+ if (testData?.jsonrpc && testData?.result) {
222
+ const actualChainId = parseInt(testData.result, 16);
223
+ if (actualChainId === tokenMetadata.networkChainId) {
224
+ workingRpcUrls.push(rpcUrl);
225
+ }
226
+ }
227
+ }
228
+ }
229
+ }
230
+ catch (testError) {
231
+ // Silently skip failed endpoints
232
+ }
233
+ }
234
+ if (workingRpcUrls.length === 0) {
235
+ // Fallback to all endpoints if none tested successfully
236
+ workingRpcUrls.push(...networkConfig.rpcUrls);
237
+ }
238
+ // Try multiple RPC endpoints (only working ones if available)
239
+ for (let i = 0; i < workingRpcUrls.length; i++) {
240
+ const rpcUrl = workingRpcUrls[i];
241
+ try {
242
+ const provider = new ethers_1.ethers.JsonRpcProvider(rpcUrl);
233
243
  // Test connection with a timeout
234
- const blockNumber = await Promise.race([
244
+ await Promise.race([
235
245
  provider.getBlockNumber(),
236
246
  new Promise((_, reject) => setTimeout(() => reject(new Error('Timeout')), 5000))
237
247
  ]);
238
248
  // Create contract instance
239
- const contract = new ethers.Contract(tokenMetadata.contractAddress, CONTRACT_ABI, provider);
249
+ const contract = new ethers_1.ethers.Contract(tokenMetadata.contractAddress, CONTRACT_ABI, provider);
240
250
  // Call getZipFileInfo to get the blockchain-stored data
241
251
  const zipInfo = await contract.getZipFileInfo(tokenMetadata.tokenId);
252
+ // Get the token owner
253
+ const owner = await contract.ownerOf(tokenMetadata.tokenId);
242
254
  return {
243
255
  merkleRoot: zipInfo.merkleRootHash,
244
- timestamp: Number(zipInfo.tokenizationTime)
256
+ timestamp: Number(zipInfo.tokenizationTime),
257
+ owner: owner
245
258
  };
246
259
  }
247
260
  catch (error) {
248
- console.warn(`RPC ${rpcUrl} failed:`, error);
261
+ // Continue to next endpoint on error
249
262
  continue;
250
263
  }
251
264
  }
252
- console.warn(`All RPC endpoints failed for network: ${tokenMetadata.network}`);
253
- return { merkleRoot: null, timestamp: null };
265
+ console.error(`[TokenVerifier] ❌ All RPC endpoints failed for network: ${tokenMetadata.network}`);
266
+ return { merkleRoot: null, timestamp: null, owner: null };
254
267
  }
255
268
  catch (error) {
256
- console.error('Blockchain query error:', error);
257
- return { merkleRoot: null, timestamp: null };
269
+ console.error(`[TokenVerifier] ❌ Blockchain query error:`, error?.message || error);
270
+ return { merkleRoot: null, timestamp: null, owner: null };
258
271
  }
259
272
  }
260
273
  /**
@@ -278,8 +291,8 @@ class TokenVerifierBrowser {
278
291
  Network: ${tokenMetadata.network}
279
292
  Contract: ${tokenMetadata.contractAddress}
280
293
  Transaction: ${tokenMetadata.transactionHash}
281
- File: ${tokenMetadata.fileName}
282
- Minted: ${new Date(tokenMetadata.mintedAt).toLocaleString()}
294
+ Type: Tokenized Archive
295
+ Minted: ${tokenMetadata.mintedAt ? new Date(tokenMetadata.mintedAt).toLocaleString() : 'Unknown'}
283
296
  `;
284
297
  }
285
298
  }
@@ -287,13 +300,14 @@ exports.TokenVerifierBrowser = TokenVerifierBrowser;
287
300
  /**
288
301
  * Creates a new TokenVerifierBrowser instance
289
302
  */
290
- function createTokenVerifier(zipKit) {
291
- return new TokenVerifierBrowser(zipKit);
303
+ function createTokenVerifier(zipkit) {
304
+ return new TokenVerifierBrowser(zipkit);
292
305
  }
293
306
  /**
294
307
  * Convenience function to check for tokenization
295
308
  */
296
- async function checkForTokenization(zipKit, zipEntries, options = {}) {
297
- const verifier = new TokenVerifierBrowser(zipKit);
309
+ async function checkForTokenization(zipkit, zipEntries, options = {}) {
310
+ const verifier = new TokenVerifierBrowser(zipkit);
298
311
  return verifier.checkForTokenization(zipEntries, options);
299
312
  }
313
+ //# sourceMappingURL=TokenVerifierBrowser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenVerifierBrowser.js","sourceRoot":"","sources":["../../../src/blockchain/browser/TokenVerifierBrowser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * WalletManagerBrowser - Handles browser-specific wallet operations
3
+ * Manages MetaMask, Coinbase Wallet, and other browser providers
4
+ * Extends CoreWalletManager with browser-specific functionality
5
+ */
6
+ import { ethers } from 'ethers';
7
+ import { CoreWalletManager } from '../core/WalletManager';
8
+ declare global {
9
+ interface Window {
10
+ ethereum?: any;
11
+ }
12
+ }
13
+ export interface WalletConfigBrowser {
14
+ chainId: number;
15
+ network: string;
16
+ address: string;
17
+ rpcUrls: string[];
18
+ explorerUrl: string;
19
+ }
20
+ export declare class WalletManagerBrowser extends CoreWalletManager {
21
+ private browserProvider;
22
+ private readProvider;
23
+ private contract;
24
+ private currentConfig;
25
+ private targetChainId;
26
+ private RPC_ENDPOINTS;
27
+ constructor(initialChainId?: number);
28
+ /**
29
+ * Cleanup method to dispose of providers and stop background processes
30
+ */
31
+ cleanup(): void;
32
+ private getNetworkName;
33
+ /**
34
+ * Set the target network for wallet operations
35
+ */
36
+ setTargetNetwork(chainId: number): void;
37
+ /**
38
+ * Get the current target network configuration
39
+ */
40
+ getCurrentConfig(): WalletConfigBrowser;
41
+ /**
42
+ * Initialize wallet with browser provider
43
+ */
44
+ initialize(walletAddress: string, existingProvider?: any): Promise<boolean>;
45
+ /**
46
+ * Get the contract instance
47
+ */
48
+ getContract(): ethers.Contract | null;
49
+ /**
50
+ * Get the browser provider instance
51
+ */
52
+ getBrowserProvider(): ethers.BrowserProvider | null;
53
+ /**
54
+ * Override parent method to return browser provider
55
+ */
56
+ getWallet(): ethers.Wallet | null;
57
+ /**
58
+ * Get the read provider instance
59
+ */
60
+ getReadProvider(): ethers.JsonRpcProvider | null;
61
+ /**
62
+ * Override parent method to check browser provider
63
+ */
64
+ isReady(): boolean;
65
+ /**
66
+ * Override parent method to check read provider
67
+ */
68
+ isOnline(): boolean;
69
+ private addAndSwitchNetwork;
70
+ private testProviderConnection;
71
+ /**
72
+ * Generate block explorer URL for a transaction
73
+ */
74
+ getExplorerUrl(transactionHash: string): string;
75
+ /**
76
+ * Generate block explorer URL for a contract
77
+ */
78
+ getContractExplorerUrl(): string;
79
+ /**
80
+ * Generate block explorer URL for a token
81
+ * Uses the contract address page where users can search for specific token IDs
82
+ */
83
+ getTokenExplorerUrl(tokenId: string): string;
84
+ /**
85
+ * Generate block explorer URL for a specific token ID
86
+ * Some explorers support direct token URLs
87
+ */
88
+ getTokenDirectUrl(tokenId: string): string;
89
+ /**
90
+ * Generate block explorer URL for an address
91
+ */
92
+ getAddressExplorerUrl(address: string): string;
93
+ /**
94
+ * Generate block explorer URL for a block
95
+ */
96
+ getBlockExplorerUrl(blockNumber: string | number): string;
97
+ }
98
+ //# sourceMappingURL=WalletManagerBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletManagerBrowser.d.ts","sourceRoot":"","sources":["../../../src/blockchain/browser/WalletManagerBrowser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAK1D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,QAAQ,CAAC,EAAE,GAAG,CAAA;KACf;CACF;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,qBAAa,oBAAqB,SAAQ,iBAAiB;IACzD,OAAO,CAAC,eAAe,CAAsC;IAC7D,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,aAAa,CAAsB;IAG3C,OAAO,CAAC,aAAa,CAKpB;gBAEW,cAAc,GAAE,MAAc;IAK1C;;OAEG;IACI,OAAO,IAAI,IAAI;IA4BtB,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAY9C;;OAEG;IACI,gBAAgB,IAAI,mBAAmB;IAI9C;;OAEG;IACG,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAmNjF;;OAEG;IACI,WAAW,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI;IAI5C;;OAEG;IACI,kBAAkB,IAAI,MAAM,CAAC,eAAe,GAAG,IAAI;IAI1D;;OAEG;IACI,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI;IAKxC;;OAEG;IACI,eAAe,IAAI,MAAM,CAAC,eAAe,GAAG,IAAI;IAIvD;;OAEG;IACI,OAAO,IAAI,OAAO;IAIzB;;OAEG;IACI,QAAQ,IAAI,OAAO;YAIZ,mBAAmB;YA+DnB,sBAAsB;IAYpC;;OAEG;IACI,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM;IAItD;;OAEG;IACI,sBAAsB,IAAI,MAAM;IAIvC;;;OAGG;IACI,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAInD;;;OAGG;IACI,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAKjD;;OAEG;IACI,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIrD;;OAEG;IACI,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;CAGjE"}