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.
- package/README.md +892 -0
- package/dist/core/APIClient.d.ts +71 -0
- package/dist/core/APIClient.d.ts.map +1 -0
- package/dist/core/APIClient.js +92 -0
- package/dist/core/APIClient.js.map +1 -0
- package/dist/core/ContractClient.d.ts +38 -0
- package/dist/core/ContractClient.d.ts.map +1 -0
- package/dist/core/ContractClient.js +209 -0
- package/dist/core/ContractClient.js.map +1 -0
- package/dist/core/NoahSDK.d.ts +43 -0
- package/dist/core/NoahSDK.d.ts.map +1 -0
- package/dist/core/NoahSDK.js +93 -0
- package/dist/core/NoahSDK.js.map +1 -0
- package/dist/core/WalletAdapter.d.ts +188 -0
- package/dist/core/WalletAdapter.d.ts.map +1 -0
- package/dist/core/WalletAdapter.js +425 -0
- package/dist/core/WalletAdapter.js.map +1 -0
- package/dist/hooks/index.d.ts +18 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +15 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useCredentials.d.ts +136 -0
- package/dist/hooks/useCredentials.d.ts.map +1 -0
- package/dist/hooks/useCredentials.js +217 -0
- package/dist/hooks/useCredentials.js.map +1 -0
- package/dist/hooks/useProtocol.d.ts +117 -0
- package/dist/hooks/useProtocol.d.ts.map +1 -0
- package/dist/hooks/useProtocol.js +165 -0
- package/dist/hooks/useProtocol.js.map +1 -0
- package/dist/hooks/useUser.d.ts +159 -0
- package/dist/hooks/useUser.d.ts.map +1 -0
- package/dist/hooks/useUser.js +188 -0
- package/dist/hooks/useUser.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/issuer/IssuerClient.d.ts +98 -0
- package/dist/issuer/IssuerClient.d.ts.map +1 -0
- package/dist/issuer/IssuerClient.js +159 -0
- package/dist/issuer/IssuerClient.js.map +1 -0
- package/dist/protocol/ProtocolClient.d.ts +124 -0
- package/dist/protocol/ProtocolClient.d.ts.map +1 -0
- package/dist/protocol/ProtocolClient.js +265 -0
- package/dist/protocol/ProtocolClient.js.map +1 -0
- package/dist/protocol/RequirementsManager.d.ts +9 -0
- package/dist/protocol/RequirementsManager.d.ts.map +1 -0
- package/dist/protocol/RequirementsManager.js +9 -0
- package/dist/protocol/RequirementsManager.js.map +1 -0
- package/dist/user/ProofGenerator.d.ts +49 -0
- package/dist/user/ProofGenerator.d.ts.map +1 -0
- package/dist/user/ProofGenerator.js +80 -0
- package/dist/user/ProofGenerator.js.map +1 -0
- package/dist/user/UserClient.d.ts +191 -0
- package/dist/user/UserClient.d.ts.map +1 -0
- package/dist/user/UserClient.js +338 -0
- package/dist/user/UserClient.js.map +1 -0
- package/dist/utils/credentials.d.ts +47 -0
- package/dist/utils/credentials.d.ts.map +1 -0
- package/dist/utils/credentials.js +99 -0
- package/dist/utils/credentials.js.map +1 -0
- package/dist/utils/identity.d.ts +22 -0
- package/dist/utils/identity.d.ts.map +1 -0
- package/dist/utils/identity.js +35 -0
- package/dist/utils/identity.js.map +1 -0
- package/dist/utils/jurisdiction.d.ts +21 -0
- package/dist/utils/jurisdiction.d.ts.map +1 -0
- package/dist/utils/jurisdiction.js +64 -0
- package/dist/utils/jurisdiction.js.map +1 -0
- package/dist/utils/mrz.d.ts +16 -0
- package/dist/utils/mrz.d.ts.map +1 -0
- package/dist/utils/mrz.js +91 -0
- package/dist/utils/mrz.js.map +1 -0
- package/dist/utils/ocr.d.ts +31 -0
- package/dist/utils/ocr.d.ts.map +1 -0
- package/dist/utils/ocr.js +69 -0
- package/dist/utils/ocr.js.map +1 -0
- package/dist/utils/types.d.ts +122 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/types.js +2 -0
- package/dist/utils/types.js.map +1 -0
- package/package.json +53 -0
- package/src/core/APIClient.ts +165 -0
- package/src/core/ContractClient.ts +266 -0
- package/src/core/NoahSDK.ts +123 -0
- package/src/core/WalletAdapter.ts +546 -0
- package/src/hooks/index.ts +31 -0
- package/src/hooks/types.d.ts +18 -0
- package/src/hooks/useCredentials.ts +359 -0
- package/src/hooks/useProtocol.ts +284 -0
- package/src/hooks/useUser.ts +331 -0
- package/src/index.ts +80 -0
- package/src/issuer/IssuerClient.ts +209 -0
- package/src/protocol/ProtocolClient.ts +330 -0
- package/src/protocol/RequirementsManager.ts +16 -0
- package/src/user/ProofGenerator.ts +113 -0
- package/src/user/UserClient.ts +440 -0
- package/src/utils/credentials.ts +122 -0
- package/src/utils/identity.ts +46 -0
- package/src/utils/jurisdiction.ts +83 -0
- package/src/utils/mrz.ts +113 -0
- package/src/utils/ocr.ts +84 -0
- 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"}
|