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