noah-avalanche-sdk 0.1.2

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 (103) hide show
  1. package/README.md +892 -0
  2. package/dist/core/APIClient.d.ts +71 -0
  3. package/dist/core/APIClient.d.ts.map +1 -0
  4. package/dist/core/APIClient.js +92 -0
  5. package/dist/core/APIClient.js.map +1 -0
  6. package/dist/core/ContractClient.d.ts +38 -0
  7. package/dist/core/ContractClient.d.ts.map +1 -0
  8. package/dist/core/ContractClient.js +209 -0
  9. package/dist/core/ContractClient.js.map +1 -0
  10. package/dist/core/NoahSDK.d.ts +43 -0
  11. package/dist/core/NoahSDK.d.ts.map +1 -0
  12. package/dist/core/NoahSDK.js +93 -0
  13. package/dist/core/NoahSDK.js.map +1 -0
  14. package/dist/core/WalletAdapter.d.ts +188 -0
  15. package/dist/core/WalletAdapter.d.ts.map +1 -0
  16. package/dist/core/WalletAdapter.js +425 -0
  17. package/dist/core/WalletAdapter.js.map +1 -0
  18. package/dist/hooks/index.d.ts +18 -0
  19. package/dist/hooks/index.d.ts.map +1 -0
  20. package/dist/hooks/index.js +15 -0
  21. package/dist/hooks/index.js.map +1 -0
  22. package/dist/hooks/useCredentials.d.ts +136 -0
  23. package/dist/hooks/useCredentials.d.ts.map +1 -0
  24. package/dist/hooks/useCredentials.js +217 -0
  25. package/dist/hooks/useCredentials.js.map +1 -0
  26. package/dist/hooks/useProtocol.d.ts +117 -0
  27. package/dist/hooks/useProtocol.d.ts.map +1 -0
  28. package/dist/hooks/useProtocol.js +165 -0
  29. package/dist/hooks/useProtocol.js.map +1 -0
  30. package/dist/hooks/useUser.d.ts +159 -0
  31. package/dist/hooks/useUser.d.ts.map +1 -0
  32. package/dist/hooks/useUser.js +188 -0
  33. package/dist/hooks/useUser.js.map +1 -0
  34. package/dist/index.d.ts +28 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +26 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/issuer/IssuerClient.d.ts +98 -0
  39. package/dist/issuer/IssuerClient.d.ts.map +1 -0
  40. package/dist/issuer/IssuerClient.js +159 -0
  41. package/dist/issuer/IssuerClient.js.map +1 -0
  42. package/dist/protocol/ProtocolClient.d.ts +124 -0
  43. package/dist/protocol/ProtocolClient.d.ts.map +1 -0
  44. package/dist/protocol/ProtocolClient.js +265 -0
  45. package/dist/protocol/ProtocolClient.js.map +1 -0
  46. package/dist/protocol/RequirementsManager.d.ts +9 -0
  47. package/dist/protocol/RequirementsManager.d.ts.map +1 -0
  48. package/dist/protocol/RequirementsManager.js +9 -0
  49. package/dist/protocol/RequirementsManager.js.map +1 -0
  50. package/dist/user/ProofGenerator.d.ts +49 -0
  51. package/dist/user/ProofGenerator.d.ts.map +1 -0
  52. package/dist/user/ProofGenerator.js +80 -0
  53. package/dist/user/ProofGenerator.js.map +1 -0
  54. package/dist/user/UserClient.d.ts +191 -0
  55. package/dist/user/UserClient.d.ts.map +1 -0
  56. package/dist/user/UserClient.js +338 -0
  57. package/dist/user/UserClient.js.map +1 -0
  58. package/dist/utils/credentials.d.ts +47 -0
  59. package/dist/utils/credentials.d.ts.map +1 -0
  60. package/dist/utils/credentials.js +99 -0
  61. package/dist/utils/credentials.js.map +1 -0
  62. package/dist/utils/identity.d.ts +22 -0
  63. package/dist/utils/identity.d.ts.map +1 -0
  64. package/dist/utils/identity.js +35 -0
  65. package/dist/utils/identity.js.map +1 -0
  66. package/dist/utils/jurisdiction.d.ts +21 -0
  67. package/dist/utils/jurisdiction.d.ts.map +1 -0
  68. package/dist/utils/jurisdiction.js +64 -0
  69. package/dist/utils/jurisdiction.js.map +1 -0
  70. package/dist/utils/mrz.d.ts +16 -0
  71. package/dist/utils/mrz.d.ts.map +1 -0
  72. package/dist/utils/mrz.js +91 -0
  73. package/dist/utils/mrz.js.map +1 -0
  74. package/dist/utils/ocr.d.ts +31 -0
  75. package/dist/utils/ocr.d.ts.map +1 -0
  76. package/dist/utils/ocr.js +69 -0
  77. package/dist/utils/ocr.js.map +1 -0
  78. package/dist/utils/types.d.ts +122 -0
  79. package/dist/utils/types.d.ts.map +1 -0
  80. package/dist/utils/types.js +2 -0
  81. package/dist/utils/types.js.map +1 -0
  82. package/package.json +53 -0
  83. package/src/core/APIClient.ts +165 -0
  84. package/src/core/ContractClient.ts +266 -0
  85. package/src/core/NoahSDK.ts +123 -0
  86. package/src/core/WalletAdapter.ts +546 -0
  87. package/src/hooks/index.ts +31 -0
  88. package/src/hooks/types.d.ts +18 -0
  89. package/src/hooks/useCredentials.ts +359 -0
  90. package/src/hooks/useProtocol.ts +284 -0
  91. package/src/hooks/useUser.ts +331 -0
  92. package/src/index.ts +80 -0
  93. package/src/issuer/IssuerClient.ts +209 -0
  94. package/src/protocol/ProtocolClient.ts +330 -0
  95. package/src/protocol/RequirementsManager.ts +16 -0
  96. package/src/user/ProofGenerator.ts +113 -0
  97. package/src/user/UserClient.ts +440 -0
  98. package/src/utils/credentials.ts +122 -0
  99. package/src/utils/identity.ts +46 -0
  100. package/src/utils/jurisdiction.ts +83 -0
  101. package/src/utils/mrz.ts +113 -0
  102. package/src/utils/ocr.ts +84 -0
  103. package/src/utils/types.ts +144 -0
