@nerochain/mpc-sdk 0.1.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.
Files changed (45) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +91 -0
  3. package/dist/aa.d.mts +185 -0
  4. package/dist/aa.d.ts +185 -0
  5. package/dist/aa.js +520 -0
  6. package/dist/aa.js.map +1 -0
  7. package/dist/aa.mjs +511 -0
  8. package/dist/aa.mjs.map +1 -0
  9. package/dist/chain-manager-C3eHsVt9.d.mts +98 -0
  10. package/dist/chain-manager-C3eHsVt9.d.ts +98 -0
  11. package/dist/chains.d.mts +17 -0
  12. package/dist/chains.d.ts +17 -0
  13. package/dist/chains.js +331 -0
  14. package/dist/chains.js.map +1 -0
  15. package/dist/chains.mjs +315 -0
  16. package/dist/chains.mjs.map +1 -0
  17. package/dist/index.d.mts +656 -0
  18. package/dist/index.d.ts +656 -0
  19. package/dist/index.js +6627 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/index.mjs +6502 -0
  22. package/dist/index.mjs.map +1 -0
  23. package/dist/modal.d.mts +68 -0
  24. package/dist/modal.d.ts +68 -0
  25. package/dist/modal.js +4867 -0
  26. package/dist/modal.js.map +1 -0
  27. package/dist/modal.mjs +4850 -0
  28. package/dist/modal.mjs.map +1 -0
  29. package/dist/nero-sdk-Cm8gzHZJ.d.mts +684 -0
  30. package/dist/nero-sdk-IhuTBrXZ.d.ts +684 -0
  31. package/dist/no-modal.d.mts +56 -0
  32. package/dist/no-modal.d.ts +56 -0
  33. package/dist/no-modal.js +4060 -0
  34. package/dist/no-modal.js.map +1 -0
  35. package/dist/no-modal.mjs +4041 -0
  36. package/dist/no-modal.mjs.map +1 -0
  37. package/dist/react.d.mts +28 -0
  38. package/dist/react.d.ts +28 -0
  39. package/dist/react.js +4033 -0
  40. package/dist/react.js.map +1 -0
  41. package/dist/react.mjs +4016 -0
  42. package/dist/react.mjs.map +1 -0
  43. package/dist/useNeroWallet-PZh940vV.d.ts +164 -0
  44. package/dist/useNeroWallet-awIYqM6e.d.mts +164 -0
  45. package/package.json +126 -0
