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,99 @@
1
+ /**
2
+ * WalletManagerBrowser - Handles browser-specific wallet operations
3
+ * Manages MetaMask, Coinbase Wallet, and other browser providers
4
+ * Extends CoreWalletManager with browser-specific functionality
5
+ */
6
+ import { ethers } from 'ethers';
7
+ import { CoreWalletManager } from '../core/WalletManager';
8
+ declare global {
9
+ interface Window {
10
+ ethereum?: any;
11
+ }
12
+ }
13
+ export interface WalletConfigBrowser {
14
+ chainId: number;
15
+ network: string;
16
+ address: string;
17
+ rpcUrls: string[];
18
+ explorerUrl: string;
19
+ version: string;
20
+ }
21
+ export declare class WalletManagerBrowser extends CoreWalletManager {
22
+ private browserProvider;
23
+ private readProvider;
24
+ private contract;
25
+ private currentConfig;
26
+ private targetChainId;
27
+ private RPC_ENDPOINTS;
28
+ constructor(initialChainId?: number);
29
+ /**
30
+ * Cleanup method to dispose of providers and stop background processes
31
+ */
32
+ cleanup(): void;
33
+ private getNetworkName;
34
+ /**
35
+ * Set the target network for wallet operations
36
+ */
37
+ setTargetNetwork(chainId: number): void;
38
+ /**
39
+ * Get the current target network configuration
40
+ */
41
+ getCurrentConfig(): WalletConfigBrowser;
42
+ /**
43
+ * Initialize wallet with browser provider
44
+ */
45
+ initialize(walletAddress: string, existingProvider?: any): Promise<boolean>;
46
+ /**
47
+ * Get the contract instance
48
+ */
49
+ getContract(): ethers.Contract | null;
50
+ /**
51
+ * Get the browser provider instance
52
+ */
53
+ getBrowserProvider(): ethers.BrowserProvider | null;
54
+ /**
55
+ * Override parent method to return browser provider
56
+ */
57
+ getWallet(): ethers.Wallet | null;
58
+ /**
59
+ * Get the read provider instance
60
+ */
61
+ getReadProvider(): ethers.JsonRpcProvider | null;
62
+ /**
63
+ * Override parent method to check browser provider
64
+ */
65
+ isReady(): boolean;
66
+ /**
67
+ * Override parent method to check read provider
68
+ */
69
+ isOnline(): boolean;
70
+ private addAndSwitchNetwork;
71
+ private testProviderConnection;
72
+ /**
73
+ * Generate block explorer URL for a transaction
74
+ */
75
+ getExplorerUrl(transactionHash: string): string;
76
+ /**
77
+ * Generate block explorer URL for a contract
78
+ */
79
+ getContractExplorerUrl(): string;
80
+ /**
81
+ * Generate block explorer URL for a token
82
+ * Uses the contract address page where users can search for specific token IDs
83
+ */
84
+ getTokenExplorerUrl(tokenId: string): string;
85
+ /**
86
+ * Generate block explorer URL for a specific token ID
87
+ * Some explorers support direct token URLs
88
+ */
89
+ getTokenDirectUrl(tokenId: string): string;
90
+ /**
91
+ * Generate block explorer URL for an address
92
+ */
93
+ getAddressExplorerUrl(address: string): string;
94
+ /**
95
+ * Generate block explorer URL for a block
96
+ */
97
+ getBlockExplorerUrl(blockNumber: string | number): string;
98
+ }
99
+ //# sourceMappingURL=WalletManagerBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletManagerBrowser.d.ts","sourceRoot":"","sources":["../../src/browser/WalletManagerBrowser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAK1D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,QAAQ,CAAC,EAAE,GAAG,CAAA;KACf;CACF;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,oBAAqB,SAAQ,iBAAiB;IACzD,OAAO,CAAC,eAAe,CAAsC;IAC7D,OAAO,CAAC,YAAY,CAAsC;IAC1D,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,aAAa,CAAsB;IAG3C,OAAO,CAAC,aAAa,CAKpB;gBAEW,cAAc,GAAE,MAAc;IAK1C;;OAEG;IACI,OAAO,IAAI,IAAI;IA4BtB,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACI,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAY9C;;OAEG;IACI,gBAAgB,IAAI,mBAAmB;IAI9C;;OAEG;IACG,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAmNjF;;OAEG;IACI,WAAW,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI;IAI5C;;OAEG;IACI,kBAAkB,IAAI,MAAM,CAAC,eAAe,GAAG,IAAI;IAI1D;;OAEG;IACI,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI;IAKxC;;OAEG;IACI,eAAe,IAAI,MAAM,CAAC,eAAe,GAAG,IAAI;IAIvD;;OAEG;IACI,OAAO,IAAI,OAAO;IAIzB;;OAEG;IACI,QAAQ,IAAI,OAAO;YAIZ,mBAAmB;YA+DnB,sBAAsB;IAYpC;;OAEG;IACI,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM;IAItD;;OAEG;IACI,sBAAsB,IAAI,MAAM;IAIvC;;;OAGG;IACI,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAInD;;;OAGG;IACI,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAKjD;;OAEG;IACI,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIrD;;OAEG;IACI,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;CAGjE"}
@@ -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("../utils/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 (typeof window !== 'undefined' && 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 (typeof window !== 'undefined' && 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 (typeof window === 'undefined' || !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/browser/WalletManagerBrowser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
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
+ private encryptedHash;
24
+ constructor(merkleRoot: string, walletManager: WalletManagerBrowser, encryptedHash?: string);
25
+ /**
26
+ * Initialize the minter with wallet manager
27
+ */
28
+ initialize(): Promise<void>;
29
+ private getNetworkName;
30
+ /**
31
+ * Check for any existing tokens with the same Merkle Root
32
+ */
33
+ findTokensByMerkleRoot(): Promise<ExistingToken[]>;
34
+ /**
35
+ * Estimate gas cost for minting
36
+ */
37
+ estimateGasCost(): Promise<string>;
38
+ /**
39
+ * Mint a new token
40
+ */
41
+ mintToken(): Promise<TokenizationResult>;
42
+ /**
43
+ * Create token metadata
44
+ */
45
+ createTokenMetadata(tokenId: string, transactionHash: string): TokenMetadata;
46
+ /**
47
+ * Get explorer URL for transaction
48
+ */
49
+ getExplorerUrl(transactionHash: string): string;
50
+ /**
51
+ * Get explorer URL for contract
52
+ */
53
+ getContractExplorerUrl(): string;
54
+ /**
55
+ * Get explorer URL for token
56
+ */
57
+ getTokenExplorerUrl(tokenId: string): string;
58
+ }
59
+ //# sourceMappingURL=ZipkitMinterBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZipkitMinterBrowser.d.ts","sourceRoot":"","sources":["../../src/browser/ZipkitMinterBrowser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,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;IAC1B,OAAO,CAAC,aAAa,CAAQ;gBAEjB,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,oBAAoB,EAAE,aAAa,CAAC,EAAE,MAAM;IAM3F;;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;IA6ExC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAoM9C;;OAEG;IACH,mBAAmB,CACjB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,GACtB,aAAa;IAuBhB;;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"}