@reown/appkit-controllers 1.8.14-bc4a961b448cedd0a8485a2188549b413b4e6512.0 → 1.8.14-e330f62532f95683ed69bdb0f4fef77f3039df30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/esm/exports/index.js.map +1 -1
  2. package/dist/esm/exports/react.js +79 -2
  3. package/dist/esm/exports/react.js.map +1 -1
  4. package/dist/esm/src/controllers/ConnectionController.js +6 -0
  5. package/dist/esm/src/controllers/ConnectionController.js.map +1 -1
  6. package/dist/esm/src/controllers/ConnectorController.js +7 -6
  7. package/dist/esm/src/controllers/ConnectorController.js.map +1 -1
  8. package/dist/esm/src/controllers/OptionsController.js +3 -0
  9. package/dist/esm/src/controllers/OptionsController.js.map +1 -1
  10. package/dist/esm/src/utils/AssetUtil.js +42 -0
  11. package/dist/esm/src/utils/AssetUtil.js.map +1 -1
  12. package/dist/esm/src/utils/ConnectUtil.js +77 -0
  13. package/dist/esm/src/utils/ConnectUtil.js.map +1 -0
  14. package/dist/esm/src/utils/ConstantsUtil.js +4 -2
  15. package/dist/esm/src/utils/ConstantsUtil.js.map +1 -1
  16. package/dist/esm/tests/controllers/ConnectionController.test.js +2 -1
  17. package/dist/esm/tests/controllers/ConnectionController.test.js.map +1 -1
  18. package/dist/esm/tests/controllers/ConnectorController.test.js +8 -8
  19. package/dist/esm/tests/controllers/ConnectorController.test.js.map +1 -1
  20. package/dist/esm/tests/hooks/react.test.js +8 -0
  21. package/dist/esm/tests/hooks/react.test.js.map +1 -1
  22. package/dist/esm/tests/hooks/vue.test.js +8 -0
  23. package/dist/esm/tests/hooks/vue.test.js.map +1 -1
  24. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  25. package/dist/types/exports/index.d.ts +2 -1
  26. package/dist/types/exports/react.d.ts +53 -0
  27. package/dist/types/src/controllers/ConnectionController.d.ts +1 -0
  28. package/dist/types/src/controllers/ConnectorController.d.ts +4 -8
  29. package/dist/types/src/controllers/OptionsController.d.ts +13 -0
  30. package/dist/types/src/utils/AssetUtil.d.ts +18 -0
  31. package/dist/types/src/utils/ConnectUtil.d.ts +38 -0
  32. package/dist/types/src/utils/ConstantsUtil.d.ts +2 -0
  33. package/dist/types/src/utils/TypeUtil.d.ts +13 -2
  34. package/package.json +3 -3
@@ -19,7 +19,7 @@ export type { ConnectionControllerClient, ConnectionControllerState } from '../s
19
19
  export type { ConnectExternalOptions } from '../src/controllers/ConnectionController.js';
20
20
  export { ConnectorController } from '../src/controllers/ConnectorController.js';
21
21
  export { ConnectorControllerUtil } from '../src/utils/ConnectorControllerUtil.js';
22
- export type { ConnectorControllerState, ConnectorWithProviders } from '../src/controllers/ConnectorController.js';
22
+ export type { ConnectorControllerState } from '../src/controllers/ConnectorController.js';
23
23
  export { SnackController } from '../src/controllers/SnackController.js';
24
24
  export type { SnackControllerState } from '../src/controllers/SnackController.js';
25
25
  export { ApiController } from '../src/controllers/ApiController.js';
