@dynamic-labs/wallet-connector-core 4.0.0-alpha.4 → 4.0.0-alpha.41

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 (112) hide show
  1. package/CHANGELOG.md +361 -0
  2. package/package.cjs +8 -0
  3. package/package.js +4 -0
  4. package/package.json +9 -16
  5. package/src/{lib/wallets/Wallet → Wallet}/Wallet.cjs +3 -5
  6. package/src/{lib/wallets/Wallet → Wallet}/Wallet.d.ts +1 -1
  7. package/src/{lib/wallets/Wallet → Wallet}/Wallet.js +3 -5
  8. package/src/{lib → WalletBookSingleton}/WalletBookSingleton.cjs +3 -0
  9. package/src/{lib → WalletBookSingleton}/WalletBookSingleton.d.ts +1 -0
  10. package/src/{lib → WalletBookSingleton}/WalletBookSingleton.js +3 -0
  11. package/src/WalletBookSingleton/index.d.ts +1 -0
  12. package/src/{lib/WalletConnector.cjs → WalletConnectorBase/WalletConnectorBase.cjs} +20 -37
  13. package/src/{lib/WalletConnector.d.ts → WalletConnectorBase/WalletConnectorBase.d.ts} +13 -44
  14. package/src/{lib/WalletConnector.js → WalletConnectorBase/WalletConnectorBase.js} +21 -36
  15. package/src/WalletConnectorBase/index.d.ts +2 -0
  16. package/src/WalletConnectorBase/types.cjs +33 -0
  17. package/src/WalletConnectorBase/types.d.ts +54 -0
  18. package/src/WalletConnectorBase/types.js +28 -0
  19. package/src/events/index.d.ts +1 -0
  20. package/src/events/walletConnectorEvents.cjs +14 -0
  21. package/src/events/walletConnectorEvents.d.ts +34 -0
  22. package/src/events/walletConnectorEvents.js +6 -0
  23. package/src/index.cjs +22 -7
  24. package/src/index.d.ts +7 -4
  25. package/src/index.js +13 -2
  26. package/src/{lib → interfaces}/IAccountAbstractionWalletConnector.d.ts +11 -2
  27. package/src/{lib → interfaces}/IBitcoinWalletConnector.d.ts +1 -1
  28. package/src/{lib → interfaces}/ICoinbaseMPCWalletConnector.d.ts +1 -1
  29. package/src/{lib → interfaces}/IEmailWalletConnector.d.ts +1 -1
  30. package/src/{lib → interfaces}/IHardwareWalletConnector.d.ts +1 -1
  31. package/src/{lib → interfaces}/IPasskeyWalletConnector.d.ts +1 -1
  32. package/src/{lib → interfaces}/IPhantomRedirectConnector.d.ts +1 -1
  33. package/src/{lib → interfaces}/ISMSWalletConnector.d.ts +1 -1
  34. package/src/{lib → interfaces}/ISendBalanceWalletConnector.d.ts +1 -1
  35. package/src/{lib → interfaces}/ISessionKeyCompatibleWalletConnector.d.ts +1 -1
  36. package/src/{lib → interfaces}/ITurnkeyWalletConnector.d.ts +1 -1
  37. package/src/interfaces/ITurnkeyWalletConnectorStamper.d.ts +35 -0
  38. package/src/{lib → interfaces}/IWalletConnectConnector.d.ts +1 -1
  39. package/src/{lib → interfaces}/index.d.ts +7 -10
  40. package/src/types.d.ts +88 -0
  41. package/src/utils/eventListenerHandlers.d.ts +1 -1
  42. package/src/utils/getChainInfo/getChainInfo.cjs +4 -4
  43. package/src/utils/getChainInfo/getChainInfo.d.ts +2 -2
  44. package/src/utils/getChainInfo/getChainInfo.js +4 -4
  45. package/src/utils/getWalletConnectorByKey.d.ts +1 -1
  46. package/src/utils/getWalletLinks/getWalletLinks.cjs +32 -0
  47. package/src/utils/getWalletLinks/getWalletLinks.d.ts +2 -0
  48. package/src/utils/getWalletLinks/getWalletLinks.js +28 -0
  49. package/src/utils/getWalletLinks/index.d.ts +1 -0
  50. package/src/utils/getWalletMetadataFromWalletBook/getDeepLinks/getDeepLinks.cjs +36 -0
  51. package/src/utils/getWalletMetadataFromWalletBook/getDeepLinks/getDeepLinks.d.ts +6 -0
  52. package/src/utils/getWalletMetadataFromWalletBook/getDeepLinks/getDeepLinks.js +32 -0
  53. package/src/utils/getWalletMetadataFromWalletBook/getDeepLinks/index.d.ts +1 -0
  54. package/src/utils/getWalletMetadataFromWalletBook/getDownloadLinks/getDownloadLinks.cjs +36 -0
  55. package/src/utils/getWalletMetadataFromWalletBook/getDownloadLinks/getDownloadLinks.d.ts +3 -0
  56. package/src/utils/getWalletMetadataFromWalletBook/getDownloadLinks/getDownloadLinks.js +32 -0
  57. package/src/utils/getWalletMetadataFromWalletBook/getDownloadLinks/index.d.ts +1 -0
  58. package/src/utils/getWalletMetadataFromWalletBook/getIconUrl/getIconUrl.cjs +15 -0
  59. package/src/utils/getWalletMetadataFromWalletBook/getIconUrl/getIconUrl.d.ts +1 -0
  60. package/src/utils/getWalletMetadataFromWalletBook/getIconUrl/getIconUrl.js +11 -0
  61. package/src/utils/getWalletMetadataFromWalletBook/getIconUrl/index.d.ts +1 -0
  62. package/src/utils/getWalletMetadataFromWalletBook/getValidHexColor/getValidHexColor.cjs +15 -0
  63. package/src/utils/getWalletMetadataFromWalletBook/getValidHexColor/getValidHexColor.d.ts +1 -0
  64. package/src/utils/getWalletMetadataFromWalletBook/getValidHexColor/getValidHexColor.js +11 -0
  65. package/src/utils/getWalletMetadataFromWalletBook/getValidHexColor/index.d.ts +1 -0
  66. package/src/utils/getWalletMetadataFromWalletBook/getWalletLimitations/getWalletLimitations.cjs +19 -0
  67. package/src/utils/getWalletMetadataFromWalletBook/getWalletLimitations/getWalletLimitations.d.ts +3 -0
  68. package/src/utils/getWalletMetadataFromWalletBook/getWalletLimitations/getWalletLimitations.js +15 -0
  69. package/src/utils/getWalletMetadataFromWalletBook/getWalletLimitations/index.d.ts +1 -0
  70. package/src/utils/getWalletMetadataFromWalletBook/getWalletMetadataFromWalletBook.cjs +46 -0
  71. package/src/utils/getWalletMetadataFromWalletBook/getWalletMetadataFromWalletBook.d.ts +10 -0
  72. package/src/utils/getWalletMetadataFromWalletBook/getWalletMetadataFromWalletBook.js +42 -0
  73. package/src/utils/getWalletMetadataFromWalletBook/index.d.ts +1 -0
  74. package/src/utils/index.d.ts +4 -0
  75. package/src/utils/isAccountAbstractionConnector/isAccountAbstractionConnector.d.ts +1 -1
  76. package/src/utils/isBitcoinConnector/isBitcoinConnector.d.ts +1 -1
  77. package/src/utils/isBloctoConnector/isBloctoConnector.d.ts +1 -1
  78. package/src/utils/isCoinbaseMpcWalletConnector/isCoinbaseMpcWalletConnector.d.ts +1 -1
  79. package/src/utils/isConnectorEventSupported/index.d.ts +1 -0
  80. package/src/utils/isConnectorEventSupported/isConnectorEventSupported.cjs +11 -0
  81. package/src/utils/isConnectorEventSupported/isConnectorEventSupported.d.ts +3 -0
  82. package/src/utils/isConnectorEventSupported/isConnectorEventSupported.js +7 -0
  83. package/src/utils/isConnectorMethodSupported/isConnectorMethodSupported.cjs +2 -5
  84. package/src/utils/isConnectorMethodSupported/isConnectorMethodSupported.d.ts +3 -3
  85. package/src/utils/isConnectorMethodSupported/isConnectorMethodSupported.js +2 -5
  86. package/src/utils/isEmailOTPWalletConnector/isEmailOTPWalletConnector.d.ts +1 -1
  87. package/src/utils/isEmailWalletConnector/isEmailWalletConnector.d.ts +1 -1
  88. package/src/utils/isEmbeddedConnector/isEmbeddedConnector.d.ts +1 -1
  89. package/src/utils/isHardwareWalletConnector/isHardwareWalletConnector.d.ts +1 -1
  90. package/src/utils/isMagicConnector/isMagicConnector.d.ts +1 -1
  91. package/src/utils/isPasskeyWalletConnector/isPasskeyWalletConnector.d.ts +1 -1
  92. package/src/utils/isPhantomRedirectConnector/isPhantomRedirectConnector.d.ts +1 -1
  93. package/src/utils/isSendBalanceWalletConnector/isSendBalanceWalletConnector.cjs +2 -1
  94. package/src/utils/isSendBalanceWalletConnector/isSendBalanceWalletConnector.d.ts +2 -2
  95. package/src/utils/isSendBalanceWalletConnector/isSendBalanceWalletConnector.js +2 -1
  96. package/src/utils/isSessionKeyCompatible/isSessionKeyCompatibleWallet/isSessionKeyCompatibleWallet.d.ts +1 -1
  97. package/src/utils/isSessionKeyCompatible/isSessionKeyCompatibleWalletConnector/isSessionKeyCompatibleWalletConnector.d.ts +2 -2
  98. package/src/utils/isSocialWalletConnector/isSocialWalletConnector.d.ts +1 -1
  99. package/src/utils/isTurnkeyWalletConnector/isTurnkeyWalletConnector.d.ts +1 -1
  100. package/src/utils/isWalletConnectConnector/isWalletConnectConnector.d.ts +1 -1
  101. package/src/utils/walletConnectDeepLinks/performPlatformSpecificConnectionMethod.cjs +3 -3
  102. package/src/utils/walletConnectDeepLinks/performPlatformSpecificConnectionMethod.d.ts +3 -3
  103. package/src/utils/walletConnectDeepLinks/performPlatformSpecificConnectionMethod.js +3 -3
  104. package/src/utils/walletConnectDeepLinks/walletConnectDeepLinks.cjs +11 -8
  105. package/src/utils/walletConnectDeepLinks/walletConnectDeepLinks.d.ts +3 -3
  106. package/src/utils/walletConnectDeepLinks/walletConnectDeepLinks.js +11 -8
  107. package/src/lib/ITurnkeyWalletConnectorStamper.d.ts +0 -18
  108. package/src/lib/WalletConnectorExtension.d.ts +0 -7
  109. package/src/lib/types.d.ts +0 -8
  110. package/src/lib/wallets/index.d.ts +0 -1
  111. /package/src/{lib/wallets/Wallet → Wallet}/index.d.ts +0 -0
  112. /package/src/{lib → interfaces}/IEmailOTPWalletConnector.d.ts +0 -0
