@dynamic-labs/sdk-react-core 4.78.0 → 4.79.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 (50) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/package.cjs +4 -4
  3. package/package.js +4 -4
  4. package/package.json +15 -15
  5. package/src/index.cjs +9 -1
  6. package/src/index.d.ts +2 -1
  7. package/src/index.js +4 -1
  8. package/src/lib/context/ErrorContext/ErrorContext.cjs +2 -2
  9. package/src/lib/context/ErrorContext/ErrorContext.d.ts +1 -1
  10. package/src/lib/context/ErrorContext/ErrorContext.js +2 -2
  11. package/src/lib/context/PhantomRedirectContext/useResponseHandlers.cjs +3 -1
  12. package/src/lib/context/PhantomRedirectContext/useResponseHandlers.js +3 -1
  13. package/src/lib/context/SocialRedirectContext/SocialRedirectContext.cjs +7 -6
  14. package/src/lib/context/SocialRedirectContext/SocialRedirectContext.js +7 -6
  15. package/src/lib/shared/utils/functions/index.d.ts +1 -0
  16. package/src/lib/shared/utils/functions/instrumentAuthLoginFailed/index.d.ts +2 -0
  17. package/src/lib/shared/utils/functions/instrumentAuthLoginFailed/instrumentAuthLoginFailed.cjs +17 -0
  18. package/src/lib/shared/utils/functions/instrumentAuthLoginFailed/instrumentAuthLoginFailed.d.ts +7 -0
  19. package/src/lib/shared/utils/functions/instrumentAuthLoginFailed/instrumentAuthLoginFailed.js +13 -0
  20. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.cjs +10 -1
  21. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.js +10 -1
  22. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSignSplitSteps/useConnectAndSignSplitSteps.cjs +5 -1
  23. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSignSplitSteps/useConnectAndSignSplitSteps.js +5 -1
  24. package/src/lib/utils/hooks/authenticationHooks/useSignConnectOnlyUser/useSignConnectOnlyUser.cjs +5 -1
  25. package/src/lib/utils/hooks/authenticationHooks/useSignConnectOnlyUser/useSignConnectOnlyUser.js +5 -1
  26. package/src/lib/utils/hooks/index.d.ts +3 -2
  27. package/src/lib/utils/hooks/useGoogleDriveBackupReadiness/index.d.ts +1 -0
  28. package/src/lib/utils/hooks/useGoogleDriveBackupReadiness/useGoogleDriveBackupReadiness.cjs +222 -0
  29. package/src/lib/utils/hooks/useGoogleDriveBackupReadiness/useGoogleDriveBackupReadiness.d.ts +85 -0
  30. package/src/lib/utils/hooks/useGoogleDriveBackupReadiness/useGoogleDriveBackupReadiness.js +218 -0
  31. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +6 -2
  32. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +6 -2
  33. package/src/lib/utils/hooks/useUserAuth/useUserAuth.cjs +7 -1
  34. package/src/lib/utils/hooks/useUserAuth/useUserAuth.js +7 -1
  35. package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.cjs +6 -2
  36. package/src/lib/utils/hooks/useVerifyWallet/useVerifyWallet.js +6 -2
  37. package/src/lib/utils/hooks/useWalletBackup/googleDriveBackupErrors.cjs +33 -0
  38. package/src/lib/utils/hooks/useWalletBackup/googleDriveBackupErrors.d.ts +8 -0
  39. package/src/lib/utils/hooks/useWalletBackup/googleDriveBackupErrors.js +29 -0
  40. package/src/lib/utils/hooks/useWalletBackup/googleDriveScopes.cjs +22 -0
  41. package/src/lib/utils/hooks/useWalletBackup/googleDriveScopes.d.ts +10 -0
  42. package/src/lib/utils/hooks/useWalletBackup/googleDriveScopes.js +16 -0
  43. package/src/lib/utils/hooks/useWalletBackup/index.d.ts +2 -0
  44. package/src/lib/utils/hooks/useWalletBackup/useWalletBackup.cjs +8 -0
  45. package/src/lib/utils/hooks/useWalletBackup/useWalletBackup.d.ts +2 -0
  46. package/src/lib/utils/hooks/useWalletBackup/useWalletBackup.js +9 -1
  47. package/src/lib/utils/hooks/useWalletItemActions/useHandleWalletItem/useHandleWalletItem.cjs +1 -1
  48. package/src/lib/utils/hooks/useWalletItemActions/useHandleWalletItem/useHandleWalletItem.js +1 -1
  49. package/src/lib/views/EmailVerification/EmailVerification.cjs +3 -1
  50. package/src/lib/views/EmailVerification/EmailVerification.js +3 -1
package/CHANGELOG.md CHANGED
@@ -1,4 +1,26 @@
1
1
 