@@ -0,0 +1,656 @@
1
+ import { K as KeyShare, W as WalletInfo, c as StorageAdapter, P as ProtocolMessage, d as ProtocolMessageType, A as APIClient, D as DKGResult, e as SigningRequest, f as SigningResult, E as EIP1193Provider } from './nero-sdk-Cm8gzHZJ.mjs';
2
+ export { g as AddEthereumChainParameter, h as AuthTokens, C as ConnectionStatus, i as DKGCommitment, j as DKGRound, k as DKGSessionState, l as DKGShare, m as DeviceFingerprint, n as EIP1193_ERROR_CODES, o as EncryptedKeyShare, L as LoginProvider, N as NeroMpcSDK, a as NeroSDKState, O as OAuthProvider, p as PartialSignature, q as ProviderConnectInfo, r as ProviderMessage, s as ProviderRpcError, R as RequestArguments, S as SDKConfig, t as SDKError, b as Signature, u as SigningRound, v as SigningSessionState, w as SmartWallet, x as SmartWalletConfig, T as TransactionParams, y as TransactionRequest, z as TypedDataDomain, B as TypedDataField, F as TypedDataMessage, G as TypedDataTypes, H as UIConfig, U as User, I as UserInfo, J as WatchAssetParams, M as createNeroSDK, Q as createProviderRpcError, V as createSmartWallet } from './nero-sdk-Cm8gzHZJ.mjs';
3
+ export { NeroProvider, NeroProviderConfig, createNeroProvider } from './no-modal.mjs';
4
+ import { secp256k1 } from '@noble/curves/secp256k1';
5
+ export { C as ChainConfig, a as ChainManager, b as ChainNamespace, R as RpcConnection, S as SupportedChainId, T as TransactionReceipt, c as createChainManager } from './chain-manager-C3eHsVt9.mjs';
6
+ export { ARBITRUM_ONE, BASE_MAINNET, BUILTIN_CHAINS, ETHEREUM_MAINNET, ETHEREUM_SEPOLIA, NERO_MAINNET, NERO_TESTNET, POLYGON_MAINNET, getAllChains, getChainConfig, getMainnetChains, getTestnetChains } from './chains.mjs';
7
+ export { BundlerClient, BundlerClientConfig, GasEstimate, PaymasterClient, PaymasterClientConfig, PaymasterContext, PaymasterResult, SimpleAccount, SimpleAccountConfig, SimpleAccountFactoryData, UserOperation, UserOperationHex, UserOperationReceipt, createBundlerClient, createPaymasterClient, createSimpleAccount, userOpFromHex, userOpToHex } from './aa.mjs';
8
+ import React__default from 'react';
9
+ export { bytesToHex, hexToBytes, utf8ToBytes } from '@noble/hashes/utils';
10
+
11
+ interface KeyManagerConfig {
12
+ storagePrefix?: string;
13
+ }
14
+ declare class ClientKeyManager {
15
+ private storage;
16
+ private currentUserId;
17
+ private cachedKeyShare;
18
+ private cachedPartyShares;
19
+ constructor(deviceKey: string, config?: KeyManagerConfig);
20
+ initialize(userId: string): Promise<void>;
21
+ hasKeyShare(): Promise<boolean>;
22
+ getKeyShare(): Promise<KeyShare | null>;
23
+ storeKeyShare(keyShare: KeyShare): Promise<void>;
24
+ getPartyPublicShares(): Promise<Map<number, string> | null>;
25
+ storePartyPublicShares(shares: Map<number, string>): Promise<void>;
26
+ deleteKeyShare(): Promise<void>;
27
+ rotateKeyShare(newKeyShare: KeyShare): Promise<void>;
28
+ exportBackup(password: string): Promise<string>;
29
+ importBackup(backupString: string, password: string): Promise<KeyShare>;
30
+ getWalletInfo(publicKey: string, chainId: number): WalletInfo;
31
+ private deriveEOAAddress;
32
+ clear(): Promise<void>;
33
+ }
34
+ declare function generateDeviceKey(): string;
35
+ declare function deriveDeviceKey(userAgent: string, userId: string, additionalEntropy?: string): string;
36
+
37
+ declare class IndexedDBStorage implements StorageAdapter {
38
+ private prefix;
39
+ constructor(prefix?: string);
40
+ private prefixKey;
41
+ get(key: string): Promise<string | null>;
42
+ set(key: string, value: string): Promise<void>;
43
+ delete(key: string): Promise<void>;
44
+ clear(): Promise<void>;
45
+ }
46
+ declare class MemoryStorage implements StorageAdapter {
47
+ private store;
48
+ private prefix;
49
+ constructor(prefix?: string);
50
+ private prefixKey;
51
+ get(key: string): Promise<string | null>;
52
+ set(key: string, value: string): Promise<void>;
53
+ delete(key: string): Promise<void>;
54
+ clear(): Promise<void>;
55
+ }
56
+ declare class SecureKeyStorage {
57
+ private storage;
58
+ private deviceKey;
59
+ constructor(storage: StorageAdapter, deviceKey: string);
60
+ private getStorageKey;
61
+ private getPartySharesKey;
62
+ storeKeyShare(userId: string, keyShare: KeyShare): Promise<void>;
63
+ getKeyShare(userId: string): Promise<KeyShare | null>;
64
+ hasKeyShare(userId: string): Promise<boolean>;
65
+ deleteKeyShare(userId: string): Promise<void>;
66
+ storePartyPublicShares(userId: string, shares: Map<number, string>): Promise<void>;
67
+ getPartyPublicShares(userId: string): Promise<Map<number, string> | null>;
68
+ deletePartyPublicShares(userId: string): Promise<void>;
69
+ clearAll(): Promise<void>;
70
+ }
71
+ declare function createSecureStorage(deviceKey: string, prefix?: string): SecureKeyStorage;
72
+
73
+ declare function deriveKeyFromPassword(password: string, salt: Uint8Array): Promise<CryptoKey>;
74
+ declare function deriveKeyFromDeviceInfo(deviceId: string, userId: string): Promise<CryptoKey>;
75
+ interface EncryptionResult {
76
+ ciphertext: string;
77
+ iv: string;
78
+ salt: string;
79
+ }
80
+ declare function encryptWithPassword(plaintext: string, password: string): Promise<EncryptionResult>;
81
+ declare function decryptWithPassword(encrypted: EncryptionResult, password: string): Promise<string>;
82
+ declare function encryptWithKey(plaintext: string, key: CryptoKey): Promise<{
83
+ ciphertext: string;
84
+ iv: string;
85
+ }>;
86
+ declare function decryptWithKey(ciphertext: string, iv: string, key: CryptoKey): Promise<string>;
87
+ declare function generateRandomBytes(length: number): Uint8Array;
88
+ declare function generateRandomHex(length: number): string;
89
+ declare function hashSha256(data: string | Uint8Array): string;
90
+ declare function computeCommitment(value: string, blinding: string): string;
91
+
92
+ type MessageHandler = (message: ProtocolMessage) => void;
93
+ type ConnectionHandler = () => void;
94
+ type ErrorHandler = (error: Error) => void;
95
+ declare class WebSocketClient {
96
+ private ws;
97
+ private url;
98
+ private accessToken;
99
+ private messageHandlers;
100
+ private globalHandlers;
101
+ private onConnectHandlers;
102
+ private onDisconnectHandlers;
103
+ private onErrorHandlers;
104
+ private reconnectAttempt;
105
+ private reconnectTimeout;
106
+ private pingInterval;
107
+ private messageQueue;
108
+ private isConnecting;
109
+ constructor(url: string);
110
+ setAccessToken(token: string): void;
111
+ connect(): Promise<void>;
112
+ disconnect(): void;
113
+ isConnected(): boolean;
114
+ send(message: ProtocolMessage): void;
115
+ on(type: ProtocolMessageType, handler: MessageHandler): () => void;
116
+ onAny(handler: MessageHandler): () => void;
117
+ onConnect(handler: ConnectionHandler): () => void;
118
+ onDisconnect(handler: ConnectionHandler): () => void;
119
+ onError(handler: ErrorHandler): () => void;
120
+ waitForMessage(type: ProtocolMessageType, sessionId: string, timeout?: number): Promise<ProtocolMessage>;
121
+ private handleMessage;
122
+ private queueMessage;
123
+ private flushMessageQueue;
124
+ private scheduleReconnect;
125
+ private stopReconnect;
126
+ private startPingInterval;
127
+ private stopPingInterval;
128
+ }
129
+
130
+ interface DKGClientConfig {
131
+ apiClient: APIClient;
132
+ wsClient?: WebSocketClient;
133
+ timeout?: number;
134
+ }
135
+ declare class DKGClient {
136
+ private apiClient;
137
+ private wsClient?;
138
+ private timeout;
139
+ private state;
140
+ private polynomial;
141
+ private ephemeralKeyPair;
142
+ private receivedCommitments;
143
+ private receivedShares;
144
+ constructor(config: DKGClientConfig);
145
+ execute(): Promise<DKGResult>;
146
+ private initializeSession;
147
+ private runCommitmentPhase;
148
+ private runShareExchangePhase;
149
+ private runVerificationPhase;
150
+ private completeProtocol;
151
+ getKeyShare(): KeyShare | null;
152
+ getPartyPublicShares(): Map<number, string>;
153
+ private waitForCommitments;
154
+ private waitForShares;
155
+ private deriveWalletAddress;
156
+ private computeShareCommitment;
157
+ private delay;
158
+ cleanup(): void;
159
+ }
160
+
161
+ declare const CURVE_ORDER: bigint;
162
+ declare function generatePolynomial(degree: number): bigint[];
163
+ declare function evaluatePolynomial(coefficients: bigint[], x: bigint): bigint;
164
+ declare function computeCommitments(coefficients: bigint[]): string[];
165
+ declare function verifyShareAgainstCommitments(share: bigint, partyIndex: bigint, commitments: string[]): boolean;
166
+ declare function combinePublicKeys(commitments: string[][]): string;
167
+ declare function computeLagrangeCoefficient(partyIndex: bigint, participatingIndices: bigint[]): bigint;
168
+ declare function aggregateShares(receivedShares: Map<number, bigint>, ownShare: bigint): bigint;
169
+ declare function scalarToHex(scalar: bigint): string;
170
+ declare function hexToScalar(hex: string): bigint;
171
+
172
+ interface PedersenCommitment {
173
+ commitment: string;
174
+ value: bigint;
175
+ blinding: bigint;
176
+ }
177
+ declare function createPedersenCommitment(value: bigint): PedersenCommitment;
178
+ declare function verifyPedersenCommitment(commitment: string, value: bigint, blinding: bigint): boolean;
179
+ interface VSSSCommitment {
180
+ partyId: number;
181
+ coefficientCommitments: string[];
182
+ proofOfKnowledge: string;
183
+ }
184
+ declare function createVSSSCommitments(partyId: number, coefficients: bigint[]): VSSSCommitment;
185
+ declare function verifyVSSSCommitment(commitment: VSSSCommitment, share: bigint, receiverPartyId: number): boolean;
186
+ declare function verifyProofOfKnowledge(proof: string, partyId: number, publicCommitment: string): boolean;
187
+ declare function combineVSSSCommitments(commitments: VSSSCommitment[]): string;
188
+
189
+ interface EncryptedShare {
190
+ fromPartyId: number;
191
+ toPartyId: number;
192
+ ephemeralPublicKey: string;
193
+ ciphertext: string;
194
+ nonce: string;
195
+ tag: string;
196
+ }
197
+ interface DecryptedShare {
198
+ fromPartyId: number;
199
+ share: bigint;
200
+ }
201
+ declare function encryptShare(share: bigint, fromPartyId: number, toPartyId: number, recipientPublicKey: string): Promise<EncryptedShare>;
202
+ declare function decryptShare(encryptedShare: EncryptedShare, recipientPrivateKey: bigint): Promise<DecryptedShare>;
203
+ declare function generateEphemeralKeyPair(): {
204
+ privateKey: bigint;
205
+ publicKey: string;
206
+ };
207
+ declare function serializeEncryptedShare(share: EncryptedShare): string;
208
+ declare function deserializeEncryptedShare(data: string): EncryptedShare;
209
+
210
+ interface SigningClientConfig {
211
+ apiClient: APIClient;
212
+ wsClient?: WebSocketClient;
213
+ keyShare: KeyShare;
214
+ partyPublicShares: Map<number, string>;
215
+ timeout?: number;
216
+ }
217
+ declare class SigningClient {
218
+ private apiClient;
219
+ private wsClient?;
220
+ private keyShare;
221
+ private timeout;
222
+ private state;
223
+ private nonceShare;
224
+ private receivedCommitments;
225
+ private expectedPublicShares;
226
+ private r;
227
+ constructor(config: SigningClientConfig);
228
+ sign(request: SigningRequest): Promise<SigningResult>;
229
+ private initializeSession;
230
+ private runNonceCommitmentPhase;
231
+ private runPartialSignaturePhase;
232
+ private waitForPartialSignatures;
233
+ private verifyOtherPartials;
234
+ private completeProtocol;
235
+ private waitForNonceCommitments;
236
+ private waitForSigningResult;
237
+ private delay;
238
+ private cleanup;
239
+ }
240
+ declare function createSigningClient(apiClient: APIClient, keyShare: KeyShare, partyPublicShares: Map<number, string>, wsClient?: WebSocketClient): SigningClient;
241
+
242
+ interface NonceShare {
243
+ k: bigint;
244
+ gamma: bigint;
245
+ }
246
+ interface NonceCommitment {
247
+ partyId: number;
248
+ D: string;
249
+ E: string;
250
+ proof: string;
251
+ }
252
+ interface NonceDecommitment {
253
+ partyId: number;
254
+ k: bigint;
255
+ gamma: bigint;
256
+ }
257
+ declare function generateNonceShare(): NonceShare;
258
+ declare function createNonceCommitment(partyId: number, nonce: NonceShare): NonceCommitment;
259
+ declare function verifyNonceCommitment(commitment: NonceCommitment): boolean;
260
+ declare function combineNonceCommitments(commitments: NonceCommitment[]): {
261
+ R: string;
262
+ combinedGamma: string;
263
+ };
264
+ declare function computeR(combinedE: string): {
265
+ r: bigint;
266
+ R: string;
267
+ rPoint: {
268
+ x: bigint;
269
+ y: bigint;
270
+ };
271
+ };
272
+
273
+ interface PartialSignatureData {
274
+ partyId: number;
275
+ sigma: bigint;
276
+ publicShare: string;
277
+ nonceCommitment: string;
278
+ }
279
+ declare function computePartialSignature(partyId: number, keyShare: bigint, nonceK: bigint, _nonceGamma: bigint, messageHash: bigint, r: bigint, participatingParties: number[]): PartialSignatureData;
280
+ declare function combinePartialSignatures(partials: PartialSignatureData[], r: bigint, combinedRPoint: {
281
+ x: bigint;
282
+ y: bigint;
283
+ }): {
284
+ r: bigint;
285
+ s: bigint;
286
+ v: number;
287
+ };
288
+ declare function verifyPartialSignature(partial: PartialSignatureData, expectedPublicShare: string, expectedNonceCommitment: string, r: bigint, messageHash: bigint, participatingParties: number[]): boolean;
289
+ declare function formatSignature(r: bigint, s: bigint, v: number): string;
290
+ declare function parseMessageHash(hash: string): bigint;
291
+
292
+ /**
293
+ * DKLS SDK Types
294
+ *
295
+ * Type definitions for DKLS threshold ECDSA protocol.
296
+ * Multiplicative secret sharing: sk = sk_A × sk_B (mod q)
297
+ */
298
+ interface DKLSKeyShare {
299
+ partyId: number;
300
+ secretShare: string;
301
+ publicShare: string;
302
+ jointPublicKey: string;
303
+ }
304
+ interface DKLSSchnorrProof {
305
+ commitment: string;
306
+ challenge: string;
307
+ response: string;
308
+ }
309
+ interface DKLSKeygenCommitment {
310
+ partyId: number;
311
+ commitment: string;
312
+ }
313
+ interface DKLSKeygenPublicShare {
314
+ partyId: number;
315
+ publicShare: string;
316
+ proof: DKLSSchnorrProof;
317
+ }
318
+ interface DKLSNonceCommitment {
319
+ partyId: number;
320
+ R: string;
321
+ commitment: string;
322
+ }
323
+ interface DKLSSigningResult {
324
+ signature: string;
325
+ r: string;
326
+ s: string;
327
+ v: number;
328
+ messageHash: string;
329
+ walletAddress?: string | null;
330
+ }
331
+ interface DKLSKeygenSessionState {
332
+ sessionId: string;
333
+ status: "initialized" | "commitment_sent" | "commitment_received" | "complete";
334
+ backendCommitment?: DKLSKeygenCommitment;
335
+ backendPublicShare?: DKLSKeygenPublicShare;
336
+ clientKeyShare?: DKLSKeyShare;
337
+ }
338
+ interface DKLSSigningSessionState {
339
+ sessionId: string;
340
+ status: "initialized" | "nonce_committed" | "nonce_exchanged" | "mta_round1_complete" | "mta_round2_complete" | "partial_computed" | "completed" | "failed";
341
+ messageHash: string;
342
+ messageType: "message" | "transaction" | "typed_data";
343
+ backendNonceCommitment?: DKLSNonceCommitment;
344
+ r?: string;
345
+ rValue?: string;
346
+ result?: DKLSSigningResult;
347
+ error?: string;
348
+ }
349
+ interface DKLSSignRequest {
350
+ messageHash: string;
351
+ messageType?: "message" | "transaction" | "typed_data";
352
+ dkgSessionId: string;
353
+ }
354
+
355
+ /**
356
+ * DKLS Client
357
+ *
358
+ * SDK client for DKLS threshold ECDSA key generation and signing.
359
+ * Communicates with the V2 DKLS API endpoints.
360
+ */
361
+
362
+ interface DKLSClientConfig {
363
+ apiClient: APIClient;
364
+ storage: StorageAdapter;
365
+ }
366
+ declare class DKLSClient {
367
+ private apiClient;
368
+ private storage;
369
+ private keygenState;
370
+ private signingState;
371
+ private mtaState;
372
+ private keyShare;
373
+ private dkgSessionId;
374
+ constructor(config: DKLSClientConfig);
375
+ loadKeyShare(): Promise<DKLSKeyShare | null>;
376
+ private saveKeyShare;
377
+ hasKeyShare(): Promise<boolean>;
378
+ getWalletAddress(): Promise<string | null>;
379
+ executeKeygen(): Promise<{
380
+ walletAddress: string;
381
+ jointPublicKey: string;
382
+ }>;
383
+ sign(request: DKLSSignRequest): Promise<DKLSSigningResult>;
384
+ signMessage(message: string): Promise<DKLSSigningResult>;
385
+ signTypedData(domain: Record<string, unknown>, types: Record<string, Array<{
386
+ name: string;
387
+ type: string;
388
+ }>>, value: Record<string, unknown>): Promise<DKLSSigningResult>;
389
+ clearKeyShare(): Promise<void>;
390
+ }
391
+ declare function createDKLSClient(apiClient: APIClient, storage: StorageAdapter): DKLSClient;
392
+
393
+ type Point = ReturnType<typeof secp256k1.ProjectivePoint.fromHex>;
394
+ interface DKLSKeygenClientState {
395
+ partyId: number;
396
+ secretShare: bigint;
397
+ publicShare: Point;
398
+ commitment: Uint8Array;
399
+ peerCommitment: Uint8Array | null;
400
+ peerPublicShare: Point | null;
401
+ jointPublicKey: Point | null;
402
+ }
403
+ declare function keygenInitClient(): {
404
+ state: DKLSKeygenClientState;
405
+ commitment: DKLSKeygenCommitment;
406
+ };
407
+ declare function keygenProcessBackendCommitment(state: DKLSKeygenClientState, backendCommitment: DKLSKeygenCommitment): DKLSKeygenClientState;
408
+ declare function generateSchnorrProof(secretKey: bigint, publicKey: Point): DKLSSchnorrProof;
409
+ declare function keygenGenerateReveal(state: DKLSKeygenClientState): DKLSKeygenPublicShare;
410
+ declare function keygenComplete(state: DKLSKeygenClientState, backendPublicShare: DKLSKeygenPublicShare): DKLSKeyShare;
411
+ interface DKLSSigningClientState {
412
+ partyId: number;
413
+ keyShare: DKLSKeyShare;
414
+ messageHash: bigint;
415
+ messageHashBytes: Uint8Array;
416
+ nonceShare: bigint;
417
+ noncePublic: Point;
418
+ nonceCommitment: Uint8Array;
419
+ peerNonceCommitment: Uint8Array | null;
420
+ peerNoncePublic: Point | null;
421
+ combinedNonce: Point | null;
422
+ rValue: bigint | null;
423
+ }
424
+ declare function signingInit(keyShare: DKLSKeyShare, messageHash: string): {
425
+ state: DKLSSigningClientState;
426
+ nonceCommitment: DKLSNonceCommitment;
427
+ };
428
+ declare function signingProcessBackendNonce(state: DKLSSigningClientState, backendNonceReveal: {
429
+ partyId: number;
430
+ R: string;
431
+ }): DKLSSigningClientState;
432
+ declare function serializeKeyShare(keyShare: DKLSKeyShare): DKLSKeyShare;
433
+ declare function deriveEthereumAddress(jointPublicKeyHex: string): string;
434
+
435
+ declare function deriveEOAAddress(publicKey: string): string;
436
+ /**
437
+ * @deprecated This function produces incorrect addresses.
438
+ * Use SmartWallet.getSmartWalletAddress() or SimpleAccount.getAccountAddress()
439
+ * which call the factory's getAddress() method via RPC.
440
+ */
441
+ declare function deriveSmartWalletAddress(_factoryAddress: string, _ownerAddress: string, _salt?: bigint): string;
442
+ declare function computeCreate2Address(factoryAddress: string, salt: string, initCodeHash: string): string;
443
+ declare function checksumAddress(address: string): string;
444
+ declare function isValidAddress(address: string): boolean;
445
+
446
+ interface WalletServicesConfig {
447
+ chainId: number;
448
+ walletAddress: string;
449
+ explorerUrl?: string;
450
+ fundingProviders?: FundingProvider[];
451
+ }
452
+ interface FundingProvider {
453
+ id: string;
454
+ name: string;
455
+ logoUrl?: string;
456
+ url: string;
457
+ supportedChains: number[];
458
+ }
459
+ interface FundingOptions {
460
+ amount?: string;
461
+ token?: string;
462
+ provider?: string;
463
+ }
464
+ interface TransactionHistoryItem {
465
+ hash: string;
466
+ from: string;
467
+ to: string;
468
+ value: string;
469
+ timestamp: number;
470
+ status: "pending" | "confirmed" | "failed";
471
+ type: "send" | "receive" | "contract";
472
+ }
473
+ interface TokenBalance {
474
+ address: string;
475
+ symbol: string;
476
+ name: string;
477
+ decimals: number;
478
+ balance: string;
479
+ logoUrl?: string;
480
+ valueUsd?: string;
481
+ }
482
+
483
+ interface WalletServicesPlugin {
484
+ showWalletUi(): Promise<void>;
485
+ showFunding(options?: FundingOptions): Promise<void>;
486
+ showReceive(): Promise<void>;
487
+ getTokenBalances(): Promise<TokenBalance[]>;
488
+ getTransactionHistory(): Promise<TransactionHistoryItem[]>;
489
+ }
490
+ type ModalType = "wallet" | "funding" | "receive" | null;
491
+ type ModalListener = (modal: ModalType, options?: FundingOptions) => void;
492
+ declare class WalletServicesPluginImpl implements WalletServicesPlugin {
493
+ private config;
494
+ private listeners;
495
+ constructor(config: WalletServicesConfig);
496
+ showWalletUi(): Promise<void>;
497
+ showFunding(options?: FundingOptions): Promise<void>;
498
+ showReceive(): Promise<void>;
499
+ getTokenBalances(): Promise<TokenBalance[]>;
500
+ getTransactionHistory(): Promise<TransactionHistoryItem[]>;
501
+ onModalOpen(listener: ModalListener): () => void;
502
+ private notifyListeners;
503
+ getConfig(): WalletServicesConfig;
504
+ updateConfig(config: Partial<WalletServicesConfig>): void;
505
+ }
506
+ declare function createWalletServicesPlugin(config: WalletServicesConfig): WalletServicesPluginImpl;
507
+
508
+ interface WalletUIProps {
509
+ isOpen: boolean;
510
+ onClose: () => void;
511
+ walletInfo: WalletInfo | null;
512
+ tokens?: TokenBalance[];
513
+ transactions?: TransactionHistoryItem[];
514
+ onSend?: () => void;
515
+ onReceive?: () => void;
516
+ onFunding?: () => void;
517
+ onSwap?: () => void;
518
+ }
519
+ declare function WalletUI({ isOpen, onClose, walletInfo, tokens, transactions, onSend, onReceive, onFunding, onSwap, }: WalletUIProps): React__default.ReactElement;
520
+
521
+ interface ReceiveModalProps {
522
+ isOpen: boolean;
523
+ onClose: () => void;
524
+ address: string;
525
+ chainName?: string;
526
+ }
527
+ declare function ReceiveModal({ isOpen, onClose, address, chainName, }: ReceiveModalProps): React__default.ReactElement;
528
+
529
+ interface FundingModalProps {
530
+ isOpen: boolean;
531
+ onClose: () => void;
532
+ address: string;
533
+ chainId: number;
534
+ providers?: FundingProvider[];
535
+ onSelectProvider?: (provider: FundingProvider) => void;
536
+ }
537
+ declare function FundingModal({ isOpen, onClose, address, chainId, providers, onSelectProvider, }: FundingModalProps): React__default.ReactElement;
538
+
539
+ type AdapterStatus = "disconnected" | "connecting" | "connected" | "errored";
540
+ interface AdapterConfig {
541
+ chainId?: number;
542
+ autoConnect?: boolean;
543
+ }
544
+ interface WalletAdapterEvents {
545
+ connect: (info: {
546
+ chainId: number;
547
+ accounts: string[];
548
+ }) => void;
549
+ disconnect: (error?: Error) => void;
550
+ accountsChanged: (accounts: string[]) => void;
551
+ chainChanged: (chainId: number) => void;
552
+ error: (error: Error) => void;
553
+ }
554
+ declare abstract class BaseWalletAdapter {
555
+ abstract readonly name: string;
556
+ abstract readonly icon: string;
557
+ abstract readonly url: string;
558
+ protected _status: AdapterStatus;
559
+ protected _accounts: string[];
560
+ protected _chainId: number | null;
561
+ protected _provider: EIP1193Provider | null;
562
+ private listeners;
563
+ get status(): AdapterStatus;
564
+ get connected(): boolean;
565
+ get accounts(): string[];
566
+ get chainId(): number | null;
567
+ get provider(): EIP1193Provider | null;
568
+ abstract connect(config?: AdapterConfig): Promise<string[]>;
569
+ abstract disconnect(): Promise<void>;
570
+ abstract switchChain(chainId: number): Promise<void>;
571
+ on<K extends keyof WalletAdapterEvents>(event: K, listener: WalletAdapterEvents[K]): this;
572
+ off<K extends keyof WalletAdapterEvents>(event: K, listener: WalletAdapterEvents[K]): this;
573
+ protected emit<K extends keyof WalletAdapterEvents>(event: K, ...args: Parameters<WalletAdapterEvents[K]>): void;
574
+ protected setStatus(status: AdapterStatus): void;
575
+ protected setAccounts(accounts: string[]): void;
576
+ protected setChainId(chainId: number): void;
577
+ protected handleConnect(chainId: number, accounts: string[]): void;
578
+ protected handleDisconnect(error?: Error): void;
579
+ protected handleError(error: Error): void;
580
+ }
581
+ type WalletAdapterConstructor = new (config?: AdapterConfig) => BaseWalletAdapter;
582
+
583
+ interface WalletConnectConfig extends AdapterConfig {
584
+ projectId: string;
585
+ chains?: number[];
586
+ showQrModal?: boolean;
587
+ qrModalOptions?: {
588
+ themeMode?: "light" | "dark";
589
+ themeVariables?: Record<string, string>;
590
+ };
591
+ }
592
+ declare class WalletConnectAdapter extends BaseWalletAdapter {
593
+ readonly name = "WalletConnect";
594
+ readonly icon = "https://walletconnect.com/walletconnect-logo.png";
595
+ readonly url = "https://walletconnect.com";
596
+ private ethereumProvider;
597
+ connect(config?: WalletConnectConfig): Promise<string[]>;
598
+ disconnect(): Promise<void>;
599
+ switchChain(chainId: number): Promise<void>;
600
+ private loadEthereumProvider;
601
+ private setupEventListeners;
602
+ }
603
+ declare function createWalletConnectAdapter(): WalletConnectAdapter;
604
+
605
+ interface MetaMaskConfig extends AdapterConfig {
606
+ infuraApiKey?: string;
607
+ dappMetadata?: {
608
+ name: string;
609
+ url?: string;
610
+ iconUrl?: string;
611
+ };
612
+ }
613
+ declare global {
614
+ interface Window {
615
+ ethereum?: EIP1193Provider & {
616
+ isMetaMask?: boolean;
617
+ providers?: Array<EIP1193Provider & {
618
+ isMetaMask?: boolean;
619
+ }>;
620
+ };
621
+ }
622
+ }
623
+ declare class MetaMaskAdapter extends BaseWalletAdapter {
624
+ readonly name = "MetaMask";
625
+ readonly icon = "https://metamask.io/images/metamask-fox.svg";
626
+ readonly url = "https://metamask.io";
627
+ private config;
628
+ connect(config?: MetaMaskConfig): Promise<string[]>;
629
+ disconnect(): Promise<void>;
630
+ switchChain(chainId: number): Promise<void>;
631
+ isInstalled(): boolean;
632
+ private getMetaMaskProvider;
633
+ private checkMetaMaskSDK;
634
+ private setupEventListeners;
635
+ }
636
+ declare function createMetaMaskAdapter(): MetaMaskAdapter;
637
+
638
+ interface CoinbaseConfig extends AdapterConfig {
639
+ appName: string;
640
+ appLogoUrl?: string;
641
+ darkMode?: boolean;
642
+ }
643
+ declare class CoinbaseAdapter extends BaseWalletAdapter {
644
+ readonly name = "Coinbase Wallet";
645
+ readonly icon = "https://www.coinbase.com/img/favicon/favicon-256.png";
646
+ readonly url = "https://www.coinbase.com/wallet";
647
+ private coinbaseWallet;
648
+ connect(config?: CoinbaseConfig): Promise<string[]>;
649
+ disconnect(): Promise<void>;
650
+ switchChain(chainId: number): Promise<void>;
651
+ private loadCoinbaseSDK;
652
+ private setupEventListeners;
653
+ }
654
+ declare function createCoinbaseAdapter(): CoinbaseAdapter;
655
+
656
+ export { APIClient, type AdapterConfig, type AdapterStatus, BaseWalletAdapter, CURVE_ORDER, ClientKeyManager, CoinbaseAdapter, type CoinbaseConfig, DKGClient, type DKGClientConfig, DKGResult, DKLSClient, type DKLSClientConfig, type DKLSKeyShare, type DKLSKeygenClientState, type DKLSKeygenCommitment, type DKLSKeygenPublicShare, type DKLSKeygenSessionState, type DKLSNonceCommitment, type DKLSSchnorrProof, type DKLSSignRequest, type DKLSSigningClientState, type DKLSSigningResult, type DKLSSigningSessionState, type DecryptedShare, EIP1193Provider, type EncryptedShare, type EncryptionResult, FundingModal, type FundingModalProps, type FundingOptions, type FundingProvider, IndexedDBStorage, type KeyManagerConfig, KeyShare, MemoryStorage, MetaMaskAdapter, type MetaMaskConfig, type NonceCommitment, type NonceDecommitment, type NonceShare, type PartialSignatureData, type PedersenCommitment, ProtocolMessage, ProtocolMessageType, ReceiveModal, type ReceiveModalProps, SecureKeyStorage, SigningClient, type SigningClientConfig, SigningRequest, SigningResult, StorageAdapter, type TokenBalance, type TransactionHistoryItem, type VSSSCommitment, type WalletAdapterConstructor, type WalletAdapterEvents, WalletConnectAdapter, type WalletConnectConfig, WalletInfo, type WalletServicesConfig, type WalletServicesPlugin, WalletServicesPluginImpl, WalletUI, type WalletUIProps, WebSocketClient, aggregateShares, checksumAddress, combineNonceCommitments, combinePartialSignatures, combinePublicKeys, combineVSSSCommitments, computeCommitment, computeCommitments, computeCreate2Address, computeLagrangeCoefficient, computePartialSignature, computeR, createCoinbaseAdapter, createDKLSClient, createMetaMaskAdapter, createNonceCommitment, createPedersenCommitment, createSecureStorage, createSigningClient, createVSSSCommitments, createWalletConnectAdapter, createWalletServicesPlugin, decryptShare, decryptWithKey, decryptWithPassword, deriveDeviceKey, deriveEOAAddress, deriveEthereumAddress, deriveKeyFromDeviceInfo, deriveKeyFromPassword, deriveSmartWalletAddress, deserializeEncryptedShare, encryptShare, encryptWithKey, encryptWithPassword, evaluatePolynomial, formatSignature, generateDeviceKey, generateEphemeralKeyPair, generateNonceShare, generatePolynomial, generateRandomBytes, generateRandomHex, generateSchnorrProof, hashSha256, hexToScalar, isValidAddress, keygenComplete, keygenGenerateReveal, keygenInitClient, keygenProcessBackendCommitment, parseMessageHash, scalarToHex, serializeEncryptedShare, serializeKeyShare, signingInit, signingProcessBackendNonce, verifyNonceCommitment, verifyPartialSignature, verifyPedersenCommitment, verifyProofOfKnowledge, verifyShareAgainstCommitments, verifyVSSSCommitment };