neozip-blockchain 0.5.1

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 (127) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +189 -0
  3. package/dist/browser/TokenVerifierBrowser.d.ts +63 -0
  4. package/dist/browser/TokenVerifierBrowser.d.ts.map +1 -0
  5. package/dist/browser/TokenVerifierBrowser.js +358 -0
  6. package/dist/browser/TokenVerifierBrowser.js.map +1 -0
  7. package/dist/browser/WalletManagerBrowser.d.ts +99 -0
  8. package/dist/browser/WalletManagerBrowser.d.ts.map +1 -0
  9. package/dist/browser/WalletManagerBrowser.js +434 -0
  10. package/dist/browser/WalletManagerBrowser.js.map +1 -0
  11. package/dist/browser/ZipkitMinterBrowser.d.ts +59 -0
  12. package/dist/browser/ZipkitMinterBrowser.d.ts.map +1 -0
  13. package/dist/browser/ZipkitMinterBrowser.js +337 -0
  14. package/dist/browser/ZipkitMinterBrowser.js.map +1 -0
  15. package/dist/browser/index.d.ts +12 -0
  16. package/dist/browser/index.d.ts.map +1 -0
  17. package/dist/browser/index.js +19 -0
  18. package/dist/browser/index.js.map +1 -0
  19. package/dist/constants/index.d.ts +5 -0
  20. package/dist/constants/index.d.ts.map +1 -0
  21. package/dist/constants/index.js +21 -0
  22. package/dist/constants/index.js.map +1 -0
  23. package/dist/constants/metadata.d.ts +18 -0
  24. package/dist/constants/metadata.d.ts.map +1 -0
  25. package/dist/constants/metadata.js +33 -0
  26. package/dist/constants/metadata.js.map +1 -0
  27. package/dist/constants/servers.d.ts +38 -0
  28. package/dist/constants/servers.d.ts.map +1 -0
  29. package/dist/constants/servers.js +54 -0
  30. package/dist/constants/servers.js.map +1 -0
  31. package/dist/core/ContractVersionRegistry.d.ts +63 -0
  32. package/dist/core/ContractVersionRegistry.d.ts.map +1 -0
  33. package/dist/core/ContractVersionRegistry.js +128 -0
  34. package/dist/core/ContractVersionRegistry.js.map +1 -0
  35. package/dist/core/WalletManager.d.ts +123 -0
  36. package/dist/core/WalletManager.d.ts.map +1 -0
  37. package/dist/core/WalletManager.js +360 -0
  38. package/dist/core/WalletManager.js.map +1 -0
  39. package/dist/core/ZipkitMinter.d.ts +155 -0
  40. package/dist/core/ZipkitMinter.d.ts.map +1 -0
  41. package/dist/core/ZipkitMinter.js +625 -0
  42. package/dist/core/ZipkitMinter.js.map +1 -0
  43. package/dist/core/ZipkitVerifier.d.ts +252 -0
  44. package/dist/core/ZipkitVerifier.d.ts.map +1 -0
  45. package/dist/core/ZipkitVerifier.js +1370 -0
  46. package/dist/core/ZipkitVerifier.js.map +1 -0
  47. package/dist/core/adapters/AdapterFactory.d.ts +22 -0
  48. package/dist/core/adapters/AdapterFactory.d.ts.map +1 -0
  49. package/dist/core/adapters/AdapterFactory.js +62 -0
  50. package/dist/core/adapters/AdapterFactory.js.map +1 -0
  51. package/dist/core/adapters/ContractVersionAdapter.d.ts +96 -0
  52. package/dist/core/adapters/ContractVersionAdapter.d.ts.map +1 -0
  53. package/dist/core/adapters/ContractVersionAdapter.js +9 -0
  54. package/dist/core/adapters/ContractVersionAdapter.js.map +1 -0
  55. package/dist/core/adapters/V2_10Adapter.d.ts +24 -0
  56. package/dist/core/adapters/V2_10Adapter.d.ts.map +1 -0
  57. package/dist/core/adapters/V2_10Adapter.js +87 -0
  58. package/dist/core/adapters/V2_10Adapter.js.map +1 -0
  59. package/dist/core/adapters/V2_11Adapter.d.ts +24 -0
  60. package/dist/core/adapters/V2_11Adapter.d.ts.map +1 -0
  61. package/dist/core/adapters/V2_11Adapter.js +87 -0
  62. package/dist/core/adapters/V2_11Adapter.js.map +1 -0
  63. package/dist/core/adapters/V2_50Adapter.d.ts +105 -0
  64. package/dist/core/adapters/V2_50Adapter.d.ts.map +1 -0
  65. package/dist/core/adapters/V2_50Adapter.js +263 -0
  66. package/dist/core/adapters/V2_50Adapter.js.map +1 -0
  67. package/dist/core/contracts.d.ts +169 -0
  68. package/dist/core/contracts.d.ts.map +1 -0
  69. package/dist/core/contracts.js +731 -0
  70. package/dist/core/contracts.js.map +1 -0
  71. package/dist/core/index.d.ts +24 -0
  72. package/dist/core/index.d.ts.map +1 -0
  73. package/dist/core/index.js +82 -0
  74. package/dist/core/index.js.map +1 -0
  75. package/dist/index.d.ts +15 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +40 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/node/WalletManagerNode.d.ts +47 -0
  80. package/dist/node/WalletManagerNode.d.ts.map +1 -0
  81. package/dist/node/WalletManagerNode.js +203 -0
  82. package/dist/node/WalletManagerNode.js.map +1 -0
  83. package/dist/node/index.d.ts +12 -0
  84. package/dist/node/index.d.ts.map +1 -0
  85. package/dist/node/index.js +21 -0
  86. package/dist/node/index.js.map +1 -0
  87. package/dist/ots/ZipkitOTS.d.ts +152 -0
  88. package/dist/ots/ZipkitOTS.d.ts.map +1 -0
  89. package/dist/ots/ZipkitOTS.js +544 -0
  90. package/dist/ots/ZipkitOTS.js.map +1 -0
  91. package/dist/ots/index.d.ts +9 -0
  92. package/dist/ots/index.d.ts.map +1 -0
  93. package/dist/ots/index.js +25 -0
  94. package/dist/ots/index.js.map +1 -0
  95. package/dist/types/index.d.ts +84 -0
  96. package/dist/types/index.d.ts.map +1 -0
  97. package/dist/types/index.js +37 -0
  98. package/dist/types/index.js.map +1 -0
  99. package/dist/utils/Logger.d.ts +73 -0
  100. package/dist/utils/Logger.d.ts.map +1 -0
  101. package/dist/utils/Logger.js +156 -0
  102. package/dist/utils/Logger.js.map +1 -0
  103. package/dist/utils/crc32.d.ts +6 -0
  104. package/dist/utils/crc32.d.ts.map +1 -0
  105. package/dist/utils/crc32.js +23 -0
  106. package/dist/utils/crc32.js.map +1 -0
  107. package/dist/zipstamp-server/CalendarManager.d.ts +238 -0
  108. package/dist/zipstamp-server/CalendarManager.d.ts.map +1 -0
  109. package/dist/zipstamp-server/CalendarManager.js +364 -0
  110. package/dist/zipstamp-server/CalendarManager.js.map +1 -0
  111. package/dist/zipstamp-server/ZipstampServerAPI.d.ts +427 -0
  112. package/dist/zipstamp-server/ZipstampServerAPI.d.ts.map +1 -0
  113. package/dist/zipstamp-server/ZipstampServerAPI.js +696 -0
  114. package/dist/zipstamp-server/ZipstampServerAPI.js.map +1 -0
  115. package/dist/zipstamp-server/ZipstampServerClient.d.ts +590 -0
  116. package/dist/zipstamp-server/ZipstampServerClient.d.ts.map +1 -0
  117. package/dist/zipstamp-server/ZipstampServerClient.js +433 -0
  118. package/dist/zipstamp-server/ZipstampServerClient.js.map +1 -0
  119. package/dist/zipstamp-server/ZipstampServerHelpers.d.ts +430 -0
  120. package/dist/zipstamp-server/ZipstampServerHelpers.d.ts.map +1 -0
  121. package/dist/zipstamp-server/ZipstampServerHelpers.js +503 -0
  122. package/dist/zipstamp-server/ZipstampServerHelpers.js.map +1 -0
  123. package/dist/zipstamp-server/index.d.ts +24 -0
  124. package/dist/zipstamp-server/index.d.ts.map +1 -0
  125. package/dist/zipstamp-server/index.js +67 -0
  126. package/dist/zipstamp-server/index.js.map +1 -0
  127. package/package.json +117 -0