@@ -1,61 +1,28 @@
1
1
  import EventEmitter from 'eventemitter3';
2
- import { WalletBookSchema, WalletSchema } from '@dynamic-labs/wallet-book';
3
- import type { JwtVerifiedCredential, WalletAdditionalAddress } from '@dynamic-labs/sdk-api-core';
4
2
  import { IChainRpcProviders } from '@dynamic-labs/rpc-providers';
3
+ import type { JwtVerifiedCredential, WalletAdditionalAddress } from '@dynamic-labs/sdk-api-core';
5
4
  import { MobileExperience } from '@dynamic-labs/types';
6
- import { WalletBookSingleton } from './WalletBookSingleton';
7
- import { WalletConnectorExtension } from './WalletConnectorExtension';
8
- import { WalletConnectorCore } from './types';
9
- import { WalletConstructor, WalletProps } from './wallets';
10
- export declare const Chains: readonly ["ETH", "FLOW", "SOL", "EVM", "ALGO", "STARK", "ATOM", "COSMOS", "BTC"];
11
- export type Chain = typeof Chains[number];
12
- export declare const socialProviders: readonly ["google", "facebook", "apple", "github", "bitbucket", "gitlab", "linkedin", "twitter", "discord", "twitch", "microsoft"];
13
- export type SocialProvider = typeof socialProviders[number];
14
- export type PayloadParams = {
15
- params: {
16
- accounts: string[];
17
- chainId: number;
18
- message: string;
19
- }[];
20
- };
21
- export type GetAddressOpts = {
22
- chainId?: string;
23
- onConnect?(payload: PayloadParams): void;
24
- onDesktopUri?(uri: string): void;
25
- onDisplayUri?(uri: string): void;
26
- };
27
- export type NameServiceData = {
28
- avatar?: string;
29
- name?: string;
30
- };
31
- declare module './types' {
5
+ import { WalletBookSchema, WalletSchema } from '@dynamic-labs/wallet-book';
6
+ import { WalletConnectorEventEmitter } from '../events';
7
+ import { WalletMetadata } from '../types';
8
+ import { WalletConstructor, WalletProps } from '../Wallet';
9
+ import { WalletBookSingleton } from '../WalletBookSingleton';
10
+ import { Chain, GetAddressOpts, InternalWalletConnector, NameServiceData, WalletConnectorEventTypes, WalletConnectorExtension } from './types';
11
+ declare module '../types' {
32
12
  namespace WalletConnectorCore {
33
13
  interface WalletConnector extends WalletConnectorBase {
34
14
  }
35
15
  }
36
16
  }
37
- export type InternalWalletConnector = WalletConnectorCore.WalletConnector;
38
- export type WalletConnector = Pick<InternalWalletConnector, 'canConnectViaCustodialService' | 'canConnectViaQrCode' | 'canConnectViaSocial' | 'chainRpcProviders' | 'connect' | 'connectedChain' | 'createWallet' | 'constructorProps' | 'endSession' | 'getAddress' | 'getAdditionalAddresses' | 'getConnectedAccounts' | 'getDeepLink' | 'getMobileOrInstalledWallet' | 'getNetwork' | 'getSession' | 'initEventListener' | 'isAvailable' | 'isEmbeddedWallet' | 'isInitialized' | 'isInstalledOnBrowser' | 'isTestnet' | 'isWalletConnect' | 'key' | 'name' | 'parseAddress' | 'proveOwnership' | 'providerResources' | 'supportedChains' | 'supportsNetworkSwitching' | 'switchNetwork' | 'switchNetworkOnlyFromWallet' | 'teardownEventListeners'> & EventEmitter<WalletConnectorEventTypes>;
39
- export interface WalletConnectorConstructor {
40
- new (props?: any): InternalWalletConnector;
41
- }
42
- export type WalletConnectorsMethod = (props?: any) => WalletConnectorConstructor[];
43
- export type WalletConnectorEventTypes = {
44
- chainChange: (props: {
45
- chain: string;
46
- }) => void;
47
- accountChange: (props: {
48
- accounts: string[];
49
- }) => void;
50
- disconnect: () => void;
51
- };
52
17
  export declare abstract class WalletConnectorBase<C extends WalletConstructor<any> = WalletConstructor<any>> extends EventEmitter<WalletConnectorEventTypes> {
53
18
  #private;
54
19
  abstract ChainWallet: C;
55
- createWallet(props: WalletProps<InternalWalletConnector>): import("./wallets").Wallet<any>;
20
+ createWallet(props: WalletProps<InternalWalletConnector>): import("../Wallet").Wallet<any>;
56
21
  chainRpcProviders: IChainRpcProviders | undefined;
57
22
  constructorProps: any;
58
23
  _walletBookInstance: WalletBookSingleton;
24
+ _metadata: WalletMetadata | undefined;
25
+ walletConnectorEventsEmitter: WalletConnectorEventEmitter;
59
26
  walletFallback: WalletSchema | undefined;
60
27
  isGlobalTransaction: boolean;
61
28
  /**
@@ -66,6 +33,7 @@ export declare abstract class WalletConnectorBase<C extends WalletConstructor<an
66
33
  */
67
34
  constructor(props: {
68
35
  walletBook: WalletBookSchema;
36
+ metadata?: WalletMetadata;
69
37
  });
70
38
  extend(extension: WalletConnectorExtension, settings?: {
71
39
  walletConnectDappProjectId?: string;
@@ -252,6 +220,7 @@ export declare abstract class WalletConnectorBase<C extends WalletConstructor<an
252
220
  * Override key or the normalized wallet name if needed
253
221
  */
254
222
  get key(): string;
223
+ get metadata(): WalletMetadata;
255
224
  /**
256
225
  * Wallet name
257
226
  */
@@ -1,44 +1,21 @@
1
1
  'use client'
2
2
  import { __classPrivateFieldGet, __awaiter } from '../../_virtual/_tslib.js';
3
3
  import EventEmitter from 'eventemitter3';
4
- import { getWalletBookWallet } from '@dynamic-labs/wallet-book';
5
4
  import { WalletAddressMismatchError } from '@dynamic-labs/utils';
5
+ import { walletConnectorEvents } from '../events/walletConnectorEvents.js';
6
6
  import { logger } from '../utils/logger.js';
7
7
  import { isSameAddress } from '../utils/isSameAddress/isSameAddress.js';
8
8
  import { getMobileExperience } from '../utils/getMobileExperience/getMobileExperience.js';
9
+ import { getWalletMetadataFromWalletBook } from '../utils/getWalletMetadataFromWalletBook/getWalletMetadataFromWalletBook.js';
9
10
  import { isConnectorMethodSupported } from '../utils/isConnectorMethodSupported/isConnectorMethodSupported.js';
10
- import { WalletBookSingleton } from './WalletBookSingleton.js';
11
+ import '@dynamic-labs/wallet-book';
12
+ import { WalletBookSingleton } from '../WalletBookSingleton/WalletBookSingleton.js';
11
13
 
12
14
  /* eslint-disable @typescript-eslint/triple-slash-reference */
13
15
  /* eslint-disable @typescript-eslint/no-namespace */
14
16
  /* eslint-disable prefer-arrow/prefer-arrow-functions */
15
17
  /* eslint-disable @typescript-eslint/no-unused-vars */
16
18
  var _WalletConnectorBase_registeredExtensions;
17
- /* eslint-disable @typescript-eslint/no-empty-interface */
18
- const Chains = [
19
- 'ETH',
20
- 'FLOW',
21
- 'SOL',
22
- 'EVM',
23
- 'ALGO',
24
- 'STARK',
25
- 'ATOM',
26
- 'COSMOS',
27
- 'BTC',
28
- ];
29
- const socialProviders = [
30
- 'google',
31
- 'facebook',
32
- 'apple',
33
- 'github',
34
- 'bitbucket',
35
- 'gitlab',
36
- 'linkedin',
37
- 'twitter',
38
- 'discord',
39
- 'twitch',
40
- 'microsoft',
41
- ];
42
19
  class WalletConnectorBase extends EventEmitter {
43
20
  createWallet(props) {
44
21
  const wallet = new this.ChainWallet(props);
@@ -118,6 +95,10 @@ class WalletConnectorBase extends EventEmitter {
118
95
  this.isInitialized = true;
119
96
  this.constructorProps = props;
120
97
  this._walletBookInstance = WalletBookSingleton.getOrCreate(props.walletBook);
98
+ this._metadata = props.metadata;
99
+ this.walletConnectorEventsEmitter =
100
+ this.constructorProps.walletConnectorEventsEmitter ||
101
+ walletConnectorEvents;
121
102
  if (this.walletBook === undefined) {
122
103
  throw new Error('WalletConnectorBase was not called with super(props) and is missing wallet-book');
123
104
  }
@@ -148,13 +129,7 @@ class WalletConnectorBase extends EventEmitter {
148
129
  return this._walletBookInstance.walletBook;
149
130
  }
150
131
  filter() {
151
- try {
152
- getWalletBookWallet(this.walletBook, this.key, this.walletFallback);
153
- return true;
154
- }
155
- catch (_a) {
156
- return false;
157
- }
132
+ return true;
158
133
  }
159
134
  get mobileExperience() {
160
135
  return getMobileExperience({
@@ -299,6 +274,16 @@ class WalletConnectorBase extends EventEmitter {
299
274
  get key() {
300
275
  return this.overrideKey || this.name.replace(/\W/g, '').toLowerCase();
301
276
  }
277
+ get metadata() {
278
+ var _a;
279
+ if (!this._metadata) {
280
+ this._metadata = getWalletMetadataFromWalletBook({
281
+ walletBook: this.walletBook,
282
+ walletKey: this.key,
283
+ });
284
+ }
285
+ return (_a = this._metadata) !== null && _a !== void 0 ? _a : { icon: '', id: this.key, name: this.name };
286
+ }
302
287
  /**
303
288
  * Whether the wallet connector should fall back to a different wallet connector
304
289
  * This is called after the object is instantiated, so it can't be a static property
@@ -410,7 +395,7 @@ class WalletConnectorBase extends EventEmitter {
410
395
  validateActiveWallet(expectedAddress) {
411
396
  return __awaiter(this, void 0, void 0, function* () {
412
397
  logger.debug('validateActiveWallet - validating wallet', expectedAddress);
413
- const canFetchConnectedAccounts = isConnectorMethodSupported(this, 'getConnectedAccounts', 'browserExtension');
398
+ const canFetchConnectedAccounts = isConnectorMethodSupported(this, 'getConnectedAccounts', 'desktop');
414
399
  logger.debug('validateActiveWallet - getting connected accounts', {
415
400
  canFetchConnectedAccounts,
416
401
  });
@@ -450,4 +435,4 @@ class WalletConnectorBase extends EventEmitter {
450
435
  }
451
436
  _WalletConnectorBase_registeredExtensions = new WeakMap();
452
437
 
453
- export { Chains, WalletConnectorBase, socialProviders };
438
+ export { WalletConnectorBase };
@@ -0,0 +1,2 @@
1
+ export * from './WalletConnectorBase';
2
+ export * from './types';
@@ -0,0 +1,33 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ const Chains = [
7
+ 'ETH',
8
+ 'FLOW',
9
+ 'SOL',
10
+ 'EVM',
11
+ 'ALGO',
12
+ 'STARK',
13
+ 'ATOM',
14
+ 'COSMOS',
15
+ 'BTC',
16
+ 'ECLIPSE',
17
+ ];
18
+ const socialProviders = [
19
+ 'google',
20
+ 'facebook',
21
+ 'apple',
22
+ 'github',
23
+ 'bitbucket',
24
+ 'gitlab',
25
+ 'linkedin',
26
+ 'twitter',
27
+ 'discord',
28
+ 'twitch',
29
+ 'microsoft',
30
+ ];
31
+
32
+ exports.Chains = Chains;
33
+ exports.socialProviders = socialProviders;
@@ -0,0 +1,54 @@
1
+ import EventEmitter from 'eventemitter3';
2
+ import { WalletConnectorCore } from '../types';
3
+ export declare const Chains: readonly ["ETH", "FLOW", "SOL", "EVM", "ALGO", "STARK", "ATOM", "COSMOS", "BTC", "ECLIPSE"];
4
+ export type Chain = typeof Chains[number];
5
+ export declare const socialProviders: readonly ["google", "facebook", "apple", "github", "bitbucket", "gitlab", "linkedin", "twitter", "discord", "twitch", "microsoft"];
6
+ export type SocialProvider = typeof socialProviders[number];
7
+ export type PayloadParams = {
8
+ params: {
9
+ accounts: string[];
10
+ chainId: number;
11
+ message: string;
12
+ }[];
13
+ };
14
+ export type GetAddressOpts = {
15
+ chainId?: string;
16
+ onConnect?(payload: PayloadParams): void;
17
+ onDesktopUri?(uri: string): void;
18
+ onDisplayUri?(uri: string): void;
19
+ };
20
+ export type NameServiceData = {
21
+ avatar?: string;
22
+ name?: string;
23
+ };
24
+ export type InternalWalletConnector = WalletConnectorCore.WalletConnector;
25
+ export type WalletConnector = Pick<InternalWalletConnector, 'canConnectViaCustodialService' | 'canConnectViaQrCode' | 'canConnectViaSocial' | 'chainRpcProviders' | 'connect' | 'connectedChain' | 'createWallet' | 'constructorProps' | 'endSession' | 'getAddress' | 'getAdditionalAddresses' | 'getConnectedAccounts' | 'getDeepLink' | 'getMobileOrInstalledWallet' | 'getNetwork' | 'getSession' | 'initEventListener' | 'isAvailable' | 'isEmbeddedWallet' | 'isInitialized' | 'isInstalledOnBrowser' | 'isTestnet' | 'isWalletConnect' | 'key' | 'metadata' | 'name' | 'parseAddress' | 'proveOwnership' | 'providerResources' | 'supportedChains' | 'supportsNetworkSwitching' | 'switchNetwork' | 'switchNetworkOnlyFromWallet' | 'teardownEventListeners'> & EventEmitter<WalletConnectorEventTypes>;
26
+ export interface WalletConnectorConstructor {
27
+ new (props?: any): InternalWalletConnector;
28
+ }
29
+ export type WalletConnectorsMethod = (props?: any) => WalletConnectorConstructor[];
30
+ export type WalletConnectorEventTypes = {
31
+ chainChange: (props: {
32
+ chain: string;
33
+ }) => void;
34
+ accountChange: (props: {
35
+ accounts: string[];
36
+ }) => void;
37
+ disconnect: () => void;
38
+ };
39
+ export interface WalletConnectorExtension {
40
+ extend(connector: InternalWalletConnector, settings?: {
41
+ walletConnectDappProjectId?: string;
42
+ }): void;
43
+ name: string;
44
+ }
45
+ export type ChainChangeEventHandler = (chainId: string | number) => Promise<void>;
46
+ export type DisconnectEventHandler = (error?: {
47
+ code: number;
48
+ }) => Promise<void>;
49
+ export type ChainInfo = {
50
+ blockchainName: string;
51
+ displayName: string;
52
+ name: string;
53
+ symbol: Chain;
54
+ };
@@ -0,0 +1,28 @@
1
+ 'use client'
2
+ const Chains = [
3
+ 'ETH',
4
+ 'FLOW',
5
+ 'SOL',
6
+ 'EVM',
7
+ 'ALGO',
8
+ 'STARK',
9
+ 'ATOM',
10
+ 'COSMOS',
11
+ 'BTC',
12
+ 'ECLIPSE',
13
+ ];
14
+ const socialProviders = [
15
+ 'google',
16
+ 'facebook',
17
+ 'apple',
18
+ 'github',
19
+ 'bitbucket',
20
+ 'gitlab',
21
+ 'linkedin',
22
+ 'twitter',
23
+ 'discord',
24
+ 'twitch',
25
+ 'microsoft',
26
+ ];
27
+
28
+ export { Chains, socialProviders };
@@ -0,0 +1 @@
1
+ export * from './walletConnectorEvents';
@@ -0,0 +1,14 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var EventEmitter = require('eventemitter3');
7
+
8
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
+
10
+ var EventEmitter__default = /*#__PURE__*/_interopDefaultLegacy(EventEmitter);
11
+
12
+ const walletConnectorEvents = new EventEmitter__default["default"]();
13
+
14
+ exports.walletConnectorEvents = walletConnectorEvents;
@@ -0,0 +1,34 @@
1
+ import EventEmitter from 'eventemitter3';
2
+ import { InternalWalletConnector, WalletConnectorConstructor } from '../WalletConnectorBase';
3
+ type AutoConnectEventProps = {
4
+ connector: InternalWalletConnector;
5
+ };
6
+ type ProviderReadyEventProps = {
7
+ connector: InternalWalletConnector;
8
+ };
9
+ type ProviderInjectedEventProps = {
10
+ injectedConnectorConstructor: WalletConnectorConstructor;
11
+ };
12
+ export type WalletConnectorEvents = {
13
+ /**
14
+ * This is useful for when we want to auto-connect/login with a wallet
15
+ * without the user having to select it from the list, as long as
16
+ * the wallet is already connected to the dapp
17
+ *
18
+ * For example, we can auto-connect to a Safe wallet from a a Safe App
19
+ */
20
+ autoConnect: (props: AutoConnectEventProps) => void;
21
+ /**
22
+ * This is useful for when we want to know when the wallet provider
23
+ * is ready to be used
24
+ */
25
+ providerReady: (props: ProviderReadyEventProps) => void;
26
+ /**
27
+ * This is emitted when a wallet gets announced (eip6963, bitcoin wallet standard, solana wallet standard, etc)
28
+ * It contains the constructor of the wallet connector that was injected
29
+ */
30
+ providerInjected: (props: ProviderInjectedEventProps) => void;
31
+ };
32
+ export declare const walletConnectorEvents: EventEmitter<WalletConnectorEvents, any>;
33
+ export type WalletConnectorEventEmitter = typeof walletConnectorEvents;
34
+ export {};
@@ -0,0 +1,6 @@
1
+ 'use client'
2
+ import EventEmitter from 'eventemitter3';
3
+
4
+ const walletConnectorEvents = new EventEmitter();
5
+
6
+ export { walletConnectorEvents };
package/src/index.cjs CHANGED
@@ -3,8 +3,9 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var WalletConnector = require('./lib/WalletConnector.cjs');
7
- var Wallet = require('./lib/wallets/Wallet/Wallet.cjs');
6
+ var assertPackageVersion = require('@dynamic-labs/assert-package-version');
7
+ var _package = require('../package.cjs');
8
+ var walletConnectorEvents = require('./events/walletConnectorEvents.cjs');
8
9
  var logger = require('./utils/logger.cjs');
9
10
  var ProviderLookup = require('./utils/ProviderLookup/ProviderLookup.cjs');
10
11
  var getChainInfo = require('./utils/getChainInfo/getChainInfo.cjs');
@@ -35,13 +36,18 @@ var isSendBalanceWalletConnector = require('./utils/isSendBalanceWalletConnector
35
36
  var isSessionKeyCompatibleWallet = require('./utils/isSessionKeyCompatible/isSessionKeyCompatibleWallet/isSessionKeyCompatibleWallet.cjs');
36
37
  var isSessionKeyCompatibleWalletConnector = require('./utils/isSessionKeyCompatible/isSessionKeyCompatibleWalletConnector/isSessionKeyCompatibleWalletConnector.cjs');
37
38
  var getMobileExperience = require('./utils/getMobileExperience/getMobileExperience.cjs');
39
+ var getWalletMetadataFromWalletBook = require('./utils/getWalletMetadataFromWalletBook/getWalletMetadataFromWalletBook.cjs');
40
+ var isConnectorMethodSupported = require('./utils/isConnectorMethodSupported/isConnectorMethodSupported.cjs');
41
+ var isConnectorEventSupported = require('./utils/isConnectorEventSupported/isConnectorEventSupported.cjs');
42
+ var getWalletLinks = require('./utils/getWalletLinks/getWalletLinks.cjs');
43
+ var Wallet = require('./Wallet/Wallet.cjs');
44
+ var WalletConnectorBase = require('./WalletConnectorBase/WalletConnectorBase.cjs');
45
+ var types = require('./WalletConnectorBase/types.cjs');
46
+ var WalletBookSingleton = require('./WalletBookSingleton/WalletBookSingleton.cjs');
38
47
 
48
+ assertPackageVersion.assertPackageVersion('@dynamic-labs/wallet-connector-core', _package.version);
39
49
 
40
-
41
- exports.Chains = WalletConnector.Chains;
42
- exports.WalletConnectorBase = WalletConnector.WalletConnectorBase;
43
- exports.socialProviders = WalletConnector.socialProviders;
44
- exports.Wallet = Wallet.Wallet;
50
+ exports.walletConnectorEvents = walletConnectorEvents.walletConnectorEvents;
45
51
  exports.logger = logger.logger;
46
52
  exports.ProviderLookup = ProviderLookup.ProviderLookup;
47
53
  exports.getChainInfo = getChainInfo.getChainInfo;
@@ -76,3 +82,12 @@ exports.isSendBalanceWalletConnector = isSendBalanceWalletConnector.isSendBalanc
76
82
  exports.isSessionKeyCompatibleWallet = isSessionKeyCompatibleWallet.isSessionKeyCompatibleWallet;
77
83
  exports.isSessionKeyCompatibleWalletConnector = isSessionKeyCompatibleWalletConnector.isSessionKeyCompatibleWalletConnector;
78
84
  exports.getMobileExperience = getMobileExperience.getMobileExperience;
85
+ exports.getWalletMetadataFromWalletBook = getWalletMetadataFromWalletBook.getWalletMetadataFromWalletBook;
86
+ exports.isConnectorMethodSupported = isConnectorMethodSupported.isConnectorMethodSupported;
87
+ exports.isConnectorEventSupported = isConnectorEventSupported.isConnectorEventSupported;
88
+ exports.getWalletLinks = getWalletLinks.getWalletLinks;
89
+ exports.Wallet = Wallet.Wallet;
90
+ exports.WalletConnectorBase = WalletConnectorBase.WalletConnectorBase;
91
+ exports.Chains = types.Chains;
92
+ exports.socialProviders = types.socialProviders;
93
+ exports.WalletBookSingleton = WalletBookSingleton.WalletBookSingleton;
package/src/index.d.ts CHANGED
@@ -1,4 +1,7 @@
1
- export { Chains, Wallet, WalletConnectorBase, socialProviders, type Attestation, type AuthenticatorRecoveryHandler, type AuthenticatorType, type BitcoinSignPsbtRequest, type BitcoinSignPsbtRequestSignature, type BitcoinSignPsbtResponse, type Chain, type ChainInfo, type ExportHandler, type ExtendedPrivateKey, type GetAddressOpts, type IAccountAbstractionWalletConnector, type IBitcoinWalletConnector, type ICoinbaseMPCWalletConnector, type IEmailOTPWalletConnector, type IEmailWalletConnector, type IHardwareWalletConnector, type ITurnkeyWalletConnector, type InternalWalletConnector, type IPasskeyWalletConnector, type IPhantomRedirectConnector, type IPhantomRedirectConnectorWithEvents, type ISMSWalletConnector, type ISendBalanceWalletConnector, type ISessionKeyCompatibleWalletConnector, type ITurnkeyWalletConnectorStamper, type IWalletConnectConnector, type NameServiceData, type PayloadParams, type RawPrivateKey, type RecoveryEmailParams, type RecoveryWebAuthnAttestation, type SignAllTransactionsListener, type SignAndSendTransactionListener, type SignMessageListener, type SignTransactionListener, type SocialProvider, type WalletConnector, type WalletConnectorConstructor, type WalletConnectorCore, type WalletConnectorEventTypes, type WalletConnectorsMethod, type WalletConstructor, type WalletProps, type WebAuthnAttestation, } from './lib';
2
- export type { WalletConnectorExtension } from './lib/WalletConnectorExtension';
3
- export type { AccountChangeEventHandler, ChainChangeEventHandler, DisconnectEventHandler, } from './types';
4
- export { ProviderLookup, addHexPrefix, bufferToHex, eventListenerHandlers, getChainInfo, getChainInfoWithOverrides, setChainInfoOverrides, getDeepLink, getMobileExperience, getRpcUrlForChain, getWalletConnectorByKey, isAccountAbstractionConnector, isBitcoinConnector, isBloctoConnector, isCoinbaseMpcWalletConnector, isTurnkeyWalletConnector, isEmailOTPWalletConnector, isEmailWalletConnector, isEmbeddedConnector, isHardwareWalletConnector, isHex, isMagicConnector, isPasskeyWalletConnector, isPhantomRedirectConnector, isSameAddress, isSendBalanceWalletConnector, isSessionKeyCompatibleWallet, isSessionKeyCompatibleWalletConnector, isSocialWalletConnector, isWalletConnectConnector, logger, performPlatformSpecificConnectionMethod, shouldLowercaseAddress, utf8ToHex, type DeepLinkVariant, type ProviderCondition, type ChainDisplayOverrides, } from './utils';
1
+ export { walletConnectorEvents } from './events';
2
+ export { type Attestation, type AuthenticatorRecoveryHandler, type AuthenticatorType, type BitcoinSignPsbtRequest, type BitcoinSignPsbtRequestSignature, type BitcoinSignPsbtResponse, type ExportHandler, type ExtendedPrivateKey, type IAccountAbstractionWalletConnector, type IBitcoinWalletConnector, type ICoinbaseMPCWalletConnector, type IEmailOTPWalletConnector, type IEmailWalletConnector, type IHardwareWalletConnector, type IPasskeyWalletConnector, type IPhantomRedirectConnector, type IPhantomRedirectConnectorWithEvents, type ISendBalanceWalletConnector, type ISessionKeyCompatibleWalletConnector, type ISMSWalletConnector, type ITurnkeyWalletConnector, type ITurnkeyWalletConnectorStamper, type IWalletConnectConnector, type RawPrivateKey, type RecoveryEmailParams, type RecoveryWebAuthnAttestation, type SignAllTransactionsListener, type SignAndSendTransactionListener, type SignMessageListener, type SignTransactionListener, type WebAuthnAttestation, } from './interfaces';
3
+ export type { AccountChangeEventHandler, ChainChangeEventHandler, DisconnectEventHandler, WalletConnectorCore, WalletMetadata, WalletDeepLinks, WalletDownloadLinks, WalletLimitations, WalletLinks, } from './types';
4
+ export { addHexPrefix, bufferToHex, eventListenerHandlers, getChainInfo, getChainInfoWithOverrides, getDeepLink, getMobileExperience, getRpcUrlForChain, getWalletConnectorByKey, isAccountAbstractionConnector, isBitcoinConnector, isBloctoConnector, isCoinbaseMpcWalletConnector, isEmailOTPWalletConnector, isEmailWalletConnector, isEmbeddedConnector, isHardwareWalletConnector, isHex, isMagicConnector, isPasskeyWalletConnector, isPhantomRedirectConnector, isSameAddress, isSendBalanceWalletConnector, isSessionKeyCompatibleWallet, isSessionKeyCompatibleWalletConnector, isSocialWalletConnector, isTurnkeyWalletConnector, isWalletConnectConnector, isConnectorMethodSupported, isConnectorEventSupported, getWalletMetadataFromWalletBook, getWalletLinks, logger, performPlatformSpecificConnectionMethod, ProviderLookup, setChainInfoOverrides, shouldLowercaseAddress, utf8ToHex, type ChainDisplayOverrides, type DeepLinkVariant, type ProviderCondition, } from './utils';
5
+ export { Wallet, type WalletConstructor, type WalletProps } from './Wallet';
6
+ export { Chains, socialProviders, WalletConnectorBase, type Chain, type ChainInfo, type GetAddressOpts, type InternalWalletConnector, type NameServiceData, type PayloadParams, type SocialProvider, type WalletConnector, type WalletConnectorConstructor, type WalletConnectorEventTypes, type WalletConnectorExtension, type WalletConnectorsMethod, } from './WalletConnectorBase';
7
+ export { WalletBookSingleton } from './WalletBookSingleton';
package/src/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  'use client'
2
- export { Chains, WalletConnectorBase, socialProviders } from './lib/WalletConnector.js';
3
- export { Wallet } from './lib/wallets/Wallet/Wallet.js';
2
+ import { assertPackageVersion } from '@dynamic-labs/assert-package-version';
3
+ import { version } from '../package.js';
4
+ export { walletConnectorEvents } from './events/walletConnectorEvents.js';
4
5
  export { logger } from './utils/logger.js';
5
6
  export { ProviderLookup } from './utils/ProviderLookup/ProviderLookup.js';
6
7
  export { getChainInfo, getChainInfoWithOverrides, setChainInfoOverrides } from './utils/getChainInfo/getChainInfo.js';
@@ -31,3 +32,13 @@ export { isSendBalanceWalletConnector } from './utils/isSendBalanceWalletConnect
31
32
  export { isSessionKeyCompatibleWallet } from './utils/isSessionKeyCompatible/isSessionKeyCompatibleWallet/isSessionKeyCompatibleWallet.js';
32
33
  export { isSessionKeyCompatibleWalletConnector } from './utils/isSessionKeyCompatible/isSessionKeyCompatibleWalletConnector/isSessionKeyCompatibleWalletConnector.js';
33
34
  export { getMobileExperience } from './utils/getMobileExperience/getMobileExperience.js';
35
+ export { getWalletMetadataFromWalletBook } from './utils/getWalletMetadataFromWalletBook/getWalletMetadataFromWalletBook.js';
36
+ export { isConnectorMethodSupported } from './utils/isConnectorMethodSupported/isConnectorMethodSupported.js';
37
+ export { isConnectorEventSupported } from './utils/isConnectorEventSupported/isConnectorEventSupported.js';
38
+ export { getWalletLinks } from './utils/getWalletLinks/getWalletLinks.js';
39
+ export { Wallet } from './Wallet/Wallet.js';
40
+ export { WalletConnectorBase } from './WalletConnectorBase/WalletConnectorBase.js';
41
+ export { Chains, socialProviders } from './WalletConnectorBase/types.js';
42
+ export { WalletBookSingleton } from './WalletBookSingleton/WalletBookSingleton.js';
43
+
44
+ assertPackageVersion('@dynamic-labs/wallet-connector-core', version);
@@ -1,5 +1,6 @@
1
1
  import { IUITransaction } from '@dynamic-labs/types';
2
- import { WalletConnector, WalletConnectorBase } from './WalletConnector';
2
+ import { EcdsaValidatorOptions, ProviderEntryPointVersionEnum, ProviderKernelVersionEnum } from '@dynamic-labs/sdk-api-core';
3
+ import { WalletConnector, WalletConnectorBase } from '../WalletConnectorBase';
3
4
  type GetAccountAbstractionProviderProps = {
4
5
  withSponsorship?: boolean;
5
6
  };
@@ -8,11 +9,19 @@ export interface IAccountAbstractionWalletConnector extends WalletConnectorBase
8
9
  disableGasSponsorshipOnce(): void;
9
10
  getAccountAbstractionProvider<T>(props?: GetAccountAbstractionProviderProps): T;
10
11
  getAccountAbstractionProvider(props?: GetAccountAbstractionProviderProps): unknown;
11
- setEoaConnector(connector: WalletConnectorBase): Promise<void>;
12
12
  /**
13
13
  * @deprecated You should get the EOA connector by passing the SCW wallet to getEOAConnector,
14
14
  * from the useSmartWallet hook
15
15
  */
16
16
  getEOAConnector(): WalletConnector | undefined;
17
+ registerEoa({ smartWalletAddress, eoaAddress, eoaConnector, shouldSetEoaConnector, ecdsaProviderType, entryPointVersion, kernelVersion, }: {
18
+ smartWalletAddress: string;
19
+ eoaAddress: string;
20
+ eoaConnector: WalletConnectorBase;
21
+ shouldSetEoaConnector?: boolean;
22
+ ecdsaProviderType?: EcdsaValidatorOptions;
23
+ entryPointVersion?: ProviderEntryPointVersionEnum;
24
+ kernelVersion?: ProviderKernelVersionEnum;
25
+ }): Promise<void>;
17
26
  }
18
27
  export {};
@@ -1,4 +1,4 @@
1
- import { WalletConnectorBase } from '.';
1
+ import { WalletConnectorBase } from '..';
2
2
  type BitcoinTransaction = {
3
3
  amount: bigint;
4
4
  recipientAddress: string;
@@ -1,5 +1,5 @@
1
1
  import { PasswordSourceTypeEnum } from '@dynamic-labs/sdk-api-core';
2
- import { WalletConnectorBase } from '.';
2
+ import { WalletConnectorBase } from '..';
3
3
  export type RawPrivateKey = {
4
4
  keyPath: string;
5
5
  ecKeyPublic: string;
@@ -1,4 +1,4 @@
1
- import { WalletConnectorBase } from './WalletConnector';
1
+ import { WalletConnectorBase } from '../WalletConnectorBase';
2
2
  export interface IEmailWalletConnector extends WalletConnectorBase {
3
3
  clearEmail(): void;
4
4
  get email(): string | undefined | null;
@@ -1,4 +1,4 @@
1
- import { WalletConnectorBase } from '../';
1
+ import { WalletConnectorBase } from '../..';
2
2
  export interface IHardwareWalletConnector extends WalletConnectorBase {
3
3
  canConnectWithHardwareWallet(): boolean;
4
4
  isHardwareWalletEnabled: boolean;
@@ -1,4 +1,4 @@
1
- import { WalletConnectorBase } from './WalletConnector';
1
+ import { WalletConnectorBase } from '../WalletConnectorBase';
2
2
  export interface Attestation {
3
3
  attestationObject: string;
4
4
  clientDataJson: string;
@@ -1,5 +1,5 @@
1
1
  import EventEmitter from 'eventemitter3';
2
- import { WalletConnectorBase } from '.';
2
+ import { WalletConnectorBase } from '..';
3
3
  export type SignAndSendTransactionListener = (response: {
4
4
  signature?: string;
5
5
  errorCode?: string;
@@ -1,4 +1,4 @@
1
- import { WalletConnectorBase } from './WalletConnector';
1
+ import { WalletConnectorBase } from '../WalletConnectorBase';
2
2
  export interface ISMSWalletConnector extends WalletConnectorBase {
3
3
  get phone(): string | undefined | null;
4
4
  setPhone(phone: ISMSWalletConnector['phone']): void;
@@ -1,5 +1,5 @@
1
1
  import { TransactionReceipt, IUITransaction } from '@dynamic-labs/types';
2
- import { WalletConnectorBase } from './WalletConnector';
2
+ import { WalletConnectorBase } from '../WalletConnectorBase';
3
3
  export interface ISendBalanceWalletConnector extends WalletConnectorBase {
4
4
  createUiTransaction(from: string): Promise<IUITransaction>;
5
5
  confirmTransactionStatus?(txHash: string): Promise<TransactionReceipt>;
@@ -1,4 +1,4 @@
1
- import { WalletConnectorBase } from '.';
1
+ import { WalletConnectorBase } from '..';
2
2
  interface SessionKeys {
3
3
  publicKey: string;
4
4
  privateKey: string;
@@ -1,5 +1,5 @@
1
1
  import { JwtVerifiedCredential, TurnkeyWalletProperties } from '@dynamic-labs/sdk-api-core';
2
- import { WalletConnectorBase } from './WalletConnector';
2
+ import { WalletConnectorBase } from '../WalletConnectorBase';
3
3
  type JwtVerifiedCredentialWithSmartWalletRef = JwtVerifiedCredential & {
4
4
  smartWalletRefId?: string;
5
5
  smartWalletRefAddress?: string;
@@ -0,0 +1,35 @@
1
+ import { WalletConnectorBase } from '../WalletConnectorBase';
2
+ export interface ITurnkeyWalletConnectorStamper extends WalletConnectorBase {
3
+ stampCreateWalletAccountRequest: ({ request, }: {
4
+ request: {
5
+ type: string;
6
+ timestampMs: string;
7
+ organizationId: string;
8
+ parameters: any;
9
+ };
10
+ }) => Promise<{
11
+ body: string;
12
+ url: string;
13
+ stamp: {
14
+ stampHeaderName: string;
15
+ stampHeaderValue: string;
16
+ };
17
+ }>;
18
+ stampDeleteSubOrganizationRequest: ({ request, }: {
19
+ request: {
20
+ type: string;
21
+ timestampMs: string;
22
+ organizationId: string;
23
+ parameters: {
24
+ deleteWithoutExport?: boolean;
25
+ };
26
+ };
27
+ }) => Promise<{
28
+ body: string;
29
+ url: string;
30
+ stamp: {
31
+ stampHeaderName: string;
32
+ stampHeaderValue: string;
33
+ };
34
+ }>;
35
+ }
@@ -1,4 +1,4 @@
1
- import { WalletConnectorBase } from '.';
1
+ import { WalletConnectorBase } from '..';
2
2
  export interface IWalletConnectConnector extends WalletConnectorBase {
3
3
  getSupportedNetworks(): Promise<string[]>;
4
4
  }