@dynamic-labs/sdk-react-core 2.1.0-alpha.10 → 2.1.0-alpha.11

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 (36) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/package.cjs +2 -2
  3. package/package.js +2 -2
  4. package/package.json +13 -13
  5. package/src/index.cjs +2 -0
  6. package/src/index.d.ts +1 -1
  7. package/src/index.js +1 -0
  8. package/src/lib/data/api/chains/balances.cjs +38 -0
  9. package/src/lib/data/api/chains/balances.d.ts +8 -0
  10. package/src/lib/data/api/chains/balances.js +34 -0
  11. package/src/lib/data/api/chains/index.d.ts +1 -0
  12. package/src/lib/shared/types/general.d.ts +1 -0
  13. package/src/lib/utils/constants/errors.cjs +2 -0
  14. package/src/lib/utils/constants/errors.d.ts +1 -0
  15. package/src/lib/utils/constants/errors.js +2 -1
  16. package/src/lib/utils/hooks/index.d.ts +1 -0
  17. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +34 -3
  18. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.d.ts +18 -9
  19. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +34 -3
  20. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.cjs +5 -1
  21. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.d.ts +1 -0
  22. package/src/lib/utils/hooks/useEmbeddedWallet/useMPCEmbeddedWallet/useMPCEmbeddedWallet.js +5 -1
  23. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/constants.cjs +4 -0
  24. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/constants.d.ts +2 -0
  25. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/constants.js +3 -1
  26. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.cjs +68 -28
  27. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.d.ts +11 -6
  28. package/src/lib/utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.js +70 -30
  29. package/src/lib/utils/hooks/useTokenBalances/index.d.ts +1 -0
  30. package/src/lib/utils/hooks/useTokenBalances/useTokenBalances.cjs +141 -0
  31. package/src/lib/utils/hooks/useTokenBalances/useTokenBalances.d.ts +12 -0
  32. package/src/lib/utils/hooks/useTokenBalances/useTokenBalances.js +137 -0
  33. package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.cjs +1 -1
  34. package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.js +1 -1
  35. package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.cjs +5 -4
  36. package/src/lib/views/EmbeddedReveal/utils/turnkeyExport/turnkeyExport.js +5 -4
package/CHANGELOG.md CHANGED
@@ -1,4 +1,17 @@
1
1
 
