@dynamic-labs/global-wallet-client 4.0.0-alpha.51 → 4.0.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 (72) hide show
  1. package/CHANGELOG.md +81 -1
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +11 -7
  5. package/src/lib/actions/connectAction/createConnectAction.cjs +24 -12
  6. package/src/lib/actions/connectAction/createConnectAction.d.ts +4 -3
  7. package/src/lib/actions/connectAction/createConnectAction.js +24 -12
  8. package/src/lib/createGlobalWalletClient.cjs +6 -6
  9. package/src/lib/createGlobalWalletClient.d.ts +11 -6
  10. package/src/lib/createGlobalWalletClient.js +6 -6
  11. package/src/lib/ethereum/functions/eip1193Provider/createEIP1193Provider.cjs +88 -56
  12. package/src/lib/ethereum/functions/eip1193Provider/createEIP1193Provider.js +89 -57
  13. package/src/lib/ethereum/functions/isNetworkSupported/index.d.ts +1 -0
  14. package/src/lib/ethereum/functions/isNetworkSupported/isNetworkSupported.cjs +8 -0
  15. package/src/lib/ethereum/functions/isNetworkSupported/isNetworkSupported.d.ts +3 -0
  16. package/src/lib/ethereum/functions/isNetworkSupported/isNetworkSupported.js +4 -0
  17. package/src/lib/functions/createEthereumModule/createEthereumModule.cjs +24 -0
  18. package/src/lib/functions/createEthereumModule/createEthereumModule.d.ts +11 -0
  19. package/src/lib/functions/createEthereumModule/createEthereumModule.js +20 -0
  20. package/src/lib/functions/createEthereumModule/index.d.ts +1 -0
  21. package/src/lib/functions/createPopupOpener/createPopupOpener.cjs +77 -38
  22. package/src/lib/functions/createPopupOpener/createPopupOpener.d.ts +2 -1
  23. package/src/lib/functions/createPopupOpener/createPopupOpener.js +77 -38
  24. package/src/lib/functions/createSolanaModule/createSolanaModule.cjs +17 -0
  25. package/src/lib/functions/createSolanaModule/createSolanaModule.d.ts +9 -0
  26. package/src/lib/functions/createSolanaModule/createSolanaModule.js +13 -0
  27. package/src/lib/functions/createSolanaModule/index.d.ts +1 -0
  28. package/src/lib/functions/mergeAndEncryptParams/mergeAndEncryptParams.d.ts +2 -2
  29. package/src/lib/solana/functions/convertBaseWalletToWalletAccount/convertBaseWalletToWalletAccount.cjs +36 -0
  30. package/src/lib/solana/functions/convertBaseWalletToWalletAccount/convertBaseWalletToWalletAccount.d.ts +4 -0
  31. package/src/lib/solana/functions/convertBaseWalletToWalletAccount/convertBaseWalletToWalletAccount.js +32 -0
  32. package/src/lib/solana/functions/convertBaseWalletToWalletAccount/index.d.ts +1 -0
  33. package/src/lib/solana/functions/createSolanaSignAndSendTransactionFeature/createSolanaSignAndSendTransactionFeature.cjs +14 -0
  34. package/src/lib/solana/functions/createSolanaSignAndSendTransactionFeature/createSolanaSignAndSendTransactionFeature.d.ts +2 -0
  35. package/src/lib/solana/functions/createSolanaSignAndSendTransactionFeature/createSolanaSignAndSendTransactionFeature.js +10 -0
  36. package/src/lib/solana/functions/createSolanaSignAndSendTransactionFeature/index.d.ts +1 -0
  37. package/src/lib/solana/functions/createSolanaSignMessageFeature/createSolanaSignMessageFeature.cjs +29 -0
  38. package/src/lib/solana/functions/createSolanaSignMessageFeature/createSolanaSignMessageFeature.d.ts +3 -0
  39. package/src/lib/solana/functions/createSolanaSignMessageFeature/createSolanaSignMessageFeature.js +25 -0
  40. package/src/lib/solana/functions/createSolanaSignMessageFeature/index.d.ts +1 -0
  41. package/src/lib/solana/functions/createSolanaSignTransactionFeature/createSolanaSignTransactionFeature.cjs +14 -0
  42. package/src/lib/solana/functions/createSolanaSignTransactionFeature/createSolanaSignTransactionFeature.d.ts +2 -0
  43. package/src/lib/solana/functions/createSolanaSignTransactionFeature/createSolanaSignTransactionFeature.js +10 -0
  44. package/src/lib/solana/functions/createSolanaSignTransactionFeature/index.d.ts +1 -0
  45. package/src/lib/solana/functions/createSolanaWallet/createSolanaWallet.cjs +47 -0
  46. package/src/lib/solana/functions/createSolanaWallet/createSolanaWallet.d.ts +17 -0
  47. package/src/lib/solana/functions/createSolanaWallet/createSolanaWallet.js +43 -0
  48. package/src/lib/solana/functions/createSolanaWallet/index.d.ts +1 -0
  49. package/src/lib/solana/functions/createStandardConnectFeature/createStandardConnectFeature.cjs +21 -0
  50. package/src/lib/solana/functions/createStandardConnectFeature/createStandardConnectFeature.d.ts +3 -0
  51. package/src/lib/solana/functions/createStandardConnectFeature/createStandardConnectFeature.js +17 -0
  52. package/src/lib/solana/functions/createStandardConnectFeature/index.d.ts +1 -0
  53. package/src/lib/solana/functions/createStandardDisconnectFeature/createStandardDisconnectFeature.cjs +13 -0
  54. package/src/lib/solana/functions/createStandardDisconnectFeature/createStandardDisconnectFeature.d.ts +3 -0
  55. package/src/lib/solana/functions/createStandardDisconnectFeature/createStandardDisconnectFeature.js +9 -0
  56. package/src/lib/solana/functions/createStandardDisconnectFeature/index.d.ts +1 -0
  57. package/src/lib/solana/functions/createStandardEventsFeature/createStandardEventsFeature.cjs +38 -0
  58. package/src/lib/solana/functions/createStandardEventsFeature/createStandardEventsFeature.d.ts +13 -0
  59. package/src/lib/solana/functions/createStandardEventsFeature/createStandardEventsFeature.js +34 -0
  60. package/src/lib/solana/functions/createStandardEventsFeature/index.d.ts +1 -0
  61. package/src/lib/solana/functions/getSolanaChains/getSolanaChains.cjs +13 -0
  62. package/src/lib/solana/functions/getSolanaChains/getSolanaChains.d.ts +2 -0
  63. package/src/lib/solana/functions/getSolanaChains/getSolanaChains.js +9 -0
  64. package/src/lib/solana/functions/getSolanaChains/index.d.ts +1 -0
  65. package/src/lib/solana/index.d.ts +1 -0
  66. package/src/lib/store/createClientStore.cjs +37 -15
  67. package/src/lib/store/createClientStore.d.ts +51 -13
  68. package/src/lib/store/createClientStore.js +37 -15
  69. package/src/lib/types.d.ts +0 -28
  70. package/src/solana.cjs +10 -0
  71. package/src/solana.d.ts +1 -0
  72. package/src/solana.js +2 -0