@@ -0,0 +1,360 @@
1
+ "use strict";
2
+ /**
3
+ * Core WalletManager - Platform-agnostic wallet functionality
4
+ * Provides core wallet operations that work in both browser and server environments
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.WalletAnalyzer = exports.CoreWalletManager = void 0;
8
+ const ethers_1 = require("ethers");
9
+ const types_1 = require("../types");
10
+ const Logger_1 = require("../utils/Logger");
11
+ const contracts_1 = require("./contracts");
12
+ // Standard ERC ABIs for balance/display (not NZIP contracts)
13
+ const ERC20_ABI = [
14
+ "function balanceOf(address owner) view returns (uint256)",
15
+ "function name() view returns (string)",
16
+ "function symbol() view returns (string)",
17
+ "function decimals() view returns (uint8)"
18
+ ];
19
+ const ERC721_ABI = [
20
+ "function balanceOf(address owner) view returns (uint256)",
21
+ "function name() view returns (string)",
22
+ "function symbol() view returns (string)",
23
+ "function tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)"
24
+ ];
25
+ /**
26
+ * Core wallet functionality that works in both browser and server environments
27
+ */
28
+ class CoreWalletManager {
29
+ constructor() {
30
+ this.wallet = null;
31
+ this.provider = null;
32
+ }
33
+ /**
34
+ * Setup wallet with private key and connect to network
35
+ *
36
+ * SECURITY WARNING: This method accepts a private key as a parameter.
37
+ * - Never hardcode private keys in source code
38
+ * - Always use environment variables for private keys
39
+ * - Use testnet keys for development/testing
40
+ * - Use secure key management (HSMs, KMS) for production
41
+ */
42
+ async setupWallet(privateKey, network, mintToken = false) {
43
+ try {
44
+ const networkConfig = types_1.NETWORKS[network] || types_1.NETWORKS['base-sepolia'];
45
+ this.wallet = new ethers_1.ethers.Wallet(privateKey);
46
+ Logger_1.Logger.log(`Using wallet: ${this.wallet.address}`);
47
+ const ok = await this.connectToNetwork(networkConfig, mintToken);
48
+ if (!ok) {
49
+ return {
50
+ wallet: null,
51
+ provider: null,
52
+ success: false,
53
+ message: `Failed to connect to ${networkConfig.name} network. Blockchain operations require network connectivity.`
54
+ };
55
+ }
56
+ return {
57
+ wallet: this.wallet,
58
+ provider: this.provider,
59
+ success: true,
60
+ message: `Wallet setup successful for ${networkConfig.name}`
61
+ };
62
+ }
63
+ catch (error) {
64
+ Logger_1.Logger.error('Error setting up wallet:', error);
65
+ return {
66
+ wallet: null,
67
+ provider: null,
68
+ success: false,
69
+ message: `Wallet setup failed: ${error instanceof Error ? error.message : String(error)}`
70
+ };
71
+ }
72
+ }
73
+ /**
74
+ * Connect to the specified network
75
+ */
76
+ async connectToNetwork(networkConfig, mintToken) {
77
+ try {
78
+ Logger_1.Logger.log(`Attempting to connect to ${networkConfig.name} network...`);
79
+ this.provider = new ethers_1.ethers.JsonRpcProvider(networkConfig.rpcUrl);
80
+ let networkTimedOut = false;
81
+ const networkTimeout = setTimeout(() => {
82
+ networkTimedOut = true;
83
+ Logger_1.Logger.error("Network connection timeout");
84
+ }, 5000);
85
+ await Promise.race([
86
+ this.provider.getNetwork(),
87
+ new Promise((_, reject) => setTimeout(() => {
88
+ if (networkTimedOut)
89
+ reject(new Error("Network connection timeout"));
90
+ }, 5100))
91
+ ]);
92
+ clearTimeout(networkTimeout);
93
+ if (this.wallet) {
94
+ this.wallet = this.wallet.connect(this.provider);
95
+ const balance = await this.provider.getBalance(this.wallet.address);
96
+ const balanceEth = ethers_1.ethers.formatEther(balance);
97
+ Logger_1.Logger.log(`Wallet balance: ${balanceEth} ETH`);
98
+ const minBalance = 0.0001;
99
+ if (parseFloat(balanceEth) < minBalance && mintToken) {
100
+ Logger_1.Logger.error(`ERROR: Insufficient balance (${balanceEth} ETH). Minimum required: ${minBalance} ETH`);
101
+ Logger_1.Logger.error('Get testnet ETH from: https://www.coinbase.com/faucets/base-ethereum-sepolia-faucet');
102
+ throw new Error(`Insufficient balance for minting. Current: ${balanceEth} ETH, Required: ${minBalance} ETH`);
103
+ }
104
+ else if (mintToken) {
105
+ Logger_1.Logger.log(`✅ Sufficient balance for token minting`);
106
+ }
107
+ }
108
+ Logger_1.Logger.log(`✅ Successfully connected to ${networkConfig.name}`);
109
+ return true;
110
+ }
111
+ catch (networkError) {
112
+ const errorMessage = networkError instanceof Error ? networkError.message : String(networkError);
113
+ Logger_1.Logger.error(`Failed to connect to ${networkConfig.name} network: ${errorMessage}`);
114
+ this.provider = null;
115
+ return false;
116
+ }
117
+ }
118
+ /**
119
+ * Get the current wallet instance
120
+ */
121
+ getWallet() {
122
+ return this.wallet;
123
+ }
124
+ /**
125
+ * Get the current provider instance
126
+ */
127
+ getProvider() {
128
+ return this.provider;
129
+ }
130
+ /**
131
+ * Check if wallet is ready
132
+ */
133
+ isReady() {
134
+ return this.wallet !== null;
135
+ }
136
+ /**
137
+ * Check if connected to network
138
+ */
139
+ isOnline() {
140
+ return this.provider !== null;
141
+ }
142
+ }
143
+ exports.CoreWalletManager = CoreWalletManager;
144
+ /**
145
+ * Wallet analyzer for blockchain operations
146
+ */
147
+ class WalletAnalyzer {
148
+ constructor(provider) {
149
+ this.provider = provider;
150
+ }
151
+ /**
152
+ * Get basic wallet information
153
+ */
154
+ async getWalletBasics(address) {
155
+ const balance = await this.provider.getBalance(address);
156
+ const ethBalance = ethers_1.ethers.formatEther(balance);
157
+ const txCount = await this.provider.getTransactionCount(address);
158
+ const network = await this.provider.getNetwork();
159
+ const latestBlock = await this.provider.getBlockNumber();
160
+ return {
161
+ ethBalance,
162
+ transactionCount: txCount,
163
+ networkName: network.name,
164
+ chainId: network.chainId,
165
+ latestBlock
166
+ };
167
+ }
168
+ /**
169
+ * Scan for NZIP tokens owned by an address
170
+ */
171
+ async scanForNZipTokens(contractAddress, ownerAddress) {
172
+ const contract = new ethers_1.ethers.Contract(contractAddress, contracts_1.NZIP_CONTRACT_ABI, this.provider);
173
+ let foundTokens = [];
174
+ let searchMethod = 'none';
175
+ try {
176
+ const latestBlock = await this.provider.getBlockNumber();
177
+ const startBlock = Math.max(0, latestBlock - 50000);
178
+ const filter = contract.filters.ZipFileTokenized(null, ownerAddress);
179
+ const events = await contract.queryFilter(filter, startBlock, 'latest');
180
+ for (const event of events) {
181
+ if ('args' in event && event.args && event.args.tokenId) {
182
+ const tokenId = Number(event.args.tokenId);
183
+ if (!foundTokens.includes(tokenId))
184
+ foundTokens.push(tokenId);
185
+ }
186
+ }
187
+ if (foundTokens.length > 0) {
188
+ return { foundTokens, searchMethod: 'recent-events' };
189
+ }
190
+ }
191
+ catch { }
192
+ try {
193
+ const totalSupply = await contract.totalSupply();
194
+ const maxCheck = Math.min(Number(totalSupply), 50);
195
+ for (let tokenId = 0; tokenId < maxCheck; tokenId++) {
196
+ try {
197
+ const owner = await contract.ownerOf(tokenId);
198
+ if (owner.toLowerCase() === ownerAddress.toLowerCase())
199
+ foundTokens.push(tokenId);
200
+ }
201
+ catch { }
202
+ }
203
+ if (foundTokens.length > 0)
204
+ return { foundTokens, searchMethod: 'iteration' };
205
+ }
206
+ catch { }
207
+ const commonTokenIds = Array.from({ length: 20 }, (_, i) => i);
208
+ for (const tokenId of commonTokenIds) {
209
+ try {
210
+ const owner = await contract.ownerOf(tokenId);
211
+ if (owner.toLowerCase() === ownerAddress.toLowerCase())
212
+ foundTokens.push(tokenId);
213
+ }
214
+ catch { }
215
+ }
216
+ return { foundTokens, searchMethod: foundTokens.length > 0 ? 'common-ids' : 'none' };
217
+ }
218
+ /**
219
+ * Get detailed information for NZIP tokens
220
+ */
221
+ async getNZipTokenDetails(contractAddress, tokenIds) {
222
+ const contract = new ethers_1.ethers.Contract(contractAddress, contracts_1.NZIP_CONTRACT_ABI, this.provider);
223
+ const tokenDetails = [];
224
+ for (const tokenId of tokenIds) {
225
+ try {
226
+ const zipInfo = await contract.getZipFileInfo(tokenId);
227
+ tokenDetails.push({
228
+ tokenId: tokenId.toString(),
229
+ merkleRootHash: zipInfo.merkleRootHash,
230
+ timestamp: Number(zipInfo.creationTimestamp),
231
+ creator: zipInfo.creator,
232
+ creationTimestamp: Number(zipInfo.creationTimestamp),
233
+ tokenizationTime: Number(zipInfo.tokenizationTime),
234
+ ipfsHash: zipInfo.ipfsHash || undefined
235
+ });
236
+ }
237
+ catch (error) {
238
+ Logger_1.Logger.error(`Error fetching details for token ${tokenId}:`, error);
239
+ }
240
+ }
241
+ return tokenDetails;
242
+ }
243
+ /**
244
+ * Get contract information
245
+ */
246
+ async getContractInfo(contractAddress) {
247
+ try {
248
+ const contract = new ethers_1.ethers.Contract(contractAddress, contracts_1.NZIP_CONTRACT_ABI, this.provider);
249
+ const [name, symbol, totalSupply] = await Promise.all([
250
+ contract.name(),
251
+ contract.symbol(),
252
+ contract.totalSupply()
253
+ ]);
254
+ return { name, symbol, totalSupply: totalSupply.toString() };
255
+ }
256
+ catch {
257
+ return null;
258
+ }
259
+ }
260
+ /**
261
+ * Check for ERC20 tokens
262
+ */
263
+ async checkERC20Tokens(ownerAddress, tokenConfigs) {
264
+ const foundTokens = [];
265
+ for (const tokenConfig of tokenConfigs.filter(t => t.type === 'ERC20')) {
266
+ try {
267
+ const contract = new ethers_1.ethers.Contract(tokenConfig.address, ERC20_ABI, this.provider);
268
+ const balance = await contract.balanceOf(ownerAddress);
269
+ if (balance > 0) {
270
+ let name = tokenConfig.name, symbol = tokenConfig.symbol, decimals = 18;
271
+ try {
272
+ [name, symbol, decimals] = await Promise.all([
273
+ contract.name(),
274
+ contract.symbol(),
275
+ contract.decimals()
276
+ ]);
277
+ }
278
+ catch { }
279
+ const formattedBalance = ethers_1.ethers.formatUnits(balance, decimals);
280
+ foundTokens.push({
281
+ address: tokenConfig.address,
282
+ name,
283
+ symbol,
284
+ balance: formattedBalance,
285
+ decimals,
286
+ type: 'ERC20'
287
+ });
288
+ }
289
+ }
290
+ catch { }
291
+ }
292
+ return foundTokens;
293
+ }
294
+ /**
295
+ * Check for NFT collections
296
+ */
297
+ async checkNFTCollections(ownerAddress, nftConfigs) {
298
+ const foundNFTs = [];
299
+ for (const nftConfig of nftConfigs) {
300
+ try {
301
+ const contract = new ethers_1.ethers.Contract(nftConfig.address, ERC721_ABI, this.provider);
302
+ const balance = await contract.balanceOf(ownerAddress);
303
+ if (balance > 0) {
304
+ let name = nftConfig.name, symbol = nftConfig.symbol;
305
+ try {
306
+ [name, symbol] = await Promise.all([
307
+ contract.name(),
308
+ contract.symbol()
309
+ ]);
310
+ }
311
+ catch { }
312
+ foundNFTs.push({
313
+ address: nftConfig.address,
314
+ name,
315
+ symbol,
316
+ balance: balance.toString(),
317
+ type: 'ERC721'
318
+ });
319
+ }
320
+ }
321
+ catch { }
322
+ }
323
+ return foundNFTs;
324
+ }
325
+ /**
326
+ * Get common token configurations for a network
327
+ */
328
+ static getCommonTokens(network) {
329
+ const commonTokens = {
330
+ 'base-sepolia': [
331
+ { address: '0x036CbD53842c5426634e7929541eC2318f3dCF7e', name: 'USD Coin', symbol: 'USDC', type: 'ERC20' },
332
+ { address: '0x4200000000000000000000000000000000000006', name: 'Wrapped Ether', symbol: 'WETH', type: 'ERC20' },
333
+ { address: '0xE4aB69C077896252FAFBD49EFD26B5D171A32410', name: 'Coinbase Wrapped Staked ETH', symbol: 'cbETH', type: 'ERC20' },
334
+ ],
335
+ 'base': [
336
+ { address: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', name: 'USD Coin', symbol: 'USDC', type: 'ERC20' },
337
+ { address: '0x4200000000000000000000000000000000000006', name: 'Wrapped Ether', symbol: 'WETH', type: 'ERC20' },
338
+ { address: '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb', name: 'Dai Stablecoin', symbol: 'DAI', type: 'ERC20' },
339
+ { address: '0x2Ae3F1Ec7F1F5012CFEab0185bfc7aa3cf0DEc22', name: 'Coinbase Wrapped Staked ETH', symbol: 'cbETH', type: 'ERC20' },
340
+ { address: '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA', name: 'USD Base Coin', symbol: 'USDbC', type: 'ERC20' },
341
+ ]
342
+ };
343
+ return commonTokens[network] || [];
344
+ }
345
+ /**
346
+ * Get common NFT configurations for a network
347
+ */
348
+ static getCommonNFTs(network) {
349
+ const commonNFTs = {
350
+ 'base-sepolia': [],
351
+ 'base': [
352
+ { address: '0x1234567890123456789012345678901234567890', name: 'Base Punks', symbol: 'BPUNK', type: 'ERC721' },
353
+ { address: '0x0987654321098765432109876543210987654321', name: 'Base Bears', symbol: 'BBEAR', type: 'ERC721' },
354
+ ]
355
+ };
356
+ return commonNFTs[network] || [];
357
+ }
358
+ }
359
+ exports.WalletAnalyzer = WalletAnalyzer;
360
+ //# sourceMappingURL=WalletManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletManager.js","sourceRoot":"","sources":["../../src/core/WalletManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
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
+ chainId: number;
44
+ }
45
+ /**
46
+ * Blockchain Token Minter for ZIP files
47
+ *
48
+ * SECURITY WARNING: This class handles private keys for blockchain operations.
49
+ * - Never hardcode private keys in source code
50
+ * - Always use environment variables for private keys (e.g., NEOZIP_WALLET_PASSKEY)
51
+ * - Use testnet keys for development/testing
52
+ * - Use secure key management (HSMs, KMS) for production
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 encryptedHash: string;
60
+ protected networkConfig: ContractConfig;
61
+ protected debug: boolean;
62
+ protected rpcUrlIndex: number;
63
+ constructor(merkleRoot: string, options: MintingOptions & {
64
+ encryptedHash?: string;
65
+ });
66
+ /**
67
+ * Get wallet information
68
+ */
69
+ getWalletInfo(): Promise<WalletInfo>;
70
+ /**
71
+ * Check for existing tokens with same merkle root and verify ownership
72
+ */
73
+ checkForDuplicates(): Promise<DuplicateCheckResult>;
74
+ /**
75
+ * Estimate gas costs for minting
76
+ */
77
+ estimateGasCosts(): Promise<{
78
+ gasLimit: bigint;
79
+ gasPrice: bigint;
80
+ estimatedCost: string;
81
+ }>;
82
+ /**
83
+ * Create token metadata string
84
+ */
85
+ private createTokenMetadataString;
86
+ /**
87
+ * Create TokenMetadata object from minting result
88
+ */
89
+ private createTokenMetadata;
90
+ /**
91
+ * Mint new token on blockchain
92
+ */
93
+ mintToken(): Promise<MintingResult>;
94
+ /**
95
+ * Main minting process - checks for duplicates, then mints if needed
96
+ */
97
+ processMinting(): Promise<{
98
+ walletInfo: WalletInfo;
99
+ duplicateCheck: DuplicateCheckResult;
100
+ gasCosts?: {
101
+ gasLimit: bigint;
102
+ gasPrice: bigint;
103
+ estimatedCost: string;
104
+ };
105
+ mintingResult?: MintingResult;
106
+ tokenMetadata?: TokenMetadata;
107
+ }>;
108
+ /**
109
+ * Complete the minting after user confirmation
110
+ */
111
+ completeMinting(): Promise<{
112
+ mintingResult: MintingResult;
113
+ tokenMetadata?: TokenMetadata;
114
+ }>;
115
+ /**
116
+ * Switch to a different RPC URL by index
117
+ * This recreates the provider, wallet, and contract with the new RPC
118
+ */
119
+ switchRpcUrl(newIndex: number): void;
120
+ /**
121
+ * Destroy provider to allow process to exit
122
+ */
123
+ destroy(): void;
124
+ /**
125
+ * Mint token with retry logic and exponential backoff
126
+ * @param maxRetries Maximum number of retry attempts (default: 3)
127
+ * @returns Minting result with retry information
128
+ */
129
+ mintTokenWithRetry(maxRetries?: number): Promise<MintingResult>;
130
+ /**
131
+ * Batch minting for multiple archives
132
+ * @param archives Array of archive objects with name and merkleRoot
133
+ * @returns Array of minting results
134
+ */
135
+ mintBatch(archives: Array<{
136
+ name: string;
137
+ merkleRoot: string;
138
+ }>): Promise<MintingResult[]>;
139
+ /**
140
+ * Create a token from a previously timestamped ZIP file.
141
+ * Extracts the merkle root from the timestamp metadata and mints a new token.
142
+ *
143
+ * @param zipkit - Zipkit-like instance containing timestamp metadata
144
+ * @param options - Additional options for minting
145
+ * @returns Minting result with token information
146
+ */
147
+ mintFromTimestampedZip(zipkit: any, options?: {
148
+ preserveTimestampInfo?: boolean;
149
+ }): Promise<MintingResult>;
150
+ }
151
+ /**
152
+ * Utility function to validate Ethereum private key
153
+ */
154
+ export declare function validatePrivateKey(privateKey: string): boolean;
155
+ //# sourceMappingURL=ZipkitMinter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZipkitMinter.d.ts","sourceRoot":"","sources":["../../src/core/ZipkitMinter.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAA0H,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1K,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,SAAS,EAAE,CAAC;IACvB,eAAe,EAAE,SAAS,EAAE,CAAC;IAC7B,YAAY,EAAE,SAAS,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACvB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,eAAe,CAAC;IAC3C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IAChC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IACpC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,aAAa,EAAE,cAAc,CAAC;IACxC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;gBAElB,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE;IAqDpF;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAgB1C;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAmGzD;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IA4BhG;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAajC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuB3B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;IAmNzC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC;QAC9B,UAAU,EAAE,UAAU,CAAC;QACvB,cAAc,EAAE,oBAAoB,CAAC;QACrC,QAAQ,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,aAAa,EAAE,MAAM,CAAA;SAAE,CAAC;QACzE,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B,CAAC;IAoCF;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC;QAC/B,aAAa,EAAE,aAAa,CAAC;QAC7B,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B,CAAC;IAmBF;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAoCpC;;OAEG;IACH,OAAO,IAAI,IAAI;IAiBf;;;;OAIG;IACG,kBAAkB,CAAC,UAAU,GAAE,MAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAiCxE;;;;OAIG;IACG,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAyBhG;;;;;;;OAOG;IACG,sBAAsB,CAC1B,MAAM,EAAE,GAAG,EACX,OAAO,GAAE;QAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;KAAO,GAChD,OAAO,CAAC,aAAa,CAAC;CAgE1B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAO9D"}