@dynamic-labs/sdk-react-core 4.36.0 → 4.36.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/package.cjs +2 -2
  3. package/package.js +2 -2
  4. package/package.json +12 -12
  5. package/src/lib/client/extension/deprecated/mfa/verifyTotpMfaDevice/verifyTotpMfaDevice.d.ts +1 -1
  6. package/src/lib/client/extension/projectSettings/getProjectSettings/getProjectSettings.d.ts +2 -1
  7. package/src/lib/client/extension/projectSettings/useProjectSettings/useProjectSettings.d.ts +2 -1
  8. package/src/lib/client/extension/projectSettings/useRefetchProjectSettings/useRefetchProjectSettings.d.ts +2 -1
  9. package/src/lib/context/SocialRedirectContext/hooks/useRedirectSocialHandler/useRedirectSocialHandler.cjs +3 -1
  10. package/src/lib/context/SocialRedirectContext/hooks/useRedirectSocialHandler/useRedirectSocialHandler.js +3 -1
  11. package/src/lib/context/SocialRedirectContext/utils/getDynamicRedirectData/getDynamicRedirectData.d.ts +1 -0
  12. package/src/lib/context/SocialRedirectContext/utils/getDynamicRedirectDataFromUrl/getDynamicRedirectDataFromUrl.cjs +2 -1
  13. package/src/lib/context/SocialRedirectContext/utils/getDynamicRedirectDataFromUrl/getDynamicRedirectDataFromUrl.d.ts +1 -0
  14. package/src/lib/context/SocialRedirectContext/utils/getDynamicRedirectDataFromUrl/getDynamicRedirectDataFromUrl.js +2 -1
  15. package/src/lib/data/api/oauth/oauth.cjs +2 -1
  16. package/src/lib/data/api/oauth/oauth.d.ts +1 -1
  17. package/src/lib/data/api/oauth/oauth.js +2 -1
  18. package/src/lib/locale/en/translation.cjs +2 -0
  19. package/src/lib/locale/en/translation.d.ts +2 -0
  20. package/src/lib/locale/en/translation.js +2 -0
  21. package/src/lib/utils/constants/authViewLayoutChecks.cjs +1 -0
  22. package/src/lib/utils/constants/authViewLayoutChecks.js +1 -0
  23. package/src/lib/utils/constants/index.d.ts +1 -1
  24. package/src/lib/utils/constants/localStorage.cjs +3 -0
  25. package/src/lib/utils/constants/localStorage.d.ts +4 -0
  26. package/src/lib/utils/constants/localStorage.js +3 -1
  27. package/src/lib/utils/functions/getTransactionLink/blockExplorerPatterns.cjs +47 -0
  28. package/src/lib/utils/functions/getTransactionLink/blockExplorerPatterns.d.ts +26 -0
  29. package/src/lib/utils/functions/getTransactionLink/blockExplorerPatterns.js +41 -0
  30. package/src/lib/utils/functions/getTransactionLink/getTransactionLink.cjs +5 -3
  31. package/src/lib/utils/functions/getTransactionLink/getTransactionLink.js +5 -3
  32. package/src/lib/utils/functions/socialStorage/socialStorage.d.ts +2 -0
  33. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +5 -2
  34. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.d.ts +4 -1
  35. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +5 -2
  36. package/src/lib/utils/hooks/useSyncDynamicWaas/useSyncDynamicWaas.cjs +7 -0
  37. package/src/lib/utils/hooks/useSyncDynamicWaas/useSyncDynamicWaas.js +7 -0
  38. package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.cjs +37 -5
  39. package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.d.ts +6 -1
  40. package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.js +37 -5
  41. package/src/lib/views/WalletDelegation/WalletDelegationView/WalletDelegationView.cjs +68 -101
  42. package/src/lib/views/WalletDelegation/WalletDelegationView/WalletDelegationView.d.ts +7 -1
  43. package/src/lib/views/WalletDelegation/WalletDelegationView/WalletDelegationView.js +69 -102
  44. package/src/lib/views/viewToComponentMap.d.ts +3 -1
  45. package/src/lib/widgets/DynamicWidget/components/DynamicWidgetViews/mapViewToComponent.d.ts +3 -1
package/CHANGELOG.md CHANGED
@@ -1,4 +1,10 @@
1
1
 
2
+ ### [4.36.1](https://github.com/dynamic-labs/dynamic-auth/compare/v4.36.0...v4.36.1) (2025-10-06)
3
+
4
+
5
+ ### Features
6
+ - Multiple internal improvements
7
+
2
8
  ## [4.36.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.35.0...v4.36.0) (2025-10-03)
3
9
 
4
10
 
