@dynamic-labs/wallet-connector-core 4.88.6 → 4.90.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.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,38 @@
1
1
 
2
+ ## [4.90.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.89.0...v4.90.0) (2026-06-19)
3
+
4
+
5
+ ### Features
6
+
7
+ * add microsoft to social providers list ([#11631](https://github.com/dynamic-labs/dynamic-auth/issues/11631)) ([761b82d](https://github.com/dynamic-labs/dynamic-auth/commit/761b82dea2e2e86ec1c8b3fc8bab32ed72492132))
8
+ * **sdk-react-core:** preconnect to waas iframe origin at auth-flow start ([#11549](https://github.com/dynamic-labs/dynamic-auth/issues/11549)) ([1bb810c](https://github.com/dynamic-labs/dynamic-auth/commit/1bb810c4eb3d592b43f62c1eaf5450a0e42981c9)), closes [dynamic-labs/dynamic-wallet-sdk#1314](https://github.com/dynamic-labs/dynamic-wallet-sdk/issues/1314)
9
+ * **waas:** opt into SDK eager key-share recovery, drop host RECOVER loop (DYNT-1125) ([#11620](https://github.com/dynamic-labs/dynamic-auth/issues/11620)) ([4bef955](https://github.com/dynamic-labs/dynamic-auth/commit/4bef955b902a7e484ba8bd6323582843bb692a17))
10
+ * **wallet-connector-core:** add isMidnightConnector util + Midnight interface hooks ([#11005](https://github.com/dynamic-labs/dynamic-auth/issues/11005)) ([55117a8](https://github.com/dynamic-labs/dynamic-auth/commit/55117a8cf59640d00b358f68be8df6b29231fab5))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **sdk-react-core:** gate smart-wallet init on user:basic scope ([#11624](https://github.com/dynamic-labs/dynamic-auth/issues/11624)) ([9f891a4](https://github.com/dynamic-labs/dynamic-auth/commit/9f891a46a191532acdd4a91b74c4586089ef0e1a)), closes [#11623](https://github.com/dynamic-labs/dynamic-auth/issues/11623) [#11623](https://github.com/dynamic-labs/dynamic-auth/issues/11623) [#11626](https://github.com/dynamic-labs/dynamic-auth/issues/11626)
16
+ * **sdk-react-core:** search wallet list by metadata name in addition to connector name ([#11638](https://github.com/dynamic-labs/dynamic-auth/issues/11638)) ([a647614](https://github.com/dynamic-labs/dynamic-auth/commit/a647614bcba769e09ef59bf1ddb925ce9835842e))
17
+ * **waas:** rebuild WaaS client on session change after step-up reauth ([#11581](https://github.com/dynamic-labs/dynamic-auth/issues/11581)) ([2b7093e](https://github.com/dynamic-labs/dynamic-auth/commit/2b7093e27f57f1dfcdd303361d436d9bf33e28a9))
18
+ * **waas:** refuse to build WaaS client while auth scope is pending (createRooms 401 chokepoint) ([#11623](https://github.com/dynamic-labs/dynamic-auth/issues/11623)) ([08755f0](https://github.com/dynamic-labs/dynamic-auth/commit/08755f0bda2b74c7bcdff3d0ac9c228a5205ad6e)), closes [#11624](https://github.com/dynamic-labs/dynamic-auth/issues/11624)
19
+ * **wallet-connect:** skip address comparison on reconnect when expectedAddress is empty ([#11639](https://github.com/dynamic-labs/dynamic-auth/issues/11639)) ([8d665cf](https://github.com/dynamic-labs/dynamic-auth/commit/8d665cf3bf1fb0e498d71f14cc8a53d91593c23d))
20
+
21
+ ## [4.89.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.88.6...v4.89.0) (2026-06-16)
22
+
23
+
24
+ ### Features
25
+
26
+ * **moonpay:** add useMoonPayOnramp hook ([#11405](https://github.com/dynamic-labs/dynamic-auth/issues/11405)) ([48cb62f](https://github.com/dynamic-labs/dynamic-auth/commit/48cb62fefecb511fcba9359ee6f6096dfef0b125))
27
+
28
+
29
+ ### Bug Fixes
30
+
31
+ * get wallet metadata from wallet-book when its present ([#11566](https://github.com/dynamic-labs/dynamic-auth/issues/11566)) ([a1a8ad5](https://github.com/dynamic-labs/dynamic-auth/commit/a1a8ad53c063157b189aea138fa338fcc67dc4dd))
32
+ * **waas:** instant logout — clear key share host-side, background iframe cleanup ([#11583](https://github.com/dynamic-labs/dynamic-auth/issues/11583)) ([0ab3378](https://github.com/dynamic-labs/dynamic-auth/commit/0ab3378efdbbe233069b17fad62b0c126397bc3a))
33
+ * **wagmi-connector:** await disconnect before connect to defuse SyncDynamicWagmi race DYNT-549 ([#11579](https://github.com/dynamic-labs/dynamic-auth/issues/11579)) ([6ac7c0e](https://github.com/dynamic-labs/dynamic-auth/commit/6ac7c0e02ed863342047bc5a1e60be3a66b8a425)), closes [#11131](https://github.com/dynamic-labs/dynamic-auth/issues/11131) [#11513](https://github.com/dynamic-labs/dynamic-auth/issues/11513) [#11516](https://github.com/dynamic-labs/dynamic-auth/issues/11516) [#11496](https://github.com/dynamic-labs/dynamic-auth/issues/11496) [#11513](https://github.com/dynamic-labs/dynamic-auth/issues/11513) [/github.com/dynamic-labs/dynamic-auth/blob/main/packages/wagmi-connector/src/lib/hooks/useConnectorId/useConnectorId.ts#L19-L26](https://github.com/dynamic-labs//github.com/dynamic-labs/dynamic-auth/blob/main/packages/wagmi-connector/src/lib/hooks/useConnectorId/useConnectorId.ts/issues/L19-L26) [#11131](https://github.com/dynamic-labs/dynamic-auth/issues/11131) [#11516](https://github.com/dynamic-labs/dynamic-auth/issues/11516) [#11513](https://github.com/dynamic-labs/dynamic-auth/issues/11513)
34
+ * **react-native:** resolve intermittent "Wallet with id <uuid> not found" after login ([#11575](https://github.com/dynamic-labs/dynamic-auth/issues/11575)) ([9d7a246](https://github.com/dynamic-labs/dynamic-auth/commit/9d7a246167927b9339dc33c10977c6d12783ab88))
35
+
2
36
  ### [4.88.6](https://github.com/dynamic-labs/dynamic-auth/compare/v4.88.5...v4.88.6) (2026-06-13)
3
37
 
4
38
 
package/package.cjs CHANGED
@@ -3,6 +3,6 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "4.88.6";
6
+ var version = "4.90.0";
7
7
 
8
8
  exports.version = version;
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  'use client'
2
- var version = "4.88.6";
2
+ var version = "4.90.0";
3
3
 
4
4
  export { version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/wallet-connector-core",
3
- "version": "4.88.6",
3
+ "version": "4.90.0",
4
4
  "description": "Core package for utilities and types for handling multiple wallet/chain support Dynamic SDK",
5
5
  "author": "Dynamic Labs, Inc.",
6
6
  "license": "MIT",
@@ -18,16 +18,16 @@
18
18
  },
19
19
  "homepage": "https://www.dynamic.xyz/",
20
20
  "dependencies": {
21
- "@dynamic-labs-sdk/client": "1.8.2",
22
- "@dynamic-labs/sdk-api-core": "0.0.1015",
23
- "@dynamic-labs-wallet/browser-wallet-client": "1.0.16",
24
- "@dynamic-labs-wallet/forward-mpc-client": "0.10.1",
25
- "@dynamic-labs/assert-package-version": "4.88.6",
26
- "@dynamic-labs/logger": "4.88.6",
27
- "@dynamic-labs/rpc-providers": "4.88.6",
28
- "@dynamic-labs/types": "4.88.6",
29
- "@dynamic-labs/utils": "4.88.6",
30
- "@dynamic-labs/wallet-book": "4.88.6",
21
+ "@dynamic-labs-sdk/client": "1.12.1",
22
+ "@dynamic-labs/sdk-api-core": "0.0.1046",
23
+ "@dynamic-labs-wallet/browser-wallet-client": "1.0.42",
24
+ "@dynamic-labs-wallet/forward-mpc-client": "0.12.0",
25
+ "@dynamic-labs/assert-package-version": "4.90.0",
26
+ "@dynamic-labs/logger": "4.90.0",
27
+ "@dynamic-labs/rpc-providers": "4.90.0",
28
+ "@dynamic-labs/types": "4.90.0",
29
+ "@dynamic-labs/utils": "4.90.0",
30
+ "@dynamic-labs/wallet-book": "4.90.0",
31
31
  "eventemitter3": "5.0.1"
32
32
  },
33
33
  "peerDependencies": {}
@@ -124,7 +124,7 @@ class WalletConnectorBase extends EventEmitter__default["default"] {
124
124
  this.isInitialized = true;
125
125
  this.constructorProps = props;
126
126
  this._walletBookInstance = WalletBookSingleton.WalletBookSingleton.getOrCreate(props.walletBook);
127
- this._metadata = props.metadata;
127
+ this._constructorMetadata = props.metadata;
128
128
  this.walletConnectorEventsEmitter =
129
129
  this.constructorProps.walletConnectorEventsEmitter ||
130
130
  walletConnectorEvents.walletConnectorEvents;
@@ -330,10 +330,13 @@ class WalletConnectorBase extends EventEmitter__default["default"] {
330
330
  get metadata() {
331
331
  var _a;
332
332
  if (!this._metadata) {
333
- this._metadata = getWalletMetadataFromWalletBook.getWalletMetadataFromWalletBook({
333
+ const walletBookMetadata = getWalletMetadataFromWalletBook.getWalletMetadataFromWalletBook({
334
334
  walletBook: this.walletBook,
335
335
  walletKey: this.key,
336
336
  });
337
+ if (walletBookMetadata || this._constructorMetadata) {
338
+ this._metadata = Object.assign(Object.assign({ icon: '', id: this.key, name: this.name }, walletBookMetadata), this._constructorMetadata);
339
+ }
337
340
  }
338
341
  return (_a = this._metadata) !== null && _a !== void 0 ? _a : { icon: '', id: this.key, name: this.name };
339
342
  }
@@ -23,6 +23,7 @@ export declare abstract class WalletConnectorBase<C extends WalletConstructor<an
23
23
  constructorProps: any;
24
24
  _walletBookInstance: WalletBookSingleton;
25
25
  _metadata: WalletMetadata | undefined;
26
+ private _constructorMetadata;
26
27
  walletConnectorEventsEmitter: WalletConnectorEventEmitter;
27
28
  walletFallback: WalletSchema | undefined;
28
29
  isGlobalTransaction: boolean;
@@ -116,7 +116,7 @@ class WalletConnectorBase extends EventEmitter {
116
116
  this.isInitialized = true;
117
117
  this.constructorProps = props;
118
118
  this._walletBookInstance = WalletBookSingleton.getOrCreate(props.walletBook);
119
- this._metadata = props.metadata;
119
+ this._constructorMetadata = props.metadata;
120
120
  this.walletConnectorEventsEmitter =
121
121
  this.constructorProps.walletConnectorEventsEmitter ||
122
122
  walletConnectorEvents;
@@ -322,10 +322,13 @@ class WalletConnectorBase extends EventEmitter {
322
322
  get metadata() {
323
323
  var _a;
324
324
  if (!this._metadata) {
325
- this._metadata = getWalletMetadataFromWalletBook({
325
+ const walletBookMetadata = getWalletMetadataFromWalletBook({
326
326
  walletBook: this.walletBook,
327
327
  walletKey: this.key,
328
328
  });
329
+ if (walletBookMetadata || this._constructorMetadata) {
330
+ this._metadata = Object.assign(Object.assign({ icon: '', id: this.key, name: this.name }, walletBookMetadata), this._constructorMetadata);
331
+ }
329
332
  }
330
333
  return (_a = this._metadata) !== null && _a !== void 0 ? _a : { icon: '', id: this.key, name: this.name };
331
334
  }
package/src/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { walletConnectorEvents, type ProviderReadyEventProps } from './events';
2
2
  export { type Attestation, type AuthenticatorRecoveryHandler, type AuthenticatorType, type BitcoinSignPsbtRequest, type BitcoinSignPsbtRequestSignature, type BitcoinSignPsbtResponse, type ExportHandler, type IAccountAbstractionWalletConnector, type IBitcoinWalletConnector, type IEmailOTPWalletConnector, type IEmailWalletConnector, type IHardwareWalletConnector, type IPasskeyWalletConnector, type IPhantomRedirectConnector, type IPhantomRedirectConnectorWithEvents, type ISendBalanceWalletConnector, type ISessionKeyCompatibleWalletConnector, type ISMSWalletConnector, type ITurnkeyWalletConnector, type ITurnkeyWalletConnectorStamper, type IWalletConnectConnector, type IZeroDevConnector, type Eip7702SignedAuthorization, type RecoveryEmailParams, type RecoveryWebAuthnAttestation, type SignAllTransactionsListener, type SignAndSendTransactionListener, type SignMessageListener, type SignTransactionListener, type WebAuthnAttestation, type IEthereumConnector, type IPublicClient, type ISolanaConnection, type IDynamicWaasConnector, type GetWalletPasswordFn, } from './interfaces';
3
3
  export type { AccountChangeEventHandler, ChainChangeEventHandler, DisconnectEventHandler, WalletConnectorCore, WalletMetadata, WalletDeepLinks, WalletDownloadLinks, WalletLimitations, WalletLinks, } from './types';
4
- export { addHexPrefix, bufferToHex, connectorRequiresDisconnectionForNewConnection, eventListenerHandlers, getChainInfo, getChainInfoWithOverrides, getDeepLink, getMobileExperience, getRpcUrlForChain, getWalletConnectorByKey, isAccountAbstractionConnector, isBitcoinConnector, isMidnightConnector, isMidnightWallet, type IMidnightWallet, type MidnightFormattedBalances, isBloctoConnector, isEmailOTPWalletConnector, isEmailWalletConnector, isEmbeddedConnector, isHardwareWalletConnector, isHex, isMagicConnector, isPasskeyWalletConnector, isPhantomRedirectConnector, isSameAddress, isSendBalanceWalletConnector, isSessionKeyCompatibleWallet, isSessionKeyCompatibleWalletConnector, isSocialWalletConnector, isTurnkeyWalletConnector, isWalletConnectConnector, isConnectorMethodSupported, isConnectorEventSupported, getWalletProvider, getWalletMetadataFromWalletBook, getWalletLinks, logger, performPlatformSpecificConnectionMethod, ProviderLookup, setChainInfoOverrides, shouldLowercaseAddress, utf8ToHex, convertWalletToBaseWallet, convertWalletToBaseWalletPartial, type ChainDisplayOverrides, type DeepLinkVariant, type ProviderCondition, isDynamicWaasConnector, } from './utils';
4
+ export { addHexPrefix, bufferToHex, connectorRequiresDisconnectionForNewConnection, eventListenerHandlers, getChainInfo, getChainInfoWithOverrides, getDeepLink, getMobileExperience, getRpcUrlForChain, getWalletConnectorByKey, isAccountAbstractionConnector, isBitcoinConnector, isMidnightConnector, isMidnightWallet, type IMidnightWallet, type IMidnightWalletConnector, type MidnightFormattedBalances, isBloctoConnector, isEmailOTPWalletConnector, isEmailWalletConnector, isEmbeddedConnector, isHardwareWalletConnector, isHex, isMagicConnector, isPasskeyWalletConnector, isPhantomRedirectConnector, isSameAddress, isSendBalanceWalletConnector, isSessionKeyCompatibleWallet, isSessionKeyCompatibleWalletConnector, isSocialWalletConnector, isTurnkeyWalletConnector, isWalletConnectConnector, isConnectorMethodSupported, isConnectorEventSupported, getWalletProvider, getWalletMetadataFromWalletBook, getWalletLinks, logger, performPlatformSpecificConnectionMethod, ProviderLookup, setChainInfoOverrides, shouldLowercaseAddress, utf8ToHex, convertWalletToBaseWallet, convertWalletToBaseWalletPartial, type ChainDisplayOverrides, type DeepLinkVariant, type ProviderCondition, isDynamicWaasConnector, } from './utils';
5
5
  export { Wallet, type WalletConstructor, type WalletProps } from './Wallet';
6
6
  export { Chains, socialProviders, WalletConnectorBase, type Chain, type ChainInfo, type GetAddressOpts, type InternalWalletConnector, type NameServiceData, type PayloadParams, type SocialProvider, type WalletConnector, type WalletConnectorConstructor, type WalletConnectorEventTypes, type WalletConnectorExtension, type WalletConnectorsMethod, } from './WalletConnectorBase';
7
7
  export { WalletBookSingleton } from './WalletBookSingleton';
@@ -49,7 +49,6 @@ export interface IDynamicWaasConnector extends WalletConnectorBase {
49
49
  setBaseClientKeysharesRelayApiUrl(baseClientKeysharesRelayApiUrl?: string): void;
50
50
  setGetAuthTokenFunction(getAuthToken: () => string): void;
51
51
  setGetSignedSessionIdFunction(getSignedSessionId: () => Promise<string>): void;
52
- setOnUnauthorizedFunction(onUnauthorized: () => void | Promise<void>): void;
53
52
  setGetMfaTokenFunction(getMfaToken: GetMfaTokenFunction): void;
54
53
  setGetElevatedAccessTokenFunction(getElevatedAccessToken: GetElevatedAccessTokenFunction): void;
55
54
  setRelayUrl(relayUrl: string): void;
@@ -122,6 +121,24 @@ export interface IDynamicWaasConnector extends WalletConnectorBase {
122
121
  };
123
122
  context: SignMessageContext;
124
123
  }): Promise<string>;
125
- getWaasWalletClient(): Promise<any>;
124
+ /**
125
+ * @param forceRebuild when true, drop the cached client and rebuild it with
126
+ * freshly captured auth (token + signed session id) — without clearing key
127
+ * shares. Used after a step-up reauthentication swaps the session so the
128
+ * iframe re-auths with the new session instead of 401-ing on the stale one.
129
+ */
130
+ getWaasWalletClient(traceContext?: unknown, options?: {
131
+ forceRebuild?: boolean;
132
+ }): Promise<any>;
133
+ getPrivateBalance?(): Promise<{
134
+ unshielded: Record<string, string>;
135
+ shielded: Record<string, string>;
136
+ dust: {
137
+ balance: string;
138
+ cap: string;
139
+ };
140
+ address: string;
141
+ dustSynced: boolean;
142
+ }>;
126
143
  }
127
144
  export {};
@@ -21,7 +21,7 @@ const getWalletMetadataFromWalletBook = ({ walletKey, walletBookWallet, walletBo
21
21
  const wallet = walletBookWallet !== null && walletBookWallet !== void 0 ? walletBookWallet : walletBook.getWalletBookWallet(walletBook$1, walletKey, walletFallback);
22
22
  // if no walletBookWallet is provided and no wallet is found in the wallet book, throw an error
23
23
  if (!wallet) {
24
- logger.logger.warn('Wallet not found in wallet book');
24
+ logger.logger.debug('Wallet not found in wallet book');
25
25
  return;
26
26
  }
27
27
  return {
@@ -42,7 +42,7 @@ const getWalletMetadataFromWalletBook = ({ walletKey, walletBookWallet, walletBo
42
42
  };
43
43
  }
44
44
  catch (e) {
45
- logger.logger.warn('Error getting wallet metadata from wallet book', {
45
+ logger.logger.debug('Error getting wallet metadata from wallet book', {
46
46
  error: e,
47
47
  });
48
48
  return;
@@ -17,7 +17,7 @@ const getWalletMetadataFromWalletBook = ({ walletKey, walletBookWallet, walletBo
17
17
  const wallet = walletBookWallet !== null && walletBookWallet !== void 0 ? walletBookWallet : getWalletBookWallet(walletBook, walletKey, walletFallback);
18
18
  // if no walletBookWallet is provided and no wallet is found in the wallet book, throw an error
19
19
  if (!wallet) {
20
- logger.warn('Wallet not found in wallet book');
20
+ logger.debug('Wallet not found in wallet book');
21
21
  return;
22
22
  }
23
23
  return {
@@ -38,7 +38,7 @@ const getWalletMetadataFromWalletBook = ({ walletKey, walletBookWallet, walletBo
38
38
  };
39
39
  }
40
40
  catch (e) {
41
- logger.warn('Error getting wallet metadata from wallet book', {
41
+ logger.debug('Error getting wallet metadata from wallet book', {
42
42
  error: e,
43
43
  });
44
44
  return;
@@ -1,2 +1 @@
1
- export { isMidnightConnector } from './isMidnightConnector';
2
- export type { IMidnightWalletConnector } from './isMidnightConnector';
1
+ export { isMidnightConnector, type IMidnightWalletConnector, } from './isMidnightConnector';
@@ -3,6 +3,11 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
+ /**
7
+ * Type guard to check if a connector is a Midnight wallet connector.
8
+ * @param connector - The wallet connector to check
9
+ * @returns True if the connector is a Midnight wallet connector
10
+ */
6
11
  const isMidnightConnector = (connector) => Boolean(connector === null || connector === void 0 ? void 0 : connector.midnightNetworks);
7
12
 
8
13
  exports.isMidnightConnector = isMidnightConnector;
@@ -1,6 +1,15 @@
1
1
  import type { GenericNetwork } from '@dynamic-labs/types';
2
2
  import type { WalletConnector } from '../..';
3
+ /**
4
+ * Interface for Midnight wallet connectors.
5
+ * Midnight connectors support multiple network configurations.
6
+ */
3
7
  export type IMidnightWalletConnector = WalletConnector & {
4
8
  midnightNetworks: GenericNetwork[];
5
9
  };
10
+ /**
11
+ * Type guard to check if a connector is a Midnight wallet connector.
12
+ * @param connector - The wallet connector to check
13
+ * @returns True if the connector is a Midnight wallet connector
14
+ */
6
15
  export declare const isMidnightConnector: (connector: WalletConnector | IMidnightWalletConnector) => connector is IMidnightWalletConnector;
@@ -1,4 +1,9 @@
1
1
  'use client'
2
+ /**
3
+ * Type guard to check if a connector is a Midnight wallet connector.
4
+ * @param connector - The wallet connector to check
5
+ * @returns True if the connector is a Midnight wallet connector
6
+ */
2
7
  const isMidnightConnector = (connector) => Boolean(connector === null || connector === void 0 ? void 0 : connector.midnightNetworks);
3
8
 
4
9
  export { isMidnightConnector };
@@ -6,6 +6,7 @@ export type MidnightFormattedBalances = {
6
6
  } | undefined;
7
7
  shieldedBalance: string | undefined;
8
8
  unshieldedBalance: string | undefined;
9
+ dustSyncing?: boolean;
9
10
  };
10
11
  export type IMidnightWallet = Wallet & {
11
12
  getFormattedBalances: () => Promise<MidnightFormattedBalances>;