@@ -0,0 +1,188 @@
1
+ import type { Provider, Signer, Eip1193Provider } from 'ethers';
2
+ /**
3
+ * Supported wallet types
4
+ */
5
+ export type WalletType = 'metamask' | 'walletconnect' | 'injected' | 'custom';
6
+ /**
7
+ * Configuration for wallet adapter
8
+ */
9
+ export interface WalletAdapterConfig {
10
+ /**
11
+ * Optional RPC URL for fallback provider
12
+ */
13
+ rpcUrl?: string;
14
+ /**
15
+ * Optional chain ID to validate against
16
+ */
17
+ chainId?: number;
18
+ /**
19
+ * Optional network configuration for switching networks
20
+ */
21
+ networkConfig?: {
22
+ chainId: number;
23
+ chainName: string;
24
+ nativeCurrency: {
25
+ name: string;
26
+ symbol: string;
27
+ decimals: number;
28
+ };
29
+ rpcUrls: string[];
30
+ blockExplorerUrls?: string[];
31
+ };
32
+ }
33
+ /**
34
+ * EIP-6963 Provider Information
35
+ */
36
+ export interface EIP6963ProviderDetail {
37
+ info: EIP6963ProviderInfo;
38
+ provider: Eip1193Provider;
39
+ }
40
+ export interface EIP6963ProviderInfo {
41
+ rdns: string;
42
+ uuid: string;
43
+ name: string;
44
+ icon: string;
45
+ }
46
+ /**
47
+ * Wallet connection state
48
+ */
49
+ export interface WalletState {
50
+ account: string | null;
51
+ chainId: number | null;
52
+ connected: boolean;
53
+ provider: Provider | null;
54
+ signer: Signer | null;
55
+ }
56
+ /**
57
+ * Wallet adapter for abstracting wallet connections
58
+ * Supports MetaMask, WalletConnect, and any ethers.js-compatible wallet
59
+ */
60
+ export declare class WalletAdapter {
61
+ private provider;
62
+ private signer;
63
+ private account;
64
+ private chainId;
65
+ private walletType;
66
+ private config;
67
+ private listeners;
68
+ private eip1193Provider;
69
+ private discoveredProviders;
70
+ /**
71
+ * Create a new WalletAdapter instance
72
+ * @param config Optional configuration
73
+ */
74
+ constructor(config?: WalletAdapterConfig);
75
+ /**
76
+ * Discover wallets via EIP-6963
77
+ */
78
+ private discoverWallets;
79
+ /**
80
+ * Get list of discovered EIP-6963 wallets
81
+ */
82
+ getDiscoveredWallets(): EIP6963ProviderDetail[];
83
+ /**
84
+ * Connect using an EIP-1193 provider (e.g., MetaMask, WalletConnect)
85
+ * @param provider EIP-1193 provider (window.ethereum, WalletConnect provider, etc.)
86
+ * @param walletType Type of wallet being connected
87
+ * @returns Promise resolving to wallet state
88
+ */
89
+ connectWithProvider(provider: Eip1193Provider, walletType?: WalletType): Promise<WalletState>;
90
+ /**
91
+ * Connect using MetaMask (convenience method)
92
+ * @returns Promise resolving to wallet state
93
+ */
94
+ connectMetaMask(): Promise<WalletState>;
95
+ /**
96
+ * Connect using an existing ethers Provider
97
+ * @param provider ethers Provider instance
98
+ * @returns Promise resolving to wallet state
99
+ */
100
+ connectWithProviderInstance(provider: Provider): Promise<WalletState>;
101
+ /**
102
+ * Connect using an existing Signer
103
+ * @param signer ethers Signer instance
104
+ * @returns Promise resolving to wallet state
105
+ */
106
+ connectWithSigner(signer: Signer): Promise<WalletState>;
107
+ /**
108
+ * Connect using RPC URL (read-only provider)
109
+ * @param rpcUrl RPC endpoint URL
110
+ * @returns Promise resolving to wallet state
111
+ */
112
+ connectWithRpc(rpcUrl: string): Promise<WalletState>;
113
+ /**
114
+ * Switch to configured network
115
+ * @returns Promise that resolves when network is switched
116
+ */
117
+ switchNetwork(): Promise<void>;
118
+ /**
119
+ * Disconnect wallet
120
+ */
121
+ disconnect(): void;
122
+ /**
123
+ * Get current wallet state
124
+ * @returns Current wallet state
125
+ */
126
+ getState(): WalletState;
127
+ /**
128
+ * Get current provider
129
+ * @returns Current provider or null
130
+ */
131
+ getProvider(): Provider | null;
132
+ /**
133
+ * Get current signer
134
+ * @returns Current signer or null
135
+ */
136
+ getSigner(): Signer | null;
137
+ /**
138
+ * Get current account address
139
+ * @returns Current account address or null
140
+ */
141
+ getAccount(): string | null;
142
+ /**
143
+ * Get current chain ID
144
+ * @returns Current chain ID or null
145
+ */
146
+ getChainId(): number | null;
147
+ /**
148
+ * Get wallet type
149
+ * @returns Wallet type or null
150
+ */
151
+ getWalletType(): WalletType | null;
152
+ /**
153
+ * Check if wallet is connected
154
+ * @returns True if wallet is connected
155
+ */
156
+ isConnected(): boolean;
157
+ /**
158
+ * Subscribe to wallet state changes
159
+ * @param callback Callback function to receive state updates
160
+ * @returns Unsubscribe function
161
+ */
162
+ onStateChange(callback: (state: WalletState) => void): () => void;
163
+ /**
164
+ * Notify all listeners of state changes
165
+ * @param state New wallet state
166
+ */
167
+ private notifyListeners;
168
+ /**
169
+ * Set up event listeners for EIP-1193 provider
170
+ * @param provider EIP-1193 provider
171
+ */
172
+ private setupEventListeners;
173
+ /**
174
+ * Remove event listeners
175
+ */
176
+ private removeEventListeners;
177
+ }
178
+ /**
179
+ * Check if MetaMask is installed
180
+ * @returns True if MetaMask is available
181
+ */
182
+ export declare function isMetaMaskInstalled(): boolean;
183
+ /**
184
+ * Get MetaMask provider if available
185
+ * @returns MetaMask provider or null
186
+ */
187
+ export declare function getMetaMaskProvider(): Eip1193Provider | null;
188
+ //# sourceMappingURL=WalletAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletAdapter.d.ts","sourceRoot":"","sources":["../../src/core/WalletAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,425 @@
1
+ import { ethers, BrowserProvider } from 'ethers';
2
+ /**
3
+ * Wallet adapter for abstracting wallet connections
4
+ * Supports MetaMask, WalletConnect, and any ethers.js-compatible wallet
5
+ */
6
+ export class WalletAdapter {
7
+ /**
8
+ * Create a new WalletAdapter instance
9
+ * @param config Optional configuration
10
+ */
11
+ constructor(config = {}) {
12
+ this.provider = null;
13
+ this.signer = null;
14
+ this.account = null;
15
+ this.chainId = null;
16
+ this.walletType = null;
17
+ this.listeners = new Set();
18
+ this.eip1193Provider = null;
19
+ this.discoveredProviders = [];
20
+ this.config = {
21
+ chainId: 43113, // Fuji default
22
+ rpcUrl: 'https://api.avax-test.network/ext/bc/C/rpc',
23
+ ...config
24
+ };
25
+ if (typeof globalThis !== 'undefined' && globalThis.window) {
26
+ this.discoverWallets();
27
+ }
28
+ }
29
+ /**
30
+ * Discover wallets via EIP-6963
31
+ */
32
+ discoverWallets() {
33
+ const handler = (event) => {
34
+ const e = event;
35
+ if (!this.discoveredProviders.some(p => p.info.uuid === e.detail.info.uuid)) {
36
+ this.discoveredProviders.push(e.detail);
37
+ this.notifyListeners(this.getState());
38
+ }
39
+ };
40
+ const win = globalThis.window;
41
+ if (win) {
42
+ win.addEventListener("eip6963:announceProvider", handler);
43
+ win.dispatchEvent(new Event("eip6963:requestProvider"));
44
+ }
45
+ }
46
+ /**
47
+ * Get list of discovered EIP-6963 wallets
48
+ */
49
+ getDiscoveredWallets() {
50
+ return this.discoveredProviders;
51
+ }
52
+ /**
53
+ * Connect using an EIP-1193 provider (e.g., MetaMask, WalletConnect)
54
+ * @param provider EIP-1193 provider (window.ethereum, WalletConnect provider, etc.)
55
+ * @param walletType Type of wallet being connected
56
+ * @returns Promise resolving to wallet state
57
+ */
58
+ async connectWithProvider(provider, walletType = 'injected') {
59
+ try {
60
+ this.eip1193Provider = provider;
61
+ this.walletType = walletType;
62
+ // Request account access
63
+ const accounts = await provider.request({
64
+ method: 'eth_requestAccounts',
65
+ });
66
+ if (!accounts || accounts.length === 0) {
67
+ throw new Error('No accounts found. Please unlock your wallet.');
68
+ }
69
+ this.account = accounts[0];
70
+ const browserProvider = new BrowserProvider(provider);
71
+ this.provider = browserProvider;
72
+ this.signer = await browserProvider.getSigner();
73
+ // Get current chain ID
74
+ const network = await this.provider.getNetwork();
75
+ this.chainId = Number(network.chainId);
76
+ // Validate chain ID if configured
77
+ if (this.config.chainId && this.chainId !== this.config.chainId) {
78
+ if (this.config.networkConfig) {
79
+ await this.switchNetwork();
80
+ }
81
+ else {
82
+ console.warn(`Chain ID mismatch: expected ${this.config.chainId}, got ${this.chainId}`);
83
+ }
84
+ }
85
+ // Set up event listeners
86
+ this.setupEventListeners(provider);
87
+ const state = this.getState();
88
+ this.notifyListeners(state);
89
+ return state;
90
+ }
91
+ catch (error) {
92
+ const message = error instanceof Error ? error.message : 'Unknown error';
93
+ throw new Error(`Failed to connect wallet: ${message}`);
94
+ }
95
+ }
96
+ /**
97
+ * Connect using MetaMask (convenience method)
98
+ * @returns Promise resolving to wallet state
99
+ */
100
+ async connectMetaMask() {
101
+ if (typeof globalThis === 'undefined' || typeof globalThis.window === 'undefined') {
102
+ throw new Error('MetaMask is only available in browser environments');
103
+ }
104
+ const window = globalThis.window;
105
+ const ethereum = window.ethereum;
106
+ if (!ethereum) {
107
+ throw new Error('MetaMask is not installed. Please install MetaMask extension to continue.');
108
+ }
109
+ // Check if it's MetaMask specifically
110
+ const isMetaMask = ethereum.isMetaMask === true;
111
+ return this.connectWithProvider(ethereum, isMetaMask ? 'metamask' : 'injected');
112
+ }
113
+ /**
114
+ * Connect using an existing ethers Provider
115
+ * @param provider ethers Provider instance
116
+ * @returns Promise resolving to wallet state
117
+ */
118
+ async connectWithProviderInstance(provider) {
119
+ try {
120
+ this.provider = provider;
121
+ this.walletType = 'custom';
122
+ // Try to get signer if provider is a BrowserProvider
123
+ if (provider instanceof BrowserProvider) {
124
+ try {
125
+ this.signer = await provider.getSigner();
126
+ this.account = await this.signer.getAddress();
127
+ }
128
+ catch (error) {
129
+ // Provider might not have a signer (read-only)
130
+ console.warn('Provider does not have a signer, read-only mode');
131
+ }
132
+ }
133
+ // Get current chain ID
134
+ const network = await provider.getNetwork();
135
+ this.chainId = Number(network.chainId);
136
+ const state = this.getState();
137
+ this.notifyListeners(state);
138
+ return state;
139
+ }
140
+ catch (error) {
141
+ const message = error instanceof Error ? error.message : 'Unknown error';
142
+ throw new Error(`Failed to connect with provider: ${message}`);
143
+ }
144
+ }
145
+ /**
146
+ * Connect using an existing Signer
147
+ * @param signer ethers Signer instance
148
+ * @returns Promise resolving to wallet state
149
+ */
150
+ async connectWithSigner(signer) {
151
+ try {
152
+ this.signer = signer;
153
+ this.walletType = 'custom';
154
+ // Get provider from signer if available
155
+ if (signer.provider) {
156
+ this.provider = signer.provider;
157
+ const network = await signer.provider.getNetwork();
158
+ this.chainId = Number(network.chainId);
159
+ }
160
+ // Get account address
161
+ this.account = await signer.getAddress();
162
+ const state = this.getState();
163
+ this.notifyListeners(state);
164
+ return state;
165
+ }
166
+ catch (error) {
167
+ const message = error instanceof Error ? error.message : 'Unknown error';
168
+ throw new Error(`Failed to connect with signer: ${message}`);
169
+ }
170
+ }
171
+ /**
172
+ * Connect using RPC URL (read-only provider)
173
+ * @param rpcUrl RPC endpoint URL
174
+ * @returns Promise resolving to wallet state
175
+ */
176
+ async connectWithRpc(rpcUrl) {
177
+ try {
178
+ this.provider = new ethers.JsonRpcProvider(rpcUrl);
179
+ this.walletType = 'custom';
180
+ // Get current chain ID
181
+ const network = await this.provider.getNetwork();
182
+ this.chainId = Number(network.chainId);
183
+ // No signer for RPC-only connection (read-only)
184
+ this.signer = null;
185
+ this.account = null;
186
+ const state = this.getState();
187
+ this.notifyListeners(state);
188
+ return state;
189
+ }
190
+ catch (error) {
191
+ const message = error instanceof Error ? error.message : 'Unknown error';
192
+ throw new Error(`Failed to connect with RPC: ${message}`);
193
+ }
194
+ }
195
+ /**
196
+ * Switch to configured network
197
+ * @returns Promise that resolves when network is switched
198
+ */
199
+ async switchNetwork() {
200
+ if (!this.config.networkConfig) {
201
+ throw new Error('Network configuration not provided');
202
+ }
203
+ if (!this.eip1193Provider) {
204
+ throw new Error('Network switching requires an EIP-1193 provider');
205
+ }
206
+ const { chainId, chainName, nativeCurrency, rpcUrls, blockExplorerUrls } = this.config.networkConfig;
207
+ const chainIdHex = `0x${chainId.toString(16)}`;
208
+ try {
209
+ // Try to switch directly
210
+ await this.eip1193Provider.request({
211
+ method: 'wallet_switchEthereumChain',
212
+ params: [{ chainId: chainIdHex }],
213
+ });
214
+ return;
215
+ }
216
+ catch (switchError) {
217
+ // User rejected
218
+ if (switchError.code === 4001) {
219
+ throw new Error('User rejected network switch. Please switch manually in your wallet.');
220
+ }
221
+ // Chain doesn't exist, add it
222
+ if (switchError.code === 4902) {
223
+ try {
224
+ await this.eip1193Provider.request({
225
+ method: 'wallet_addEthereumChain',
226
+ params: [
227
+ {
228
+ chainId: chainIdHex,
229
+ chainName,
230
+ nativeCurrency,
231
+ rpcUrls: Array.isArray(rpcUrls) ? rpcUrls : [rpcUrls],
232
+ blockExplorerUrls: blockExplorerUrls
233
+ ? Array.isArray(blockExplorerUrls)
234
+ ? blockExplorerUrls
235
+ : [blockExplorerUrls]
236
+ : undefined,
237
+ },
238
+ ],
239
+ });
240
+ // Retry switch after adding
241
+ await this.eip1193Provider.request({
242
+ method: 'wallet_switchEthereumChain',
243
+ params: [{ chainId: chainIdHex }],
244
+ });
245
+ return;
246
+ }
247
+ catch (addError) {
248
+ throw new Error(`Failed to add network: ${addError.message}`);
249
+ }
250
+ }
251
+ throw new Error(`Failed to switch network: ${switchError.message}`);
252
+ }
253
+ }
254
+ /**
255
+ * Disconnect wallet
256
+ */
257
+ disconnect() {
258
+ this.removeEventListeners();
259
+ this.provider = null;
260
+ this.signer = null;
261
+ this.account = null;
262
+ this.chainId = null;
263
+ this.walletType = null;
264
+ this.eip1193Provider = null;
265
+ const state = this.getState();
266
+ this.notifyListeners(state);
267
+ }
268
+ /**
269
+ * Get current wallet state
270
+ * @returns Current wallet state
271
+ */
272
+ getState() {
273
+ return {
274
+ account: this.account,
275
+ chainId: this.chainId,
276
+ connected: this.account !== null && this.provider !== null,
277
+ provider: this.provider,
278
+ signer: this.signer,
279
+ };
280
+ }
281
+ /**
282
+ * Get current provider
283
+ * @returns Current provider or null
284
+ */
285
+ getProvider() {
286
+ return this.provider;
287
+ }
288
+ /**
289
+ * Get current signer
290
+ * @returns Current signer or null
291
+ */
292
+ getSigner() {
293
+ return this.signer;
294
+ }
295
+ /**
296
+ * Get current account address
297
+ * @returns Current account address or null
298
+ */
299
+ getAccount() {
300
+ return this.account;
301
+ }
302
+ /**
303
+ * Get current chain ID
304
+ * @returns Current chain ID or null
305
+ */
306
+ getChainId() {
307
+ return this.chainId;
308
+ }
309
+ /**
310
+ * Get wallet type
311
+ * @returns Wallet type or null
312
+ */
313
+ getWalletType() {
314
+ return this.walletType;
315
+ }
316
+ /**
317
+ * Check if wallet is connected
318
+ * @returns True if wallet is connected
319
+ */
320
+ isConnected() {
321
+ return this.account !== null && this.provider !== null;
322
+ }
323
+ /**
324
+ * Subscribe to wallet state changes
325
+ * @param callback Callback function to receive state updates
326
+ * @returns Unsubscribe function
327
+ */
328
+ onStateChange(callback) {
329
+ this.listeners.add(callback);
330
+ return () => {
331
+ this.listeners.delete(callback);
332
+ };
333
+ }
334
+ /**
335
+ * Notify all listeners of state changes
336
+ * @param state New wallet state
337
+ */
338
+ notifyListeners(state) {
339
+ this.listeners.forEach((callback) => {
340
+ try {
341
+ callback(state);
342
+ }
343
+ catch (error) {
344
+ console.error('Error in wallet state listener:', error);
345
+ }
346
+ });
347
+ }
348
+ /**
349
+ * Set up event listeners for EIP-1193 provider
350
+ * @param provider EIP-1193 provider
351
+ */
352
+ setupEventListeners(provider) {
353
+ this.removeEventListeners();
354
+ if (!provider.on) {
355
+ console.warn('Provider does not support event listeners');
356
+ return;
357
+ }
358
+ // Handle account changes
359
+ provider.on('accountsChanged', async (accounts) => {
360
+ if (accounts.length === 0) {
361
+ this.disconnect();
362
+ }
363
+ else {
364
+ this.account = accounts[0];
365
+ if (this.provider instanceof BrowserProvider) {
366
+ this.signer = await this.provider.getSigner();
367
+ }
368
+ const state = this.getState();
369
+ this.notifyListeners(state);
370
+ }
371
+ });
372
+ // Handle chain changes
373
+ provider.on('chainChanged', async (chainId) => {
374
+ this.chainId = parseInt(chainId, 16);
375
+ if (this.provider instanceof BrowserProvider) {
376
+ this.signer = await this.provider.getSigner();
377
+ }
378
+ const state = this.getState();
379
+ this.notifyListeners(state);
380
+ });
381
+ // Handle disconnect
382
+ provider.on('disconnect', () => {
383
+ this.disconnect();
384
+ });
385
+ }
386
+ /**
387
+ * Remove event listeners
388
+ */
389
+ removeEventListeners() {
390
+ if (this.eip1193Provider && 'removeAllListeners' in this.eip1193Provider) {
391
+ try {
392
+ this.eip1193Provider.removeAllListeners('accountsChanged');
393
+ this.eip1193Provider.removeAllListeners('chainChanged');
394
+ this.eip1193Provider.removeAllListeners('disconnect');
395
+ }
396
+ catch (error) {
397
+ // Some providers might not support removeAllListeners
398
+ console.warn('Failed to remove event listeners:', error);
399
+ }
400
+ }
401
+ }
402
+ }
403
+ /**
404
+ * Check if MetaMask is installed
405
+ * @returns True if MetaMask is available
406
+ */
407
+ export function isMetaMaskInstalled() {
408
+ if (typeof globalThis === 'undefined' || typeof globalThis.window === 'undefined')
409
+ return false;
410
+ const window = globalThis.window;
411
+ const ethereum = window.ethereum;
412
+ return ethereum?.isMetaMask === true;
413
+ }
414
+ /**
415
+ * Get MetaMask provider if available
416
+ * @returns MetaMask provider or null
417
+ */
418
+ export function getMetaMaskProvider() {
419
+ if (typeof globalThis === 'undefined' || typeof globalThis.window === 'undefined')
420
+ return null;
421
+ const window = globalThis.window;
422
+ const ethereum = window.ethereum;
423
+ return ethereum?.isMetaMask ? ethereum : null;
424
+ }
425
+ //# sourceMappingURL=WalletAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WalletAdapter.js","sourceRoot":"","sources":["../../src/core/WalletAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * React hooks for NOAH SDK
3
+ *
4
+ * These hooks provide React integration for the NOAH SDK, making it easy
5
+ * to use NOAH functionality in React applications.
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * import { useProtocol, useUser, useCredentials } from '@noah-protocol/sdk/hooks';
10
+ * ```
11
+ */
12
+ export { useProtocol } from './useProtocol';
13
+ export type { UseProtocolOptions, UseProtocolReturn } from './useProtocol';
14
+ export { useUser } from './useUser';
15
+ export type { UseUserOptions, UseUserReturn, Credential } from './useUser';
16
+ export { useCredentials } from './useCredentials';
17
+ export type { UseCredentialsOptions, UseCredentialsReturn, CredentialInfo, IssuerInfo, } from './useCredentials';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE3E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE3E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,UAAU,GACX,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * React hooks for NOAH SDK
3
+ *
4
+ * These hooks provide React integration for the NOAH SDK, making it easy
5
+ * to use NOAH functionality in React applications.
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * import { useProtocol, useUser, useCredentials } from '@noah-protocol/sdk/hooks';
10
+ * ```
11
+ */
12
+ export { useProtocol } from './useProtocol';
13
+ export { useUser } from './useUser';
14
+ export { useCredentials } from './useCredentials';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}