@@ -0,0 +1,32 @@
1
+ 'use client'
2
+ import { PublicKey } from '@solana/web3.js';
3
+ import { getSolanaChains } from '../getSolanaChains/getSolanaChains.js';
4
+
5
+ const convertBaseWalletToWalletAccount = (wallet, client) => {
6
+ try {
7
+ const publicKey = new PublicKey(wallet.address);
8
+ // Validate the public key is valid base58
9
+ if (!PublicKey.isOnCurve(publicKey.toBytes())) {
10
+ throw new Error('Invalid public key');
11
+ }
12
+ return {
13
+ address: publicKey.toBase58(),
14
+ get chains() {
15
+ return getSolanaChains(client);
16
+ },
17
+ features: [
18
+ 'solana:signAndSendTransaction',
19
+ 'solana:signTransaction',
20
+ 'standard:connect',
21
+ 'standard:disconnect',
22
+ 'standard:events',
23
+ ],
24
+ publicKey: publicKey.toBytes(),
25
+ };
26
+ }
27
+ catch (error) {
28
+ throw new Error(`Invalid Solana address: ${wallet.address}`);
29
+ }
30
+ };
31
+
32
+ export { convertBaseWalletToWalletAccount };
@@ -0,0 +1 @@
1
+ export { convertBaseWalletToWalletAccount } from './convertBaseWalletToWalletAccount';
@@ -0,0 +1,14 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../../../_virtual/_tslib.cjs');
7
+
8
+ const createSolanaSignAndSendTransactionFeature = () => ({
9
+ signAndSendTransaction: () => _tslib.__awaiter(void 0, void 0, void 0, function* () { return []; }),
10
+ supportedTransactionVersions: ['legacy', 0],
11
+ version: '1.0.0',
12
+ });
13
+
14
+ exports.createSolanaSignAndSendTransactionFeature = createSolanaSignAndSendTransactionFeature;
@@ -0,0 +1,2 @@
1
+ import { SolanaSignAndSendTransactionFeature } from '@solana/wallet-standard-features';
2
+ export declare const createSolanaSignAndSendTransactionFeature: () => SolanaSignAndSendTransactionFeature['solana:signAndSendTransaction'];
@@ -0,0 +1,10 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
+
4
+ const createSolanaSignAndSendTransactionFeature = () => ({
5
+ signAndSendTransaction: () => __awaiter(void 0, void 0, void 0, function* () { return []; }),
6
+ supportedTransactionVersions: ['legacy', 0],
7
+ version: '1.0.0',
8
+ });
9
+
10
+ export { createSolanaSignAndSendTransactionFeature };
@@ -0,0 +1 @@
1
+ export { createSolanaSignAndSendTransactionFeature } from './createSolanaSignAndSendTransactionFeature';
@@ -0,0 +1,29 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../../../_virtual/_tslib.cjs');
7
+ var utils = require('@dynamic-labs/utils');
8
+
9
+ const createSolanaSignMessageFeature = (client) => ({
10
+ signMessage: (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ account, message }) {
11
+ const params = {
12
+ address: account.address,
13
+ message: utils.uint8ArrayToBase64(message),
14
+ };
15
+ const { signature, signedMessage } = yield client.invoke({
16
+ params,
17
+ pathname: 'solana_signMessage',
18
+ });
19
+ return [
20
+ {
21
+ signature: utils.uint8ArrayFromBase64(signature),
22
+ signedMessage: utils.uint8ArrayFromBase64(signedMessage),
23
+ },
24
+ ];
25
+ }),
26
+ version: '1.0.0',
27
+ });
28
+
29
+ exports.createSolanaSignMessageFeature = createSolanaSignMessageFeature;
@@ -0,0 +1,3 @@
1
+ import { SolanaSignMessageFeature } from '@solana/wallet-standard-features';
2
+ import { GlobalWalletClient } from '../../../createGlobalWalletClient';
3
+ export declare const createSolanaSignMessageFeature: (client: GlobalWalletClient) => SolanaSignMessageFeature['solana:signMessage'];
@@ -0,0 +1,25 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
+ import { uint8ArrayToBase64, uint8ArrayFromBase64 } from '@dynamic-labs/utils';
4
+
5
+ const createSolanaSignMessageFeature = (client) => ({
6
+ signMessage: (_a) => __awaiter(void 0, [_a], void 0, function* ({ account, message }) {
7
+ const params = {
8
+ address: account.address,
9
+ message: uint8ArrayToBase64(message),
10
+ };
11
+ const { signature, signedMessage } = yield client.invoke({
12
+ params,
13
+ pathname: 'solana_signMessage',
14
+ });
15
+ return [
16
+ {
17
+ signature: uint8ArrayFromBase64(signature),
18
+ signedMessage: uint8ArrayFromBase64(signedMessage),
19
+ },
20
+ ];
21
+ }),
22
+ version: '1.0.0',
23
+ });
24
+
25
+ export { createSolanaSignMessageFeature };
@@ -0,0 +1 @@
1
+ export { createSolanaSignMessageFeature } from './createSolanaSignMessageFeature';
@@ -0,0 +1,14 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../../../_virtual/_tslib.cjs');
7
+
8
+ const createSolanaSignTransactionFeature = () => ({
9
+ signTransaction: () => _tslib.__awaiter(void 0, void 0, void 0, function* () { return []; }),
10
+ supportedTransactionVersions: ['legacy', 0],
11
+ version: '1.0.0',
12
+ });
13
+
14
+ exports.createSolanaSignTransactionFeature = createSolanaSignTransactionFeature;
@@ -0,0 +1,2 @@
1
+ import { SolanaSignTransactionFeature } from '@solana/wallet-standard-features';
2
+ export declare const createSolanaSignTransactionFeature: () => SolanaSignTransactionFeature['solana:signTransaction'];
@@ -0,0 +1,10 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
+
4
+ const createSolanaSignTransactionFeature = () => ({
5
+ signTransaction: () => __awaiter(void 0, void 0, void 0, function* () { return []; }),
6
+ supportedTransactionVersions: ['legacy', 0],
7
+ version: '1.0.0',
8
+ });
9
+
10
+ export { createSolanaSignTransactionFeature };
@@ -0,0 +1 @@
1
+ export { createSolanaSignTransactionFeature } from './createSolanaSignTransactionFeature';
@@ -0,0 +1,47 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var convertBaseWalletToWalletAccount = require('../convertBaseWalletToWalletAccount/convertBaseWalletToWalletAccount.cjs');
7
+ var getSolanaChains = require('../getSolanaChains/getSolanaChains.cjs');
8
+ var createStandardEventsFeature = require('../createStandardEventsFeature/createStandardEventsFeature.cjs');
9
+ var createSolanaSignMessageFeature = require('../createSolanaSignMessageFeature/createSolanaSignMessageFeature.cjs');
10
+ var createSolanaSignTransactionFeature = require('../createSolanaSignTransactionFeature/createSolanaSignTransactionFeature.cjs');
11
+ var createStandardConnectFeature = require('../createStandardConnectFeature/createStandardConnectFeature.cjs');
12
+ var createStandardDisconnectFeature = require('../createStandardDisconnectFeature/createStandardDisconnectFeature.cjs');
13
+ var createSolanaSignAndSendTransactionFeature = require('../createSolanaSignAndSendTransactionFeature/createSolanaSignAndSendTransactionFeature.cjs');
14
+
15
+ /**
16
+ * Creates a Solana wallet that implements the Wallet Standard specification
17
+ *
18
+ * @param {CreateSolanaWalletProps} props - Configuration properties for the wallet
19
+ * @param {string} props.name - The name of the wallet
20
+ * @param {WalletIcon} props.icon - The wallet's icon
21
+ * @param {GlobalWalletClient} client - The global wallet client instance
22
+ * @returns {Wallet} A wallet object conforming to the Wallet Standard specification with Solana features
23
+ */
24
+ const createSolanaWallet = ({ icon, name }, client) => {
25
+ const features = {
26
+ 'solana:signAndSendTransaction': createSolanaSignAndSendTransactionFeature.createSolanaSignAndSendTransactionFeature(),
27
+ 'solana:signMessage': createSolanaSignMessageFeature.createSolanaSignMessageFeature(client),
28
+ 'solana:signTransaction': createSolanaSignTransactionFeature.createSolanaSignTransactionFeature(),
29
+ 'standard:connect': createStandardConnectFeature.createStandardConnectFeature(client),
30
+ 'standard:disconnect': createStandardDisconnectFeature.createStandardDisconnectFeature(client),
31
+ 'standard:events': createStandardEventsFeature.createStandardEventsFeature(client),
32
+ };
33
+ return {
34
+ get accounts() {
35
+ return client.solana.wallets.map((wallet) => convertBaseWalletToWalletAccount.convertBaseWalletToWalletAccount(wallet, client));
36
+ },
37
+ get chains() {
38
+ return getSolanaChains.getSolanaChains(client);
39
+ },
40
+ features,
41
+ icon,
42
+ name,
43
+ version: '1.0.0',
44
+ };
45
+ };
46
+
47
+ exports.createSolanaWallet = createSolanaWallet;
@@ -0,0 +1,17 @@
1
+ import type { Wallet, WalletIcon } from '@wallet-standard/base';
2
+ import { GlobalWalletClient } from '../../../createGlobalWalletClient';
3
+ type CreateSolanaWalletProps = {
4
+ name: string;
5
+ icon: WalletIcon;
6
+ };
7
+ /**
8
+ * Creates a Solana wallet that implements the Wallet Standard specification
9
+ *
10
+ * @param {CreateSolanaWalletProps} props - Configuration properties for the wallet
11
+ * @param {string} props.name - The name of the wallet
12
+ * @param {WalletIcon} props.icon - The wallet's icon
13
+ * @param {GlobalWalletClient} client - The global wallet client instance
14
+ * @returns {Wallet} A wallet object conforming to the Wallet Standard specification with Solana features
15
+ */
16
+ export declare const createSolanaWallet: ({ icon, name }: CreateSolanaWalletProps, client: GlobalWalletClient) => Wallet;
17
+ export {};
@@ -0,0 +1,43 @@
1
+ 'use client'
2
+ import { convertBaseWalletToWalletAccount } from '../convertBaseWalletToWalletAccount/convertBaseWalletToWalletAccount.js';
3
+ import { getSolanaChains } from '../getSolanaChains/getSolanaChains.js';
4
+ import { createStandardEventsFeature } from '../createStandardEventsFeature/createStandardEventsFeature.js';
5
+ import { createSolanaSignMessageFeature } from '../createSolanaSignMessageFeature/createSolanaSignMessageFeature.js';
6
+ import { createSolanaSignTransactionFeature } from '../createSolanaSignTransactionFeature/createSolanaSignTransactionFeature.js';
7
+ import { createStandardConnectFeature } from '../createStandardConnectFeature/createStandardConnectFeature.js';
8
+ import { createStandardDisconnectFeature } from '../createStandardDisconnectFeature/createStandardDisconnectFeature.js';
9
+ import { createSolanaSignAndSendTransactionFeature } from '../createSolanaSignAndSendTransactionFeature/createSolanaSignAndSendTransactionFeature.js';
10
+
11
+ /**
12
+ * Creates a Solana wallet that implements the Wallet Standard specification
13
+ *
14
+ * @param {CreateSolanaWalletProps} props - Configuration properties for the wallet
15
+ * @param {string} props.name - The name of the wallet
16
+ * @param {WalletIcon} props.icon - The wallet's icon
17
+ * @param {GlobalWalletClient} client - The global wallet client instance
18
+ * @returns {Wallet} A wallet object conforming to the Wallet Standard specification with Solana features
19
+ */
20
+ const createSolanaWallet = ({ icon, name }, client) => {
21
+ const features = {
22
+ 'solana:signAndSendTransaction': createSolanaSignAndSendTransactionFeature(),
23
+ 'solana:signMessage': createSolanaSignMessageFeature(client),
24
+ 'solana:signTransaction': createSolanaSignTransactionFeature(),
25
+ 'standard:connect': createStandardConnectFeature(client),
26
+ 'standard:disconnect': createStandardDisconnectFeature(client),
27
+ 'standard:events': createStandardEventsFeature(client),
28
+ };
29
+ return {
30
+ get accounts() {
31
+ return client.solana.wallets.map((wallet) => convertBaseWalletToWalletAccount(wallet, client));
32
+ },
33
+ get chains() {
34
+ return getSolanaChains(client);
35
+ },
36
+ features,
37
+ icon,
38
+ name,
39
+ version: '1.0.0',
40
+ };
41
+ };
42
+
43
+ export { createSolanaWallet };
@@ -0,0 +1 @@
1
+ export { createSolanaWallet } from './createSolanaWallet';
@@ -0,0 +1,21 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../../../_virtual/_tslib.cjs');
7
+ var convertBaseWalletToWalletAccount = require('../convertBaseWalletToWalletAccount/convertBaseWalletToWalletAccount.cjs');
8
+
9
+ const createStandardConnectFeature = (client) => ({
10
+ connect: () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
11
+ if (!client.solana.wallets.length) {
12
+ yield client.connect({ chain: 'solana' });
13
+ }
14
+ return {
15
+ accounts: client.solana.wallets.map((wallet) => convertBaseWalletToWalletAccount.convertBaseWalletToWalletAccount(wallet, client)),
16
+ };
17
+ }),
18
+ version: '1.0.0',
19
+ });
20
+
21
+ exports.createStandardConnectFeature = createStandardConnectFeature;
@@ -0,0 +1,3 @@
1
+ import { StandardConnectFeature } from '@wallet-standard/features';
2
+ import { GlobalWalletClient } from '../../../createGlobalWalletClient';
3
+ export declare const createStandardConnectFeature: (client: GlobalWalletClient) => StandardConnectFeature['standard:connect'];
@@ -0,0 +1,17 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
+ import { convertBaseWalletToWalletAccount } from '../convertBaseWalletToWalletAccount/convertBaseWalletToWalletAccount.js';
4
+
5
+ const createStandardConnectFeature = (client) => ({
6
+ connect: () => __awaiter(void 0, void 0, void 0, function* () {
7
+ if (!client.solana.wallets.length) {
8
+ yield client.connect({ chain: 'solana' });
9
+ }
10
+ return {
11
+ accounts: client.solana.wallets.map((wallet) => convertBaseWalletToWalletAccount(wallet, client)),
12
+ };
13
+ }),
14
+ version: '1.0.0',
15
+ });
16
+
17
+ export { createStandardConnectFeature };
@@ -0,0 +1 @@
1
+ export { createStandardConnectFeature } from './createStandardConnectFeature';
@@ -0,0 +1,13 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../../../_virtual/_tslib.cjs');
7
+
8
+ const createStandardDisconnectFeature = (client) => ({
9
+ disconnect: () => _tslib.__awaiter(void 0, void 0, void 0, function* () { return client.disconnect(); }),
10
+ version: '1.0.0',
11
+ });
12
+
13
+ exports.createStandardDisconnectFeature = createStandardDisconnectFeature;
@@ -0,0 +1,3 @@
1
+ import { StandardDisconnectFeature } from '@wallet-standard/features';
2
+ import { GlobalWalletClient } from '../../../createGlobalWalletClient';
3
+ export declare const createStandardDisconnectFeature: (client: GlobalWalletClient) => StandardDisconnectFeature['standard:disconnect'];
@@ -0,0 +1,9 @@
1
+ 'use client'
2
+ import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
+
4
+ const createStandardDisconnectFeature = (client) => ({
5
+ disconnect: () => __awaiter(void 0, void 0, void 0, function* () { return client.disconnect(); }),
6
+ version: '1.0.0',
7
+ });
8
+
9
+ export { createStandardDisconnectFeature };
@@ -0,0 +1 @@
1
+ export { createStandardDisconnectFeature } from './createStandardDisconnectFeature';
@@ -0,0 +1,38 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var eventemitter3 = require('eventemitter3');
7
+ var convertBaseWalletToWalletAccount = require('../convertBaseWalletToWalletAccount/convertBaseWalletToWalletAccount.cjs');
8
+
9
+ /**
10
+ * Creates a Standard Events Feature compliant with the Wallet Standard specification.
11
+ * This feature enables wallet clients to listen for account changes through a standardized event system.
12
+ *
13
+ * @param {GlobalWalletClient} client - The global wallet client instance to attach events to
14
+ * @returns {StandardEventsFeature['standard:events']} A standard events feature implementation
15
+ * that provides event subscription capabilities for wallet account changes
16
+ */
17
+ const createStandardEventsFeature = (client) => {
18
+ const eventEmitter = new eventemitter3.EventEmitter();
19
+ const emitChanges = () => {
20
+ eventEmitter.emit('change', {
21
+ accounts: client.solana.wallets.map((wallet) => convertBaseWalletToWalletAccount.convertBaseWalletToWalletAccount(wallet, client)),
22
+ });
23
+ };
24
+ client.on('connect', emitChanges);
25
+ client.on('disconnect', emitChanges);
26
+ const eventsFeature = {
27
+ on: (event, listener) => {
28
+ eventEmitter.on(event, listener);
29
+ return () => {
30
+ eventEmitter.off(event, listener);
31
+ };
32
+ },
33
+ version: '1.0.0',
34
+ };
35
+ return eventsFeature;
36
+ };
37
+
38
+ exports.createStandardEventsFeature = createStandardEventsFeature;
@@ -0,0 +1,13 @@
1
+ import { GlobalWalletClient } from '../../../createGlobalWalletClient';
2
+ /**
3
+ * Creates a Standard Events Feature compliant with the Wallet Standard specification.
4
+ * This feature enables wallet clients to listen for account changes through a standardized event system.
5
+ *
6
+ * @param {GlobalWalletClient} client - The global wallet client instance to attach events to
7
+ * @returns {StandardEventsFeature['standard:events']} A standard events feature implementation
8
+ * that provides event subscription capabilities for wallet account changes
9
+ */
10
+ export declare const createStandardEventsFeature: (client: GlobalWalletClient) => {
11
+ readonly version: "1.0.0";
12
+ readonly on: import("@wallet-standard/features").StandardEventsOnMethod;
13
+ };
@@ -0,0 +1,34 @@
1
+ 'use client'
2
+ import { EventEmitter } from 'eventemitter3';
3
+ import { convertBaseWalletToWalletAccount } from '../convertBaseWalletToWalletAccount/convertBaseWalletToWalletAccount.js';
4
+
5
+ /**
6
+ * Creates a Standard Events Feature compliant with the Wallet Standard specification.
7
+ * This feature enables wallet clients to listen for account changes through a standardized event system.
8
+ *
9
+ * @param {GlobalWalletClient} client - The global wallet client instance to attach events to
10
+ * @returns {StandardEventsFeature['standard:events']} A standard events feature implementation
11
+ * that provides event subscription capabilities for wallet account changes
12
+ */
13
+ const createStandardEventsFeature = (client) => {
14
+ const eventEmitter = new EventEmitter();
15
+ const emitChanges = () => {
16
+ eventEmitter.emit('change', {
17
+ accounts: client.solana.wallets.map((wallet) => convertBaseWalletToWalletAccount(wallet, client)),
18
+ });
19
+ };
20
+ client.on('connect', emitChanges);
21
+ client.on('disconnect', emitChanges);
22
+ const eventsFeature = {
23
+ on: (event, listener) => {
24
+ eventEmitter.on(event, listener);
25
+ return () => {
26
+ eventEmitter.off(event, listener);
27
+ };
28
+ },
29
+ version: '1.0.0',
30
+ };
31
+ return eventsFeature;
32
+ };
33
+
34
+ export { createStandardEventsFeature };
@@ -0,0 +1 @@
1
+ export { createStandardEventsFeature } from './createStandardEventsFeature';
@@ -0,0 +1,13 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ const getSolanaChains = (client) => {
7
+ if (client.solana.currentNetwork) {
8
+ return [`solana:${client.solana.currentNetwork}`];
9
+ }
10
+ return [];
11
+ };
12
+
13
+ exports.getSolanaChains = getSolanaChains;
@@ -0,0 +1,2 @@
1
+ import { GlobalWalletClient } from '../../../createGlobalWalletClient';
2
+ export declare const getSolanaChains: (client: GlobalWalletClient) => `${string}:${string}`[];
@@ -0,0 +1,9 @@
1
+ 'use client'
2
+ const getSolanaChains = (client) => {
3
+ if (client.solana.currentNetwork) {
4
+ return [`solana:${client.solana.currentNetwork}`];
5
+ }
6
+ return [];
7
+ };
8
+
9
+ export { getSolanaChains };
@@ -0,0 +1 @@
1
+ export { getSolanaChains } from './getSolanaChains';
@@ -0,0 +1 @@
1
+ export { createSolanaWallet } from './functions/createSolanaWallet';
@@ -12,6 +12,9 @@ const createClientStore = ({ storage = localStorage, } = {}) => {
12
12
  storage,
13
13
  store: store.createStore(() => ({
14
14
  connection: null,
15
+ ethereum: null,
16
+ solana: null,
17
+ wallets: [],
15
18
  })),
16
19
  });