package/package.cjs CHANGED
@@ -3,9 +3,9 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "4.36.0";
6
+ var version = "4.36.1";
7
7
  var dependencies = {
8
- "@dynamic-labs/sdk-api-core": "0.0.791",
8
+ "@dynamic-labs/sdk-api-core": "0.0.798",
9
9
  "@dynamic-labs-sdk/client": "0.1.0-alpha.17",
10
10
  "@hcaptcha/react-hcaptcha": "1.4.4",
11
11
  "@thumbmarkjs/thumbmarkjs": "0.16.0",
package/package.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use client'
2
- var version = "4.36.0";
2
+ var version = "4.36.1";
3
3
  var dependencies = {
4
- "@dynamic-labs/sdk-api-core": "0.0.791",
4
+ "@dynamic-labs/sdk-api-core": "0.0.798",
5
5
  "@dynamic-labs-sdk/client": "0.1.0-alpha.17",
6
6
  "@hcaptcha/react-hcaptcha": "1.4.4",
7
7
  "@thumbmarkjs/thumbmarkjs": "0.16.0",
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@dynamic-labs/sdk-react-core",
3
- "version": "4.36.0",
3
+ "version": "4.36.1",
4
4
  "dependencies": {
5
- "@dynamic-labs/sdk-api-core": "0.0.791",
5
+ "@dynamic-labs/sdk-api-core": "0.0.798",
6
6
  "@dynamic-labs-sdk/client": "0.1.0-alpha.17",
7
7
  "@hcaptcha/react-hcaptcha": "1.4.4",
8
8
  "@thumbmarkjs/thumbmarkjs": "0.16.0",
@@ -15,16 +15,16 @@
15
15
  "yup": "0.32.11",
16
16
  "react-international-phone": "4.5.0",
17
17
  "bs58": "5.0.0",
18
- "@dynamic-labs/assert-package-version": "4.36.0",
19
- "@dynamic-labs/iconic": "4.36.0",
20
- "@dynamic-labs/logger": "4.36.0",
21
- "@dynamic-labs/multi-wallet": "4.36.0",
22
- "@dynamic-labs/rpc-providers": "4.36.0",
23
- "@dynamic-labs/store": "4.36.0",
24
- "@dynamic-labs/types": "4.36.0",
25
- "@dynamic-labs/utils": "4.36.0",
26
- "@dynamic-labs/wallet-book": "4.36.0",
27
- "@dynamic-labs/wallet-connector-core": "4.36.0",
18
+ "@dynamic-labs/assert-package-version": "4.36.1",
19
+ "@dynamic-labs/iconic": "4.36.1",
20
+ "@dynamic-labs/logger": "4.36.1",
21
+ "@dynamic-labs/multi-wallet": "4.36.1",
22
+ "@dynamic-labs/rpc-providers": "4.36.1",
23
+ "@dynamic-labs/store": "4.36.1",
24
+ "@dynamic-labs/types": "4.36.1",
25
+ "@dynamic-labs/utils": "4.36.1",
26
+ "@dynamic-labs/wallet-book": "4.36.1",
27
+ "@dynamic-labs/wallet-connector-core": "4.36.1",
28
28
  "eventemitter3": "5.0.1"
29
29
  },
30
30
  "devDependencies": {
@@ -1,3 +1,3 @@
1
1
  export declare const verifyTotpMfaDevice: ({ code }: {
2
2
  code: string;
3
- }) => Promise<import("@dynamic-labs/sdk-api-core").MFADevice>;
3
+ }) => Promise<import("@dynamic-labs-sdk/client").MFADevice>;
@@ -1 +1,2 @@
1
- export declare const getProjectSettings: () => import("@dynamic-labs/sdk-api-core").ProjectSettings | undefined;
1
+ import { ProjectSettings } from '@dynamic-labs/sdk-api-core';
2
+ export declare const getProjectSettings: () => ProjectSettings | undefined;
@@ -1 +1,2 @@
1
- export declare const useProjectSettings: () => import("@dynamic-labs/sdk-api-core").ProjectSettings | undefined;
1
+ import { ProjectSettings } from '@dynamic-labs/sdk-api-core';
2
+ export declare const useProjectSettings: () => ProjectSettings | undefined;
@@ -1 +1,2 @@
1
- export declare const useRefetchProjectSettings: () => () => Promise<import("@dynamic-labs/sdk-api-core").ProjectSettings | undefined>;
1
+ import { ProjectSettings } from '@dynamic-labs/sdk-api-core';
2
+ export declare const useRefetchProjectSettings: () => (() => Promise<ProjectSettings | undefined>);
@@ -140,7 +140,7 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
140
140
  /**
141
141
  * Find the redirect data from the first available source
142
142
  */
143
- const { dynamicOauthCode, dynamicOauthState } = (_a = getDynamicRedirectData.getDynamicRedirectData(redirectUrl !== null && redirectUrl !== void 0 ? redirectUrl : null, window.location.href)) !== null && _a !== void 0 ? _a : {};
143
+ const { dynamicOauthCode, dynamicOauthState, dynamicOauthSsoProviderId } = (_a = getDynamicRedirectData.getDynamicRedirectData(redirectUrl !== null && redirectUrl !== void 0 ? redirectUrl : null, window.location.href)) !== null && _a !== void 0 ? _a : {};
144
144
  if (!dynamicOauthState || !dynamicOauthCode) {
145
145
  return;
146
146
  }
@@ -149,6 +149,7 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
149
149
  return;
150
150
  // we got back the dynamicOauthCode from the oauth provider, set it here so we can use it to sign in
151
151
  socialStorageItem.code = dynamicOauthCode;
152
+ socialStorageItem.dynamicOauthSsoProviderId = dynamicOauthSsoProviderId;
152
153
  setSocialStorageItem(socialStorageItem);
153
154
  // Clear the state from local storage
154
155
  socialStorage.deleteSocialStorage(socialStorageItem.provider);
@@ -180,6 +181,7 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
180
181
  authMode: socialStorageItem.mode,
181
182
  captchaToken: socialStorageItem.captchaToken,
182
183
  provider: socialStorageItem.provider,
184
+ ssoProviderId: socialStorageItem.dynamicOauthSsoProviderId,
183
185
  state: socialStorageItem.state,
184
186
  verifier: socialStorageItem.codeVerifier,
185
187
  });