@@ -69,5 +69,6 @@ export type { Exchange, GetExchangesParams, PayUrlParams, PaymentAsset, CurrentP
69
69
  export { FetchUtil } from '../src/utils/FetchUtil.js';
70
70
  export type * from '../src/utils/TypeUtil.js';
71
71
  export type * from '../src/utils/SIWXUtil.js';
72
+ export type { WalletItem } from '../src/utils/ConnectUtil.js';
72
73
  export * from '../src/utils/ChainControllerUtil.js';
73
74
  export * from '../src/utils/WalletConnectUtil.js';
@@ -1,4 +1,5 @@
1
1
  import { type ChainNamespace, type Connection } from '@reown/appkit-common';
2
+ import { type WalletItem } from '../src/utils/ConnectUtil.js';
2
3
  import type { UseAppKitAccountReturn, UseAppKitNetworkReturn } from '../src/utils/TypeUtil.js';
3
4
  export type { Connection } from '@reown/appkit-common';
4
5
  interface DisconnectParams {
@@ -75,3 +76,55 @@ export declare function useAppKitConnection({ namespace, onSuccess, onError }: U
75
76
  switchConnection: ({ connection: _connection, address }: SwitchConnectionParams) => Promise<void>;
76
77
  deleteConnection: ({ address, connectorId }: DeleteRecentConnectionProps) => void;
77
78
  };
79
+ export interface UseAppKitWalletsReturn {
80
+ /**
81
+ * List of all wallets (injected wallets and WalletConnect wallets combined)
82
+ */
83
+ data: WalletItem[];
84
+ /**
85
+ * Boolean that indicates if WalletConnect wallets are being fetched.
86
+ */
87
+ isFetchingWallets: boolean;
88
+ /**
89
+ * Boolean that indicates if a WalletConnect URI is being fetched.
90
+ */
91
+ isFetchingWcUri: boolean;
92
+ /**
93
+ * The current WalletConnect URI for QR code display.
94
+ * This is set when connecting to a WalletConnect wallet.
95
+ */
96
+ wcUri?: string;
97
+ /**
98
+ * The current page number.
99
+ */
100
+ page: number;
101
+ /**
102
+ * The total number of available wallets.
103
+ */
104
+ count: number;
105
+ /**
106
+ * Function to fetch WalletConnect wallets from the explorer API.
107
+ * This is useful for pagination or initial load.
108
+ * @param options - Options for fetching wallets
109
+ * @param options.page - Page number to fetch (default: 1)
110
+ */
111
+ fetchWallets: (options?: {
112
+ page?: number;
113
+ query?: string;
114
+ }) => Promise<void>;
115
+ /**
116
+ * Function to connect to a wallet.
117
+ * - For WalletConnect wallets: initiates WC connection and returns the URI in the onSuccess callback
118
+ * - For injected connectors: triggers the extension/wallet directly
119
+ *
120
+ * @param wallet - The wallet item to connect to
121
+ * @param callbacks - Success and error callbacks
122
+ * @returns Promise that resolves when connection completes or rejects on error
123
+ */
124
+ connect: (wallet: WalletItem, namespace?: ChainNamespace) => Promise<void>;
125
+ }
126
+ /**
127
+ * Headless hook for wallet connection.
128
+ * Provides all the data and functions needed to build a custom connect UI.
129
+ */
130
+ export declare function useAppKitWallets(): UseAppKitWalletsReturn;
@@ -99,6 +99,7 @@ export interface ConnectionControllerState {
99
99
  };
100
100
  wcBasic?: boolean;
101
101
  wcError?: boolean;
102
+ wcFetchingUri: boolean;
102
103
  recentWallet?: WcWallet;
103
104
  buffering: boolean;
104
105
  status?: 'connecting' | 'connected' | 'disconnected';
@@ -1,8 +1,5 @@
1
1
  import { type ChainNamespace } from '@reown/appkit-common';
2
- import type { AuthConnector, Connector, WcWallet } from '../utils/TypeUtil.js';
3
- export interface ConnectorWithProviders extends Connector {
4
- connectors?: Connector[];
5
- }
2
+ import type { AuthConnector, Connector, ConnectorWithProviders, WcWallet } from '../utils/TypeUtil.js';
6
3
  export interface ConnectorControllerState {
7
4
  allConnectors: Connector[];
8
5
  connectors: ConnectorWithProviders[];
@@ -33,10 +30,9 @@ export declare const ConnectorController: {
33
30
  getAuthConnector(chainNamespace?: ChainNamespace): AuthConnector | undefined;
34
31
  getAnnouncedConnectorRdns(): (string | undefined)[];
35
32
  getConnectorById(id: string): Connector | undefined;
36
- getConnector({ id, rdns, namespace }: {
37
- id?: string;
38
- rdns?: string | null;
39
- namespace?: ChainNamespace;
33
+ getConnector({ id, namespace }: {
34
+ id: string;
35
+ namespace: ChainNamespace;
40
36
  }): Connector | undefined;
41
37
  syncIfAuthConnector(connector: Connector | AuthConnector): void;
42
38
  /**
@@ -85,6 +85,11 @@ export interface OptionsControllerStatePublic {
85
85
  * @default true
86
86
  */
87
87
  enableCoinbase?: boolean;
88
+ /**
89
+ * Enable or disable the AppKit Headless mode to build custom connect user interfaces.
90
+ * @default true
91
+ */
92
+ enableHeadless?: boolean;
88
93
  /**
89
94
  * Enable or disable the Injected wallet.
90
95
  * @default true
@@ -226,6 +231,7 @@ export declare const OptionsController: {
226
231
  setAllowUnsupportedChain(allowUnsupportedChain: OptionsControllerState["allowUnsupportedChain"]): void;
227
232
  setManualWCControl(manualWCControl: OptionsControllerState["manualWCControl"]): void;
228
233
  setEnableNetworkSwitch(enableNetworkSwitch: OptionsControllerState["enableNetworkSwitch"]): void;
234
+ setEnableHeadless(enableHeadless: OptionsControllerState["enableHeadless"]): void;
229
235
  setEnableMobileFullScreen(enableMobileFullScreen: OptionsControllerState["enableMobileFullScreen"]): void;
230
236
  setEnableReconnect(enableReconnect: OptionsControllerState["enableReconnect"]): void;
231
237
  setCoinbasePreference(coinbasePreference: OptionsControllerState["coinbasePreference"]): void;
@@ -1629,6 +1635,12 @@ export declare const OptionsController: {
1629
1635
  */
1630
1636
  | undefined;
1631
1637
  readonly enableCoinbase?: boolean
1638
+ /**
1639
+ * Enable or disable the AppKit Headless mode to build custom connect user interfaces.
1640
+ * @default true
1641
+ */
1642
+ | undefined;
1643
+ readonly enableHeadless?: boolean
1632
1644
  /**
1633
1645
  * Enable or disable the Injected wallet.
1634
1646
  * @default true
@@ -1784,6 +1796,7 @@ export declare const OptionsController: {
1784
1796
  readonly payWithExchange?: boolean | undefined;
1785
1797
  readonly payments?: boolean | undefined;
1786
1798
  readonly onramp?: false | readonly "meld"[] | undefined;
1799
+ readonly headless?: boolean | undefined;
1787
1800
  } | undefined;
1788
1801
  };
1789
1802
  };
@@ -13,4 +13,22 @@ export declare const AssetUtil: {
13
13
  getConnectorImage(connector?: Connector): string | undefined;
14
14
  getChainImage(chain: ChainNamespace): string | undefined;
15
15
  getTokenImage(symbol?: string): string | undefined;
16
+ /**
17
+ * Get the explorer wallet's image URL for the given image ID.
18
+ * @param imageId - The image id of the wallet.
19
+ * @returns The image URL for the wallet.
20
+ */
21
+ getWalletImageUrl(imageId: string | undefined): string;
22
+ /**
23
+ * Get the public asset's image URL with the given image ID.
24
+ * @param imageId - The image id of the asset.
25
+ * @returns The image URL for the asset.
26
+ */
27
+ getAssetImageUrl(imageId: string | undefined): string;
28
+ /**
29
+ * Get the image URL for the given chain namespace.
30
+ * @param chainNamespace - The chain namespace to get the image URL for.
31
+ * @returns The image URL for the chain namespace.
32
+ */
33
+ getChainNamespaceImageUrl(chainNamespace: ChainNamespace): string;
16
34
  };
@@ -0,0 +1,38 @@
1
+ import type { ChainNamespace } from '@reown/appkit-common';
2
+ import type { WcWallet } from './TypeUtil.js';
3
+ export type WalletItem = {
4
+ id: string;
5
+ name: string;
6
+ imageUrl: string;
7
+ connectors: {
8
+ id: string;
9
+ rdns?: string;
10
+ chain: ChainNamespace;
11
+ chainImageUrl?: string;
12
+ }[];
13
+ walletInfo: {
14
+ description?: WcWallet['description'];
15
+ supportedChains?: WcWallet['chains'];
16
+ supportedNamespaces?: ChainNamespace[];
17
+ website?: WcWallet['homepage'];
18
+ installationLinks?: {
19
+ appStore?: WcWallet['app_store'];
20
+ playStore?: WcWallet['play_store'];
21
+ chromeStore?: WcWallet['chrome_store'];
22
+ desktopLink?: WcWallet['desktop_link'];
23
+ };
24
+ deepLink?: WcWallet['mobile_link'];
25
+ isCertified?: boolean;
26
+ };
27
+ isInjected: boolean;
28
+ isRecent: boolean;
29
+ };
30
+ export declare const ConnectUtil: {
31
+ /**
32
+ * Transforms connectors and wallets into a unified list of wallet items
33
+ */
34
+ getUnifiedWalletList(params: {
35
+ wcWallets: WcWallet[];
36
+ search: WcWallet[];
37
+ }): WalletItem[];
38
+ };
@@ -58,6 +58,7 @@ export declare const ConstantsUtil: {
58
58
  payWithExchange: boolean;
59
59
  payments: boolean;
60
60
  reownAuthentication: boolean;
61
+ headless: boolean;
61
62
  };
62
63
  DEFAULT_REMOTE_FEATURES_DISABLED: {
63
64
  readonly email: false;
@@ -68,6 +69,7 @@ export declare const ConstantsUtil: {
68
69
  readonly reownBranding: false;
69
70
  readonly emailCapture: false;
70
71
  readonly reownAuthentication: false;
72
+ readonly headless: false;
71
73
  };
72
74
  DEFAULT_FEATURES: {
73
75
  receive: true;
@@ -71,6 +71,9 @@ export type Connector = {
71
71
  connectors?: Connector[];
72
72
  explorerWallet?: WcWallet;
73
73
  };
74
+ export interface ConnectorWithProviders extends Connector {
75
+ connectors?: Connector[];
76
+ }
74
77
  export interface AuthConnector extends Connector {
75
78
  provider: W3mFrameProvider;
76
79
  socials?: SocialProvider[];
@@ -95,6 +98,7 @@ export interface WcWallet {
95
98
  id: string;
96
99
  name: string;
97
100
  badge_type?: BadgeType;
101
+ description?: string;
98
102
  chains?: CaipNetworkId[];
99
103
  homepage?: string;
100
104
  image_id?: string;
@@ -1067,6 +1071,7 @@ export type RemoteFeatures = {
1067
1071
  payWithExchange?: boolean;
1068
1072
  payments?: boolean;
1069
1073
  onramp?: OnRampProvider[] | false;
1074
+ headless?: boolean;
1070
1075
  };
1071
1076
  export type Features = {
1072
1077
  /**
@@ -1196,13 +1201,13 @@ export type ConnectionStatus = 'connected' | 'disconnected' | 'connecting' | 're
1196
1201
  export type PreferredAccountTypes = {
1197
1202
  [Key in keyof NamespaceTypeMap]?: NamespaceTypeMap[Key];
1198
1203
  };
1199
- export type FeatureID = 'multi_wallet' | 'activity' | 'onramp' | 'swap' | 'social_login' | 'reown_branding' | 'email_capture' | 'fund_from_exchange' | 'payments' | 'reown_authentication';
1204
+ export type FeatureID = 'multi_wallet' | 'activity' | 'onramp' | 'swap' | 'social_login' | 'reown_branding' | 'email_capture' | 'fund_from_exchange' | 'payments' | 'reown_authentication' | 'headless';
1200
1205
  export interface BaseFeature<T extends FeatureID, C extends string[] | null> {
1201
1206
  id: T;
1202
1207
  isEnabled: boolean;
1203
1208
  config: C;
1204
1209
  }
1205
- export type TypedFeatureConfig = BaseFeature<'activity', null | []> | BaseFeature<'onramp', OnRampProvider[]> | BaseFeature<'swap', SwapProvider[]> | BaseFeature<'social_login', (SocialProvider | 'email')[]> | BaseFeature<'reown_branding', null | []> | BaseFeature<'multi_wallet', null | []> | BaseFeature<'email_capture', EmailCaptureOptions[]>;
1210
+ export type TypedFeatureConfig = BaseFeature<'activity', null | []> | BaseFeature<'onramp', OnRampProvider[]> | BaseFeature<'swap', SwapProvider[]> | BaseFeature<'social_login', (SocialProvider | 'email')[]> | BaseFeature<'reown_branding', null | []> | BaseFeature<'multi_wallet', null | []> | BaseFeature<'email_capture', EmailCaptureOptions[]> | BaseFeature<'headless', null | []>;
1206
1211
  export type ApiGetProjectConfigResponse = {
1207
1212
  features: TypedFeatureConfig[];
1208
1213
  };
@@ -1278,6 +1283,12 @@ export type FeatureConfigMap = {
1278
1283
  returnType: boolean;
1279
1284
  isLegacy: false;
1280
1285
  };
1286
+ headless: {
1287
+ apiFeatureName: 'headless';
1288
+ localFeatureName: 'headless';
1289
+ returnType: boolean;
1290
+ isLegacy: false;
1291
+ };
1281
1292
  };
1282
1293
  export type FeatureKey = keyof FeatureConfigMap;
1283
1294
  export type Tier = 'none' | 'starter' | 'pro' | 'enteprise';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reown/appkit-controllers",
3
- "version": "1.8.14-bc4a961b448cedd0a8485a2188549b413b4e6512.0",
3
+ "version": "1.8.14-e330f62532f95683ed69bdb0f4fef77f3039df30.0",
4
4
  "sideEffects": false,
5
5
  "type": "module",
6
6
  "main": "./dist/esm/exports/index.js",
@@ -56,8 +56,8 @@
56
56
  "@walletconnect/universal-provider": "2.23.0",
57
57
  "valtio": "2.1.7",
58
58
  "viem": ">=2.37.9",
59
- "@reown/appkit-common": "1.8.14-bc4a961b448cedd0a8485a2188549b413b4e6512.0",
60
- "@reown/appkit-wallet": "1.8.14-bc4a961b448cedd0a8485a2188549b413b4e6512.0"
59
+ "@reown/appkit-common": "1.8.14-e330f62532f95683ed69bdb0f4fef77f3039df30.0",
60
+ "@reown/appkit-wallet": "1.8.14-e330f62532f95683ed69bdb0f4fef77f3039df30.0"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@vitest/coverage-v8": "2.1.9",