neozipkit 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +410 -186
- 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 +235 -131
- 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/blockchain/browser/TokenVerifierBrowser.d.ts +67 -0
- package/dist/blockchain/browser/TokenVerifierBrowser.d.ts.map +1 -0
- package/dist/blockchain/browser/TokenVerifierBrowser.js +313 -0
- 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/blockchain/core/WalletManager.d.ts +124 -0
- package/dist/blockchain/core/WalletManager.d.ts.map +1 -0
- package/dist/blockchain/{ZipKitWallet.js → core/WalletManager.js} +157 -177
- package/dist/blockchain/core/WalletManager.js.map +1 -0
- package/dist/blockchain/{ZipKitMinter.d.ts → core/ZipkitMinter.d.ts} +46 -11
- 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/{ZipKitOTS.d.ts → core/ZipkitOTS.d.ts} +6 -15
- package/dist/blockchain/core/ZipkitOTS.d.ts.map +1 -0
- package/dist/blockchain/{ZipKitOTS.js → core/ZipkitOTS.js} +26 -84
- 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 -7
- package/dist/blockchain/index.d.ts.map +1 -0
- package/dist/blockchain/index.js +18 -34
- 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 -14
- package/dist/browser.js +13 -28
- 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 +225 -82
- 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/core/version.d.ts +5 -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 -18
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -35
- 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 +491 -0
- package/examples/verify-tokenized-zip.ts +305 -0
- package/examples/zip-token.ts +604 -0
- package/package.json +108 -24
- package/src/blockchain/README.md +59 -66
- package/src/{browser/TokenVerifierBrowser.ts-remove → 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/{ZipKitWallet.ts → core/WalletManager.ts} +241 -143
- package/src/blockchain/core/ZipkitMinter.ts +716 -0
- package/src/blockchain/{ZipKitOTS.ts → core/ZipkitOTS.ts} +28 -62
- 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 +21 -55
- 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 +240 -90
- 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 -25
- 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/modules.d.ts +1 -11
- package/src/types/opentimestamps.d.ts +1 -23
- package/contracts/INTEGRATION.md +0 -338
- package/contracts/NETWORKS.md +0 -156
- package/contracts/NZIP-NFT-bytecode.txt +0 -1
- package/contracts/constants.ts +0 -952
- package/contracts/deploy-bytecode.mjs +0 -94
- package/dist/blockchain/CertificateToken.d.ts +0 -48
- package/dist/blockchain/CertificateToken.js +0 -386
- package/dist/blockchain/ZipKitMinter.js +0 -347
- package/dist/blockchain/ZipKitNFT.d.ts +0 -3
- package/dist/blockchain/ZipKitNFT.js +0 -7
- package/dist/blockchain/ZipKitVerifier.d.ts +0 -69
- package/dist/blockchain/ZipKitVerifier.js +0 -289
- package/dist/blockchain/ZipKitWallet.d.ts +0 -69
- package/dist/blockchain/contracts.d.ts +0 -14
- package/dist/blockchain/contracts.js +0 -77
- package/dist/blockchain/types.d.ts +0 -47
- package/dist/blockchain/types.js +0 -30
- 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 -18
- package/dist/browser-index.js +0 -57
- package/dist/server/ZipKitServer.d.ts +0 -74
- package/dist/server/ZipKitServer.js +0 -310
- package/dist/shared/ZipKit.d.ts +0 -243
- package/dist/shared/ZipKit.js +0 -772
- 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.d.ts +0 -2
- package/dist/shared/version.js +0 -6
- package/src/blockchain/CertificateToken.ts +0 -444
- package/src/blockchain/ZipKitMinter.ts +0 -470
- package/src/blockchain/ZipKitNFT.ts +0 -12
- package/src/blockchain/ZipKitVerifier.ts +0 -382
- package/src/blockchain/contracts.ts +0 -88
- package/src/blockchain/types.ts +0 -91
- package/src/browser/CertificateGeneratorBrowser.ts-remove +0 -498
- package/src/browser/ZipKitStampBrowser.ts +0 -9
- package/src/browser-index.ts +0 -36
- package/src/server/README.md +0 -25
- package/src/server/ZipKitServer.ts +0 -305
- package/src/shared/ZipKit.ts +0 -881
- 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 -3
- /package/src/{shared → core}/components/Support.ts +0 -0
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* WalletManagerBrowser - Handles browser-specific wallet operations
|
|
4
|
+
* Manages MetaMask, Coinbase Wallet, and other browser providers
|
|
5
|
+
* Extends CoreWalletManager with browser-specific functionality
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.WalletManagerBrowser = void 0;
|
|
9
|
+
const ethers_1 = require("ethers");
|
|
10
|
+
const WalletManager_1 = require("../core/WalletManager");
|
|
11
|
+
const contracts_1 = require("../core/contracts");
|
|
12
|
+
const Logger_1 = require("../../core/components/Logger");
|
|
13
|
+
class WalletManagerBrowser extends WalletManager_1.CoreWalletManager {
|
|
14
|
+
constructor(initialChainId = 84532) {
|
|
15
|
+
super();
|
|
16
|
+
this.browserProvider = null;
|
|
17
|
+
this.readProvider = null;
|
|
18
|
+
this.contract = null;
|
|
19
|
+
this.targetChainId = null;
|
|
20
|
+
// Dedicated RPC endpoints for read operations (to avoid rate limiting)
|
|
21
|
+
this.RPC_ENDPOINTS = {
|
|
22
|
+
1: (0, contracts_1.getContractConfig)(1).rpcUrls[0],
|
|
23
|
+
11155111: (0, contracts_1.getContractConfig)(11155111).rpcUrls[0],
|
|
24
|
+
84532: (0, contracts_1.getContractConfig)(84532).rpcUrls[0],
|
|
25
|
+
8453: (0, contracts_1.getContractConfig)(8453).rpcUrls[0]
|
|
26
|
+
};
|
|
27
|
+
this.currentConfig = (0, contracts_1.getContractConfig)(initialChainId);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Cleanup method to dispose of providers and stop background processes
|
|
31
|
+
*/
|
|
32
|
+
cleanup() {
|
|
33
|
+
Logger_1.Logger.log('🧹 Cleaning up browser wallet manager providers...');
|
|
34
|
+
try {
|
|
35
|
+
// Clear providers to stop any ongoing background processes
|
|
36
|
+
if (this.readProvider) {
|
|
37
|
+
try {
|
|
38
|
+
this.readProvider.destroy?.();
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
Logger_1.Logger.warn('Could not destroy read provider:', error);
|
|
42
|
+
}
|
|
43
|
+
this.readProvider = null;
|
|
44
|
+
}
|
|
45
|
+
if (this.browserProvider) {
|
|
46
|
+
this.browserProvider = null;
|
|
47
|
+
}
|
|
48
|
+
if (this.contract) {
|
|
49
|
+
this.contract = null;
|
|
50
|
+
}
|
|
51
|
+
Logger_1.Logger.log('✅ Browser wallet manager cleanup completed');
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
Logger_1.Logger.warn('Error during browser wallet manager cleanup:', error);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
getNetworkName(chainId) {
|
|
58
|
+
const networkNames = {
|
|
59
|
+
1: "homestead",
|
|
60
|
+
11155111: "sepolia",
|
|
61
|
+
84532: "base-sepolia",
|
|
62
|
+
8453: "base"
|
|
63
|
+
};
|
|
64
|
+
return networkNames[chainId] || `chain-${chainId}`;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Set the target network for wallet operations
|
|
68
|
+
*/
|
|
69
|
+
setTargetNetwork(chainId) {
|
|
70
|
+
if (!(0, contracts_1.isNetworkSupported)(chainId)) {
|
|
71
|
+
throw new Error(`Network ${chainId} is not supported for tokenization`);
|
|
72
|
+
}
|
|
73
|
+
this.targetChainId = chainId;
|
|
74
|
+
this.currentConfig = (0, contracts_1.getContractConfig)(chainId);
|
|
75
|
+
Logger_1.Logger.log(`🎯 Target network set to: ${this.currentConfig.network} (${chainId})`);
|
|
76
|
+
Logger_1.Logger.log(`📍 Contract address: ${this.currentConfig.address}`);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get the current target network configuration
|
|
80
|
+
*/
|
|
81
|
+
getCurrentConfig() {
|
|
82
|
+
return this.currentConfig;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Initialize wallet with browser provider
|
|
86
|
+
*/
|
|
87
|
+
async initialize(walletAddress, existingProvider) {
|
|
88
|
+
try {
|
|
89
|
+
// Use existing provider if available, otherwise create new one
|
|
90
|
+
if (existingProvider) {
|
|
91
|
+
Logger_1.Logger.log("🔄 Using existing wallet provider for tokenization");
|
|
92
|
+
try {
|
|
93
|
+
this.browserProvider = new ethers_1.ethers.BrowserProvider(existingProvider);
|
|
94
|
+
await this.testProviderConnection(existingProvider);
|
|
95
|
+
}
|
|
96
|
+
catch (providerError) {
|
|
97
|
+
Logger_1.Logger.warn("❌ Existing provider failed, falling back to window.ethereum:", providerError);
|
|
98
|
+
if (window.ethereum) {
|
|
99
|
+
this.browserProvider = new ethers_1.ethers.BrowserProvider(window.ethereum);
|
|
100
|
+
await this.testProviderConnection(window.ethereum);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
throw new Error("No wallet provider available");
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else if (window.ethereum) {
|
|
108
|
+
Logger_1.Logger.log("🔄 Creating new provider from window.ethereum");
|
|
109
|
+
try {
|
|
110
|
+
this.browserProvider = new ethers_1.ethers.BrowserProvider(window.ethereum);
|
|
111
|
+
await this.testProviderConnection(window.ethereum);
|
|
112
|
+
}
|
|
113
|
+
catch (windowEthError) {
|
|
114
|
+
throw new Error(`Failed to connect to wallet: ${windowEthError.message}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
throw new Error("No wallet provider found");
|
|
119
|
+
}
|
|
120
|
+
// Get chain ID with rate limit protection
|
|
121
|
+
let chainId = null;
|
|
122
|
+
Logger_1.Logger.log("🔍 Starting network detection...");
|
|
123
|
+
try {
|
|
124
|
+
Logger_1.Logger.log("📡 Attempting single eth_chainId call...");
|
|
125
|
+
const hexChainId = await this.browserProvider.send("eth_chainId", []);
|
|
126
|
+
chainId = parseInt(hexChainId, 16);
|
|
127
|
+
Logger_1.Logger.log(`✅ Network detected: Chain ${chainId}`);
|
|
128
|
+
}
|
|
129
|
+
catch (chainIdError) {
|
|
130
|
+
Logger_1.Logger.warn("❌ Chain ID detection failed:", chainIdError);
|
|
131
|
+
chainId = this.currentConfig.chainId;
|
|
132
|
+
Logger_1.Logger.log(`⚠️ Using default chain ID: ${chainId}`);
|
|
133
|
+
}
|
|
134
|
+
Logger_1.Logger.log(`🎯 Final detected chain ID: ${chainId}`);
|
|
135
|
+
Logger_1.Logger.log(`🎯 Required chain ID: ${this.currentConfig.chainId}`);
|
|
136
|
+
// If no explicit target was set, adopt the detected network
|
|
137
|
+
if (!this.targetChainId && chainId) {
|
|
138
|
+
this.currentConfig = (0, contracts_1.getContractConfig)(chainId);
|
|
139
|
+
Logger_1.Logger.log(`🎛 Adopted current network: ${this.currentConfig.network} (${chainId})`);
|
|
140
|
+
}
|
|
141
|
+
// Set up dedicated read provider to avoid rate limiting
|
|
142
|
+
if (chainId && this.RPC_ENDPOINTS[chainId]) {
|
|
143
|
+
try {
|
|
144
|
+
Logger_1.Logger.log(`🔗 Testing RPC endpoint before creating provider for chain ${chainId}...`);
|
|
145
|
+
const rpcUrl = this.RPC_ENDPOINTS[chainId];
|
|
146
|
+
// Test RPC endpoint with fetch first
|
|
147
|
+
const controller = new AbortController();
|
|
148
|
+
const timeout = setTimeout(() => controller.abort(), 2500);
|
|
149
|
+
const testResponse = await fetch(rpcUrl, {
|
|
150
|
+
method: 'POST',
|
|
151
|
+
headers: { 'Content-Type': 'application/json' },
|
|
152
|
+
body: JSON.stringify({ jsonrpc: '2.0', method: 'eth_chainId', params: [], id: 1 }),
|
|
153
|
+
signal: controller.signal,
|
|
154
|
+
}).catch(() => null);
|
|
155
|
+
clearTimeout(timeout);
|
|
156
|
+
if (!testResponse || !testResponse.ok) {
|
|
157
|
+
throw new Error('RPC endpoint did not respond in time');
|
|
158
|
+
}
|
|
159
|
+
const testData = await testResponse.json().catch(() => null);
|
|
160
|
+
const actualChainId = testData && testData.result ? parseInt(testData.result, 16) : undefined;
|
|
161
|
+
if (actualChainId !== chainId) {
|
|
162
|
+
throw new Error(`Chain ID mismatch: expected ${chainId}, got ${actualChainId}`);
|
|
163
|
+
}
|
|
164
|
+
Logger_1.Logger.log(`✅ RPC endpoint test passed for chain ${chainId}`);
|
|
165
|
+
const networkConfig = {
|
|
166
|
+
name: this.getNetworkName(chainId),
|
|
167
|
+
chainId: chainId
|
|
168
|
+
};
|
|
169
|
+
this.readProvider = new ethers_1.ethers.JsonRpcProvider(rpcUrl, networkConfig);
|
|
170
|
+
Logger_1.Logger.log(`✅ Read provider initialized successfully for ${rpcUrl}`);
|
|
171
|
+
}
|
|
172
|
+
catch (readProviderError) {
|
|
173
|
+
Logger_1.Logger.warn("❌ Failed to set up read provider:", readProviderError);
|
|
174
|
+
this.readProvider = null;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// Verify chain ID if we were able to detect it
|
|
178
|
+
if (chainId && chainId !== this.currentConfig.chainId) {
|
|
179
|
+
Logger_1.Logger.log(`❌ Wrong network detected. Current: Chain ${chainId}, Required: Chain ${this.currentConfig.chainId}`);
|
|
180
|
+
try {
|
|
181
|
+
Logger_1.Logger.log(`🔄 Attempting to switch to ${this.currentConfig.network}...`);
|
|
182
|
+
await this.addAndSwitchNetwork();
|
|
183
|
+
Logger_1.Logger.log(`✅ Successfully switched to ${this.currentConfig.network}`);
|
|
184
|
+
// Re-verify the network after switching
|
|
185
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
186
|
+
try {
|
|
187
|
+
const newNetwork = await this.browserProvider.getNetwork();
|
|
188
|
+
const newChainId = Number(newNetwork.chainId);
|
|
189
|
+
Logger_1.Logger.log(`🔍 Post-switch verification: Chain ${newChainId}`);
|
|
190
|
+
if (newChainId !== this.currentConfig.chainId) {
|
|
191
|
+
throw new Error(`Network switch failed. Still on Chain ${newChainId}`);
|
|
192
|
+
}
|
|
193
|
+
chainId = newChainId;
|
|
194
|
+
// Recreate read provider for the new network
|
|
195
|
+
try {
|
|
196
|
+
if (this.readProvider) {
|
|
197
|
+
try {
|
|
198
|
+
this.readProvider.destroy?.();
|
|
199
|
+
}
|
|
200
|
+
catch { }
|
|
201
|
+
this.readProvider = null;
|
|
202
|
+
}
|
|
203
|
+
const rpcUrl = this.RPC_ENDPOINTS[newChainId];
|
|
204
|
+
if (rpcUrl) {
|
|
205
|
+
const networkConfig = { name: this.getNetworkName(newChainId), chainId: newChainId };
|
|
206
|
+
this.readProvider = new ethers_1.ethers.JsonRpcProvider(rpcUrl, networkConfig);
|
|
207
|
+
Logger_1.Logger.log(`🔁 Read provider switched to ${rpcUrl}`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
catch (rpErr) {
|
|
211
|
+
Logger_1.Logger.warn('Could not recreate read provider after switch:', rpErr);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
catch (verifyError) {
|
|
215
|
+
Logger_1.Logger.warn("Could not verify network after switch:", verifyError);
|
|
216
|
+
chainId = this.currentConfig.chainId;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
catch (switchError) {
|
|
220
|
+
Logger_1.Logger.error("Failed to switch network:", switchError);
|
|
221
|
+
throw new Error(`Please manually switch to ${this.currentConfig.network} in your wallet.\n\n` +
|
|
222
|
+
`Current network: Chain ${chainId}\n` +
|
|
223
|
+
`Required network: ${this.currentConfig.network} (Chain ID: ${this.currentConfig.chainId})\n\n` +
|
|
224
|
+
`In MetaMask:\n` +
|
|
225
|
+
`1. Click the network dropdown at the top\n` +
|
|
226
|
+
`2. Select "Add network" or "Custom networks"\n` +
|
|
227
|
+
`3. Add ${this.currentConfig.network} network details\n` +
|
|
228
|
+
`4. Switch to ${this.currentConfig.network}\n\n` +
|
|
229
|
+
`Network Details:\n` +
|
|
230
|
+
`• Network Name: ${this.currentConfig.network}\n` +
|
|
231
|
+
`• RPC URL: ${this.currentConfig.rpcUrls[0]}\n` +
|
|
232
|
+
`• Chain ID: ${this.currentConfig.chainId}\n` +
|
|
233
|
+
`• Currency Symbol: ETH\n` +
|
|
234
|
+
`• Block Explorer: ${this.currentConfig.explorerUrl}`);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
Logger_1.Logger.log(`🔗 Browser wallet manager initialized`);
|
|
238
|
+
Logger_1.Logger.log(`📡 Connected to ${this.currentConfig.network} (Chain ${chainId || 'unknown'})`);
|
|
239
|
+
Logger_1.Logger.log(`📍 Contract Address: ${this.currentConfig.address}`);
|
|
240
|
+
Logger_1.Logger.log(`👛 Wallet Address: ${walletAddress}`);
|
|
241
|
+
// Initialize contract with the actual contract address
|
|
242
|
+
try {
|
|
243
|
+
const signer = await this.browserProvider.getSigner();
|
|
244
|
+
this.contract = new ethers_1.ethers.Contract(this.currentConfig.address, contracts_1.NZIP_CONTRACT_ABI, signer);
|
|
245
|
+
// Test the contract connection by checking if it has code
|
|
246
|
+
try {
|
|
247
|
+
const providerForRead = this.readProvider || this.browserProvider;
|
|
248
|
+
const code = await providerForRead.getCode(this.currentConfig.address);
|
|
249
|
+
if (code === '0x') {
|
|
250
|
+
Logger_1.Logger.warn(`⚠️ No contract code found at ${this.currentConfig.address}. Contract may not be deployed on this network.`);
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
Logger_1.Logger.log(`✅ Contract verified at ${this.currentConfig.address}`);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
catch (codeError) {
|
|
257
|
+
Logger_1.Logger.warn("Could not verify contract code:", codeError);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
catch (signerError) {
|
|
261
|
+
Logger_1.Logger.error("Failed to get signer or initialize contract:", signerError);
|
|
262
|
+
throw new Error("Could not connect to wallet. Please ensure your wallet is unlocked and connected.");
|
|
263
|
+
}
|
|
264
|
+
return true;
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
Logger_1.Logger.error("Browser wallet manager initialization failed:", error);
|
|
268
|
+
if (error instanceof Error) {
|
|
269
|
+
if (error.message.includes("No wallet provider found")) {
|
|
270
|
+
throw new Error("No crypto wallet detected. Please install MetaMask, Coinbase Wallet, or another Web3 wallet.");
|
|
271
|
+
}
|
|
272
|
+
else if (error.message.includes("Please switch to")) {
|
|
273
|
+
throw error;
|
|
274
|
+
}
|
|
275
|
+
else if (error.message.includes("Could not connect to wallet")) {
|
|
276
|
+
throw error;
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
throw new Error(`Wallet connection failed: ${error.message}`);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
throw error;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Get the contract instance
|
|
287
|
+
*/
|
|
288
|
+
getContract() {
|
|
289
|
+
return this.contract;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Get the browser provider instance
|
|
293
|
+
*/
|
|
294
|
+
getBrowserProvider() {
|
|
295
|
+
return this.browserProvider;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Override parent method to return browser provider
|
|
299
|
+
*/
|
|
300
|
+
getWallet() {
|
|
301
|
+
// Browser doesn't have direct wallet access, return null
|
|
302
|
+
return null;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Get the read provider instance
|
|
306
|
+
*/
|
|
307
|
+
getReadProvider() {
|
|
308
|
+
return this.readProvider;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Override parent method to check browser provider
|
|
312
|
+
*/
|
|
313
|
+
isReady() {
|
|
314
|
+
return this.browserProvider !== null;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Override parent method to check read provider
|
|
318
|
+
*/
|
|
319
|
+
isOnline() {
|
|
320
|
+
return this.readProvider !== null || this.browserProvider !== null;
|
|
321
|
+
}
|
|
322
|
+
async addAndSwitchNetwork() {
|
|
323
|
+
if (!window.ethereum) {
|
|
324
|
+
throw new Error("Ethereum provider not found");
|
|
325
|
+
}
|
|
326
|
+
try {
|
|
327
|
+
// First try to switch to the network (in case it already exists)
|
|
328
|
+
await window.ethereum.request({
|
|
329
|
+
method: "wallet_switchEthereumChain",
|
|
330
|
+
params: [
|
|
331
|
+
{
|
|
332
|
+
chainId: `0x${this.currentConfig.chainId.toString(16)}`,
|
|
333
|
+
},
|
|
334
|
+
],
|
|
335
|
+
});
|
|
336
|
+
Logger_1.Logger.log(`✅ Successfully switched to existing ${this.currentConfig.network}`);
|
|
337
|
+
}
|
|
338
|
+
catch (switchError) {
|
|
339
|
+
// If switching failed, the network might not exist, so try to add it
|
|
340
|
+
if (switchError.code === 4902) {
|
|
341
|
+
Logger_1.Logger.log(`➕ Network not found, adding ${this.currentConfig.network}...`);
|
|
342
|
+
try {
|
|
343
|
+
await window.ethereum.request({
|
|
344
|
+
method: "wallet_addEthereumChain",
|
|
345
|
+
params: [
|
|
346
|
+
{
|
|
347
|
+
chainId: `0x${this.currentConfig.chainId.toString(16)}`,
|
|
348
|
+
chainName: this.currentConfig.network,
|
|
349
|
+
nativeCurrency: {
|
|
350
|
+
name: "ETH",
|
|
351
|
+
symbol: "ETH",
|
|
352
|
+
decimals: 18,
|
|
353
|
+
},
|
|
354
|
+
rpcUrls: this.currentConfig.rpcUrls,
|
|
355
|
+
blockExplorerUrls: [
|
|
356
|
+
this.currentConfig.explorerUrl,
|
|
357
|
+
],
|
|
358
|
+
},
|
|
359
|
+
],
|
|
360
|
+
});
|
|
361
|
+
Logger_1.Logger.log(`✅ Successfully added and switched to ${this.currentConfig.network}`);
|
|
362
|
+
}
|
|
363
|
+
catch (addError) {
|
|
364
|
+
Logger_1.Logger.error("Failed to add network:", addError);
|
|
365
|
+
if (addError.code === 4001) {
|
|
366
|
+
throw new Error("User rejected the network addition request. Please manually add Base Sepolia network to your wallet.");
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
throw new Error(`Failed to add ${this.currentConfig.network} network: ${addError.message}`);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
else if (switchError.code === 4001) {
|
|
374
|
+
throw new Error("User rejected the network switch request. Please manually switch to Base Sepolia in your wallet.");
|
|
375
|
+
}
|
|
376
|
+
else {
|
|
377
|
+
Logger_1.Logger.error("Network switch failed:", switchError);
|
|
378
|
+
throw new Error(`Failed to switch to ${this.currentConfig.network}: ${switchError.message}`);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
async testProviderConnection(provider) {
|
|
383
|
+
try {
|
|
384
|
+
await provider.request({ method: 'eth_chainId' });
|
|
385
|
+
Logger_1.Logger.log("✅ Provider connection successful (eth_chainId)");
|
|
386
|
+
}
|
|
387
|
+
catch (error) {
|
|
388
|
+
Logger_1.Logger.warn("❌ Provider connection failed (eth_chainId):", error);
|
|
389
|
+
throw new Error(`Could not establish connection to wallet: ${error.message}`);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
// ===== Explorer URL Generation Methods =====
|
|
393
|
+
/**
|
|
394
|
+
* Generate block explorer URL for a transaction
|
|
395
|
+
*/
|
|
396
|
+
getExplorerUrl(transactionHash) {
|
|
397
|
+
return `${this.currentConfig.explorerUrl}/tx/${transactionHash}`;
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Generate block explorer URL for a contract
|
|
401
|
+
*/
|
|
402
|
+
getContractExplorerUrl() {
|
|
403
|
+
return `${this.currentConfig.explorerUrl}/address/${this.currentConfig.address}`;
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Generate block explorer URL for a token
|
|
407
|
+
* Uses the contract address page where users can search for specific token IDs
|
|
408
|
+
*/
|
|
409
|
+
getTokenExplorerUrl(tokenId) {
|
|
410
|
+
return `${this.currentConfig.explorerUrl}/address/${this.currentConfig.address}#readContract`;
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Generate block explorer URL for a specific token ID
|
|
414
|
+
* Some explorers support direct token URLs
|
|
415
|
+
*/
|
|
416
|
+
getTokenDirectUrl(tokenId) {
|
|
417
|
+
// This varies by explorer, but most support this pattern
|
|
418
|
+
return `${this.currentConfig.explorerUrl}/token/${this.currentConfig.address}?a=${tokenId}`;
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Generate block explorer URL for an address
|
|
422
|
+
*/
|
|
423
|
+
getAddressExplorerUrl(address) {
|
|
424
|
+
return `${this.currentConfig.explorerUrl}/address/${address}`;
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Generate block explorer URL for a block
|
|
428
|
+
*/
|
|
429
|
+
getBlockExplorerUrl(blockNumber) {
|
|
430
|
+
return `${this.currentConfig.explorerUrl}/block/${blockNumber}`;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
exports.WalletManagerBrowser = WalletManagerBrowser;
|
|
434
|
+
//# sourceMappingURL=WalletManagerBrowser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletManagerBrowser.js","sourceRoot":"","sources":["../../../src/blockchain/browser/WalletManagerBrowser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ZipkitMinterBrowser - Browser-specific NFT minting for ZIP files
|
|
3
|
+
* Extends core minting functionality with browser-specific features
|
|
4
|
+
*/
|
|
5
|
+
import { WalletManagerBrowser } from './WalletManagerBrowser';
|
|
6
|
+
import type { TokenMetadata } from '../../types';
|
|
7
|
+
export interface TokenizationResult {
|
|
8
|
+
success: boolean;
|
|
9
|
+
tokenId?: string;
|
|
10
|
+
transactionHash?: string;
|
|
11
|
+
error?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ExistingToken {
|
|
14
|
+
tokenId: string;
|
|
15
|
+
owner: string;
|
|
16
|
+
creationTimestamp: number;
|
|
17
|
+
mintedAt: string;
|
|
18
|
+
transactionHash: string;
|
|
19
|
+
}
|
|
20
|
+
export declare class ZipkitMinterBrowser {
|
|
21
|
+
private walletManager;
|
|
22
|
+
private merkleRoot;
|
|
23
|
+
constructor(merkleRoot: string, walletManager: WalletManagerBrowser);
|
|
24
|
+
/**
|
|
25
|
+
* Initialize the minter with wallet manager
|
|
26
|
+
*/
|
|
27
|
+
initialize(): Promise<void>;
|
|
28
|
+
private getNetworkName;
|
|
29
|
+
/**
|
|
30
|
+
* Check for any existing tokens with the same Merkle Root
|
|
31
|
+
*/
|
|
32
|
+
findTokensByMerkleRoot(): Promise<ExistingToken[]>;
|
|
33
|
+
/**
|
|
34
|
+
* Estimate gas cost for minting
|
|
35
|
+
*/
|
|
36
|
+
estimateGasCost(): Promise<string>;
|
|
37
|
+
/**
|
|
38
|
+
* Mint a new token
|
|
39
|
+
*/
|
|
40
|
+
mintToken(): Promise<TokenizationResult>;
|
|
41
|
+
/**
|
|
42
|
+
* Create token metadata
|
|
43
|
+
*/
|
|
44
|
+
createTokenMetadata(tokenId: string, transactionHash: string): TokenMetadata;
|
|
45
|
+
/**
|
|
46
|
+
* Get explorer URL for transaction
|
|
47
|
+
*/
|
|
48
|
+
getExplorerUrl(transactionHash: string): string;
|
|
49
|
+
/**
|
|
50
|
+
* Get explorer URL for contract
|
|
51
|
+
*/
|
|
52
|
+
getContractExplorerUrl(): string;
|
|
53
|
+
/**
|
|
54
|
+
* Get explorer URL for token
|
|
55
|
+
*/
|
|
56
|
+
getTokenExplorerUrl(tokenId: string): string;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=ZipkitMinterBrowser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZipkitMinterBrowser.d.ts","sourceRoot":"","sources":["../../../src/blockchain/browser/ZipkitMinterBrowser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,UAAU,CAAQ;gBAEd,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,oBAAoB;IAKnE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IASjC,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAyCxD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAoExC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAwL9C;;OAEG;IACH,mBAAmB,CACjB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,GACtB,aAAa;IAiBhB;;OAEG;IACH,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM;IAI/C;;OAEG;IACH,sBAAsB,IAAI,MAAM;IAIhC;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAG7C"}
|