@@ -136,7 +136,7 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
136
136
  /**
137
137
  * Find the redirect data from the first available source
138
138
  */
139
- const { dynamicOauthCode, dynamicOauthState } = (_a = getDynamicRedirectData(redirectUrl !== null && redirectUrl !== void 0 ? redirectUrl : null, window.location.href)) !== null && _a !== void 0 ? _a : {};
139
+ const { dynamicOauthCode, dynamicOauthState, dynamicOauthSsoProviderId } = (_a = getDynamicRedirectData(redirectUrl !== null && redirectUrl !== void 0 ? redirectUrl : null, window.location.href)) !== null && _a !== void 0 ? _a : {};
140
140
  if (!dynamicOauthState || !dynamicOauthCode) {
141
141
  return;
142
142
  }
@@ -145,6 +145,7 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
145
145
  return;
146
146
  // we got back the dynamicOauthCode from the oauth provider, set it here so we can use it to sign in
147
147
  socialStorageItem.code = dynamicOauthCode;
148
+ socialStorageItem.dynamicOauthSsoProviderId = dynamicOauthSsoProviderId;
148
149
  setSocialStorageItem(socialStorageItem);
149
150
  // Clear the state from local storage
150
151
  deleteSocialStorage(socialStorageItem.provider);
@@ -176,6 +177,7 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
176
177
  authMode: socialStorageItem.mode,
177
178
  captchaToken: socialStorageItem.captchaToken,
178
179
  provider: socialStorageItem.provider,
180
+ ssoProviderId: socialStorageItem.dynamicOauthSsoProviderId,
179
181
  state: socialStorageItem.state,
180
182
  verifier: socialStorageItem.codeVerifier,
181
183
  });
@@ -1,4 +1,5 @@
1
1
  export declare const getDynamicRedirectData: (redirectUrl: string | null, href: string) => {
2
2
  dynamicOauthCode: string;
3
3
  dynamicOauthState: string;
4
+ dynamicOauthSsoProviderId: string | undefined;
4
5
  } | null;
@@ -17,10 +17,11 @@ const getDynamicRedirectDataFromUrl = (url) => {
17
17
  const urlObj = new URL(url);
18
18
  const dynamicOauthCode = urlObj.searchParams.get('dynamicOauthCode');
19
19
  const dynamicOauthState = urlObj.searchParams.get('dynamicOauthState');
20
+ const dynamicOauthSsoProviderId = urlObj.searchParams.get('dynamicOauthSsoProviderId') || undefined;
20
21
  if (!dynamicOauthCode || !dynamicOauthState) {
21
22
  return null;
22
23
  }
23
- return { dynamicOauthCode, dynamicOauthState };
24
+ return { dynamicOauthCode, dynamicOauthSsoProviderId, dynamicOauthState };
24
25
  }