2
+ ## [2.1.0-alpha.11](https://github.com/dynamic-labs/DynamicAuth/compare/v2.1.0-alpha.10...v2.1.0-alpha.11) (2024-05-02)
3
+
4
+
5
+ ### Features
6
+
7
+ * **GVTY-1050:** add account token balances hook ([#5521](https://github.com/dynamic-labs/DynamicAuth/issues/5521)) ([5a6f937](https://github.com/dynamic-labs/DynamicAuth/commit/5a6f93733019f3b8d5c7a2c7a5537172a1e7eba4))
8
+ * headless reveal embedded wallet key ([#5518](https://github.com/dynamic-labs/DynamicAuth/issues/5518)) ([77c1536](https://github.com/dynamic-labs/DynamicAuth/commit/77c15360b2b28c52cbdeafb3ce8ca7e80dbecf57))
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * fallback to walletconnect for zerion on mobile ([#5536](https://github.com/dynamic-labs/DynamicAuth/issues/5536)) ([f0e5bfe](https://github.com/dynamic-labs/DynamicAuth/commit/f0e5bfea0b2ab271fd4c1475c8ce708ecb1a5926))
14
+
2
15
  ## [2.1.0-alpha.10](https://github.com/dynamic-labs/DynamicAuth/compare/v2.1.0-alpha.9...v2.1.0-alpha.10) (2024-04-30)
3
16
 
4
17
 
package/package.cjs CHANGED
@@ -3,9 +3,9 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "2.1.0-alpha.10";
6
+ var version = "2.1.0-alpha.11";
7
7
  var dependencies = {
8
- "@dynamic-labs/sdk-api-core": "0.0.432",
8
+ "@dynamic-labs/sdk-api-core": "0.0.433",
9
9
  "@hcaptcha/react-hcaptcha": "1.4.4",
10
10
  "country-list": "2.3.0",
11
11
  formik: "2.2.9",
package/package.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use client'
2
- var version = "2.1.0-alpha.10";
2
+ var version = "2.1.0-alpha.11";
3
3
  var dependencies = {
4
- "@dynamic-labs/sdk-api-core": "0.0.432",
4
+ "@dynamic-labs/sdk-api-core": "0.0.433",
5
5
  "@hcaptcha/react-hcaptcha": "1.4.4",
6
6
  "country-list": "2.3.0",
7
7
  formik: "2.2.9",
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@dynamic-labs/sdk-react-core",
3
- "version": "2.1.0-alpha.10",
3
+ "version": "2.1.0-alpha.11",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dynamic-labs/DynamicAuth.git",
7
7
  "directory": "packages/sdk-react-core"
8
8
  },
9
9
  "dependencies": {
10
- "@dynamic-labs/sdk-api-core": "0.0.432",
10
+ "@dynamic-labs/sdk-api-core": "0.0.433",
11
11
  "@hcaptcha/react-hcaptcha": "1.4.4",
12
12
  "country-list": "2.3.0",
13
13
  "formik": "2.2.9",
@@ -17,17 +17,17 @@
17
17
  "react-i18next": "13.5.0",
18
18
  "yup": "0.32.11",
19
19
  "react-international-phone": "4.2.5",
20
- "@dynamic-labs/iconic": "2.1.0-alpha.10",
21
- "@dynamic-labs/logger": "2.1.0-alpha.10",
22
- "@dynamic-labs/multi-wallet": "2.1.0-alpha.10",
23
- "@dynamic-labs/rpc-provider-ethereum": "2.1.0-alpha.10",
24
- "@dynamic-labs/rpc-provider-solana": "2.1.0-alpha.10",
25
- "@dynamic-labs/rpc-providers": "2.1.0-alpha.10",
26
- "@dynamic-labs/types": "2.1.0-alpha.10",
27
- "@dynamic-labs/utils": "2.1.0-alpha.10",
28
- "@dynamic-labs/viem-utils": "2.1.0-alpha.10",
29
- "@dynamic-labs/wallet-book": "2.1.0-alpha.10",
30
- "@dynamic-labs/wallet-connector-core": "2.1.0-alpha.10",
20
+ "@dynamic-labs/iconic": "2.1.0-alpha.11",
21
+ "@dynamic-labs/logger": "2.1.0-alpha.11",
22
+ "@dynamic-labs/multi-wallet": "2.1.0-alpha.11",
23
+ "@dynamic-labs/rpc-provider-ethereum": "2.1.0-alpha.11",
24
+ "@dynamic-labs/rpc-provider-solana": "2.1.0-alpha.11",
25
+ "@dynamic-labs/rpc-providers": "2.1.0-alpha.11",
26
+ "@dynamic-labs/types": "2.1.0-alpha.11",
27
+ "@dynamic-labs/utils": "2.1.0-alpha.11",
28
+ "@dynamic-labs/viem-utils": "2.1.0-alpha.11",
29
+ "@dynamic-labs/wallet-book": "2.1.0-alpha.11",
30
+ "@dynamic-labs/wallet-connector-core": "2.1.0-alpha.11",
31
31
  "eventemitter3": "5.0.1"
32
32
  },
33
33
  "devDependencies": {
package/src/index.cjs CHANGED
@@ -110,6 +110,7 @@ var useEmbeddedReveal = require('./lib/utils/hooks/useEmbeddedReveal/useEmbedded
110
110
  var useEmbeddedWalletAuthenticator = require('./lib/utils/hooks/useEmbeddedWalletAuthenticator/useEmbeddedWalletAuthenticator.cjs');
111
111
  var useDynamicModals = require('./lib/utils/hooks/useDynamicModals/useDynamicModals.cjs');
112
112
  var useMfa = require('./lib/utils/hooks/useMfa/useMfa.cjs');
113
+ var useTokenBalances = require('./lib/utils/hooks/useTokenBalances/useTokenBalances.cjs');
113
114
  var DynamicConnectButton = require('./lib/components/DynamicConnectButton/DynamicConnectButton.cjs');
114
115
  require('./lib/components/InlineWidget/InlineWidget.cjs');
115
116
  var IsBrowser = require('./lib/components/IsBrowser/IsBrowser.cjs');
@@ -207,6 +208,7 @@ exports.useEmbeddedReveal = useEmbeddedReveal.useEmbeddedReveal;
207
208
  exports.useEmbeddedWalletAuthenticator = useEmbeddedWalletAuthenticator.useEmbeddedWalletAuthenticator;
208
209
  exports.useDynamicModals = useDynamicModals.useDynamicModals;
209
210
  exports.useMfa = useMfa.useMfa;
211
+ exports.useTokenBalances = useTokenBalances.useTokenBalances;
210
212
  exports.DynamicConnectButton = DynamicConnectButton.DynamicConnectButton;
211
213
  exports.IsBrowser = IsBrowser.IsBrowser;
212
214
  exports.NoQrNotInstalledView = NoQrNotInstalledView.NoQrNotInstalledView;
package/src/index.d.ts CHANGED
@@ -106,7 +106,7 @@ export { FilterAndSortWallets, FilterBridgeChainsName, FilterChain, FilterWallet
106
106
  export {
107
107
  /** @deprecated */
108
108
  DynamicWidgetContextProvider, } from './lib/widgets/DynamicWidget/context';
109
- export { useWalletItemActions, useAuthenticateConnectedUser, useSocialAccounts, useEmbeddedWallet, useEmbeddedWalletAuthenticator, usePasskeyRecovery, useEmbeddedReveal, useIsLoggedIn, useDynamicModals, useMfa, } from './lib/utils/hooks';
109
+ export { useWalletItemActions, useAuthenticateConnectedUser, useSocialAccounts, useEmbeddedWallet, useEmbeddedWalletAuthenticator, usePasskeyRecovery, useEmbeddedReveal, useIsLoggedIn, useDynamicModals, useMfa, useTokenBalances, } from './lib/utils/hooks';
110
110
  export { useUserUpdateRequest, useWalletConnectorEvent, } from './lib/utils/hooks';
111
111
  export { type VerifyOtp, useOtpVerificationRequest, } from './lib/utils/hooks/authenticationHooks/';
112
112
  export type { UpdateUserFieldsArg } from './lib/utils/hooks/';
package/src/index.js CHANGED
@@ -106,6 +106,7 @@ export { useEmbeddedReveal } from './lib/utils/hooks/useEmbeddedReveal/useEmbedd
106
106
  export { useEmbeddedWalletAuthenticator } from './lib/utils/hooks/useEmbeddedWalletAuthenticator/useEmbeddedWalletAuthenticator.js';
107
107
  export { useDynamicModals } from './lib/utils/hooks/useDynamicModals/useDynamicModals.js';
108
108
  export { useMfa } from './lib/utils/hooks/useMfa/useMfa.js';
109
+ export { useTokenBalances } from './lib/utils/hooks/useTokenBalances/useTokenBalances.js';
109
110
  export { DynamicConnectButton } from './lib/components/DynamicConnectButton/DynamicConnectButton.js';
110
111
  import './lib/components/InlineWidget/InlineWidget.js';
111
112
  export { IsBrowser } from './lib/components/IsBrowser/IsBrowser.js';
@@ -0,0 +1,38 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../../../_virtual/_tslib.cjs');
7
+ var sdkApiCore = require('@dynamic-labs/sdk-api-core');
8
+ var logger = require('../../../shared/logger.cjs');
9
+ require('@dynamic-labs/iconic');
10
+ require('@dynamic-labs/wallet-connector-core');
11
+ require('react/jsx-runtime');
12
+ require('../../../context/ViewContext/ViewContext.cjs');
13
+ require('react');
14
+ require('@dynamic-labs/wallet-book');
15
+ require('../../../utils/constants/colors.cjs');
16
+ require('../../../utils/constants/values.cjs');
17
+ require('../../../shared/utils/classes/storage/localStorage.cjs');
18
+ require('@dynamic-labs/utils');
19
+ require('../../../shared/consts/index.cjs');
20
+ var api = require('../api.cjs');
21
+
22
+ const getAccountTokenBalances = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ userJwt, environmentId, chainName = sdkApiCore.ChainEnum.Evm, networkId, accountAddress, }) {
23
+ try {
24
+ const data = yield api.sdkApi(userJwt).getAccountBalances({
25
+ accountAddress,
26
+ chainName: chainName,
27
+ environmentId,
28
+ networkId,
29
+ });
30
+ return data;
31
+ }
32
+ catch (e) {
33
+ logger.logger.error(e);
34
+ return undefined;
35
+ }
36
+ });
37
+
38
+ exports.getAccountTokenBalances = getAccountTokenBalances;
@@ -0,0 +1,8 @@
1
+ import { ChainEnum, TokenBalance } from '@dynamic-labs/sdk-api-core';
2
+ export declare const getAccountTokenBalances: ({ userJwt, environmentId, chainName, networkId, accountAddress, }: {
3
+ userJwt: string;
4
+ environmentId: string;
5
+ chainName: ChainEnum;
6
+ networkId: number;
7
+ accountAddress: string;
8
+ }) => Promise<TokenBalance[] | undefined>;
@@ -0,0 +1,34 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
+ import { ChainEnum } from '@dynamic-labs/sdk-api-core';
4
+ import { logger } from '../../../shared/logger.js';
5
+ import '@dynamic-labs/iconic';
6
+ import '@dynamic-labs/wallet-connector-core';
7
+ import 'react/jsx-runtime';
8
+ import '../../../context/ViewContext/ViewContext.js';
9
+ import 'react';
10
+ import '@dynamic-labs/wallet-book';
11
+ import '../../../utils/constants/colors.js';
12
+ import '../../../utils/constants/values.js';
13
+ import '../../../shared/utils/classes/storage/localStorage.js';
14
+ import '@dynamic-labs/utils';
15
+ import '../../../shared/consts/index.js';
16
+ import { sdkApi } from '../api.js';
17
+
18
+ const getAccountTokenBalances = (_a) => __awaiter(void 0, [_a], void 0, function* ({ userJwt, environmentId, chainName = ChainEnum.Evm, networkId, accountAddress, }) {
19
+ try {
20
+ const data = yield sdkApi(userJwt).getAccountBalances({
21
+ accountAddress,
22
+ chainName: chainName,
23
+ environmentId,
24
+ networkId,
25
+ });
26
+ return data;
27
+ }
28
+ catch (e) {
29
+ logger.error(e);
30
+ return undefined;
31
+ }
32
+ });
33
+
34
+ export { getAccountTokenBalances };
@@ -0,0 +1 @@
1
+ export * from './balances';
@@ -3,3 +3,4 @@ export type ErrorWithCode = Error & {
3
3
  code: string;
4
4
  };
5
5
  export type PasswordInputMode = 'password' | 'text';
6
+ export type ParamsType<T extends (...args: any) => any> = T extends (...args: infer P) => any ? P['length'] extends 0 ? undefined : P : undefined;
@@ -7,6 +7,7 @@ const MISSING_ADDRESS_ERROR = 'missing_address';
7
7
  // HEADLESS ERRORS
8
8
  const ACTIVE_SESSION = 'session_active';
9
9
  const ERROR_SENDING_CODE = 'error_sending_code';
10
+ const ERROR_PROCESSING_REVEAL_REQUEST = 'error_processing_reveal_request';
10
11
  const INVALID_REQUEST = 'invalid_request';
11
12
  const INVALID_WALLET_DATA = 'invalid_wallet';
12
13
  const SECURE_ENCLAVE_PROVIDER_NOT_ENABLED = 'secure_enclave_provider_not_enabled';
@@ -17,6 +18,7 @@ const SESSION_RESTORED = 'SESSION_RESTORED';
17
18
 
18
19
  exports.ACTIVE_SESSION = ACTIVE_SESSION;
19
20
  exports.CODE_SENT = CODE_SENT;
21
+ exports.ERROR_PROCESSING_REVEAL_REQUEST = ERROR_PROCESSING_REVEAL_REQUEST;
20
22
  exports.ERROR_SENDING_CODE = ERROR_SENDING_CODE;
21
23
  exports.INVALID_REQUEST = INVALID_REQUEST;
22
24
  exports.INVALID_WALLET_DATA = INVALID_WALLET_DATA;
@@ -1,6 +1,7 @@
1
1
  export declare const MISSING_ADDRESS_ERROR = "missing_address";
2
2
  export declare const ACTIVE_SESSION = "session_active";
3
3
  export declare const ERROR_SENDING_CODE = "error_sending_code";
4
+ export declare const ERROR_PROCESSING_REVEAL_REQUEST = "error_processing_reveal_request";
4
5
  export declare const INVALID_REQUEST = "invalid_request";
5
6
  export declare const INVALID_WALLET_DATA = "invalid_wallet";
6
7
  export declare const SECURE_ENCLAVE_PROVIDER_NOT_ENABLED = "secure_enclave_provider_not_enabled";
@@ -3,6 +3,7 @@ const MISSING_ADDRESS_ERROR = 'missing_address';
3
3
  // HEADLESS ERRORS
4
4
  const ACTIVE_SESSION = 'session_active';
5
5
  const ERROR_SENDING_CODE = 'error_sending_code';
6
+ const ERROR_PROCESSING_REVEAL_REQUEST = 'error_processing_reveal_request';
6
7
  const INVALID_REQUEST = 'invalid_request';
7
8
  const INVALID_WALLET_DATA = 'invalid_wallet';
8
9
  const SECURE_ENCLAVE_PROVIDER_NOT_ENABLED = 'secure_enclave_provider_not_enabled';
@@ -11,4 +12,4 @@ const CODE_SENT = 'code_sent';
11
12
  const SESSION_CREATED = 'session_created';
12
13
  const SESSION_RESTORED = 'SESSION_RESTORED';
13
14
 
14
- export { ACTIVE_SESSION, CODE_SENT, ERROR_SENDING_CODE, INVALID_REQUEST, INVALID_WALLET_DATA, MISSING_ADDRESS_ERROR, SECURE_ENCLAVE_PROVIDER_NOT_ENABLED, SESSION_CREATED, SESSION_RESTORED, USER_NOT_LOGGED_IN };
15
+ export { ACTIVE_SESSION, CODE_SENT, ERROR_PROCESSING_REVEAL_REQUEST, ERROR_SENDING_CODE, INVALID_REQUEST, INVALID_WALLET_DATA, MISSING_ADDRESS_ERROR, SECURE_ENCLAVE_PROVIDER_NOT_ENABLED, SESSION_CREATED, SESSION_RESTORED, USER_NOT_LOGGED_IN };
@@ -53,3 +53,4 @@ export { useNetworkNotSupported } from './useNetworkNotSupported';
53
53
  export { useHandleVerifiedUser } from './useHandleVerifiedUser';
54
54
  export { useMfa } from './useMfa';
55
55
  export { useMergeUserAccounts } from './useMergeUserAccounts';
56
+ export { useTokenBalances } from './useTokenBalances';
@@ -35,6 +35,7 @@ require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
35
35
  require('../../../context/VerificationContext/VerificationContext.cjs');
36
36
  require('react-dom');
37
37
  var WalletContext = require('../../../context/WalletContext/WalletContext.cjs');
38
+ var useIsTurnkeyWallet = require('../useIsTurnkeyWallet/useIsTurnkeyWallet.cjs');
38
39
  var useSecureEnclaveEmbeddedWallet = require('./useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.cjs');
39
40
  var useMPCEmbeddedWallet = require('./useMPCEmbeddedWallet/useMPCEmbeddedWallet.cjs');
40
41
  require('../../../context/ThemeContext/ThemeContext.cjs');
@@ -82,21 +83,33 @@ var useInternalDynamicContext = require('../../../context/DynamicContext/useDyna
82
83
  /**
83
84
  * @returns {
84
85
  * createEmbeddedWallet, - creates Dynamic embedded wallet according to the settings
86
+ * createOrRestoreSession, - creates or restores session for the embedded wallet
87
+ * createPasskey, - creates passkey for the embedded wallet
85
88
  * createPassword, - creates MPC embedded wallet password
89
+ * getPasskeys, - gets passkeys for the embedded wallet
86
90
  * isLoadingEmbeddedWallet, - loading state of the embedded wallet
91
+ * isSessionActive, - checks if the session is active for the embedded wallet
92
+ * revealWalletKey, - reveals the private key or recovery phrase for the embedded wallet
93
+ * sendOneTimeCode, - sends one time code for the embedded wallet
87
94
  * userHasEmbeddedWallet, - checks if the user has an embedded wallet
88
95
  * }
89
96
  */
90
97
  const useEmbeddedWallet = () => {
91
- const { onboardingOnlyJwt } = useInternalDynamicContext.useInternalDynamicContext();
92
- const { createEmbeddedWallet: createCoinbaseMPCWallet, canCreateMPCWallet, createPassword, } = useMPCEmbeddedWallet.useMPCEmbeddedWallet();
93
- const { createEmbeddedWallet: createTurnkeyEmbeddedWallet, createOrRestoreSession, createPasskey, getPasskeys, isSessionActive, sendOneTimeCode, } = useSecureEnclaveEmbeddedWallet.useSecureEnclaveEmbeddedWallet();
98
+ const { onboardingOnlyJwt, user } = useInternalDynamicContext.useInternalDynamicContext();
99
+ const { isTurnkeyWallet } = useIsTurnkeyWallet.useIsTurnkeyWallet();
100
+ const { createEmbeddedWallet: createCoinbaseMPCWallet, canCreateMPCWallet, createPassword, revealEmbeddedWalletKey: reveaCoinbaseMPCEmbeddedWalletKey, } = useMPCEmbeddedWallet.useMPCEmbeddedWallet();
101
+ const { createEmbeddedWallet: createTurnkeyEmbeddedWallet, createOrRestoreSession, createPasskey, revealEmbeddedWalletKey: revealTurnkeyEmbeddedWalletKey, getPasskeys, isSessionActive, sendOneTimeCode, } = useSecureEnclaveEmbeddedWallet.useSecureEnclaveEmbeddedWallet();
94
102
  const { isLoadingEmbeddedWallet } = WalletContext.useWalletContext();
103
+ /**
104
+ * Checks if user has some embedded wallet
105
+ * @returns boolean - true if the user has an embedded wallet
106
+ */
95
107
  const userHasEmbeddedWallet = () => hasEmbeddedWallet.hasEmbeddedWallet(getAuthToken.getAuthToken() || onboardingOnlyJwt);
96
108
  /**
97
109
  * Creates Dynamic embedded wallet according to the settings
98
110
  * @param chains - array of chains to create the wallet for
99
111
  * @param options - options for the wallet creation
112
+ * @returns Promise<Wallet | undefined> - created wallet object
100
113
  */
101
114
  const createEmbeddedWallet = React.useCallback((chains, options) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
102
115
  if (yield canCreateMPCWallet(chains)) {
@@ -106,6 +119,23 @@ const useEmbeddedWallet = () => {
106
119
  const wallet = yield createTurnkeyEmbeddedWallet(chains, options);
107
120
  return wallet;
108
121
  }), [canCreateMPCWallet, createCoinbaseMPCWallet, createTurnkeyEmbeddedWallet]);
122
+ /**
123
+ * Reveals the private key or recovery phrase for the embedded wallet
124
+ * @param options - options for revealing the wallet key
125
+ * @returns Promise<boolean> - true if the key was revealed successfully
126
+ */
127
+ const revealWalletKey = (options) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
128
+ if (!user) {
129
+ throw new Error('User is not logged in');
130
+ }
131
+ if (!userHasEmbeddedWallet()) {
132
+ throw new Error('Embedded wallet not found');
133
+ }
134
+ if (isTurnkeyWallet) {
135
+ return revealTurnkeyEmbeddedWalletKey(options);
136
+ }
137
+ return reveaCoinbaseMPCEmbeddedWalletKey();
138
+ });
109
139
  return {
110
140
  createEmbeddedWallet,
111
141
  createOrRestoreSession,
@@ -114,6 +144,7 @@ const useEmbeddedWallet = () => {
114
144
  getPasskeys,
115
145
  isLoadingEmbeddedWallet,
116
146
  isSessionActive,
147
+ revealWalletKey,
117
148
  sendOneTimeCode,
118
149
  userHasEmbeddedWallet,
119
150
  };
@@ -1,28 +1,37 @@
1
1
  import { ChainEnum } from '@dynamic-labs/sdk-api-core';
2
- import { WebAuthnAttestation } from '@dynamic-labs/wallet-connector-core';
3
2
  import { Wallet } from '../../../shared';
4
3
  /**
5
4
  * @returns {
6
5
  * createEmbeddedWallet, - creates Dynamic embedded wallet according to the settings
6
+ * createOrRestoreSession, - creates or restores session for the embedded wallet
7
+ * createPasskey, - creates passkey for the embedded wallet
7
8
  * createPassword, - creates MPC embedded wallet password
9
+ * getPasskeys, - gets passkeys for the embedded wallet
8
10
  * isLoadingEmbeddedWallet, - loading state of the embedded wallet
11
+ * isSessionActive, - checks if the session is active for the embedded wallet
12
+ * revealWalletKey, - reveals the private key or recovery phrase for the embedded wallet
13
+ * sendOneTimeCode, - sends one time code for the embedded wallet
9
14
  * userHasEmbeddedWallet, - checks if the user has an embedded wallet
10
15
  * }
11
16
  */
12
17
  export declare const useEmbeddedWallet: () => {
13
18
  readonly createEmbeddedWallet: (chains?: ChainEnum[], options?: {
14
- webAuthnAttestation: WebAuthnAttestation;
15
- }) => Promise<Wallet | undefined>;
16
- readonly createOrRestoreSession: ({ oneTimeCode }: {
17
- oneTimeCode?: string | undefined;
18
- }) => Promise<string>;
19
- readonly createPasskey: ({ oneTimeCode, }: {
20
- oneTimeCode?: string | undefined;
21
- }) => Promise<WebAuthnAttestation>;
19
+ webAuthnAttestation: import("dist/packages/wallet-connector-core/src").WebAuthnAttestation;
20
+ } | undefined) => Promise<Wallet | undefined>;
21
+ readonly createOrRestoreSession: (options: {
22
+ oneTimeCode: string;
23
+ } | undefined) => Promise<string>;
24
+ readonly createPasskey: (options: {
25
+ oneTimeCode: string;
26
+ } | undefined) => Promise<import("dist/packages/wallet-connector-core/src").WebAuthnAttestation>;
22
27
  readonly createPassword: (showIntro?: boolean | undefined) => Promise<string>;
23
28
  readonly getPasskeys: () => Promise<import("@dynamic-labs/sdk-api-core").UserPasskey[]>;
24
29
  readonly isLoadingEmbeddedWallet: boolean;
25
30
  readonly isSessionActive: boolean;
31
+ readonly revealWalletKey: (options?: {
32
+ type: "recoveryPhrase" | "privateKey";
33
+ htmlContainerId?: string | undefined;
34
+ } | undefined) => Promise<boolean>;
26
35
  readonly sendOneTimeCode: () => Promise<string>;
27
36
  readonly userHasEmbeddedWallet: () => boolean;
28
37
  };
@@ -31,6 +31,7 @@ import '../../../context/UserWalletsContext/UserWalletsContext.js';
31
31
  import '../../../context/VerificationContext/VerificationContext.js';
32
32
  import 'react-dom';
33
33
  import { useWalletContext } from '../../../context/WalletContext/WalletContext.js';
34
+ import { useIsTurnkeyWallet } from '../useIsTurnkeyWallet/useIsTurnkeyWallet.js';
34
35
  import { useSecureEnclaveEmbeddedWallet } from './useSecureEnclaveEmbeddedWallet/useSecureEnclaveEmbeddedWallet.js';
35
36
  import { useMPCEmbeddedWallet } from './useMPCEmbeddedWallet/useMPCEmbeddedWallet.js';
36
37
  import '../../../context/ThemeContext/ThemeContext.js';
@@ -78,21 +79,33 @@ import { useInternalDynamicContext } from '../../../context/DynamicContext/useDy
78
79
  /**
79
80
  * @returns {
80
81
  * createEmbeddedWallet, - creates Dynamic embedded wallet according to the settings
82
+ * createOrRestoreSession, - creates or restores session for the embedded wallet
83
+ * createPasskey, - creates passkey for the embedded wallet
81
84
  * createPassword, - creates MPC embedded wallet password
85
+ * getPasskeys, - gets passkeys for the embedded wallet
82
86
  * isLoadingEmbeddedWallet, - loading state of the embedded wallet
87
+ * isSessionActive, - checks if the session is active for the embedded wallet
88
+ * revealWalletKey, - reveals the private key or recovery phrase for the embedded wallet
89
+ * sendOneTimeCode, - sends one time code for the embedded wallet
83
90
  * userHasEmbeddedWallet, - checks if the user has an embedded wallet
84
91
  * }
85
92
  */
86
93
  const useEmbeddedWallet = () => {
87
- const { onboardingOnlyJwt } = useInternalDynamicContext();
88
- const { createEmbeddedWallet: createCoinbaseMPCWallet, canCreateMPCWallet, createPassword, } = useMPCEmbeddedWallet();
89
- const { createEmbeddedWallet: createTurnkeyEmbeddedWallet, createOrRestoreSession, createPasskey, getPasskeys, isSessionActive, sendOneTimeCode, } = useSecureEnclaveEmbeddedWallet();
94
+ const { onboardingOnlyJwt, user } = useInternalDynamicContext();
95
+ const { isTurnkeyWallet } = useIsTurnkeyWallet();
96
+ const { createEmbeddedWallet: createCoinbaseMPCWallet, canCreateMPCWallet, createPassword, revealEmbeddedWalletKey: reveaCoinbaseMPCEmbeddedWalletKey, } = useMPCEmbeddedWallet();
97
+ const { createEmbeddedWallet: createTurnkeyEmbeddedWallet, createOrRestoreSession, createPasskey, revealEmbeddedWalletKey: revealTurnkeyEmbeddedWalletKey, getPasskeys, isSessionActive, sendOneTimeCode, } = useSecureEnclaveEmbeddedWallet();
90
98
  const { isLoadingEmbeddedWallet } = useWalletContext();
99
+ /**
100
+ * Checks if user has some embedded wallet
101
+ * @returns boolean - true if the user has an embedded wallet
102
+ */
91
103
  const userHasEmbeddedWallet = () => hasEmbeddedWallet(getAuthToken() || onboardingOnlyJwt);
92
104
  /**
93
105
  * Creates Dynamic embedded wallet according to the settings
94
106
  * @param chains - array of chains to create the wallet for
95
107
  * @param options - options for the wallet creation
108
+ * @returns Promise<Wallet | undefined> - created wallet object
96
109
  */
97
110
  const createEmbeddedWallet = useCallback((chains, options) => __awaiter(void 0, void 0, void 0, function* () {
98
111
  if (yield canCreateMPCWallet(chains)) {
@@ -102,6 +115,23 @@ const useEmbeddedWallet = () => {
102
115
  const wallet = yield createTurnkeyEmbeddedWallet(chains, options);
103
116
  return wallet;
104
117
  }), [canCreateMPCWallet, createCoinbaseMPCWallet, createTurnkeyEmbeddedWallet]);
118
+ /**
119
+ * Reveals the private key or recovery phrase for the embedded wallet
120
+ * @param options - options for revealing the wallet key
121
+ * @returns Promise<boolean> - true if the key was revealed successfully
122
+ */
123
+ const revealWalletKey = (options) => __awaiter(void 0, void 0, void 0, function* () {
124
+ if (!user) {
125
+ throw new Error('User is not logged in');
126
+ }
127
+ if (!userHasEmbeddedWallet()) {
128
+ throw new Error('Embedded wallet not found');
129
+ }
130
+ if (isTurnkeyWallet) {
131
+ return revealTurnkeyEmbeddedWalletKey(options);
132
+ }
133
+ return reveaCoinbaseMPCEmbeddedWalletKey();
134
+ });
105
135
  return {
106
136
  createEmbeddedWallet,
107
137
  createOrRestoreSession,
@@ -110,6 +140,7 @@ const useEmbeddedWallet = () => {
110
140
  getPasskeys,
111
141
  isLoadingEmbeddedWallet,
112
142
  isSessionActive,
143
+ revealWalletKey,
113
144
  sendOneTimeCode,
114
145
  userHasEmbeddedWallet,
115
146
  };
@@ -6,6 +6,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
6
6
  var _tslib = require('../../../../../../_virtual/_tslib.cjs');
7
7
  var React = require('react');
8
8
  var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
9
+ var utils = require('@dynamic-labs/utils');
9
10
  require('../../../../context/DynamicContext/DynamicContext.cjs');
10
11
  require('@dynamic-labs/sdk-api-core');
11
12
  require('../../../../shared/logger.cjs');
@@ -16,7 +17,6 @@ require('@dynamic-labs/wallet-book');
16
17
  require('../../../constants/colors.cjs');
17
18
  require('../../../constants/values.cjs');
18
19
  require('../../../../shared/utils/classes/storage/localStorage.cjs');
19
- require('@dynamic-labs/utils');
20
20
  require('../../../../shared/consts/index.cjs');
21
21
  require('../../../../events/dynamicEvents.cjs');
22
22
  require('../../../../context/CaptchaContext/CaptchaContext.cjs');
@@ -153,11 +153,15 @@ const useMPCEmbeddedWallet = () => {
153
153
  projectSettings,
154
154
  setIsLoadingEmbeddedWallet,
155
155
  ]);
156
+ const revealEmbeddedWalletKey = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
157
+ throw new utils.DynamicError('Coinbase MPC wallet does not support headless reveal yet');
158
+ });
156
159
  return {
157
160
  canCreateMPCWallet,
158
161
  createEmbeddedWallet,
159
162
  createPassword,
160
163
  isLoadingEmbeddedWallet,
164
+ revealEmbeddedWalletKey,
161
165
  userHasEmbeddedWallet,
162
166
  };
163
167
  };
@@ -13,5 +13,6 @@ export declare const useMPCEmbeddedWallet: () => {
13
13
  readonly createEmbeddedWallet: (chains?: ChainEnum[]) => Promise<Wallet | undefined>;
14
14
  readonly createPassword: (showIntro?: boolean) => Promise<string>;
15
15
  readonly isLoadingEmbeddedWallet: boolean;
16
+ readonly revealEmbeddedWalletKey: () => Promise<never>;
16
17
  readonly userHasEmbeddedWallet: () => boolean;
17
18
  };
@@ -2,6 +2,7 @@
2
2
  import { __awaiter } from '../../../../../../_virtual/_tslib.js';
3
3
  import { useCallback } from 'react';
4
4
  import { isCoinbaseMpcWalletConnector } from '@dynamic-labs/wallet-connector-core';
5
+ import { DynamicError } from '@dynamic-labs/utils';
5
6
  import '../../../../context/DynamicContext/DynamicContext.js';
6
7
  import '@dynamic-labs/sdk-api-core';
7
8
  import '../../../../shared/logger.js';
@@ -12,7 +13,6 @@ import '@dynamic-labs/wallet-book';
12
13
  import '../../../constants/colors.js';
13
14
  import '../../../constants/values.js';
14
15
  import '../../../../shared/utils/classes/storage/localStorage.js';
15
- import '@dynamic-labs/utils';
16
16
  import '../../../../shared/consts/index.js';
17
17
  import '../../../../events/dynamicEvents.js';
18
18
  import '../../../../context/CaptchaContext/CaptchaContext.js';
@@ -149,11 +149,15 @@ const useMPCEmbeddedWallet = () => {
149
149
  projectSettings,
150
150
  setIsLoadingEmbeddedWallet,
151
151
  ]);
152
+ const revealEmbeddedWalletKey = () => __awaiter(void 0, void 0, void 0, function* () {
153
+ throw new DynamicError('Coinbase MPC wallet does not support headless reveal yet');
154
+ });
152
155
  return {
153
156
  canCreateMPCWallet,
154
157
  createEmbeddedWallet,
155
158
  createPassword,
156
159
  isLoadingEmbeddedWallet,
160
+ revealEmbeddedWalletKey,
157
161
  userHasEmbeddedWallet,
158
162
  };
159
163
  };
@@ -5,6 +5,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  const iframeContainerId = 'dyn-secure-enclave-container-id';
7
7
  const iframeElementId = 'dyn-secure-enclave-element-id';
8
+ const revealIframeContainerId = 'dyn-secure-enclave-export-container-id';
9
+ const revealIframeElementId = 'dyn-secure-enclave-export-element-id';
8
10
 
9
11
  exports.iframeContainerId = iframeContainerId;
10
12
  exports.iframeElementId = iframeElementId;
13
+ exports.revealIframeContainerId = revealIframeContainerId;
14
+ exports.revealIframeElementId = revealIframeElementId;
@@ -1,2 +1,4 @@
1
1
  export declare const iframeContainerId = "dyn-secure-enclave-container-id";
2
2
  export declare const iframeElementId = "dyn-secure-enclave-element-id";
3
+ export declare const revealIframeContainerId = "dyn-secure-enclave-export-container-id";
4
+ export declare const revealIframeElementId = "dyn-secure-enclave-export-element-id";
@@ -1,5 +1,7 @@
1
1
  'use client'
2
2
  const iframeContainerId = 'dyn-secure-enclave-container-id';
3
3
  const iframeElementId = 'dyn-secure-enclave-element-id';
4
+ const revealIframeContainerId = 'dyn-secure-enclave-export-container-id';
5
+ const revealIframeElementId = 'dyn-secure-enclave-export-element-id';
4
6
 
5
- export { iframeContainerId, iframeElementId };
7
+ export { iframeContainerId, iframeElementId, revealIframeContainerId, revealIframeElementId };