17
20
  return {
@@ -21,6 +24,13 @@ const createClientStore = ({ storage = localStorage, } = {}) => {
21
24
  clear: () => {
22
25
  store$1.setState(store$1.getInitialState());
23
26
  },
27
+ /**
28
+ * Get all Ethereum state from the current connection
29
+ */
30
+ get ethereum() {
31
+ this.getActiveConnection();
32
+ return store$1.getState().ethereum;
33
+ },
24
34
  /**
25
35
  * Retrieves the current active connection if it exists and hasn't expired
26
36
  * @returns {Connection | null} The current connection or null if no connection exists or it has expired
@@ -38,28 +48,40 @@ const createClientStore = ({ storage = localStorage, } = {}) => {
38
48
  return connection;
39
49
  },
40
50
  /**
41
- * Updates the connection in the store
42
- * @param {Connection | null} connection - The connection to store, or null to clear it
51
+ * Updates current connection, wallets
52
+ * Used when the popup confirm a connection
53
+ * @param {GlobalWalletConnection | null} connection - The connection to store, or null to clear it
43
54
  */
44
- setConnection: (connection) => {
45
- store$1.setState({ connection });
55
+ setInitialConnectionState: ({ connection, wallets, ethereum, solana, }) => {
56
+ store$1.setState({ connection, ethereum, solana, wallets });
46
57
  },
47
58
  /**
48
- * Gets the current state of the store
49
- * @returns The complete store state
59
+ * Get all Solana wallets connected to the current connection
50
60
  */
51
- get state() {
52
- return store$1.getState();
61
+ get solana() {
62
+ this.getActiveConnection();
63
+ return store$1.getState().solana;
64
+ },
65
+ /**
66
+ * Switches the Ethereum network
67
+ * @param {number} networkId - The network ID to switch to
68
+ */
69
+ switchEthereumNetwork(networkId) {
70
+ this.getActiveConnection();
71
+ const { ethereum } = store$1.getState();
72
+ if (!ethereum) {
73
+ throw new Error('No connection found');
74
+ }
75
+ store$1.setState({
76
+ ethereum: Object.assign(Object.assign({}, ethereum), { currentNetworkId: networkId }),
77
+ });
53
78
  },
54
79
  /**
55
- * Gets the current user's wallets
56
- * @returns The current user's wallets
80
+ * Get all wallets connected to the current connection
57
81
  */
58
- get userWallets() {
59
- var _a, _b, _c, _d, _e;
60
- const evm = (_c = (_b = (_a = store$1.getState().connection) === null || _a === void 0 ? void 0 : _a.evm) === null || _b === void 0 ? void 0 : _b.wallets) !== null && _c !== void 0 ? _c : [];
61
- const solana = (_e = (_d = store$1.getState().connection) === null || _d === void 0 ? void 0 : _d.solana) === null || _e === void 0 ? void 0 : _e.wallet;
62
- return solana ? [...evm, solana] : evm;
82
+ get wallets() {
83
+ this.getActiveConnection();
84
+ return store$1.getState().wallets;
63
85
  },
64
86
  };
65
87
  };