25
26
  catch (error) {
26
27
  logger.logger.error('Error extracting dynamic redirect data from URL', error);
@@ -4,5 +4,6 @@
4
4
  */
5
5
  export declare const getDynamicRedirectDataFromUrl: (url: string) => {
6
6
  dynamicOauthCode: string;
7
+ dynamicOauthSsoProviderId: string | undefined;
7
8
  dynamicOauthState: string;
8
9
  } | null;
@@ -13,10 +13,11 @@ const getDynamicRedirectDataFromUrl = (url) => {
13
13
  const urlObj = new URL(url);
14
14
  const dynamicOauthCode = urlObj.searchParams.get('dynamicOauthCode');
15
15
  const dynamicOauthState = urlObj.searchParams.get('dynamicOauthState');
16
+ const dynamicOauthSsoProviderId = urlObj.searchParams.get('dynamicOauthSsoProviderId') || undefined;
16
17
  if (!dynamicOauthCode || !dynamicOauthState) {
17
18
  return null;
18
19
  }
19
- return { dynamicOauthCode, dynamicOauthState };
20
+ return { dynamicOauthCode, dynamicOauthSsoProviderId, dynamicOauthState };
20
21
  }
21
22
  catch (error) {
22
23
  logger.error('Error extracting dynamic redirect data from URL', error);
@@ -90,12 +90,13 @@ const unlinkOAuth = (_c) => _tslib.__awaiter(void 0, [_c], void 0, function* ({
90
90
  return undefined;
91
91
  }
92
92
  });
93
- const signInOAuth = (environmentId_2, providerType_2, _d) => _tslib.__awaiter(void 0, [environmentId_2, providerType_2, _d], void 0, function* (environmentId, providerType, { code, codeVerifier, state, captchaToken, sessionPublicKey }) {
93
+ const signInOAuth = (environmentId_2, providerType_2, _d) => _tslib.__awaiter(void 0, [environmentId_2, providerType_2, _d], void 0, function* (environmentId, providerType, { code, codeVerifier, state, captchaToken, sessionPublicKey, ssoProviderId, }) {
94
94
  const oauthRequest = {
95
95
  captchaToken,
96
96
  code,
97
97
  codeVerifier,
98
98
  sessionPublicKey,
99
+ ssoProviderId,
99
100
  state,
100
101
  };
101
102
  try {
@@ -8,7 +8,7 @@ export declare const unlinkOAuth: ({ environmentId, primaryWalletId, verifiedCre
8
8
  primaryWalletId: string | undefined;
9
9
  verifiedCredentialId: string;
10
10
  }) => Promise<UserProfile | undefined>;
11
- export declare const signInOAuth: (environmentId: string, providerType: ProviderEnum, { code, codeVerifier, state, captchaToken, sessionPublicKey }: OauthRequest) => Promise<UserProfile | undefined>;
11
+ export declare const signInOAuth: (environmentId: string, providerType: ProviderEnum, { code, codeVerifier, state, captchaToken, sessionPublicKey, ssoProviderId, }: OauthRequest) => Promise<UserProfile | undefined>;
12
12
  export declare const getOAuthResult: (environmentId: string, providerType: ProviderEnum, { state }: OauthResultRequest) => Promise<OauthResultResponse | undefined>;
13
13
  export declare const farcasterSignIn: (environmentId: string, farcasterSignInRequest: FarcasterSignInRequest) => Promise<UserProfile | undefined>;
14
14
  export declare const farcasterVerify: (farcasterVerifyRequest: FarcasterVerifyRequest) => Promise<UserProfile | undefined>;
@@ -86,12 +86,13 @@ const unlinkOAuth = (_c) => __awaiter(void 0, [_c], void 0, function* ({ environ
86
86
  return undefined;
87
87
  }
88
88
  });
89
- const signInOAuth = (environmentId_2, providerType_2, _d) => __awaiter(void 0, [environmentId_2, providerType_2, _d], void 0, function* (environmentId, providerType, { code, codeVerifier, state, captchaToken, sessionPublicKey }) {
89
+ const signInOAuth = (environmentId_2, providerType_2, _d) => __awaiter(void 0, [environmentId_2, providerType_2, _d], void 0, function* (environmentId, providerType, { code, codeVerifier, state, captchaToken, sessionPublicKey, ssoProviderId, }) {
90
90
  const oauthRequest = {
91
91
  captchaToken,
92
92
  code,
93
93
  codeVerifier,
94
94
  sessionPublicKey,
95
+ ssoProviderId,
95
96
  state,
96
97
  };
97
98
  try {
@@ -2986,6 +2986,7 @@ const translation = {
2986
2986
  dyn_wallet_delegation: {
2987
2987
  title: 'Wallet delegation approval',
2988
2988
  approval_required: 'Approval required',
2989
+ approval_requested: 'Approval requested',
2989
2990
  approval_description: '{{appName}} is requesting access to perform automations on your behalf. You can revoke this permission at any time.',
2990
2991
  select_wallets: 'Select Wallets',
2991
2992
  select_all: 'Select All',
@@ -3002,6 +3003,7 @@ const translation = {
3002
3003
  something_went_wrong: 'Something went wrong',
3003
3004
  delegation_timeout_message: 'The delegation request timed out or was rejected. Please try approving again or come back in another time.',
3004
3005
  try_again_button: 'Try again',
3006
+ logout_button: 'Log out',
3005
3007
  },
3006
3008
  };
3007
3009
 
@@ -2982,6 +2982,7 @@ export declare const translation: {
2982
2982
  dyn_wallet_delegation: {
2983
2983
  title: string;
2984
2984
  approval_required: string;
2985
+ approval_requested: string;
2985
2986
  approval_description: string;
2986
2987
  select_wallets: string;
2987
2988
  select_all: string;
@@ -2998,5 +2999,6 @@ export declare const translation: {
2998
2999
  something_went_wrong: string;
2999
3000
  delegation_timeout_message: string;
3000
3001
  try_again_button: string;
3002
+ logout_button: string;
3001
3003
  };
3002
3004
  };
@@ -2982,6 +2982,7 @@ const translation = {
2982
2982
  dyn_wallet_delegation: {
2983
2983
  title: 'Wallet delegation approval',
2984
2984
  approval_required: 'Approval required',
2985
+ approval_requested: 'Approval requested',
2985
2986
  approval_description: '{{appName}} is requesting access to perform automations on your behalf. You can revoke this permission at any time.',
2986
2987
  select_wallets: 'Select Wallets',
2987
2988
  select_all: 'Select All',
@@ -2998,6 +2999,7 @@ const translation = {
2998
2999
  something_went_wrong: 'Something went wrong',
2999
3000
  delegation_timeout_message: 'The delegation request timed out or was rejected. Please try approving again or come back in another time.',
3000
3001
  try_again_button: 'Try again',
3002
+ logout_button: 'Log out',
3001
3003
  },
3002
3004
  };
3003
3005
 
@@ -103,6 +103,7 @@ const viewsThatPreventModalClose = [
103
103
  'login-with-sms-verification',
104
104
  'backup-unsuccessful',
105
105
  'wallet-upgrade-flow-view',
106
+ 'wallet-delegation-view',
106
107
  ];
107
108
  /**
108
109
  * When hasPendingMfaAction returns true, user is not able to close the modal in these views at all
@@ -99,6 +99,7 @@ const viewsThatPreventModalClose = [
99
99
  'login-with-sms-verification',
100
100
  'backup-unsuccessful',
101
101
  'wallet-upgrade-flow-view',
102
+ 'wallet-delegation-view',
102
103
  ];
103
104
  /**
104
105
  * When hasPendingMfaAction returns true, user is not able to close the modal in these views at all
@@ -1,4 +1,4 @@
1
- export { STORE_STORAGE_KEY, LAST_USED_WALLET, NETWORKS_STORAGE_KEY, THEME, WALLET_PICKER_SEARCH_KEY, EXCHANGE_PICKER_SEARCH_KEY, PHANTOM_SIGNATURE_STATE, DEVICE_FINGERPRINT, } from './localStorage';
1
+ export { STORE_STORAGE_KEY, LAST_USED_WALLET, NETWORKS_STORAGE_KEY, THEME, WALLET_PICKER_SEARCH_KEY, EXCHANGE_PICKER_SEARCH_KEY, PHANTOM_SIGNATURE_STATE, DEVICE_FINGERPRINT, DELEGATION_DENIED_WALLET_IDS, DELEGATION_PROMPT_DISMISSED, DELEGATION_COMPLETED_WALLET_IDS, DELEGATION_STATE, } from './localStorage';
2
2
  export { BASE_LIGHT_1, BASE_LIGHT_2, BASE_LIGHT_3, BASE_LIGHT_4, BASE_LIGHT_5, BASE_DARK_5, TEXT_LIGHT_PRIMARY, TEXT_LIGHT_SECONDARY, TEXT_LIGHT_TERTIARY, TEXT_LIGHT_LINK, CONNECTION_LIGHT_GREEN, CONNECTION_LIGHT_ORANGE, ERROR_LIGHT_1, ERROR_LIGHT_2, OVERLAY_LIGHT, HOVER_LIGHT, LOADING_ANIMATION_GRADIENT_LIGHT, BASE_DARK_1, BASE_DARK_2, BASE_DARK_3, BASE_DARK_4, DYNAMIC_CONNECT_BUTTON_BACKGROUND, DYNAMIC_CONNECT_BUTTON_BORDER, DYNAMIC_CONNECT_BUTTON_COLOR, TEXT_DARK_PRIMARY, TEXT_DARK_SECONDARY, TEXT_DARK_TERTIARY, TEXT_DARK_LINK, BRAND_HOVER, BRAND_PRIMARY, BRAND_SECONDARY, CONNECTION_DARK_GREEN, CONNECTION_DARK_ORANGE, ERROR_DARK_1, ERROR_DARK_2, OVERLAY_DARK, HOVER_DARK, LOADING_ANIMATION_GRADIENT_DARK, SHADOW_DOWN_1, SHADOW_DOWN_2, SHADOW_DOWN_3, SHADOW_UP_1, BRAND_HOVER_COLOR, BRAND_PRIMARY_COLOR, BRAND_SECONDARY_COLOR, } from './colors';
3
3
  export { BORDER_SQUARE, BORDER_ROUNDED, BORDER_RADIUS } from './theme';
4
4
  export { TITLE, BODY_NORMAL, BODY_SMALL, BODY_MINI, BUTTON_PRIMARY, BUTTON_SECONDARY, NUMBERS_BIG, NUMBERS_MEDIUM, } from './typography';
@@ -20,6 +20,8 @@ const CAPTCHA_TOKEN = 'dynamic_captcha_token';
20
20
  * Used to identify the purpose of a signature after phantom redirects back to the app in mobile
21
21
  */
22
22
  const PHANTOM_SIGNATURE_STATE = 'phantom_verification_type';
23
+ // Wallet Delegation: unified state container for delegation flow
24
+ const DELEGATION_STATE = 'dynamic_delegation_state';
23
25
  const STORE_STORAGE_KEY = 'dynamic_store';
24
26
  const SECURE_ENCLAVE_WALLET_SESSION_KEYS = 'dynamic_secure_enclave_session_keys';
25
27
  const SECURE_ENCLAVE_WALLET_SESSION_KEYS_STORAGE_OPTIONS = {
@@ -29,6 +31,7 @@ const SECURE_ENCLAVE_WALLET_SESSION_KEYS_STORAGE_OPTIONS = {
29
31
  exports.BRIDGE_ONBOARDING_COMPLETED = BRIDGE_ONBOARDING_COMPLETED;
30
32
  exports.CAPTCHA_TOKEN = CAPTCHA_TOKEN;
31
33
  exports.CONNECTED_WALLET_NAME_SERVICE = CONNECTED_WALLET_NAME_SERVICE;
34
+ exports.DELEGATION_STATE = DELEGATION_STATE;
32
35
  exports.DEVICE_FINGERPRINT = DEVICE_FINGERPRINT;
33
36
  exports.DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS = DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS;
34
37
  exports.EMBEDDED_WALLET_SECURE_BANNER = EMBEDDED_WALLET_SECURE_BANNER;
@@ -27,6 +27,10 @@ export type PhantomSignatureState = {
27
27
  * Used to identify the purpose of a signature after phantom redirects back to the app in mobile
28
28
  */
29
29
  export declare const PHANTOM_SIGNATURE_STATE = "phantom_verification_type";
30
+ export declare const DELEGATION_DENIED_WALLET_IDS = "dynamic_delegation_denied_wallet_ids";
31
+ export declare const DELEGATION_PROMPT_DISMISSED = "dynamic_delegation_prompt_dismissed";
32
+ export declare const DELEGATION_COMPLETED_WALLET_IDS = "dynamic_delegation_completed_wallet_ids";
33
+ export declare const DELEGATION_STATE = "dynamic_delegation_state";
30
34
  export declare const STORE_STORAGE_KEY = "dynamic_store";
31
35
  export declare const IP_LOOKUP_STORAGE_KEY = "dynamic_ip_lookup";
32
36
  export declare const SECURE_ENCLAVE_WALLET_SESSION_KEYS = "dynamic_secure_enclave_session_keys";
@@ -16,10 +16,12 @@ const CAPTCHA_TOKEN = 'dynamic_captcha_token';
16
16
  * Used to identify the purpose of a signature after phantom redirects back to the app in mobile
17
17
  */
18
18
  const PHANTOM_SIGNATURE_STATE = 'phantom_verification_type';
19
+ // Wallet Delegation: unified state container for delegation flow
20
+ const DELEGATION_STATE = 'dynamic_delegation_state';
19
21
  const STORE_STORAGE_KEY = 'dynamic_store';
20
22
  const SECURE_ENCLAVE_WALLET_SESSION_KEYS = 'dynamic_secure_enclave_session_keys';
21
23
  const SECURE_ENCLAVE_WALLET_SESSION_KEYS_STORAGE_OPTIONS = {
22
24
  priority: ['secureStorage', 'localStorage'],
23
25
  };
24
26
 
25
- export { BRIDGE_ONBOARDING_COMPLETED, CAPTCHA_TOKEN, CONNECTED_WALLET_NAME_SERVICE, DEVICE_FINGERPRINT, DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS, EMBEDDED_WALLET_SECURE_BANNER, EMBEDDED_WALLET_SESSION_SETTINGS, EXCHANGE_PICKER_SEARCH_KEY, LAST_USED_WALLET, NEWTOWEB3_WALLET_EXTENSION_FLAG_KEY, PHANTOM_SIGNATURE_STATE, PHONE_INPUT_DEFAULT_COUNTRY, SECURE_ENCLAVE_WALLET_SESSION_KEYS, SECURE_ENCLAVE_WALLET_SESSION_KEYS_STORAGE_OPTIONS, STORE_STORAGE_KEY, WAGMI_LAST_SESSION_SETTINGS, WALLET_PICKER_SEARCH_KEY };
27
+ export { BRIDGE_ONBOARDING_COMPLETED, CAPTCHA_TOKEN, CONNECTED_WALLET_NAME_SERVICE, DELEGATION_STATE, DEVICE_FINGERPRINT, DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS, EMBEDDED_WALLET_SECURE_BANNER, EMBEDDED_WALLET_SESSION_SETTINGS, EXCHANGE_PICKER_SEARCH_KEY, LAST_USED_WALLET, NEWTOWEB3_WALLET_EXTENSION_FLAG_KEY, PHANTOM_SIGNATURE_STATE, PHONE_INPUT_DEFAULT_COUNTRY, SECURE_ENCLAVE_WALLET_SESSION_KEYS, SECURE_ENCLAVE_WALLET_SESSION_KEYS_STORAGE_OPTIONS, STORE_STORAGE_KEY, WAGMI_LAST_SESSION_SETTINGS, WALLET_PICKER_SEARCH_KEY };
@@ -0,0 +1,47 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ /**
7
+ * Block explorer URL patterns for different chains
8
+ * This mapping allows for easy configuration and extension of transaction link formats
9
+ */
10
+ /**
11
+ * Predefined patterns for known block explorers
12
+ * Add new patterns here as needed for different chains
13
+ */
14
+ const BLOCK_EXPLORER_PATTERNS = [
15
+ {
16
+ description: 'TRON - Uses hash fragment format',
17
+ domain: 'tronscan.org',
18
+ generateUrl: (baseUrl, hash) => {
19
+ const url = new URL(baseUrl);
20
+ return `${url.origin}/#/transaction/${hash}`;
21
+ },
22
+ },
23
+ ];
24
+ /**
25
+ * Default pattern for standard block explorers
26
+ * Used when no specific pattern matches
27
+ */
28
+ const DEFAULT_PATTERN = {
29
+ description: 'Standard format used by most block explorers',
30
+ domain: '*',
31
+ generateUrl: (baseUrl, hash) => {
32
+ const url = new URL(baseUrl);
33
+ url.pathname = `/tx/${hash}`;
34
+ return url.toString();
35
+ },
36
+ };
37
+ /**
38
+ * Find the appropriate pattern for a given block explorer URL
39
+ */
40
+ const findBlockExplorerPattern = (blockExplorerUrl) => {
41
+ const pattern = BLOCK_EXPLORER_PATTERNS.find((pattern) => blockExplorerUrl.includes(pattern.domain));
42
+ return pattern || DEFAULT_PATTERN;
43
+ };
44
+
45
+ exports.BLOCK_EXPLORER_PATTERNS = BLOCK_EXPLORER_PATTERNS;
46
+ exports.DEFAULT_PATTERN = DEFAULT_PATTERN;
47
+ exports.findBlockExplorerPattern = findBlockExplorerPattern;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Block explorer URL patterns for different chains
3
+ * This mapping allows for easy configuration and extension of transaction link formats
4
+ */
5
+ export interface BlockExplorerPattern {
6
+ /** Domain pattern to match against block explorer URLs */
7
+ domain: string;
8
+ /** Function to generate the transaction URL */
9
+ generateUrl: (baseUrl: string, transactionHash: string) => string;
10
+ /** Description of the pattern for documentation */
11
+ description: string;
12
+ }
13
+ /**
14
+ * Predefined patterns for known block explorers
15
+ * Add new patterns here as needed for different chains
16
+ */
17
+ export declare const BLOCK_EXPLORER_PATTERNS: BlockExplorerPattern[];
18
+ /**
19
+ * Default pattern for standard block explorers
20
+ * Used when no specific pattern matches
21
+ */
22
+ export declare const DEFAULT_PATTERN: BlockExplorerPattern;
23
+ /**
24
+ * Find the appropriate pattern for a given block explorer URL
25
+ */
26
+ export declare const findBlockExplorerPattern: (blockExplorerUrl: string) => BlockExplorerPattern;
@@ -0,0 +1,41 @@
1
+ 'use client'
2
+ /**
3
+ * Block explorer URL patterns for different chains
4
+ * This mapping allows for easy configuration and extension of transaction link formats
5
+ */
6
+ /**
7
+ * Predefined patterns for known block explorers
8
+ * Add new patterns here as needed for different chains
9
+ */
10
+ const BLOCK_EXPLORER_PATTERNS = [
11
+ {
12
+ description: 'TRON - Uses hash fragment format',
13
+ domain: 'tronscan.org',
14
+ generateUrl: (baseUrl, hash) => {
15
+ const url = new URL(baseUrl);
16
+ return `${url.origin}/#/transaction/${hash}`;
17
+ },
18
+ },
19
+ ];
20
+ /**
21
+ * Default pattern for standard block explorers
22
+ * Used when no specific pattern matches
23
+ */
24
+ const DEFAULT_PATTERN = {
25
+ description: 'Standard format used by most block explorers',
26
+ domain: '*',
27
+ generateUrl: (baseUrl, hash) => {
28
+ const url = new URL(baseUrl);
29
+ url.pathname = `/tx/${hash}`;
30
+ return url.toString();
31
+ },
32
+ };
33
+ /**
34
+ * Find the appropriate pattern for a given block explorer URL
35
+ */
36
+ const findBlockExplorerPattern = (blockExplorerUrl) => {
37
+ const pattern = BLOCK_EXPLORER_PATTERNS.find((pattern) => blockExplorerUrl.includes(pattern.domain));
38
+ return pattern || DEFAULT_PATTERN;
39
+ };
40
+
41
+ export { BLOCK_EXPLORER_PATTERNS, DEFAULT_PATTERN, findBlockExplorerPattern };
@@ -4,6 +4,7 @@
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../../../../../_virtual/_tslib.cjs');
7
+ var blockExplorerPatterns = require('./blockExplorerPatterns.cjs');
7
8
 
8
9
  const getTransactionLink = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ walletConnector, transactionHash, }) {
9
10
  try {
@@ -13,9 +14,10 @@ const getTransactionLink = (_a) => _tslib.__awaiter(void 0, [_a], void 0, functi
13
14
  const [blockExplorerUrl] = yield walletConnector.getBlockExplorerUrlsForCurrentNetwork();
14
15
  if (!blockExplorerUrl)
15
16
  return undefined;
16
- const url = new URL(blockExplorerUrl);
17
- url.pathname = `/tx/${transactionHash}`;
18
- return url.toString();
17
+ // Find the appropriate pattern for this block explorer
18
+ const pattern = blockExplorerPatterns.findBlockExplorerPattern(blockExplorerUrl);
19
+ // Generate the transaction URL using the pattern
20
+ return pattern.generateUrl(blockExplorerUrl, transactionHash);
19
21
  }
20
22
  catch (error) {
21
23
  return undefined;
@@ -1,5 +1,6 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
+ import { findBlockExplorerPattern } from './blockExplorerPatterns.js';
3
4
 
4
5
  const getTransactionLink = (_a) => __awaiter(void 0, [_a], void 0, function* ({ walletConnector, transactionHash, }) {
5
6
  try {
@@ -9,9 +10,10 @@ const getTransactionLink = (_a) => __awaiter(void 0, [_a], void 0, function* ({
9
10
  const [blockExplorerUrl] = yield walletConnector.getBlockExplorerUrlsForCurrentNetwork();
10
11
  if (!blockExplorerUrl)
11
12
  return undefined;
12
- const url = new URL(blockExplorerUrl);
13
- url.pathname = `/tx/${transactionHash}`;
14
- return url.toString();
13
+ // Find the appropriate pattern for this block explorer
14
+ const pattern = findBlockExplorerPattern(blockExplorerUrl);
15
+ // Generate the transaction URL using the pattern
16
+ return pattern.generateUrl(blockExplorerUrl, transactionHash);
15
17
  }
16
18
  catch (error) {
17
19
  return undefined;
@@ -4,6 +4,8 @@ import { PayWithDynamicProps } from '../../hooks/usePayWithDynamic/usePayWithDyn
4
4
  export declare const SOCIAL_STORAGE_KEY = "dynamic_social_storage";
5
5
  export type SocialStorageItem = {
6
6
  provider: ProviderEnum;
7
+ /** SSO provider id */
8
+ dynamicOauthSsoProviderId: string | undefined;
7
9
  /** State issued to IDP on social authentication */
8
10
  state: string;
9
11
  /** Code verifier used to generate the code challenge for PKCE */
@@ -207,7 +207,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
207
207
  verifyFunction: () => apiCall(),
208
208
  });
209
209
  }), [handleError, initAuth, onSettled]);
210
- const completeConnection = React.useCallback((_b) => _tslib.__awaiter(void 0, [_b], void 0, function* ({ authMode, provider, state, authCode, captchaToken, verifier, telegramAuthToken, forceCreateUser = false, }) {
210
+ const completeConnection = React.useCallback((_b) => _tslib.__awaiter(void 0, [_b], void 0, function* ({ authMode, provider, state, authCode, captchaToken, verifier, telegramAuthToken, forceCreateUser = false, ssoProviderId, }) {
211
211
  try {
212
212
  let sessionPublicKey = undefined;
213
213
  utils.tracing.logEvent('oauth', 'completeConnection', utils.tracing.formatObject({
@@ -245,6 +245,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
245
245
  code: authCode,
246
246
  codeVerifier: verifier,
247
247
  sessionPublicKey,
248
+ ssoProviderId,
248
249
  state,
249
250
  });
250
251
  yield signInAccount(provider, apiCall);
@@ -371,7 +372,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
371
372
  shouldRegisterSessionKeysOnSignin,
372
373
  signInAccount,
373
374
  ]);
374
- const connectSocialAccount = React.useCallback((_d) => _tslib.__awaiter(void 0, [_d], void 0, function* ({ authMode, provider, validator, captchaToken, isHeadlessSocialSignIn, payingWithDynamic, triggerFundFromExchangeOnSuccess, redirectUrl, telegramAuthToken, showWidgetAfterConnection, }) {
375
+ const connectSocialAccount = React.useCallback((_d) => _tslib.__awaiter(void 0, [_d], void 0, function* ({ authMode, provider, validator, captchaToken, isHeadlessSocialSignIn, payingWithDynamic, triggerFundFromExchangeOnSuccess, redirectUrl, telegramAuthToken, showWidgetAfterConnection, ssoProviderId, }) {
375
376
  var _e, _f;
376
377
  clearError();
377
378
  setIsProcessing(true);
@@ -404,6 +405,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
404
405
  socialStorage.setSocialStorageFor(provider, {
405
406
  captchaToken,
406
407
  codeVerifier: usingPkce ? verifier : undefined,
408
+ dynamicOauthSsoProviderId: ssoProviderId,
407
409
  isHeadlessSocialSignIn,
408
410
  mode: authMode,
409
411
  payingWithDynamic,
@@ -451,6 +453,7 @@ const useSocialAuth = ({ onSettled, onError, onFarcasterUrl, }) => {
451
453
  authMode,
452
454
  captchaToken,
453
455
  provider,
456
+ ssoProviderId,
454
457
  state,
455
458
  telegramAuthToken,
456
459
  verifier,
@@ -20,10 +20,12 @@ export type ConnectSocialAccountProps = {
20
20
  payingWithDynamic?: PayWithDynamicProps;
21
21
  /** marks the flow as initiated by headless sign-in API */
22
22
  isHeadlessSocialSignIn?: boolean;
23
+ /** SSO provider ID for social authentication */
24
+ ssoProviderId?: string;
23
25
  };
24
26
  export declare const useSocialAuth: ({ onSettled, onError, onFarcasterUrl, }: UseSocialAuthProps) => {
25
27
  readonly checkValidProvider: (provider: ProviderEnum, authMode: SocialAuthMode) => boolean;
26
- readonly completeConnection: ({ authMode, provider, state, authCode, captchaToken, verifier, telegramAuthToken, forceCreateUser, }: {
28
+ readonly completeConnection: ({ authMode, provider, state, authCode, captchaToken, verifier, telegramAuthToken, forceCreateUser, ssoProviderId, }: {
27
29
  authMode: SocialAuthMode;
28
30
  provider: ProviderEnum;
29
31
  state: string;
@@ -32,6 +34,7 @@ export declare const useSocialAuth: ({ onSettled, onError, onFarcasterUrl, }: Us
32
34
  verifier?: string | undefined;
33
35
  telegramAuthToken?: string | undefined;
34
36
  forceCreateUser?: boolean | undefined;
37
+ ssoProviderId?: string | undefined;
35
38
  }) => Promise<void>;
36
39
  readonly connectSocialAccount: (props: ConnectSocialAccountProps) => Promise<void>;
37
40
  readonly error: SocialOAuthError | undefined;