@dynamic-labs-wallet/browser 0.0.251 → 0.0.253
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/index.cjs.js +138 -42
- package/index.esm.js +138 -42
- package/package.json +2 -2
- package/src/client.d.ts +43 -3
- package/src/client.d.ts.map +1 -1
package/index.cjs.js
CHANGED
|
@@ -1732,27 +1732,60 @@ class DynamicWalletClient {
|
|
|
1732
1732
|
});
|
|
1733
1733
|
return data;
|
|
1734
1734
|
}
|
|
1735
|
+
prepareMessageForForwardMPC({ chainName, message, formattedMessage, signingAlgo, isFormatted }) {
|
|
1736
|
+
if (chainName === 'SVM' || chainName === 'TON') {
|
|
1737
|
+
return formattedMessage;
|
|
1738
|
+
}
|
|
1739
|
+
if (signingAlgo === 'BIP340' && formattedMessage instanceof web.MessageHash) {
|
|
1740
|
+
return formattedMessage.toHex();
|
|
1741
|
+
}
|
|
1742
|
+
return core.serializeMessageForForwardMPC({
|
|
1743
|
+
message,
|
|
1744
|
+
isFormatted,
|
|
1745
|
+
chainName
|
|
1746
|
+
});
|
|
1747
|
+
}
|
|
1748
|
+
convertTweakForBIP340(tweak) {
|
|
1749
|
+
if (!tweak) {
|
|
1750
|
+
return undefined;
|
|
1751
|
+
}
|
|
1752
|
+
if (typeof tweak === 'string') {
|
|
1753
|
+
const hexString = tweak.startsWith('0x') ? tweak.slice(2) : tweak;
|
|
1754
|
+
return new Uint8Array(Buffer.from(hexString, 'hex'));
|
|
1755
|
+
}
|
|
1756
|
+
return tweak;
|
|
1757
|
+
}
|
|
1758
|
+
processForwardMPCSignature(signatureBytes, signingAlgo) {
|
|
1759
|
+
if (signingAlgo === 'ECDSA') {
|
|
1760
|
+
return web.EcdsaSignature.fromBuffer(signatureBytes);
|
|
1761
|
+
}
|
|
1762
|
+
return signatureBytes;
|
|
1763
|
+
}
|
|
1735
1764
|
async forwardMPCClientSign({ chainName, message, roomId, keyShare, derivationPath, formattedMessage, dynamicRequestId, isFormatted, traceContext, bitcoinConfig }) {
|
|
1736
1765
|
try {
|
|
1737
1766
|
if (!this.apiClient.forwardMPCClient.connected) {
|
|
1738
1767
|
await this.initializeForwardMPCClient();
|
|
1739
1768
|
}
|
|
1740
|
-
const messageForForwardMPC = core.serializeMessageForForwardMPC({
|
|
1741
|
-
message,
|
|
1742
|
-
isFormatted,
|
|
1743
|
-
chainName
|
|
1744
|
-
});
|
|
1745
1769
|
const chainConfig = core.getMPCChainConfig(chainName, bitcoinConfig);
|
|
1746
1770
|
const signingAlgo = chainConfig.signingAlgorithm;
|
|
1771
|
+
const messageToSign = this.prepareMessageForForwardMPC({
|
|
1772
|
+
chainName,
|
|
1773
|
+
message,
|
|
1774
|
+
formattedMessage,
|
|
1775
|
+
signingAlgo,
|
|
1776
|
+
isFormatted
|
|
1777
|
+
});
|
|
1778
|
+
const tweak = this.convertTweakForBIP340(bitcoinConfig == null ? void 0 : bitcoinConfig.tweak);
|
|
1747
1779
|
this.logger.info('Forward MPC enabled, signing message with forward MPC', this.getTraceContext(traceContext));
|
|
1748
1780
|
const signature = await this.apiClient.forwardMPCClient.signMessage({
|
|
1749
1781
|
keyshare: keyShare,
|
|
1750
|
-
message:
|
|
1782
|
+
message: messageToSign,
|
|
1751
1783
|
relayDomain: this.baseMPCRelayApiUrl || '',
|
|
1752
1784
|
signingAlgo: signingAlgo,
|
|
1753
1785
|
hashAlgo: chainName === 'EVM' && !isFormatted ? 'keccak256' : undefined,
|
|
1754
1786
|
derivationPath: derivationPath,
|
|
1755
1787
|
roomUuid: roomId,
|
|
1788
|
+
tweak: tweak,
|
|
1756
1789
|
traceContext,
|
|
1757
1790
|
userId: this.userId,
|
|
1758
1791
|
environmentId: this.environmentId
|
|
@@ -1761,14 +1794,7 @@ class DynamicWalletClient {
|
|
|
1761
1794
|
if (!(signatureBytes instanceof Uint8Array)) {
|
|
1762
1795
|
throw new TypeError(`Invalid signature format: expected Uint8Array, got ${typeof signatureBytes}`);
|
|
1763
1796
|
}
|
|
1764
|
-
|
|
1765
|
-
// For BIP340 (BTC Taproot) and ED25519 (SVM/SUI), return raw bytes
|
|
1766
|
-
if (signingAlgo === 'ECDSA') {
|
|
1767
|
-
const ecdsaSignature = web.EcdsaSignature.fromBuffer(signatureBytes);
|
|
1768
|
-
return ecdsaSignature;
|
|
1769
|
-
} else {
|
|
1770
|
-
return signatureBytes;
|
|
1771
|
-
}
|
|
1797
|
+
return this.processForwardMPCSignature(signatureBytes, signingAlgo);
|
|
1772
1798
|
} catch (error) {
|
|
1773
1799
|
this.logger.error('Error signing message with forward MPC client', {
|
|
1774
1800
|
error,
|
|
@@ -1888,10 +1914,8 @@ class DynamicWalletClient {
|
|
|
1888
1914
|
operation: 'serverSign'
|
|
1889
1915
|
}, this.getTraceContext(traceContext)));
|
|
1890
1916
|
const derivationPath = wallet.derivationPath && wallet.derivationPath != '' ? new Uint32Array(Object.values(JSON.parse(wallet.derivationPath))) : undefined;
|
|
1891
|
-
//
|
|
1892
|
-
const clientKeyShares = await this.
|
|
1893
|
-
accountAddress
|
|
1894
|
-
});
|
|
1917
|
+
// Ensure client key shares exist before signing
|
|
1918
|
+
const clientKeyShares = await this.ensureClientShare(accountAddress);
|
|
1895
1919
|
const signature = await this.clientSign({
|
|
1896
1920
|
chainName,
|
|
1897
1921
|
message,
|
|
@@ -1976,11 +2000,10 @@ class DynamicWalletClient {
|
|
|
1976
2000
|
mfaToken
|
|
1977
2001
|
});
|
|
1978
2002
|
const roomId = data.roomId;
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
});
|
|
2003
|
+
// Ensure client key shares exist before refresh
|
|
2004
|
+
const clientKeyShares = await this.ensureClientShare(accountAddress);
|
|
1982
2005
|
const refreshResults = await Promise.all(clientKeyShares.map((clientKeyShare)=>mpcSigner.refresh(roomId, clientKeyShare)));
|
|
1983
|
-
await this.
|
|
2006
|
+
await this.setClientKeySharesToStorage({
|
|
1984
2007
|
accountAddress,
|
|
1985
2008
|
clientKeyShares: refreshResults,
|
|
1986
2009
|
overwriteOrMerge: 'overwrite'
|
|
@@ -2065,7 +2088,7 @@ class DynamicWalletClient {
|
|
|
2065
2088
|
}, ()=>mpcSigner.initKeygen()));
|
|
2066
2089
|
const newClientKeygenIds = newClientInitKeygenResults.map((result)=>result.keygenId);
|
|
2067
2090
|
// Get existing client shares
|
|
2068
|
-
const existingClientKeyShares = (await this.
|
|
2091
|
+
const existingClientKeyShares = (await this.getClientKeySharesFromStorage({
|
|
2069
2092
|
accountAddress
|
|
2070
2093
|
})).slice(0, existingClientShareCount);
|
|
2071
2094
|
const existingClientKeygenIds = await Promise.all(existingClientKeyShares.map(async (keyShare)=>await this.getExportId({
|
|
@@ -2124,6 +2147,10 @@ class DynamicWalletClient {
|
|
|
2124
2147
|
oldThresholdSignatureScheme,
|
|
2125
2148
|
newThresholdSignatureScheme
|
|
2126
2149
|
});
|
|
2150
|
+
// Ensure existing client key shares exist before reshare
|
|
2151
|
+
if (existingClientKeyShares.length === 0) {
|
|
2152
|
+
throw new Error(`Client key shares are required for reshare operation but none were found for account address: ${accountAddress}`);
|
|
2153
|
+
}
|
|
2127
2154
|
const clientKeygenIds = [
|
|
2128
2155
|
...newClientKeygenIds,
|
|
2129
2156
|
...existingClientKeygenIds
|
|
@@ -2204,7 +2231,8 @@ class DynamicWalletClient {
|
|
|
2204
2231
|
this.walletMap[accountAddress] = _extends({}, this.walletMap[accountAddress], {
|
|
2205
2232
|
thresholdSignatureScheme: newThresholdSignatureScheme
|
|
2206
2233
|
});
|
|
2207
|
-
|
|
2234
|
+
// store client key shares to storage (localStorage or secureStorage)
|
|
2235
|
+
await this.setClientKeySharesToStorage({
|
|
2208
2236
|
accountAddress,
|
|
2209
2237
|
clientKeyShares: distribution.clientShares,
|
|
2210
2238
|
overwriteOrMerge: 'overwrite'
|
|
@@ -2232,7 +2260,7 @@ class DynamicWalletClient {
|
|
|
2232
2260
|
this.walletMap[accountAddress] = _extends({}, this.walletMap[accountAddress], {
|
|
2233
2261
|
thresholdSignatureScheme: oldThresholdSignatureScheme
|
|
2234
2262
|
});
|
|
2235
|
-
await this.
|
|
2263
|
+
await this.setClientKeySharesToStorage({
|
|
2236
2264
|
accountAddress,
|
|
2237
2265
|
clientKeyShares: [],
|
|
2238
2266
|
overwriteOrMerge: 'overwrite'
|
|
@@ -2375,7 +2403,7 @@ class DynamicWalletClient {
|
|
|
2375
2403
|
}
|
|
2376
2404
|
}
|
|
2377
2405
|
async getReconstructedKeyShare(accountAddress, mpcSigner) {
|
|
2378
|
-
const clientKeyShares = await this.
|
|
2406
|
+
const clientKeyShares = await this.getClientKeySharesFromStorage({
|
|
2379
2407
|
accountAddress
|
|
2380
2408
|
});
|
|
2381
2409
|
if (!clientKeyShares || clientKeyShares.length === 0) {
|
|
@@ -2490,8 +2518,7 @@ class DynamicWalletClient {
|
|
|
2490
2518
|
/**
|
|
2491
2519
|
* helper function to store encrypted backup by wallet from iframe local storage
|
|
2492
2520
|
*/ async getClientKeySharesFromLocalStorage({ accountAddress }) {
|
|
2493
|
-
|
|
2494
|
-
const walletObject = await ((_this_storage = this.storage) == null ? void 0 : _this_storage.getItem(accountAddress));
|
|
2521
|
+
const walletObject = await this.storage.getItem(accountAddress);
|
|
2495
2522
|
if (!walletObject) {
|
|
2496
2523
|
this.logger.debug(`[DynamicWaasWalletClient] No item found in iframe local storage for accountAddress: ${accountAddress}`);
|
|
2497
2524
|
return [];
|
|
@@ -2516,6 +2543,30 @@ class DynamicWalletClient {
|
|
|
2516
2543
|
}
|
|
2517
2544
|
}
|
|
2518
2545
|
/**
|
|
2546
|
+
* Helper function to get client key shares from storage.
|
|
2547
|
+
* Uses secureStorage when available (mobile), otherwise falls back to localStorage (browser).
|
|
2548
|
+
*/ async getClientKeySharesFromStorage({ accountAddress }) {
|
|
2549
|
+
// Use secure storage if available (mobile)
|
|
2550
|
+
if (this.secureStorage) {
|
|
2551
|
+
try {
|
|
2552
|
+
return await this.secureStorage.getClientKeyShare(accountAddress);
|
|
2553
|
+
} catch (error) {
|
|
2554
|
+
logError({
|
|
2555
|
+
message: `Error getting client key shares from secure storage for accountAddress: ${accountAddress}`,
|
|
2556
|
+
error: error,
|
|
2557
|
+
context: {
|
|
2558
|
+
accountAddress
|
|
2559
|
+
}
|
|
2560
|
+
});
|
|
2561
|
+
return [];
|
|
2562
|
+
}
|
|
2563
|
+
}
|
|
2564
|
+
// Fallback to localStorage (browser)
|
|
2565
|
+
return this.getClientKeySharesFromLocalStorage({
|
|
2566
|
+
accountAddress
|
|
2567
|
+
});
|
|
2568
|
+
}
|
|
2569
|
+
/**
|
|
2519
2570
|
* Helper function to initialize a wallet map entry during onCeremonyComplete.
|
|
2520
2571
|
* This is called before any backup has happened, so it initializes with empty backup info.
|
|
2521
2572
|
* The backup info gets updated later in storeEncryptedBackupByWallet.
|
|
@@ -2550,13 +2601,55 @@ class DynamicWalletClient {
|
|
|
2550
2601
|
* Helper function to store client key shares in storage.
|
|
2551
2602
|
* Uses secureStorage when available (mobile), otherwise falls back to localStorage (browser).
|
|
2552
2603
|
*/ async setClientKeySharesToLocalStorage({ accountAddress, clientKeyShares, overwriteOrMerge = 'merge' }) {
|
|
2553
|
-
var _this_storage;
|
|
2554
2604
|
const stringifiedClientKeyShares = JSON.stringify({
|
|
2555
2605
|
clientKeyShares: overwriteOrMerge === 'overwrite' ? clientKeyShares : mergeUniqueKeyShares(await this.getClientKeySharesFromLocalStorage({
|
|
2556
2606
|
accountAddress
|
|
2557
2607
|
}), clientKeyShares)
|
|
2558
2608
|
});
|
|
2559
|
-
await
|
|
2609
|
+
await this.storage.setItem(accountAddress, stringifiedClientKeyShares);
|
|
2610
|
+
}
|
|
2611
|
+
/**
|
|
2612
|
+
* Helper function to store client key shares in storage.
|
|
2613
|
+
* Uses secureStorage when available (mobile), otherwise falls back to localStorage (browser).
|
|
2614
|
+
*/ async setClientKeySharesToStorage({ accountAddress, clientKeyShares, overwriteOrMerge = 'merge' }) {
|
|
2615
|
+
// Use secure storage if available (mobile)
|
|
2616
|
+
if (this.secureStorage) {
|
|
2617
|
+
try {
|
|
2618
|
+
const sharesToStore = overwriteOrMerge === 'overwrite' ? clientKeyShares : mergeUniqueKeyShares(await this.getClientKeySharesFromStorage({
|
|
2619
|
+
accountAddress
|
|
2620
|
+
}), clientKeyShares);
|
|
2621
|
+
await this.secureStorage.setClientKeyShare(accountAddress, sharesToStore);
|
|
2622
|
+
return;
|
|
2623
|
+
} catch (error) {
|
|
2624
|
+
logError({
|
|
2625
|
+
message: `Error setting client key shares in secure storage for accountAddress: ${accountAddress}`,
|
|
2626
|
+
error: error,
|
|
2627
|
+
context: {
|
|
2628
|
+
accountAddress
|
|
2629
|
+
}
|
|
2630
|
+
});
|
|
2631
|
+
throw error;
|
|
2632
|
+
}
|
|
2633
|
+
}
|
|
2634
|
+
// Fallback to localStorage (browser)
|
|
2635
|
+
await this.setClientKeySharesToLocalStorage({
|
|
2636
|
+
accountAddress,
|
|
2637
|
+
clientKeyShares,
|
|
2638
|
+
overwriteOrMerge
|
|
2639
|
+
});
|
|
2640
|
+
}
|
|
2641
|
+
/**
|
|
2642
|
+
* Ensures that client key shares exist for the given account address.
|
|
2643
|
+
* Throws an error if no shares are found.
|
|
2644
|
+
* This method enforces share presence before sensitive operations.
|
|
2645
|
+
*/ async ensureClientShare(accountAddress) {
|
|
2646
|
+
const shares = await this.getClientKeySharesFromStorage({
|
|
2647
|
+
accountAddress
|
|
2648
|
+
});
|
|
2649
|
+
if (!shares || shares.length === 0) {
|
|
2650
|
+
throw new Error(`Client key share is missing for account address: ${accountAddress}`);
|
|
2651
|
+
}
|
|
2652
|
+
return shares;
|
|
2560
2653
|
}
|
|
2561
2654
|
async backupSharesWithDistribution({ accountAddress, password, signedSessionId, distribution, preserveDelegatedLocation = false }) {
|
|
2562
2655
|
const dynamicRequestId = uuid.v4();
|
|
@@ -2715,7 +2808,7 @@ class DynamicWalletClient {
|
|
|
2715
2808
|
* @returns Promise with backup metadata including share locations and IDs
|
|
2716
2809
|
*/ async storeEncryptedBackupByWallet({ accountAddress, clientKeyShares = undefined, password = undefined, signedSessionId, cloudProviders = [], delegatedKeyshare = undefined }) {
|
|
2717
2810
|
var _this_walletMap_accountAddress, _this_walletMap_accountAddress1;
|
|
2718
|
-
const keySharesToBackup = clientKeyShares != null ? clientKeyShares : await this.
|
|
2811
|
+
const keySharesToBackup = clientKeyShares != null ? clientKeyShares : await this.getClientKeySharesFromStorage({
|
|
2719
2812
|
accountAddress
|
|
2720
2813
|
});
|
|
2721
2814
|
// Check if we should backup to cloud providers (either requested or already exists)
|
|
@@ -2898,7 +2991,7 @@ class DynamicWalletClient {
|
|
|
2898
2991
|
password: password != null ? password : this.environmentId
|
|
2899
2992
|
})));
|
|
2900
2993
|
if (storeRecoveredShares) {
|
|
2901
|
-
await this.
|
|
2994
|
+
await this.setClientKeySharesToStorage({
|
|
2902
2995
|
accountAddress,
|
|
2903
2996
|
clientKeyShares: decryptedKeyShares,
|
|
2904
2997
|
overwriteOrMerge: 'merge'
|
|
@@ -3203,12 +3296,11 @@ class DynamicWalletClient {
|
|
|
3203
3296
|
walletOperation: core.WalletOperation.REACH_ALL_PARTIES,
|
|
3204
3297
|
signedSessionId
|
|
3205
3298
|
});
|
|
3206
|
-
const clientKeyShares = await this.getClientKeySharesFromLocalStorage({
|
|
3207
|
-
accountAddress
|
|
3208
|
-
});
|
|
3209
3299
|
if (!accountAddress) {
|
|
3210
3300
|
throw new Error('Must provide an account address');
|
|
3211
3301
|
}
|
|
3302
|
+
// Ensure client key shares exist before export
|
|
3303
|
+
const clientKeyShares = await this.ensureClientShare(accountAddress);
|
|
3212
3304
|
const derivationPath = this.walletMap[accountAddress].derivationPath;
|
|
3213
3305
|
const text = JSON.stringify({
|
|
3214
3306
|
keyShares: clientKeyShares,
|
|
@@ -3227,7 +3319,7 @@ class DynamicWalletClient {
|
|
|
3227
3319
|
walletOperation: core.WalletOperation.REACH_THRESHOLD,
|
|
3228
3320
|
signedSessionId
|
|
3229
3321
|
});
|
|
3230
|
-
return this.
|
|
3322
|
+
return this.getClientKeySharesFromStorage({
|
|
3231
3323
|
accountAddress
|
|
3232
3324
|
});
|
|
3233
3325
|
}
|
|
@@ -3265,7 +3357,7 @@ class DynamicWalletClient {
|
|
|
3265
3357
|
shareCount
|
|
3266
3358
|
});
|
|
3267
3359
|
const { dynamic: requiredDynamicKeyShareIds = [] } = shares;
|
|
3268
|
-
const clientKeyShares = await this.
|
|
3360
|
+
const clientKeyShares = await this.getClientKeySharesFromStorage({
|
|
3269
3361
|
accountAddress
|
|
3270
3362
|
});
|
|
3271
3363
|
if (requiredDynamicKeyShareIds.length <= ((clientKeyShares == null ? void 0 : clientKeyShares.length) || 0)) {
|
|
@@ -3349,7 +3441,7 @@ class DynamicWalletClient {
|
|
|
3349
3441
|
const clientKeySharesBackupInfo = await this.getWalletClientKeyShareBackupInfo({
|
|
3350
3442
|
accountAddress
|
|
3351
3443
|
});
|
|
3352
|
-
const clientKeyShares = await this.
|
|
3444
|
+
const clientKeyShares = await this.getClientKeySharesFromStorage({
|
|
3353
3445
|
accountAddress
|
|
3354
3446
|
});
|
|
3355
3447
|
if (walletOperation === core.WalletOperation.REACH_ALL_PARTIES || walletOperation === core.WalletOperation.REFRESH || walletOperation === core.WalletOperation.RESHARE) {
|
|
@@ -3432,10 +3524,10 @@ class DynamicWalletClient {
|
|
|
3432
3524
|
signedSessionId,
|
|
3433
3525
|
shareCount
|
|
3434
3526
|
});
|
|
3435
|
-
const existingKeyShares = await this.
|
|
3527
|
+
const existingKeyShares = await this.getClientKeySharesFromStorage({
|
|
3436
3528
|
accountAddress
|
|
3437
3529
|
});
|
|
3438
|
-
await this.
|
|
3530
|
+
await this.setClientKeySharesToStorage({
|
|
3439
3531
|
accountAddress,
|
|
3440
3532
|
clientKeyShares: mergeUniqueKeyShares(existingKeyShares, decryptedKeyShares)
|
|
3441
3533
|
});
|
|
@@ -3632,7 +3724,7 @@ class DynamicWalletClient {
|
|
|
3632
3724
|
}, traceContext);
|
|
3633
3725
|
}
|
|
3634
3726
|
constructor({ environmentId, baseApiUrl, baseMPCRelayApiUrl, storageKey, debug, featureFlags, authMode = core.AuthMode.HEADER, authToken = undefined, backupServiceAuthToken, // Represents the version of the client SDK used by developer
|
|
3635
|
-
sdkVersion, forwardMPCClient, baseClientKeysharesRelayApiUrl, iCloudConfig }){
|
|
3727
|
+
sdkVersion, forwardMPCClient, baseClientKeysharesRelayApiUrl, iCloudConfig }, internalOptions){
|
|
3636
3728
|
this.userId = undefined;
|
|
3637
3729
|
this.sessionId = undefined;
|
|
3638
3730
|
this.initializePromise = null;
|
|
@@ -3649,6 +3741,10 @@ class DynamicWalletClient {
|
|
|
3649
3741
|
this.authMode = authMode;
|
|
3650
3742
|
this.sdkVersion = sdkVersion;
|
|
3651
3743
|
this.baseClientKeysharesRelayApiUrl = baseClientKeysharesRelayApiUrl;
|
|
3744
|
+
// Set secure storage adapter if provided (internal use only)
|
|
3745
|
+
if (internalOptions == null ? void 0 : internalOptions.secureStorage) {
|
|
3746
|
+
this.secureStorage = internalOptions.secureStorage;
|
|
3747
|
+
}
|
|
3652
3748
|
this.apiClient = new core.DynamicApiClient({
|
|
3653
3749
|
environmentId,
|
|
3654
3750
|
authToken,
|
|
@@ -3662,7 +3758,7 @@ class DynamicWalletClient {
|
|
|
3662
3758
|
this.debug = Boolean(debug);
|
|
3663
3759
|
this.logger.setLogLevel(this.debug ? logger$1.LogLevel.DEBUG : DEFAULT_LOG_LEVEL);
|
|
3664
3760
|
this.featureFlags = featureFlags || {};
|
|
3665
|
-
// setup storage
|
|
3761
|
+
// setup storage for walletMap metadata (used regardless of secureStorage)
|
|
3666
3762
|
if (supportsLocalStorage()) {
|
|
3667
3763
|
this.storage = localStorageAdapter;
|
|
3668
3764
|
} else {
|
package/index.esm.js
CHANGED
|
@@ -1733,27 +1733,60 @@ class DynamicWalletClient {
|
|
|
1733
1733
|
});
|
|
1734
1734
|
return data;
|
|
1735
1735
|
}
|
|
1736
|
+
prepareMessageForForwardMPC({ chainName, message, formattedMessage, signingAlgo, isFormatted }) {
|
|
1737
|
+
if (chainName === 'SVM' || chainName === 'TON') {
|
|
1738
|
+
return formattedMessage;
|
|
1739
|
+
}
|
|
1740
|
+
if (signingAlgo === 'BIP340' && formattedMessage instanceof MessageHash) {
|
|
1741
|
+
return formattedMessage.toHex();
|
|
1742
|
+
}
|
|
1743
|
+
return serializeMessageForForwardMPC({
|
|
1744
|
+
message,
|
|
1745
|
+
isFormatted,
|
|
1746
|
+
chainName
|
|
1747
|
+
});
|
|
1748
|
+
}
|
|
1749
|
+
convertTweakForBIP340(tweak) {
|
|
1750
|
+
if (!tweak) {
|
|
1751
|
+
return undefined;
|
|
1752
|
+
}
|
|
1753
|
+
if (typeof tweak === 'string') {
|
|
1754
|
+
const hexString = tweak.startsWith('0x') ? tweak.slice(2) : tweak;
|
|
1755
|
+
return new Uint8Array(Buffer.from(hexString, 'hex'));
|
|
1756
|
+
}
|
|
1757
|
+
return tweak;
|
|
1758
|
+
}
|
|
1759
|
+
processForwardMPCSignature(signatureBytes, signingAlgo) {
|
|
1760
|
+
if (signingAlgo === 'ECDSA') {
|
|
1761
|
+
return EcdsaSignature.fromBuffer(signatureBytes);
|
|
1762
|
+
}
|
|
1763
|
+
return signatureBytes;
|
|
1764
|
+
}
|
|
1736
1765
|
async forwardMPCClientSign({ chainName, message, roomId, keyShare, derivationPath, formattedMessage, dynamicRequestId, isFormatted, traceContext, bitcoinConfig }) {
|
|
1737
1766
|
try {
|
|
1738
1767
|
if (!this.apiClient.forwardMPCClient.connected) {
|
|
1739
1768
|
await this.initializeForwardMPCClient();
|
|
1740
1769
|
}
|
|
1741
|
-
const messageForForwardMPC = serializeMessageForForwardMPC({
|
|
1742
|
-
message,
|
|
1743
|
-
isFormatted,
|
|
1744
|
-
chainName
|
|
1745
|
-
});
|
|
1746
1770
|
const chainConfig = getMPCChainConfig(chainName, bitcoinConfig);
|
|
1747
1771
|
const signingAlgo = chainConfig.signingAlgorithm;
|
|
1772
|
+
const messageToSign = this.prepareMessageForForwardMPC({
|
|
1773
|
+
chainName,
|
|
1774
|
+
message,
|
|
1775
|
+
formattedMessage,
|
|
1776
|
+
signingAlgo,
|
|
1777
|
+
isFormatted
|
|
1778
|
+
});
|
|
1779
|
+
const tweak = this.convertTweakForBIP340(bitcoinConfig == null ? void 0 : bitcoinConfig.tweak);
|
|
1748
1780
|
this.logger.info('Forward MPC enabled, signing message with forward MPC', this.getTraceContext(traceContext));
|
|
1749
1781
|
const signature = await this.apiClient.forwardMPCClient.signMessage({
|
|
1750
1782
|
keyshare: keyShare,
|
|
1751
|
-
message:
|
|
1783
|
+
message: messageToSign,
|
|
1752
1784
|
relayDomain: this.baseMPCRelayApiUrl || '',
|
|
1753
1785
|
signingAlgo: signingAlgo,
|
|
1754
1786
|
hashAlgo: chainName === 'EVM' && !isFormatted ? 'keccak256' : undefined,
|
|
1755
1787
|
derivationPath: derivationPath,
|
|
1756
1788
|
roomUuid: roomId,
|
|
1789
|
+
tweak: tweak,
|
|
1757
1790
|
traceContext,
|
|
1758
1791
|
userId: this.userId,
|
|
1759
1792
|
environmentId: this.environmentId
|
|
@@ -1762,14 +1795,7 @@ class DynamicWalletClient {
|
|
|
1762
1795
|
if (!(signatureBytes instanceof Uint8Array)) {
|
|
1763
1796
|
throw new TypeError(`Invalid signature format: expected Uint8Array, got ${typeof signatureBytes}`);
|
|
1764
1797
|
}
|
|
1765
|
-
|
|
1766
|
-
// For BIP340 (BTC Taproot) and ED25519 (SVM/SUI), return raw bytes
|
|
1767
|
-
if (signingAlgo === 'ECDSA') {
|
|
1768
|
-
const ecdsaSignature = EcdsaSignature.fromBuffer(signatureBytes);
|
|
1769
|
-
return ecdsaSignature;
|
|
1770
|
-
} else {
|
|
1771
|
-
return signatureBytes;
|
|
1772
|
-
}
|
|
1798
|
+
return this.processForwardMPCSignature(signatureBytes, signingAlgo);
|
|
1773
1799
|
} catch (error) {
|
|
1774
1800
|
this.logger.error('Error signing message with forward MPC client', {
|
|
1775
1801
|
error,
|
|
@@ -1889,10 +1915,8 @@ class DynamicWalletClient {
|
|
|
1889
1915
|
operation: 'serverSign'
|
|
1890
1916
|
}, this.getTraceContext(traceContext)));
|
|
1891
1917
|
const derivationPath = wallet.derivationPath && wallet.derivationPath != '' ? new Uint32Array(Object.values(JSON.parse(wallet.derivationPath))) : undefined;
|
|
1892
|
-
//
|
|
1893
|
-
const clientKeyShares = await this.
|
|
1894
|
-
accountAddress
|
|
1895
|
-
});
|
|
1918
|
+
// Ensure client key shares exist before signing
|
|
1919
|
+
const clientKeyShares = await this.ensureClientShare(accountAddress);
|
|
1896
1920
|
const signature = await this.clientSign({
|
|
1897
1921
|
chainName,
|
|
1898
1922
|
message,
|
|
@@ -1977,11 +2001,10 @@ class DynamicWalletClient {
|
|
|
1977
2001
|
mfaToken
|
|
1978
2002
|
});
|
|
1979
2003
|
const roomId = data.roomId;
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
});
|
|
2004
|
+
// Ensure client key shares exist before refresh
|
|
2005
|
+
const clientKeyShares = await this.ensureClientShare(accountAddress);
|
|
1983
2006
|
const refreshResults = await Promise.all(clientKeyShares.map((clientKeyShare)=>mpcSigner.refresh(roomId, clientKeyShare)));
|
|
1984
|
-
await this.
|
|
2007
|
+
await this.setClientKeySharesToStorage({
|
|
1985
2008
|
accountAddress,
|
|
1986
2009
|
clientKeyShares: refreshResults,
|
|
1987
2010
|
overwriteOrMerge: 'overwrite'
|
|
@@ -2066,7 +2089,7 @@ class DynamicWalletClient {
|
|
|
2066
2089
|
}, ()=>mpcSigner.initKeygen()));
|
|
2067
2090
|
const newClientKeygenIds = newClientInitKeygenResults.map((result)=>result.keygenId);
|
|
2068
2091
|
// Get existing client shares
|
|
2069
|
-
const existingClientKeyShares = (await this.
|
|
2092
|
+
const existingClientKeyShares = (await this.getClientKeySharesFromStorage({
|
|
2070
2093
|
accountAddress
|
|
2071
2094
|
})).slice(0, existingClientShareCount);
|
|
2072
2095
|
const existingClientKeygenIds = await Promise.all(existingClientKeyShares.map(async (keyShare)=>await this.getExportId({
|
|
@@ -2125,6 +2148,10 @@ class DynamicWalletClient {
|
|
|
2125
2148
|
oldThresholdSignatureScheme,
|
|
2126
2149
|
newThresholdSignatureScheme
|
|
2127
2150
|
});
|
|
2151
|
+
// Ensure existing client key shares exist before reshare
|
|
2152
|
+
if (existingClientKeyShares.length === 0) {
|
|
2153
|
+
throw new Error(`Client key shares are required for reshare operation but none were found for account address: ${accountAddress}`);
|
|
2154
|
+
}
|
|
2128
2155
|
const clientKeygenIds = [
|
|
2129
2156
|
...newClientKeygenIds,
|
|
2130
2157
|
...existingClientKeygenIds
|
|
@@ -2205,7 +2232,8 @@ class DynamicWalletClient {
|
|
|
2205
2232
|
this.walletMap[accountAddress] = _extends({}, this.walletMap[accountAddress], {
|
|
2206
2233
|
thresholdSignatureScheme: newThresholdSignatureScheme
|
|
2207
2234
|
});
|
|
2208
|
-
|
|
2235
|
+
// store client key shares to storage (localStorage or secureStorage)
|
|
2236
|
+
await this.setClientKeySharesToStorage({
|
|
2209
2237
|
accountAddress,
|
|
2210
2238
|
clientKeyShares: distribution.clientShares,
|
|
2211
2239
|
overwriteOrMerge: 'overwrite'
|
|
@@ -2233,7 +2261,7 @@ class DynamicWalletClient {
|
|
|
2233
2261
|
this.walletMap[accountAddress] = _extends({}, this.walletMap[accountAddress], {
|
|
2234
2262
|
thresholdSignatureScheme: oldThresholdSignatureScheme
|
|
2235
2263
|
});
|
|
2236
|
-
await this.
|
|
2264
|
+
await this.setClientKeySharesToStorage({
|
|
2237
2265
|
accountAddress,
|
|
2238
2266
|
clientKeyShares: [],
|
|
2239
2267
|
overwriteOrMerge: 'overwrite'
|
|
@@ -2376,7 +2404,7 @@ class DynamicWalletClient {
|
|
|
2376
2404
|
}
|
|
2377
2405
|
}
|
|
2378
2406
|
async getReconstructedKeyShare(accountAddress, mpcSigner) {
|
|
2379
|
-
const clientKeyShares = await this.
|
|
2407
|
+
const clientKeyShares = await this.getClientKeySharesFromStorage({
|
|
2380
2408
|
accountAddress
|
|
2381
2409
|
});
|
|
2382
2410
|
if (!clientKeyShares || clientKeyShares.length === 0) {
|
|
@@ -2491,8 +2519,7 @@ class DynamicWalletClient {
|
|
|
2491
2519
|
/**
|
|
2492
2520
|
* helper function to store encrypted backup by wallet from iframe local storage
|
|
2493
2521
|
*/ async getClientKeySharesFromLocalStorage({ accountAddress }) {
|
|
2494
|
-
|
|
2495
|
-
const walletObject = await ((_this_storage = this.storage) == null ? void 0 : _this_storage.getItem(accountAddress));
|
|
2522
|
+
const walletObject = await this.storage.getItem(accountAddress);
|
|
2496
2523
|
if (!walletObject) {
|
|
2497
2524
|
this.logger.debug(`[DynamicWaasWalletClient] No item found in iframe local storage for accountAddress: ${accountAddress}`);
|
|
2498
2525
|
return [];
|
|
@@ -2517,6 +2544,30 @@ class DynamicWalletClient {
|
|
|
2517
2544
|
}
|
|
2518
2545
|
}
|
|
2519
2546
|
/**
|
|
2547
|
+
* Helper function to get client key shares from storage.
|
|
2548
|
+
* Uses secureStorage when available (mobile), otherwise falls back to localStorage (browser).
|
|
2549
|
+
*/ async getClientKeySharesFromStorage({ accountAddress }) {
|
|
2550
|
+
// Use secure storage if available (mobile)
|
|
2551
|
+
if (this.secureStorage) {
|
|
2552
|
+
try {
|
|
2553
|
+
return await this.secureStorage.getClientKeyShare(accountAddress);
|
|
2554
|
+
} catch (error) {
|
|
2555
|
+
logError({
|
|
2556
|
+
message: `Error getting client key shares from secure storage for accountAddress: ${accountAddress}`,
|
|
2557
|
+
error: error,
|
|
2558
|
+
context: {
|
|
2559
|
+
accountAddress
|
|
2560
|
+
}
|
|
2561
|
+
});
|
|
2562
|
+
return [];
|
|
2563
|
+
}
|
|
2564
|
+
}
|
|
2565
|
+
// Fallback to localStorage (browser)
|
|
2566
|
+
return this.getClientKeySharesFromLocalStorage({
|
|
2567
|
+
accountAddress
|
|
2568
|
+
});
|
|
2569
|
+
}
|
|
2570
|
+
/**
|
|
2520
2571
|
* Helper function to initialize a wallet map entry during onCeremonyComplete.
|
|
2521
2572
|
* This is called before any backup has happened, so it initializes with empty backup info.
|
|
2522
2573
|
* The backup info gets updated later in storeEncryptedBackupByWallet.
|
|
@@ -2551,13 +2602,55 @@ class DynamicWalletClient {
|
|
|
2551
2602
|
* Helper function to store client key shares in storage.
|
|
2552
2603
|
* Uses secureStorage when available (mobile), otherwise falls back to localStorage (browser).
|
|
2553
2604
|
*/ async setClientKeySharesToLocalStorage({ accountAddress, clientKeyShares, overwriteOrMerge = 'merge' }) {
|
|
2554
|
-
var _this_storage;
|
|
2555
2605
|
const stringifiedClientKeyShares = JSON.stringify({
|
|
2556
2606
|
clientKeyShares: overwriteOrMerge === 'overwrite' ? clientKeyShares : mergeUniqueKeyShares(await this.getClientKeySharesFromLocalStorage({
|
|
2557
2607
|
accountAddress
|
|
2558
2608
|
}), clientKeyShares)
|
|
2559
2609
|
});
|
|
2560
|
-
await
|
|
2610
|
+
await this.storage.setItem(accountAddress, stringifiedClientKeyShares);
|
|
2611
|
+
}
|
|
2612
|
+
/**
|
|
2613
|
+
* Helper function to store client key shares in storage.
|
|
2614
|
+
* Uses secureStorage when available (mobile), otherwise falls back to localStorage (browser).
|
|
2615
|
+
*/ async setClientKeySharesToStorage({ accountAddress, clientKeyShares, overwriteOrMerge = 'merge' }) {
|
|
2616
|
+
// Use secure storage if available (mobile)
|
|
2617
|
+
if (this.secureStorage) {
|
|
2618
|
+
try {
|
|
2619
|
+
const sharesToStore = overwriteOrMerge === 'overwrite' ? clientKeyShares : mergeUniqueKeyShares(await this.getClientKeySharesFromStorage({
|
|
2620
|
+
accountAddress
|
|
2621
|
+
}), clientKeyShares);
|
|
2622
|
+
await this.secureStorage.setClientKeyShare(accountAddress, sharesToStore);
|
|
2623
|
+
return;
|
|
2624
|
+
} catch (error) {
|
|
2625
|
+
logError({
|
|
2626
|
+
message: `Error setting client key shares in secure storage for accountAddress: ${accountAddress}`,
|
|
2627
|
+
error: error,
|
|
2628
|
+
context: {
|
|
2629
|
+
accountAddress
|
|
2630
|
+
}
|
|
2631
|
+
});
|
|
2632
|
+
throw error;
|
|
2633
|
+
}
|
|
2634
|
+
}
|
|
2635
|
+
// Fallback to localStorage (browser)
|
|
2636
|
+
await this.setClientKeySharesToLocalStorage({
|
|
2637
|
+
accountAddress,
|
|
2638
|
+
clientKeyShares,
|
|
2639
|
+
overwriteOrMerge
|
|
2640
|
+
});
|
|
2641
|
+
}
|
|
2642
|
+
/**
|
|
2643
|
+
* Ensures that client key shares exist for the given account address.
|
|
2644
|
+
* Throws an error if no shares are found.
|
|
2645
|
+
* This method enforces share presence before sensitive operations.
|
|
2646
|
+
*/ async ensureClientShare(accountAddress) {
|
|
2647
|
+
const shares = await this.getClientKeySharesFromStorage({
|
|
2648
|
+
accountAddress
|
|
2649
|
+
});
|
|
2650
|
+
if (!shares || shares.length === 0) {
|
|
2651
|
+
throw new Error(`Client key share is missing for account address: ${accountAddress}`);
|
|
2652
|
+
}
|
|
2653
|
+
return shares;
|
|
2561
2654
|
}
|
|
2562
2655
|
async backupSharesWithDistribution({ accountAddress, password, signedSessionId, distribution, preserveDelegatedLocation = false }) {
|
|
2563
2656
|
const dynamicRequestId = v4();
|
|
@@ -2716,7 +2809,7 @@ class DynamicWalletClient {
|
|
|
2716
2809
|
* @returns Promise with backup metadata including share locations and IDs
|
|
2717
2810
|
*/ async storeEncryptedBackupByWallet({ accountAddress, clientKeyShares = undefined, password = undefined, signedSessionId, cloudProviders = [], delegatedKeyshare = undefined }) {
|
|
2718
2811
|
var _this_walletMap_accountAddress, _this_walletMap_accountAddress1;
|
|
2719
|
-
const keySharesToBackup = clientKeyShares != null ? clientKeyShares : await this.
|
|
2812
|
+
const keySharesToBackup = clientKeyShares != null ? clientKeyShares : await this.getClientKeySharesFromStorage({
|
|
2720
2813
|
accountAddress
|
|
2721
2814
|
});
|
|
2722
2815
|
// Check if we should backup to cloud providers (either requested or already exists)
|
|
@@ -2899,7 +2992,7 @@ class DynamicWalletClient {
|
|
|
2899
2992
|
password: password != null ? password : this.environmentId
|
|
2900
2993
|
})));
|
|
2901
2994
|
if (storeRecoveredShares) {
|
|
2902
|
-
await this.
|
|
2995
|
+
await this.setClientKeySharesToStorage({
|
|
2903
2996
|
accountAddress,
|
|
2904
2997
|
clientKeyShares: decryptedKeyShares,
|
|
2905
2998
|
overwriteOrMerge: 'merge'
|
|
@@ -3204,12 +3297,11 @@ class DynamicWalletClient {
|
|
|
3204
3297
|
walletOperation: WalletOperation.REACH_ALL_PARTIES,
|
|
3205
3298
|
signedSessionId
|
|
3206
3299
|
});
|
|
3207
|
-
const clientKeyShares = await this.getClientKeySharesFromLocalStorage({
|
|
3208
|
-
accountAddress
|
|
3209
|
-
});
|
|
3210
3300
|
if (!accountAddress) {
|
|
3211
3301
|
throw new Error('Must provide an account address');
|
|
3212
3302
|
}
|
|
3303
|
+
// Ensure client key shares exist before export
|
|
3304
|
+
const clientKeyShares = await this.ensureClientShare(accountAddress);
|
|
3213
3305
|
const derivationPath = this.walletMap[accountAddress].derivationPath;
|
|
3214
3306
|
const text = JSON.stringify({
|
|
3215
3307
|
keyShares: clientKeyShares,
|
|
@@ -3228,7 +3320,7 @@ class DynamicWalletClient {
|
|
|
3228
3320
|
walletOperation: WalletOperation.REACH_THRESHOLD,
|
|
3229
3321
|
signedSessionId
|
|
3230
3322
|
});
|
|
3231
|
-
return this.
|
|
3323
|
+
return this.getClientKeySharesFromStorage({
|
|
3232
3324
|
accountAddress
|
|
3233
3325
|
});
|
|
3234
3326
|
}
|
|
@@ -3266,7 +3358,7 @@ class DynamicWalletClient {
|
|
|
3266
3358
|
shareCount
|
|
3267
3359
|
});
|
|
3268
3360
|
const { dynamic: requiredDynamicKeyShareIds = [] } = shares;
|
|
3269
|
-
const clientKeyShares = await this.
|
|
3361
|
+
const clientKeyShares = await this.getClientKeySharesFromStorage({
|
|
3270
3362
|
accountAddress
|
|
3271
3363
|
});
|
|
3272
3364
|
if (requiredDynamicKeyShareIds.length <= ((clientKeyShares == null ? void 0 : clientKeyShares.length) || 0)) {
|
|
@@ -3350,7 +3442,7 @@ class DynamicWalletClient {
|
|
|
3350
3442
|
const clientKeySharesBackupInfo = await this.getWalletClientKeyShareBackupInfo({
|
|
3351
3443
|
accountAddress
|
|
3352
3444
|
});
|
|
3353
|
-
const clientKeyShares = await this.
|
|
3445
|
+
const clientKeyShares = await this.getClientKeySharesFromStorage({
|
|
3354
3446
|
accountAddress
|
|
3355
3447
|
});
|
|
3356
3448
|
if (walletOperation === WalletOperation.REACH_ALL_PARTIES || walletOperation === WalletOperation.REFRESH || walletOperation === WalletOperation.RESHARE) {
|
|
@@ -3433,10 +3525,10 @@ class DynamicWalletClient {
|
|
|
3433
3525
|
signedSessionId,
|
|
3434
3526
|
shareCount
|
|
3435
3527
|
});
|
|
3436
|
-
const existingKeyShares = await this.
|
|
3528
|
+
const existingKeyShares = await this.getClientKeySharesFromStorage({
|
|
3437
3529
|
accountAddress
|
|
3438
3530
|
});
|
|
3439
|
-
await this.
|
|
3531
|
+
await this.setClientKeySharesToStorage({
|
|
3440
3532
|
accountAddress,
|
|
3441
3533
|
clientKeyShares: mergeUniqueKeyShares(existingKeyShares, decryptedKeyShares)
|
|
3442
3534
|
});
|
|
@@ -3633,7 +3725,7 @@ class DynamicWalletClient {
|
|
|
3633
3725
|
}, traceContext);
|
|
3634
3726
|
}
|
|
3635
3727
|
constructor({ environmentId, baseApiUrl, baseMPCRelayApiUrl, storageKey, debug, featureFlags, authMode = AuthMode.HEADER, authToken = undefined, backupServiceAuthToken, // Represents the version of the client SDK used by developer
|
|
3636
|
-
sdkVersion, forwardMPCClient, baseClientKeysharesRelayApiUrl, iCloudConfig }){
|
|
3728
|
+
sdkVersion, forwardMPCClient, baseClientKeysharesRelayApiUrl, iCloudConfig }, internalOptions){
|
|
3637
3729
|
this.userId = undefined;
|
|
3638
3730
|
this.sessionId = undefined;
|
|
3639
3731
|
this.initializePromise = null;
|
|
@@ -3650,6 +3742,10 @@ class DynamicWalletClient {
|
|
|
3650
3742
|
this.authMode = authMode;
|
|
3651
3743
|
this.sdkVersion = sdkVersion;
|
|
3652
3744
|
this.baseClientKeysharesRelayApiUrl = baseClientKeysharesRelayApiUrl;
|
|
3745
|
+
// Set secure storage adapter if provided (internal use only)
|
|
3746
|
+
if (internalOptions == null ? void 0 : internalOptions.secureStorage) {
|
|
3747
|
+
this.secureStorage = internalOptions.secureStorage;
|
|
3748
|
+
}
|
|
3653
3749
|
this.apiClient = new DynamicApiClient({
|
|
3654
3750
|
environmentId,
|
|
3655
3751
|
authToken,
|
|
@@ -3663,7 +3759,7 @@ class DynamicWalletClient {
|
|
|
3663
3759
|
this.debug = Boolean(debug);
|
|
3664
3760
|
this.logger.setLogLevel(this.debug ? LogLevel.DEBUG : DEFAULT_LOG_LEVEL);
|
|
3665
3761
|
this.featureFlags = featureFlags || {};
|
|
3666
|
-
// setup storage
|
|
3762
|
+
// setup storage for walletMap metadata (used regardless of secureStorage)
|
|
3667
3763
|
if (supportsLocalStorage()) {
|
|
3668
3764
|
this.storage = localStorageAdapter;
|
|
3669
3765
|
} else {
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs-wallet/browser",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.253",
|
|
4
4
|
"license": "Licensed under the Dynamic Labs, Inc. Terms Of Service (https://www.dynamic.xyz/terms-conditions)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@dynamic-labs-wallet/core": "0.0.
|
|
7
|
+
"@dynamic-labs-wallet/core": "0.0.253",
|
|
8
8
|
"@dynamic-labs/logger": "^4.25.3",
|
|
9
9
|
"@dynamic-labs/sdk-api-core": "^0.0.828",
|
|
10
10
|
"argon2id": "1.0.1",
|
package/src/client.d.ts
CHANGED
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import { EcdsaSignature, MessageHash, type EcdsaPublicKey } from '#internal/web';
|
|
2
|
-
import { AuthMode, BackupLocation, DynamicApiClient, ThresholdSignatureScheme, WalletOperation, type BackupLocationWithExternalKeyShareId, type BitcoinConfig, type DynamicWalletClientProps, type FeatureFlags, type InitializeResult, type KeyShareBackupInfo, type TraceContext } from '@dynamic-labs-wallet/core';
|
|
2
|
+
import { AuthMode, BackupLocation, DynamicApiClient, ThresholdSignatureScheme, WalletOperation, type BackupLocationWithExternalKeyShareId, type BitcoinConfig, type DynamicWalletClientProps, type FeatureFlags, type InitializeResult, type KeyShareBackupInfo, type SecureStorageAdapter, type TraceContext } from '@dynamic-labs-wallet/core';
|
|
3
3
|
import { type InstrumentOptions } from '@dynamic-labs/logger';
|
|
4
4
|
import { RoomTypeEnum, type SignMessageContext } from '@dynamic-labs/sdk-api-core';
|
|
5
5
|
import type { ClientInitKeygenResult, ClientKeyShare } from './mpc/types.js';
|
|
6
6
|
import { type SupportedStorage } from './services/localStorage.js';
|
|
7
7
|
import { type Room, type ShareDistribution, type WalletBusyOperation, type WalletProperties } from './types.js';
|
|
8
|
+
type MessageToSign = string | Uint8Array | MessageHash;
|
|
9
|
+
/**
|
|
10
|
+
* Internal options for DynamicWalletClient constructor.
|
|
11
|
+
* This is NOT part of the public API.
|
|
12
|
+
*/
|
|
13
|
+
export interface DynamicWalletClientInternalOptions {
|
|
14
|
+
secureStorage?: SecureStorageAdapter;
|
|
15
|
+
}
|
|
8
16
|
export declare class DynamicWalletClient {
|
|
9
17
|
environmentId: string;
|
|
10
18
|
storageKey: string;
|
|
@@ -32,7 +40,13 @@ export declare class DynamicWalletClient {
|
|
|
32
40
|
protected static roomsInitializing: Record<number, boolean>;
|
|
33
41
|
protected static walletBusyMap: Record<string, WalletBusyOperation | undefined>;
|
|
34
42
|
protected static walletBusyPromiseMap: Record<string, Promise<void> | undefined>;
|
|
35
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Internal secure storage adapter for mobile TEE-backed storage.
|
|
45
|
+
* When set, all key share operations use this instead of localStorage.
|
|
46
|
+
* This is NOT part of the public API.
|
|
47
|
+
*/
|
|
48
|
+
private readonly secureStorage?;
|
|
49
|
+
constructor({ environmentId, baseApiUrl, baseMPCRelayApiUrl, storageKey, debug, featureFlags, authMode, authToken, backupServiceAuthToken, sdkVersion, forwardMPCClient, baseClientKeysharesRelayApiUrl, iCloudConfig, }: DynamicWalletClientProps, internalOptions?: DynamicWalletClientInternalOptions);
|
|
36
50
|
private initializeForwardMPCClient;
|
|
37
51
|
getWalletBusyOperation(accountAddress: string): WalletBusyOperation | undefined;
|
|
38
52
|
isWalletBusy(accountAddress: string): boolean;
|
|
@@ -124,13 +138,16 @@ export declare class DynamicWalletClient {
|
|
|
124
138
|
traceContext?: TraceContext;
|
|
125
139
|
bitcoinConfig?: BitcoinConfig;
|
|
126
140
|
}): Promise<import("@dynamic-labs-wallet/core").OpenRoomResponse>;
|
|
141
|
+
private prepareMessageForForwardMPC;
|
|
142
|
+
private convertTweakForBIP340;
|
|
143
|
+
private processForwardMPCSignature;
|
|
127
144
|
forwardMPCClientSign({ chainName, message, roomId, keyShare, derivationPath, formattedMessage, dynamicRequestId, isFormatted, traceContext, bitcoinConfig, }: {
|
|
128
145
|
chainName: string;
|
|
129
146
|
message: string | Uint8Array;
|
|
130
147
|
roomId: string;
|
|
131
148
|
keyShare: ClientKeyShare;
|
|
132
149
|
derivationPath: Uint32Array | undefined;
|
|
133
|
-
formattedMessage:
|
|
150
|
+
formattedMessage: MessageToSign;
|
|
134
151
|
dynamicRequestId: string;
|
|
135
152
|
isFormatted?: boolean;
|
|
136
153
|
traceContext?: TraceContext;
|
|
@@ -259,6 +276,13 @@ export declare class DynamicWalletClient {
|
|
|
259
276
|
getClientKeySharesFromLocalStorage({ accountAddress, }: {
|
|
260
277
|
accountAddress: string;
|
|
261
278
|
}): Promise<ClientKeyShare[]>;
|
|
279
|
+
/**
|
|
280
|
+
* Helper function to get client key shares from storage.
|
|
281
|
+
* Uses secureStorage when available (mobile), otherwise falls back to localStorage (browser).
|
|
282
|
+
*/
|
|
283
|
+
getClientKeySharesFromStorage({ accountAddress, }: {
|
|
284
|
+
accountAddress: string;
|
|
285
|
+
}): Promise<ClientKeyShare[]>;
|
|
262
286
|
/**
|
|
263
287
|
* Helper function to initialize a wallet map entry during onCeremonyComplete.
|
|
264
288
|
* This is called before any backup has happened, so it initializes with empty backup info.
|
|
@@ -288,6 +312,21 @@ export declare class DynamicWalletClient {
|
|
|
288
312
|
clientKeyShares: ClientKeyShare[];
|
|
289
313
|
overwriteOrMerge?: 'overwrite' | 'merge';
|
|
290
314
|
}): Promise<void>;
|
|
315
|
+
/**
|
|
316
|
+
* Helper function to store client key shares in storage.
|
|
317
|
+
* Uses secureStorage when available (mobile), otherwise falls back to localStorage (browser).
|
|
318
|
+
*/
|
|
319
|
+
setClientKeySharesToStorage({ accountAddress, clientKeyShares, overwriteOrMerge, }: {
|
|
320
|
+
accountAddress: string;
|
|
321
|
+
clientKeyShares: ClientKeyShare[];
|
|
322
|
+
overwriteOrMerge?: 'overwrite' | 'merge';
|
|
323
|
+
}): Promise<void>;
|
|
324
|
+
/**
|
|
325
|
+
* Ensures that client key shares exist for the given account address.
|
|
326
|
+
* Throws an error if no shares are found.
|
|
327
|
+
* This method enforces share presence before sensitive operations.
|
|
328
|
+
*/
|
|
329
|
+
private ensureClientShare;
|
|
291
330
|
backupSharesWithDistribution({ accountAddress, password, signedSessionId, distribution, preserveDelegatedLocation, }: {
|
|
292
331
|
accountAddress: string;
|
|
293
332
|
password?: string;
|
|
@@ -555,4 +594,5 @@ export declare class DynamicWalletClient {
|
|
|
555
594
|
time: number;
|
|
556
595
|
};
|
|
557
596
|
}
|
|
597
|
+
export {};
|
|
558
598
|
//# sourceMappingURL=client.d.ts.map
|
package/src/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../packages/src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../packages/src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,cAAc,EAGd,WAAW,EACX,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,QAAQ,EACR,cAAc,EACd,gBAAgB,EAIhB,wBAAwB,EACxB,eAAe,EAUf,KAAK,oCAAoC,EACzC,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EAClB,MAAM,2BAA2B,CAAC;AAKnC,OAAO,EAAY,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EACL,YAAY,EACZ,KAAK,kBAAkB,EACxB,MAAM,4BAA4B,CAAC;AAgBpC,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EAEf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EASL,KAAK,IAAI,EACT,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAC;AAcpB,KAAK,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,kCAAkC;IACjD,aAAa,CAAC,EAAE,oBAAoB,CAAC;CACtC;AAED,qBAAa,mBAAmB;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IAEtB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAa;IACjD,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAa;IAEpD,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAQ;IACrE,SAAS,CAAC,MAAM,wCAAU;IAC1B,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACtC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAM;IAC3D,SAAS,CAAC,OAAO,EAAG,gBAAgB,CAAC;IACrC,SAAS,CAAC,aAAa,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI,CAAQ;IACjE,SAAS,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACtC,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAClD,SAAS,CAAC,iBAAiB,UAAS;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAM;IACzC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,8BAA8B,CAAC,EAAE,MAAM,CAAC;IAClD,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAM;IACpD,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;IACjE,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CACpC,MAAM,EACN,mBAAmB,GAAG,SAAS,CAChC,CAAM;IACP,SAAS,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAC3C,MAAM,EACN,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAC1B,CAAM;IACP;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAuB;gBAGpD,EACE,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,UAAU,EACV,KAAK,EACL,YAAY,EACZ,QAA0B,EAC1B,SAAqB,EACrB,sBAAsB,EAEtB,UAAU,EACV,gBAAgB,EAChB,8BAA8B,EAC9B,YAAY,GACb,EAAE,wBAAwB,EAC3B,eAAe,CAAC,EAAE,kCAAkC;YAyDxC,0BAA0B;IA8BjC,sBAAsB,CAC3B,cAAc,EAAE,MAAM,GACrB,mBAAmB,GAAG,SAAS;IAI3B,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;YAItC,oBAAoB;YAsBpB,kBAAkB;IA0CzB,WAAW,IAAI,QAAQ;IAI9B;;;OAGG;IACU,sBAAsB;IAInC;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IA+BzB,iBAAiB,CAAC,SAAS,EAAE,MAAM;IAuDnC,UAAU,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgBxE;;OAEG;cACa,WAAW,CACzB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,gBAAgB,CAAC;IAyBtB,sBAAsB,CAAC,EAC3B,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,OAAO,EACP,kBAAkB,GACnB,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;QACjC,kBAAkB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;KACzE;IAqBK,sBAAsB,CAAC,EAC3B,SAAS,EACT,wBAAwB,EACxB,aAAa,GACd,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAmB/B,eAAe,CAAC,EACpB,SAAS,EACT,QAAQ,EACR,cAAc,EACd,aAAa,GACd,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,cAAc,CAAC;QACzB,cAAc,EAAE,WAAW,GAAG,SAAS,CAAC;QACxC,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B,GAAG,OAAO,CAAC,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;IAoBvD,YAAY,CAAC,EACjB,SAAS,EACT,MAAM,EACN,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,aAAa,GACd,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,uBAAuB,EAAE,sBAAsB,EAAE,CAAC;QAClD,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B,GAAG,OAAO,CAAC;QACV,YAAY,EAAE,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;QAC/D,mBAAmB,EAAE,cAAc,EAAE,CAAC;KACvC,CAAC;IA8DI,MAAM,CAAC,EACX,SAAS,EACT,wBAAwB,EACxB,aAAa,EACb,OAAO,EACP,kBAAkB,EAClB,YAAY,GACb,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;QACjC,kBAAkB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QACxE,YAAY,CAAC,EAAE,YAAY,CAAC;KAC7B,GAAG,OAAO,CAAC;QACV,YAAY,EAAE,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;QAC/D,eAAe,EAAE,cAAc,EAAE,CAAC;KACnC,CAAC;IAuFI,mBAAmB,CAAC,EACxB,SAAS,EACT,UAAU,EACV,wBAAwB,EACxB,aAAa,EACb,OAAO,EACP,kBAAkB,EAClB,YAAY,EACZ,cAAc,GACf,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;QACjC,kBAAkB,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QACxE,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,4DAA4D;QAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC;QACV,YAAY,EAAE,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;QAC/D,eAAe,EAAE,cAAc,EAAE,CAAC;KACnC,CAAC;IA0II,UAAU,CAAC,EACf,QAAQ,EACR,OAAO,EACP,WAAW,EACX,QAAQ,EACR,MAAM,EACN,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;QAC7B,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,kBAAkB,CAAC;QAC7B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;QACjC,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B;IA6BD,OAAO,CAAC,2BAA2B;IA0BnC,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,0BAA0B;IAU5B,oBAAoB,CAAC,EACzB,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,aAAa,GACd,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;QAC7B,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,cAAc,CAAC;QACzB,cAAc,EAAE,WAAW,GAAG,SAAS,CAAC;QACxC,gBAAgB,EAAE,aAAa,CAAC;QAChC,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B,GAAG,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC;IA2DlC,UAAU,CAAC,EACf,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,EACR,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;QAC7B,MAAM,EAAE,MAAM,CAAC;QACf,gBAAgB,EAAE,MAAM,CAAC;QACzB,QAAQ,EAAE,cAAc,CAAC;QACzB,cAAc,EAAE,WAAW,GAAG,SAAS,CAAC;QACxC,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B,GAAG,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC;IA0ElC,IAAI,CAAC,EACT,cAAc,EACd,OAAO,EACP,SAAS,EACT,QAAoB,EACpB,WAAmB,EACnB,eAAe,EACf,QAAQ,EACR,OAAO,EACP,OAAO,EACP,YAAY,EACZ,aAAa,GACd,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,kBAAkB,CAAC;QAC7B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;QACjC,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B,GAAG,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC;IAmHlC,0BAA0B,CAAC,EAC/B,cAAc,EACd,SAAS,EACT,QAAoB,EACpB,eAAe,EACf,QAAQ,EACR,YAAY,GACb,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,YAAY,CAAC;KAC7B;YAgBa,kCAAkC;IAwF1C,WAAW,CAAC,EAChB,SAAS,EACT,cAAc,EACd,aAAa,GACd,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,cAAc,CAAC;QAC/B,aAAa,CAAC,EAAE,aAAa,CAAC;KAC/B;IAsCD;;;;;;;;;;;;;OAaG;IACG,eAAe,CAAC,EACpB,SAAS,EACT,MAAM,EACN,cAAc,EACd,2BAA2B,EAC3B,2BAA2B,GAC5B,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,gBAAgB,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,2BAA2B,EAAE,wBAAwB,CAAC;QACtD,2BAA2B,EAAE,wBAAwB,CAAC;KACvD,GAAG,OAAO,CAAC;QACV,0BAA0B,EAAE,sBAAsB,EAAE,CAAC;QACrD,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,uBAAuB,EAAE,MAAM,EAAE,CAAC;QAClC,uBAAuB,EAAE,cAAc,EAAE,CAAC;KAC3C,CAAC;IA6CI,OAAO,CAAC,EACZ,SAAS,EACT,cAAc,EACd,2BAA2B,EAC3B,2BAA2B,EAC3B,QAAoB,EACpB,eAAe,EACf,cAAmB,EACnB,4BAAoC,EACpC,QAAQ,EACR,gBAAwB,GACzB,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,2BAA2B,EAAE,wBAAwB,CAAC;QACtD,2BAA2B,EAAE,wBAAwB,CAAC;QACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;QAClC,4BAA4B,CAAC,EAAE,OAAO,CAAC;QACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B;YAoBa,eAAe;YAsNf,0BAA0B;IAuElC,iBAAiB,CAAC,EACtB,cAAc,EACd,QAAoB,EACpB,eAAe,EACf,QAAQ,GACT,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IAgBK,gBAAgB,CAAC,EACrB,cAAc,EACd,QAAoB,EACpB,eAAe,EACf,QAAQ,GACT,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IAYD,OAAO,CAAC,kBAAkB;IAsBpB,SAAS,CAAC,EACd,cAAc,EACd,SAAS,EACT,aAAa,EACb,QAAoB,EACpB,eAAe,EACf,QAAQ,EACR,YAAY,GACb,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,YAAY,CAAC;KAC7B;;;YAyFa,wBAAwB;YAyBxB,gBAAgB;YAgEhB,0BAA0B;IAoBlC,gBAAgB,CAAC,EACrB,SAAS,EACT,SAAS,EACT,cAAc,GACf,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,cAAc,EAAE,CAAC;QAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC;QACV,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;QACtC,YAAY,EAAE,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;KAChE,CAAC;IAkEI,eAAe,CAAC,EACpB,QAAQ,EACR,QAAQ,GACT,EAAE;QACD,QAAQ,EAAE,cAAc,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IAaD;;OAEG;IACG,kCAAkC,CAAC,EACvC,cAAc,GACf,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAiC7B;;;OAGG;IACG,6BAA6B,CAAC,EAClC,cAAc,GACf,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAuB7B;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,wBAAwB,CAAC,EACjC,cAAc,EACd,QAAQ,EACR,SAAS,EACT,wBAAwB,EACxB,cAAc,EACd,eAAoB,GACrB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC3C,GAAG,IAAI;IAsBR;;;OAGG;IACG,gCAAgC,CAAC,EACrC,cAAc,EACd,eAAe,EACf,gBAA0B,GAC3B,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,cAAc,EAAE,CAAC;QAClC,gBAAgB,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;KAC1C,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBjB;;;OAGG;IACG,2BAA2B,CAAC,EAChC,cAAc,EACd,eAAe,EACf,gBAA0B,GAC3B,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,cAAc,EAAE,CAAC;QAClC,gBAAgB,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;KAC1C,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCjB;;;;OAIG;YACW,iBAAiB;IAgBzB,4BAA4B,CAAC,EACjC,cAAc,EACd,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,yBAAiC,GAClC,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,iBAAiB,CAAC;QAChC,yBAAyB,CAAC,EAAE,OAAO,CAAC;KACrC;;;;;;8BApxES,CAAC;;;IAs7EX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACG,4BAA4B,CAAC,EACjC,cAAc,EACd,eAA2B,EAC3B,QAAoB,EACpB,eAAe,EACf,cAAmB,EACnB,iBAA6B,GAC9B,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;QACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;QAClC,iBAAiB,CAAC,EAAE,cAAc,CAAC;KACpC;;;;;;;8BAn+ES,CAAC;;;IAgjFL,qCAAqC,CAAC,EAC1C,cAAc,EACd,eAAe,EACf,QAAQ,EACR,eAAe,GAChB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;QACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB;IAkBK,cAAc,CAAC,EACnB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,eAAe,GAChB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;KACzB;IAeK,eAAe,CAAC,EACpB,QAAQ,EACR,QAAQ,GACT,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,cAAc,CAAC;IAa3B;;;;;OAKG;YACW,8BAA8B;IAmC5C;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EACd,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,EACf,UAAsB,GACvB,EAAE;QACD,wBAAwB,EAAE,kBAAkB,CAAC;QAC7C,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,eAAe,EAAE,eAAe,CAAC;QACjC,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG;QACF,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAClD,kBAAkB,EAAE,MAAM,CAAC;KAC5B;IA+BK,8BAA8B,CAAC,EACnC,cAAc,EACd,QAAQ,EACR,eAAe,EACf,eAAe,EACf,UAAsB,EACtB,oBAA2B,EAC3B,QAAQ,GACT,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,eAAe,CAAC;QACjC,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IAsEK,cAAc;IAQpB;;;;OAIG;YACW,8BAA8B;IAwD5C;;;;;;;;;OASG;IACG,4BAA4B,CAAC,EACjC,cAAc,EACd,QAAQ,EACR,eAAe,GAChB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjB;;;;;;;;;OASG;IACG,uBAAuB,CAAC,EAC5B,cAAc,EACd,QAAQ,EACR,eAAe,GAChB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,IAAI,CAAC;IASjB;;;;;;OAMG;YACW,qBAAqB;IA2BnC;;;;;;;;;;;OAWG;YACW,4BAA4B;IAqD1C;;;;;;OAMG;YACW,uBAAuB;IAmC/B,oCAAoC,CAAC,EACzC,cAAc,EACd,QAAQ,EACR,eAAe,GAChB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyGX,qBAAqB,CAAC,EAC1B,cAAc,EACd,QAAQ,EACR,eAAe,GAChB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB;IA6BK,kBAAkB,CAAC,EACvB,cAAc,EACd,QAAQ,EACR,eAAe,GAChB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB;IAYD;;;;;OAKG;YACW,iBAAiB;IA8D/B;;;;OAIG;IACG,cAAc,CAAC,EACnB,cAAc,EACd,QAAoB,EACpB,eAA8C,EAC9C,eAAe,GAChB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,eAAe,CAAC;QAClC,eAAe,EAAE,MAAM,CAAC;KACzB;IAsDK,mBAAmB,CAAC,EACxB,cAAc,GACf,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,OAAO,CAAC;IAMpB;;OAEG;IACG,4BAA4B,CAAC,EACjC,cAAc,EACd,eAAiD,GAClD,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,eAAe,CAAC;KACnC,GAAG,OAAO,CAAC,OAAO,CAAC;IAYpB;;OAEG;IACG,uCAAuC,CAAC,EAC5C,cAAc,EACd,eAAiD,GAClD,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,eAAe,CAAC;KACnC,GAAG,OAAO,CAAC,OAAO,CAAC;IAgCd,iCAAiC,CAAC,EACtC,cAAc,GACf,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAiCzB,SAAS,CAAC,EACd,cAAc,EACd,eAA8C,EAC9C,UAAsB,EACtB,QAAoB,EACpB,eAAe,GAChB,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,eAAe,CAAC;QAClC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB;IAkGK,UAAU;IAkDhB;;;OAGG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM;IAQzB,WAAW,CAAC,EAChB,QAAQ,EACR,wBAAwB,EACxB,SAAa,GACd,EAAE;QACD,QAAQ,EAAE,YAAY,CAAC;QACvB,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;IAuCK,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAyB/C,QAAQ,CACZ,QAAQ,CAAC,EAAE,YAAY,EACvB,wBAAwB,CAAC,EAAE,wBAAwB,GAClD,OAAO,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAWrC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;IAQrD,kBAAkB,CAChB,QAAQ,EAAE,YAAY,EACtB,wBAAwB,EAAE,wBAAwB,GACjD,MAAM;IAOH,OAAO,CACX,QAAQ,EAAE,YAAY,EACtB,wBAAwB,EAAE,wBAAwB,GACjD,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IA+B5B;;OAEG;IACI,UAAU,CACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC/C,IAAI;IAcP,eAAe,CACb,YAAY,CAAC,EAAE,YAAY,GAC1B,YAAY,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAQhD"}
|