2
+ ## [4.79.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.78.1...v4.79.0) (2026-04-30)
3
+
4
+
5
+ ### Features
6
+
7
+ * **sdk-react-core:** two-layer Google Drive backup access defense [DYNT-754] ([#11069](https://github.com/dynamic-labs/dynamic-auth/issues/11069)) ([1ff8b83](https://github.com/dynamic-labs/dynamic-auth/commit/1ff8b83f9c7ba077c586513a250f6aed114e4b07))
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * **solana-core,sui-core:** prevent RangeError on send balance ([#11071](https://github.com/dynamic-labs/dynamic-auth/issues/11071)) ([21f5f97](https://github.com/dynamic-labs/dynamic-auth/commit/21f5f9724c788053774ce5eaa19f073af9a33d27))
13
+
14
+ ### [4.78.1](https://github.com/dynamic-labs/dynamic-auth/compare/v4.78.0...v4.78.1) (2026-04-29)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **ci:** do not fail on heroku check ([#11054](https://github.com/dynamic-labs/dynamic-auth/issues/11054)) ([fa92c8d](https://github.com/dynamic-labs/dynamic-auth/commit/fa92c8d3770f17802a3d3c4b28fbd72595eff78e))
20
+ * **demo-v2:** gate step-up sign on the actual signing connector (covers ZeroDev over WaaS) ([#11021](https://github.com/dynamic-labs/dynamic-auth/issues/11021)) ([2d7df88](https://github.com/dynamic-labs/dynamic-auth/commit/2d7df884f28013fe53b2f331a6d0f625a0313ff4))
21
+ * remediate high-severity dependency vulnerabilities ([#11039](https://github.com/dynamic-labs/dynamic-auth/issues/11039)) ([55315d9](https://github.com/dynamic-labs/dynamic-auth/commit/55315d92d2b956259b454b888db55bf552e16348)), closes [#498](https://github.com/dynamic-labs/dynamic-auth/issues/498) [#499](https://github.com/dynamic-labs/dynamic-auth/issues/499) [#538](https://github.com/dynamic-labs/dynamic-auth/issues/538) [#256](https://github.com/dynamic-labs/dynamic-auth/issues/256) [#132](https://github.com/dynamic-labs/dynamic-auth/issues/132) [#132](https://github.com/dynamic-labs/dynamic-auth/issues/132) [#11011](https://github.com/dynamic-labs/dynamic-auth/issues/11011) [#10991](https://github.com/dynamic-labs/dynamic-auth/issues/10991)
22
+ * remediate high-severity dependency vulnerabilities ([#11060](https://github.com/dynamic-labs/dynamic-auth/issues/11060)) ([514b8d6](https://github.com/dynamic-labs/dynamic-auth/commit/514b8d60d1436c765388c3a93877c562a6e6b105))
23
+
2
24
  ## [4.78.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.77.4...v4.78.0) (2026-04-22)
3
25
 
4
26
 
package/package.cjs CHANGED
@@ -3,11 +3,11 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "4.78.0";
6
+ var version = "4.79.0";
7
7
  var dependencies = {
8
- "@dynamic-labs/sdk-api-core": "0.0.927",
9
- "@dynamic-labs-sdk/client": "0.24.0",
10
- "@dynamic-labs-wallet/browser-wallet-client": "0.0.314",
8
+ "@dynamic-labs/sdk-api-core": "0.0.956",
9
+ "@dynamic-labs-sdk/client": "0.26.2",
10
+ "@dynamic-labs-wallet/browser-wallet-client": "0.0.325",
11
11
  "@hcaptcha/react-hcaptcha": "1.4.4",
12
12
  "@thumbmarkjs/thumbmarkjs": "0.16.0",
13
13
  "country-list": "2.3.0",
package/package.js CHANGED
@@ -1,9 +1,9 @@
1
1
  'use client'
2
- var version = "4.78.0";
2
+ var version = "4.79.0";
3
3
  var dependencies = {
4
- "@dynamic-labs/sdk-api-core": "0.0.927",
5
- "@dynamic-labs-sdk/client": "0.24.0",
6
- "@dynamic-labs-wallet/browser-wallet-client": "0.0.314",
4
+ "@dynamic-labs/sdk-api-core": "0.0.956",
5
+ "@dynamic-labs-sdk/client": "0.26.2",
6
+ "@dynamic-labs-wallet/browser-wallet-client": "0.0.325",
7
7
  "@hcaptcha/react-hcaptcha": "1.4.4",
8
8
  "@thumbmarkjs/thumbmarkjs": "0.16.0",
9
9
  "country-list": "2.3.0",
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@dynamic-labs/sdk-react-core",
3
- "version": "4.78.0",
3
+ "version": "4.79.0",
4
4
  "dependencies": {
5
- "@dynamic-labs/sdk-api-core": "0.0.927",
6
- "@dynamic-labs-sdk/client": "0.24.0",
7
- "@dynamic-labs-wallet/browser-wallet-client": "0.0.314",
5
+ "@dynamic-labs/sdk-api-core": "0.0.956",
6
+ "@dynamic-labs-sdk/client": "0.26.2",
7
+ "@dynamic-labs-wallet/browser-wallet-client": "0.0.325",
8
8
  "@hcaptcha/react-hcaptcha": "1.4.4",
9
9
  "@thumbmarkjs/thumbmarkjs": "0.16.0",
10
10
  "country-list": "2.3.0",
@@ -16,17 +16,17 @@
16
16
  "yup": "0.32.11",
17
17
  "react-international-phone": "4.5.0",
18
18
  "bs58": "5.0.0",
19
- "@dynamic-labs/assert-package-version": "4.78.0",
20
- "@dynamic-labs/iconic": "4.78.0",
21
- "@dynamic-labs/locale": "4.78.0",
22
- "@dynamic-labs/logger": "4.78.0",
23
- "@dynamic-labs/multi-wallet": "4.78.0",
24
- "@dynamic-labs/rpc-providers": "4.78.0",
25
- "@dynamic-labs/store": "4.78.0",
26
- "@dynamic-labs/types": "4.78.0",
27
- "@dynamic-labs/utils": "4.78.0",
28
- "@dynamic-labs/wallet-book": "4.78.0",
29
- "@dynamic-labs/wallet-connector-core": "4.78.0",
19
+ "@dynamic-labs/assert-package-version": "4.79.0",
20
+ "@dynamic-labs/iconic": "4.79.0",
21
+ "@dynamic-labs/locale": "4.79.0",
22
+ "@dynamic-labs/logger": "4.79.0",
23
+ "@dynamic-labs/multi-wallet": "4.79.0",
24
+ "@dynamic-labs/rpc-providers": "4.79.0",
25
+ "@dynamic-labs/store": "4.79.0",
26
+ "@dynamic-labs/types": "4.79.0",
27
+ "@dynamic-labs/utils": "4.79.0",
28
+ "@dynamic-labs/wallet-book": "4.79.0",
29
+ "@dynamic-labs/wallet-connector-core": "4.79.0",
30
30
  "eventemitter3": "5.0.1"
31
31
  },
32
32
  "devDependencies": {
package/src/index.cjs CHANGED
@@ -53,10 +53,10 @@ require('./lib/utils/constants/colors.cjs');
53
53
  require('./lib/utils/constants/values.cjs');
54
54
  var sdkApiCore = require('@dynamic-labs/sdk-api-core');
55
55
  require('@dynamic-labs/wallet-connector-core');
56
+ require('./lib/shared/logger.cjs');
56
57
  var useLocalStorage = require('./lib/shared/utils/hooks/useLocalStorage/useLocalStorage.cjs');
57
58
  var index$1 = require('./lib/shared/utils/hooks/useOnClickOutside/index.cjs');
58
59
  require('./lib/shared/consts/index.cjs');
59
- require('./lib/shared/logger.cjs');
60
60
  require('./lib/components/Alert/Alert.cjs');
61
61
  var useDynamicEvents = require('./lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.cjs');
62
62
  var useWalletConnectorEvent = require('./lib/utils/hooks/events/useWalletConnectorEvent/useWalletConnectorEvent.cjs');
@@ -138,6 +138,8 @@ require('./lib/widgets/DynamicWidget/components/PasskeyCard/PasskeyCard.cjs');
138
138
  var useEmbeddedReveal = require('./lib/utils/hooks/useEmbeddedReveal/useEmbeddedReveal.cjs');
139
139
  var useWalletBackup = require('./lib/utils/hooks/useWalletBackup/useWalletBackup.cjs');
140
140
  var types = require('./lib/utils/hooks/useWalletBackup/types.cjs');
141
+ var googleDriveScopes = require('./lib/utils/hooks/useWalletBackup/googleDriveScopes.cjs');
142
+ var googleDriveBackupErrors = require('./lib/utils/hooks/useWalletBackup/googleDriveBackupErrors.cjs');
141
143
  var useEmbeddedWalletAuthenticator = require('./lib/utils/hooks/useEmbeddedWalletAuthenticator/useEmbeddedWalletAuthenticator.cjs');
142
144
  require('./lib/utils/hooks/useWalletBackup/cloudProviders.cjs');
143
145
  require('./lib/widgets/DynamicWidget/views/CryptoComOnramp/CryptoComOnramp.cjs');
@@ -188,6 +190,7 @@ var useGetUserMfaMethods = require('./lib/utils/hooks/useGetUserMfaMethods/useGe
188
190
  var usePromptMfaAuth = require('./lib/utils/hooks/usePromptMfaAuth/usePromptMfaAuth.cjs');
189
191
  var useUpgradeToDynamicWaasFlow = require('./lib/utils/hooks/useUpgradeToDynamicWaasFlow/useUpgradeToDynamicWaasFlow.cjs');
190
192
  var useIsMfaRequiredForAction = require('./lib/utils/hooks/useIsMfaRequiredForAction/useIsMfaRequiredForAction.cjs');
193
+ var useGoogleDriveBackupReadiness = require('./lib/utils/hooks/useGoogleDriveBackupReadiness/useGoogleDriveBackupReadiness.cjs');
191
194
  var useRefreshAuth = require('./lib/utils/hooks/useRefreshAuth/useRefreshAuth.cjs');
192
195
  var useWalletPassword = require('./lib/utils/hooks/useWalletPassword/useWalletPassword.cjs');
193
196
  var useGetWalletPassword = require('./lib/utils/hooks/useGetWalletPassword/useGetWalletPassword.cjs');
@@ -304,6 +307,10 @@ exports.isWalletBackedUp = useWalletBackup.isWalletBackedUp;
304
307
  exports.useBackupWallets = useWalletBackup.useBackupWallets;
305
308
  exports.useWalletBackup = useWalletBackup.useWalletBackup;
306
309
  exports.CloudBackupProvider = types.CloudBackupProvider;
310
+ exports.GOOGLE_DRIVE_BACKUP_REQUIRED_SCOPES = googleDriveScopes.GOOGLE_DRIVE_BACKUP_REQUIRED_SCOPES;
311
+ exports.findMissingGoogleDriveBackupScopes = googleDriveScopes.findMissingGoogleDriveBackupScopes;
312
+ exports.hasAllGoogleDriveBackupScopes = googleDriveScopes.hasAllGoogleDriveBackupScopes;
313
+ exports.isInsufficientGoogleDriveScopesError = googleDriveBackupErrors.isInsufficientGoogleDriveScopesError;
307
314
  exports.useEmbeddedWalletAuthenticator = useEmbeddedWalletAuthenticator.useEmbeddedWalletAuthenticator;
308
315
  exports.FilterAndSortWallets = index$2.FilterAndSortWallets;
309
316
  exports.FilterBridgeChainsName = index$2.FilterBridgeChainsName;
@@ -354,6 +361,7 @@ exports.useGetUserMfaMethods = useGetUserMfaMethods.useGetUserMfaMethods;
354
361
  exports.usePromptMfaAuth = usePromptMfaAuth.usePromptMfaAuth;
355
362
  exports.useUpgradeToDynamicWaasFlow = useUpgradeToDynamicWaasFlow.useUpgradeToDynamicWaasFlow;
356
363
  exports.useIsMfaRequiredForAction = useIsMfaRequiredForAction.useIsMfaRequiredForAction;
364
+ exports.useGoogleDriveBackupReadiness = useGoogleDriveBackupReadiness.useGoogleDriveBackupReadiness;
357
365
  exports.useRefreshAuth = useRefreshAuth.useRefreshAuth;
358
366
  exports.useWalletPassword = useWalletPassword.useWalletPassword;
359
367
  exports.useGetWalletPassword = useGetWalletPassword.useGetWalletPassword;
package/src/index.d.ts CHANGED
@@ -123,7 +123,8 @@ export { FilterAndSortWallets, FilterBridgeChainsName, FilterChain, FilterWallet
123
123
  export {
124
124
  /** @deprecated */
125
125
  DynamicWidgetContextProvider, } from './lib/widgets/DynamicWidget/context';
126
- export { useWalletItemActions, useAuthenticateConnectedUser, useSocialAccounts, useEmbeddedWallet, useEmbeddedWalletAuthenticator, usePasskeyRecovery, useEmbeddedReveal, useIsLoggedIn, useDynamicModals, useMfa, useTokenBalances, useMultichainTokenBalances, useSwitchWallet, useRpcProviders, useRefreshUser, useRefreshAuth, useResetWaasSession, useWalletOptions, useSmartWallets, useSignEip7702Authorization, EmbeddedWalletVersion, useTelegramLogin, useUpgradeEmbeddedWallet, useEVMTransactionSimulation, useSVMTransactionSimulation, useDeleteUserAccount, useDynamicWaas, useGetPasskeys, useDeletePasskey, useRegisterPasskey, useAuthenticatePasskeyMFA, useGetUserMfaMethods, usePromptMfaAuth, useUpgradeToDynamicWaasFlow, useGetMfaToken, useGetWalletPassword, useWalletPassword, useIsMfaRequiredForAction, useWalletDelegation, useWalletBackup, useBackupWallets, isWalletBackedUp, CloudBackupProvider, useExchangeAccounts, useStepUpAuthentication, } from './lib/utils/hooks';
126
+ export { useWalletItemActions, useAuthenticateConnectedUser, useSocialAccounts, useEmbeddedWallet, useEmbeddedWalletAuthenticator, usePasskeyRecovery, useEmbeddedReveal, useIsLoggedIn, useDynamicModals, useMfa, useTokenBalances, useMultichainTokenBalances, useSwitchWallet, useRpcProviders, useRefreshUser, useRefreshAuth, useResetWaasSession, useWalletOptions, useSmartWallets, useSignEip7702Authorization, EmbeddedWalletVersion, useTelegramLogin, useUpgradeEmbeddedWallet, useEVMTransactionSimulation, useSVMTransactionSimulation, useDeleteUserAccount, useDynamicWaas, useGetPasskeys, useDeletePasskey, useRegisterPasskey, useAuthenticatePasskeyMFA, useGetUserMfaMethods, usePromptMfaAuth, useUpgradeToDynamicWaasFlow, useGetMfaToken, useGetWalletPassword, useWalletPassword, useIsMfaRequiredForAction, useWalletDelegation, useWalletBackup, useBackupWallets, isWalletBackedUp, CloudBackupProvider, GOOGLE_DRIVE_BACKUP_REQUIRED_SCOPES, findMissingGoogleDriveBackupScopes, hasAllGoogleDriveBackupScopes, isInsufficientGoogleDriveScopesError, useGoogleDriveBackupReadiness, useExchangeAccounts, useStepUpAuthentication, } from './lib/utils/hooks';
127
+ export type { GoogleDriveBackupAccessError, GoogleDriveBackupReadiness, GoogleDriveBackupReadinessStatus, UseGoogleDriveBackupReadinessReturn, } from './lib/utils/hooks';
127
128
  export type { IsStepUpRequiredParams, PromptMfaParams, StepUpAuthenticationState, UseStepUpAuthenticationParams, UseStepUpAuthenticationReturn, VerifyOtpParams, VerifyPasskeyMfaParams, VerifyRecoveryCodeParams, VerifySocialParams, VerifyTotpMfaParams, VerifyWalletParams, } from './lib/utils/hooks';
128
129
  export {
129
130
  /** @deprecated use useOnramp instead */
package/src/index.js CHANGED
@@ -49,10 +49,10 @@ import './lib/utils/constants/colors.js';
49
49
  import './lib/utils/constants/values.js';
50
50
  export { ChainEnum, DynamicJwtFromJSON, MFAAction } from '@dynamic-labs/sdk-api-core';
51
51
  import '@dynamic-labs/wallet-connector-core';
52
+ import './lib/shared/logger.js';
52
53
  export { useLocalStorage } from './lib/shared/utils/hooks/useLocalStorage/useLocalStorage.js';
53
54
  export { useOnClickOutside } from './lib/shared/utils/hooks/useOnClickOutside/index.js';
54
55
  import './lib/shared/consts/index.js';
55
- import './lib/shared/logger.js';
56
56
  import './lib/components/Alert/Alert.js';
57
57
  export { useDynamicEvents } from './lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.js';
58
58
  export { useWalletConnectorEvent } from './lib/utils/hooks/events/useWalletConnectorEvent/useWalletConnectorEvent.js';
@@ -134,6 +134,8 @@ import './lib/widgets/DynamicWidget/components/PasskeyCard/PasskeyCard.js';
134
134
  export { useEmbeddedReveal } from './lib/utils/hooks/useEmbeddedReveal/useEmbeddedReveal.js';
135
135
  export { isWalletBackedUp, useBackupWallets, useWalletBackup } from './lib/utils/hooks/useWalletBackup/useWalletBackup.js';
136
136
  export { CloudBackupProvider } from './lib/utils/hooks/useWalletBackup/types.js';
137
+ export { GOOGLE_DRIVE_BACKUP_REQUIRED_SCOPES, findMissingGoogleDriveBackupScopes, hasAllGoogleDriveBackupScopes } from './lib/utils/hooks/useWalletBackup/googleDriveScopes.js';
138
+ export { isInsufficientGoogleDriveScopesError } from './lib/utils/hooks/useWalletBackup/googleDriveBackupErrors.js';
137
139
  export { useEmbeddedWalletAuthenticator } from './lib/utils/hooks/useEmbeddedWalletAuthenticator/useEmbeddedWalletAuthenticator.js';
138
140
  import './lib/utils/hooks/useWalletBackup/cloudProviders.js';
139
141
  import './lib/widgets/DynamicWidget/views/CryptoComOnramp/CryptoComOnramp.js';
@@ -184,6 +186,7 @@ export { useGetUserMfaMethods } from './lib/utils/hooks/useGetUserMfaMethods/use
184
186
  export { usePromptMfaAuth } from './lib/utils/hooks/usePromptMfaAuth/usePromptMfaAuth.js';
185
187
  export { useUpgradeToDynamicWaasFlow } from './lib/utils/hooks/useUpgradeToDynamicWaasFlow/useUpgradeToDynamicWaasFlow.js';
186
188
  export { useIsMfaRequiredForAction } from './lib/utils/hooks/useIsMfaRequiredForAction/useIsMfaRequiredForAction.js';
189
+ export { useGoogleDriveBackupReadiness } from './lib/utils/hooks/useGoogleDriveBackupReadiness/useGoogleDriveBackupReadiness.js';
187
190
  export { useRefreshAuth } from './lib/utils/hooks/useRefreshAuth/useRefreshAuth.js';
188
191
  export { useWalletPassword } from './lib/utils/hooks/useWalletPassword/useWalletPassword.js';
189
192
  export { useGetWalletPassword } from './lib/utils/hooks/useGetWalletPassword/useGetWalletPassword.js';
@@ -56,14 +56,14 @@ const ErrorContextProvider = ({ children }) => {
56
56
  setError('Something went wrong. Please try again.', utils.ErrorCode.DEFAULT);
57
57
  }, [setError]);
58
58
  /** @deprecated Prefer setError with a translation key instead */
59
- const setErrorMessage = React.useCallback((status, error) => {
59
+ const setErrorMessage = React.useCallback((status, error, source) => {
60
60
  const mappedMessage = errorMessageMap[status];
61
61
  if (!mappedMessage) {
62
62
  logger.logger.instrument(FALLBACK_ERROR_LOG_EVENT, {
63
63
  error: error instanceof Error ? error.message : undefined,
64
64
  errorCode: status,
65
65
  key: FALLBACK_ERROR_LOG_EVENT,
66
- source: 'setErrorMessage',
66
+ source: source !== null && source !== void 0 ? source : 'setErrorMessage',
67
67
  time: 0,
68
68
  });
69
69
  }
@@ -4,7 +4,7 @@ interface ErrorContextProps {
4
4
  error: string | undefined;
5
5
  errorCode: ErrorCode | string | undefined;
6
6
  setError(error: string | undefined, errorCode?: ErrorCode | string): void;
7
- setErrorMessage: (status: string, error?: unknown) => void;
7
+ setErrorMessage: (status: string, error?: unknown, source?: string) => void;
8
8
  setDefaultError: (error?: unknown) => void;
9
9
  clearError(): void;
10
10
  }
@@ -52,14 +52,14 @@ const ErrorContextProvider = ({ children }) => {
52
52
  setError('Something went wrong. Please try again.', ErrorCode.DEFAULT);
53
53
  }, [setError]);
54
54
  /** @deprecated Prefer setError with a translation key instead */
55
- const setErrorMessage = useCallback((status, error) => {
55
+ const setErrorMessage = useCallback((status, error, source) => {
56
56
  const mappedMessage = errorMessageMap[status];
57
57
  if (!mappedMessage) {
58
58
  logger.instrument(FALLBACK_ERROR_LOG_EVENT, {
59
59
  error: error instanceof Error ? error.message : undefined,
60
60
  errorCode: status,
61
61
  key: FALLBACK_ERROR_LOG_EVENT,
62
- source: 'setErrorMessage',
62
+ source: source !== null && source !== void 0 ? source : 'setErrorMessage',
63
63
  time: 0,
64
64
  });
65
65
  }
@@ -20,6 +20,7 @@ require('@dynamic-labs/wallet-book');
20
20
  require('../../utils/constants/colors.cjs');
21
21
  require('../../utils/constants/values.cjs');
22
22
  require('@dynamic-labs/sdk-api-core');
23
+ var instrumentAuthLoginFailed = require('../../shared/utils/functions/instrumentAuthLoginFailed/instrumentAuthLoginFailed.cjs');
23
24
  require('../../shared/consts/index.cjs');
24
25
  require('../../store/state/authMode/authMode.cjs');
25
26
  var useInternalDynamicContext = require('../DynamicContext/useDynamicContext/useInternalDynamicContext/useInternalDynamicContext.cjs');
@@ -373,7 +374,8 @@ const useResponseHandlers = () => {
373
374
  logger.logger.logVerboseTroubleshootingMessage('[PhantomRedirect handleErrorResponse] no errorCode');
374
375
  return;
375
376
  }
376
- setErrorMessage(errorCode);
377
+ instrumentAuthLoginFailed.instrumentAuthLoginFailed({ code: errorCode, message: errorMessage }, { authOrigin: 'phantom-redirect' });
378
+ setErrorMessage(errorCode, undefined, 'phantom-redirect');
377
379
  const method = phantomRedirectConnector.consumeMethod();
378
380
  logger.logger.logVerboseTroubleshootingMessage('[PhantomRedirect handleErrorResponse] consumed method, emitting error', { errorCode, errorMessage, method });
379
381
  switch (method) {
@@ -16,6 +16,7 @@ import '@dynamic-labs/wallet-book';
16
16
  import '../../utils/constants/colors.js';
17
17
  import '../../utils/constants/values.js';
18
18
  import '@dynamic-labs/sdk-api-core';
19
+ import { instrumentAuthLoginFailed } from '../../shared/utils/functions/instrumentAuthLoginFailed/instrumentAuthLoginFailed.js';
19
20
  import '../../shared/consts/index.js';
20
21
  import '../../store/state/authMode/authMode.js';
21
22
  import { useInternalDynamicContext } from '../DynamicContext/useDynamicContext/useInternalDynamicContext/useInternalDynamicContext.js';
@@ -369,7 +370,8 @@ const useResponseHandlers = () => {
369
370
  logger.logVerboseTroubleshootingMessage('[PhantomRedirect handleErrorResponse] no errorCode');
370
371
  return;
371
372
  }
372
- setErrorMessage(errorCode);
373
+ instrumentAuthLoginFailed({ code: errorCode, message: errorMessage }, { authOrigin: 'phantom-redirect' });
374
+ setErrorMessage(errorCode, undefined, 'phantom-redirect');
373
375
  const method = phantomRedirectConnector.consumeMethod();
374
376
  logger.logVerboseTroubleshootingMessage('[PhantomRedirect handleErrorResponse] consumed method, emitting error', { errorCode, errorMessage, method });
375
377
  switch (method) {
@@ -9,12 +9,13 @@ var React = require('react');
9
9
  var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
10
10
  require('@dynamic-labs/iconic');
11
11
  var ViewContext = require('../ViewContext/ViewContext.cjs');
12
- var logger = require('../../shared/logger.cjs');
12
+ require('../../shared/logger.cjs');
13
13
  require('@dynamic-labs/wallet-book');
14
14
  require('@dynamic-labs/utils');
15
15
  require('../../utils/constants/colors.cjs');
16
16
  require('../../utils/constants/values.cjs');
17
17
  require('@dynamic-labs/sdk-api-core');
18
+ var instrumentAuthLoginFailed = require('../../shared/utils/functions/instrumentAuthLoginFailed/instrumentAuthLoginFailed.cjs');
18
19
  require('../../shared/consts/index.cjs');
19
20
  require('@dynamic-labs/multi-wallet');
20
21
  require('react-international-phone');
@@ -144,8 +145,8 @@ const SocialRedirectContextProvider = ({ children, }) => {
144
145
  const socialAccount = React.useMemo(() => (wallet ? getReferencedAccount.getReferencedAccount(user, wallet.id) : undefined), [user, wallet]);
145
146
  // added to make sure to reset the social provider on logout
146
147
  useDynamicEvents.useInternalDynamicEvents('logout', () => setSocialProvider(undefined));
147
- const handleError = React.useCallback((message) => {
148
- logger.logger.error(message);
148
+ const handleError = React.useCallback((message, provider) => {
149
+ instrumentAuthLoginFailed.instrumentAuthLoginFailed({ message }, { authOrigin: 'social-redirect', provider });
149
150
  if (user) {
150
151
  setShowAuthFlow(false, { emitCancelAuth: true });
151
152
  setShowDynamicUserProfile(true);
@@ -153,7 +154,7 @@ const SocialRedirectContextProvider = ({ children, }) => {
153
154
  else {
154
155
  setShowAuthFlow(true);
155
156
  clearStackAndPush('wallet-list');
156
- setErrorMessage('-1');
157
+ setErrorMessage('-1', undefined, 'social-redirect');
157
158
  }
158
159
  }, [
159
160
  user,
@@ -177,7 +178,7 @@ const SocialRedirectContextProvider = ({ children, }) => {
177
178
  const params = new URLSearchParams(window.location.search);
178
179
  if (params.has('error') && params.has('provider')) {
179
180
  const errorDescription = params.get('error_description');
180
- handleError(errorDescription !== null && errorDescription !== void 0 ? errorDescription : 'Unknown error');
181
+ handleError(errorDescription !== null && errorDescription !== void 0 ? errorDescription : 'Unknown error', params.get('provider'));
181
182
  // calling this to clear the relevant query params
182
183
  (_a = socialWalletConnector.getSession) === null || _a === void 0 ? void 0 : _a.call(socialWalletConnector);
183
184
  return;
@@ -260,7 +261,7 @@ const SocialRedirectContextProvider = ({ children, }) => {
260
261
  })).catch((error) => {
261
262
  setSocialProvider(undefined);
262
263
  setRedirectStatus('error');
263
- handleError(error);
264
+ handleError(error, providerFromParams);
264
265
  });
265
266
  }
266
267
  }, [
@@ -5,12 +5,13 @@ import { createContext, useContext, useState, useMemo, useCallback, useEffect }
5
5
  import { isSocialWalletConnector } from '@dynamic-labs/wallet-connector-core';
6
6
  import '@dynamic-labs/iconic';
7
7
  import { useViewContext } from '../ViewContext/ViewContext.js';
8
- import { logger } from '../../shared/logger.js';
8
+ import '../../shared/logger.js';
9
9
  import '@dynamic-labs/wallet-book';
10
10
  import '@dynamic-labs/utils';
11
11
  import '../../utils/constants/colors.js';
12
12
  import '../../utils/constants/values.js';
13
13
  import '@dynamic-labs/sdk-api-core';
14
+ import { instrumentAuthLoginFailed } from '../../shared/utils/functions/instrumentAuthLoginFailed/instrumentAuthLoginFailed.js';
14
15
  import '../../shared/consts/index.js';
15
16
  import '@dynamic-labs/multi-wallet';
16
17
  import 'react-international-phone';
@@ -140,8 +141,8 @@ const SocialRedirectContextProvider = ({ children, }) => {
140
141
  const socialAccount = useMemo(() => (wallet ? getReferencedAccount(user, wallet.id) : undefined), [user, wallet]);
141
142
  // added to make sure to reset the social provider on logout
142
143
  useInternalDynamicEvents('logout', () => setSocialProvider(undefined));
143
- const handleError = useCallback((message) => {
144
- logger.error(message);
144
+ const handleError = useCallback((message, provider) => {
145
+ instrumentAuthLoginFailed({ message }, { authOrigin: 'social-redirect', provider });
145
146
  if (user) {
146
147
  setShowAuthFlow(false, { emitCancelAuth: true });
147
148
  setShowDynamicUserProfile(true);
@@ -149,7 +150,7 @@ const SocialRedirectContextProvider = ({ children, }) => {
149
150
  else {
150
151
  setShowAuthFlow(true);
151
152
  clearStackAndPush('wallet-list');
152
- setErrorMessage('-1');
153
+ setErrorMessage('-1', undefined, 'social-redirect');
153
154
  }
154
155
  }, [
155
156
  user,
@@ -173,7 +174,7 @@ const SocialRedirectContextProvider = ({ children, }) => {
173
174
  const params = new URLSearchParams(window.location.search);
174
175
  if (params.has('error') && params.has('provider')) {
175
176
  const errorDescription = params.get('error_description');
176
- handleError(errorDescription !== null && errorDescription !== void 0 ? errorDescription : 'Unknown error');
177
+ handleError(errorDescription !== null && errorDescription !== void 0 ? errorDescription : 'Unknown error', params.get('provider'));
177
178
  // calling this to clear the relevant query params
178
179
  (_a = socialWalletConnector.getSession) === null || _a === void 0 ? void 0 : _a.call(socialWalletConnector);
179
180
  return;
@@ -256,7 +257,7 @@ const SocialRedirectContextProvider = ({ children, }) => {
256
257
  })).catch((error) => {
257
258
  setSocialProvider(undefined);
258
259
  setRedirectStatus('error');
259
- handleError(error);
260
+ handleError(error, providerFromParams);
260
261
  });
261
262
  }
262
263
  }, [
@@ -11,3 +11,4 @@ export * from './providerLabel';
11
11
  export * from './usingSessionKeys';
12
12
  export * from './hasPendingMfaAction';
13
13
  export * from './hasPendingRequirements';
14
+ export * from './instrumentAuthLoginFailed';
@@ -0,0 +1,2 @@
1
+ export { instrumentAuthLoginFailed } from './instrumentAuthLoginFailed';
2
+ export type { AuthLoginFailedContext, AuthOrigin, } from './instrumentAuthLoginFailed';
@@ -0,0 +1,17 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var logger = require('../../../logger.cjs');
7
+
8
+ const instrumentAuthLoginFailed = (err, context) => {
9
+ const errLike = err;
10
+ const message = typeof (errLike === null || errLike === void 0 ? void 0 : errLike.message) === 'string' ? errLike.message : undefined;
11
+ const code = (errLike === null || errLike === void 0 ? void 0 : errLike.code) !== undefined && errLike.code !== null
12
+ ? String(errLike.code)
13
+ : undefined;
14
+ logger.logger.instrument('auth.login_failed', Object.assign({ error: err instanceof Error ? err.message : message, errorCode: code !== null && code !== void 0 ? code : 'unknown', errorMessage: message, key: 'auth.login_failed', time: 0 }, context));
15
+ };
16
+
17
+ exports.instrumentAuthLoginFailed = instrumentAuthLoginFailed;
@@ -0,0 +1,7 @@
1
+ export type AuthOrigin = 'connect-and-sign' | 'connect-and-sign-split-steps' | 'email-verification' | 'phantom-redirect' | 'social-auth' | 'social-redirect' | 'user-auth' | 'wallet-verify';
2
+ export type AuthLoginFailedContext = {
3
+ authOrigin: AuthOrigin;
4
+ provider?: string;
5
+ stage?: 'connect' | 'verify';
6
+ };
7
+ export declare const instrumentAuthLoginFailed: (err: unknown, context: AuthLoginFailedContext) => void;
@@ -0,0 +1,13 @@
1
+ 'use client'
2
+ import { logger } from '../../../logger.js';
3
+
4
+ const instrumentAuthLoginFailed = (err, context) => {
5
+ const errLike = err;
6
+ const message = typeof (errLike === null || errLike === void 0 ? void 0 : errLike.message) === 'string' ? errLike.message : undefined;
7
+ const code = (errLike === null || errLike === void 0 ? void 0 : errLike.code) !== undefined && errLike.code !== null
8
+ ? String(errLike.code)
9
+ : undefined;
10
+ logger.instrument('auth.login_failed', Object.assign({ error: err instanceof Error ? err.message : message, errorCode: code !== null && code !== void 0 ? code : 'unknown', errorMessage: message, key: 'auth.login_failed', time: 0 }, context));
11
+ };
12
+
13
+ export { instrumentAuthLoginFailed };
@@ -19,6 +19,7 @@ var localStorage = require('../../../constants/localStorage.cjs');
19
19
  require('../../../constants/colors.cjs');
20
20
  require('../../../constants/values.cjs');
21
21
  require('@dynamic-labs/sdk-api-core');
22
+ var instrumentAuthLoginFailed = require('../../../../shared/utils/functions/instrumentAuthLoginFailed/instrumentAuthLoginFailed.cjs');
22
23
  require('../../../../shared/consts/index.cjs');
23
24
  var dynamicEvents = require('../../../../events/dynamicEvents.cjs');
24
25
  var ErrorContext = require('../../../../context/ErrorContext/ErrorContext.cjs');
@@ -152,18 +153,26 @@ const useConnectAndSign = ({ shouldUpdateWallets = true, shouldCallCallback = tr
152
153
  const userCancelled = (err === null || err === void 0 ? void 0 : err.code) === 'user-cancelled';
153
154
  if (!userCancelled)
154
155
  logger.logger.debug(err);
156
+ instrumentAuthLoginFailed.instrumentAuthLoginFailed(err, {
157
+ authOrigin: 'connect-and-sign',
158
+ stage: 'verify',
159
+ });
155
160
  clearStackAndPushInitialView();
156
161
  if (err instanceof utils.CustomError) {
157
162
  setError(err.message, err.code);
158
163
  }
159
164
  else {
160
- setErrorMessage((_a = err === null || err === void 0 ? void 0 : err.code) === null || _a === void 0 ? void 0 : _a.toString(), err);
165
+ setErrorMessage((_a = err === null || err === void 0 ? void 0 : err.code) === null || _a === void 0 ? void 0 : _a.toString(), err, 'connect-and-sign:verify');
161
166
  }
162
167
  };
163
168
  const handleWalletConnectionError = (error) => {
164
169
  if (error instanceof utils.GetAddressCancelledError) {
165
170
  return;
166
171
  }
172
+ instrumentAuthLoginFailed.instrumentAuthLoginFailed(error, {
173
+ authOrigin: 'connect-and-sign',
174
+ stage: 'connect',
175
+ });
167
176
  clearStackAndPushInitialView();
168
177
  if (error instanceof utils.CustomError) {
169
178
  setError(error.message, error.code);
@@ -15,6 +15,7 @@ import { LAST_USED_WALLET } from '../../../constants/localStorage.js';
15
15
  import '../../../constants/colors.js';
16
16
  import '../../../constants/values.js';
17
17
  import '@dynamic-labs/sdk-api-core';
18
+ import { instrumentAuthLoginFailed } from '../../../../shared/utils/functions/instrumentAuthLoginFailed/instrumentAuthLoginFailed.js';
18
19
  import '../../../../shared/consts/index.js';
19
20
  import { dynamicEvents } from '../../../../events/dynamicEvents.js';
20
21
  import { useErrorContext } from '../../../../context/ErrorContext/ErrorContext.js';
@@ -148,18 +149,26 @@ const useConnectAndSign = ({ shouldUpdateWallets = true, shouldCallCallback = tr
148
149
  const userCancelled = (err === null || err === void 0 ? void 0 : err.code) === 'user-cancelled';
149
150
  if (!userCancelled)
150
151
  logger.debug(err);
152
+ instrumentAuthLoginFailed(err, {
153
+ authOrigin: 'connect-and-sign',
154
+ stage: 'verify',
155
+ });
151
156
  clearStackAndPushInitialView();
152
157
  if (err instanceof CustomError) {
153
158
  setError(err.message, err.code);
154
159
  }
155
160
  else {
156
- setErrorMessage((_a = err === null || err === void 0 ? void 0 : err.code) === null || _a === void 0 ? void 0 : _a.toString(), err);
161
+ setErrorMessage((_a = err === null || err === void 0 ? void 0 : err.code) === null || _a === void 0 ? void 0 : _a.toString(), err, 'connect-and-sign:verify');
157
162
  }
158
163
  };
159
164
  const handleWalletConnectionError = (error) => {
160
165
  if (error instanceof GetAddressCancelledError) {
161
166
  return;
162
167
  }
168
+ instrumentAuthLoginFailed(error, {
169
+ authOrigin: 'connect-and-sign',
170
+ stage: 'connect',
171
+ });
163
172
  clearStackAndPushInitialView();
164
173
  if (error instanceof CustomError) {
165
174
  setError(error.message, error.code);
@@ -19,6 +19,7 @@ var localStorage = require('../../../constants/localStorage.cjs');
19
19
  require('../../../constants/colors.cjs');
20
20
  require('../../../constants/values.cjs');
21
21
  require('@dynamic-labs/sdk-api-core');
22
+ var instrumentAuthLoginFailed = require('../../../../shared/utils/functions/instrumentAuthLoginFailed/instrumentAuthLoginFailed.cjs');
22
23
  require('../../../../shared/consts/index.cjs');
23
24
  require('../../../../events/dynamicEvents.cjs');
24
25
  var ErrorContext = require('../../../../context/ErrorContext/ErrorContext.cjs');
@@ -139,8 +140,11 @@ const useConnectAndSignSplitSteps = () => {
139
140
  */
140
141
  if (err instanceof utils.MissingPublicAddressError && utils.isMobile())
141
142
  return;
143
+ instrumentAuthLoginFailed.instrumentAuthLoginFailed(err, {
144
+ authOrigin: 'connect-and-sign-split-steps',
145
+ });
142
146
  clearStackAndPushInitialView();
143
- setErrorMessage((_a = err.code) !== null && _a !== void 0 ? _a : err.toString());
147
+ setErrorMessage((_a = err.code) !== null && _a !== void 0 ? _a : err.toString(), err, 'connect-and-sign-split-steps');
144
148
  };
145
149
  // This method is similar to useConnectAndSign, but it skips signing for now
146
150
  // It's used when we want to connect and sign in two separate steps
@@ -15,6 +15,7 @@ import { LAST_USED_WALLET } from '../../../constants/localStorage.js';
15
15
  import '../../../constants/colors.js';
16
16
  import '../../../constants/values.js';
17
17
  import '@dynamic-labs/sdk-api-core';
18
+ import { instrumentAuthLoginFailed } from '../../../../shared/utils/functions/instrumentAuthLoginFailed/instrumentAuthLoginFailed.js';
18
19
  import '../../../../shared/consts/index.js';
19
20
  import '../../../../events/dynamicEvents.js';
20
21
  import { useErrorContext } from '../../../../context/ErrorContext/ErrorContext.js';
@@ -135,8 +136,11 @@ const useConnectAndSignSplitSteps = () => {
135
136
  */
136
137
  if (err instanceof MissingPublicAddressError && isMobile())
137
138
  return;
139
+ instrumentAuthLoginFailed(err, {
140
+ authOrigin: 'connect-and-sign-split-steps',
141
+ });
138
142
  clearStackAndPushInitialView();
139
- setErrorMessage((_a = err.code) !== null && _a !== void 0 ? _a : err.toString());
143
+ setErrorMessage((_a = err.code) !== null && _a !== void 0 ? _a : err.toString(), err, 'connect-and-sign-split-steps');
140
144
  };
141
145
  // This method is similar to useConnectAndSign, but it skips signing for now
142
146
  // It's used when we want to connect and sign in two separate steps
@@ -17,6 +17,7 @@ require('@dynamic-labs/utils');
17
17
  require('../../../constants/colors.cjs');
18
18
  require('../../../constants/values.cjs');
19
19
  require('@dynamic-labs/sdk-api-core');
20
+ var instrumentAuthLoginFailed = require('../../../../shared/utils/functions/instrumentAuthLoginFailed/instrumentAuthLoginFailed.cjs');
20
21
  require('../../../../shared/consts/index.cjs');
21
22
  require('../../../../events/dynamicEvents.cjs');
22
23
  var CaptchaContext = require('../../../../context/CaptchaContext/CaptchaContext.cjs');
@@ -152,7 +153,10 @@ const useSignConnectOnlyUser = () => {
152
153
  }
153
154
  catch (err) {
154
155
  logger.logger.debug(err);
155
- setErrorMessage(err.toString());
156
+ instrumentAuthLoginFailed.instrumentAuthLoginFailed(err, {
157
+ authOrigin: 'connect-and-sign-split-steps',
158
+ });
159
+ setErrorMessage(err.toString(), err, 'connect-and-sign-split-steps');
156
160
  setShowAuthFlow(false, { emitCancelAuth: true });
157
161
  return;
158
162
  }
@@ -13,6 +13,7 @@ import '@dynamic-labs/utils';
13
13
  import '../../../constants/colors.js';
14
14
  import '../../../constants/values.js';
15
15
  import '@dynamic-labs/sdk-api-core';
16
+ import { instrumentAuthLoginFailed } from '../../../../shared/utils/functions/instrumentAuthLoginFailed/instrumentAuthLoginFailed.js';
16
17
  import '../../../../shared/consts/index.js';
17
18
  import '../../../../events/dynamicEvents.js';
18
19
  import { useCaptchaContext } from '../../../../context/CaptchaContext/CaptchaContext.js';
@@ -148,7 +149,10 @@ const useSignConnectOnlyUser = () => {
148
149
  }
149
150
  catch (err) {
150
151
  logger.debug(err);
151
- setErrorMessage(err.toString());
152
+ instrumentAuthLoginFailed(err, {
153
+ authOrigin: 'connect-and-sign-split-steps',
154
+ });
155
+ setErrorMessage(err.toString(), err, 'connect-and-sign-split-steps');
152
156
  setShowAuthFlow(false, { emitCancelAuth: true });
153
157
  return;
154
158
  }
@@ -98,8 +98,9 @@ export { useUpgradeToDynamicWaasFlow } from './useUpgradeToDynamicWaasFlow';
98
98
  export { useGetMfaToken } from './useGetMfaToken';
99
99
  export { useIsMfaRequiredForAction } from './useIsMfaRequiredForAction';
100
100
  export { useWalletDelegation } from './useWalletDelegation';
101
- export { CloudBackupProvider, isWalletBackedUp, useBackupWallets, useWalletBackup, } from './useWalletBackup';
102
- export type { WalletBackupStatus, WalletOperationState, WalletToBackup, WalletWithBackupStatus, } from './useWalletBackup';
101
+ export { CloudBackupProvider, GOOGLE_DRIVE_BACKUP_REQUIRED_SCOPES, findMissingGoogleDriveBackupScopes, hasAllGoogleDriveBackupScopes, isInsufficientGoogleDriveScopesError, isWalletBackedUp, useBackupWallets, useWalletBackup, } from './useWalletBackup';
102
+ export type { GoogleDriveBackupAccessError, WalletBackupStatus, WalletOperationState, WalletToBackup, WalletWithBackupStatus, } from './useWalletBackup';
103
+ export { useGoogleDriveBackupReadiness, type GoogleDriveBackupReadiness, type GoogleDriveBackupReadinessStatus, type UseGoogleDriveBackupReadinessReturn, } from './useGoogleDriveBackupReadiness';
103
104
  export { useRefreshAuth } from './useRefreshAuth';
104
105
  export { useSetupPassword, PASSWORD_SETUP_CANCELLED_ERROR, } from './useSetupPassword';
105
106
  export { useWalletUnlock } from './useWalletUnlock';