@turnkey/core 1.0.0-beta.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 (149) hide show
  1. package/LICENSE +201 -0
  2. package/README.MD +5 -0
  3. package/dist/__clients__/core.d.ts +1010 -0
  4. package/dist/__clients__/core.d.ts.map +1 -0
  5. package/dist/__clients__/core.js +2358 -0
  6. package/dist/__clients__/core.js.map +1 -0
  7. package/dist/__clients__/core.mjs +2356 -0
  8. package/dist/__clients__/core.mjs.map +1 -0
  9. package/dist/__generated__/sdk-client-base.d.ts +211 -0
  10. package/dist/__generated__/sdk-client-base.d.ts.map +1 -0
  11. package/dist/__generated__/sdk-client-base.js +3219 -0
  12. package/dist/__generated__/sdk-client-base.js.map +1 -0
  13. package/dist/__generated__/sdk-client-base.mjs +3217 -0
  14. package/dist/__generated__/sdk-client-base.mjs.map +1 -0
  15. package/dist/__generated__/version.d.ts +2 -0
  16. package/dist/__generated__/version.d.ts.map +1 -0
  17. package/dist/__generated__/version.js +6 -0
  18. package/dist/__generated__/version.js.map +1 -0
  19. package/dist/__generated__/version.mjs +4 -0
  20. package/dist/__generated__/version.mjs.map +1 -0
  21. package/dist/__inputs__/public_api.types.d.ts +5170 -0
  22. package/dist/__inputs__/public_api.types.d.ts.map +1 -0
  23. package/dist/__polyfills__/window.d.ts +15 -0
  24. package/dist/__polyfills__/window.d.ts.map +1 -0
  25. package/dist/__polyfills__/window.js +30 -0
  26. package/dist/__polyfills__/window.js.map +1 -0
  27. package/dist/__polyfills__/window.mjs +28 -0
  28. package/dist/__polyfills__/window.mjs.map +1 -0
  29. package/dist/__stampers__/api/base.d.ts +20 -0
  30. package/dist/__stampers__/api/base.d.ts.map +1 -0
  31. package/dist/__stampers__/api/base.js +67 -0
  32. package/dist/__stampers__/api/base.js.map +1 -0
  33. package/dist/__stampers__/api/base.mjs +65 -0
  34. package/dist/__stampers__/api/base.mjs.map +1 -0
  35. package/dist/__stampers__/api/mobile/stamper.d.ts +13 -0
  36. package/dist/__stampers__/api/mobile/stamper.d.ts.map +1 -0
  37. package/dist/__stampers__/api/mobile/stamper.js +69 -0
  38. package/dist/__stampers__/api/mobile/stamper.js.map +1 -0
  39. package/dist/__stampers__/api/mobile/stamper.mjs +67 -0
  40. package/dist/__stampers__/api/mobile/stamper.mjs.map +1 -0
  41. package/dist/__stampers__/api/web/stamper.d.ts +14 -0
  42. package/dist/__stampers__/api/web/stamper.d.ts.map +1 -0
  43. package/dist/__stampers__/api/web/stamper.js +212 -0
  44. package/dist/__stampers__/api/web/stamper.js.map +1 -0
  45. package/dist/__stampers__/api/web/stamper.mjs +210 -0
  46. package/dist/__stampers__/api/web/stamper.mjs.map +1 -0
  47. package/dist/__stampers__/passkey/base.d.ts +18 -0
  48. package/dist/__stampers__/passkey/base.d.ts.map +1 -0
  49. package/dist/__stampers__/passkey/base.js +138 -0
  50. package/dist/__stampers__/passkey/base.js.map +1 -0
  51. package/dist/__stampers__/passkey/base.mjs +134 -0
  52. package/dist/__stampers__/passkey/base.mjs.map +1 -0
  53. package/dist/__storage__/base.d.ts +3 -0
  54. package/dist/__storage__/base.d.ts.map +1 -0
  55. package/dist/__storage__/base.js +27 -0
  56. package/dist/__storage__/base.js.map +1 -0
  57. package/dist/__storage__/base.mjs +25 -0
  58. package/dist/__storage__/base.mjs.map +1 -0
  59. package/dist/__storage__/mobile/storage.d.ts +18 -0
  60. package/dist/__storage__/mobile/storage.d.ts.map +1 -0
  61. package/dist/__storage__/mobile/storage.js +74 -0
  62. package/dist/__storage__/mobile/storage.js.map +1 -0
  63. package/dist/__storage__/mobile/storage.mjs +72 -0
  64. package/dist/__storage__/mobile/storage.mjs.map +1 -0
  65. package/dist/__storage__/web/storage.d.ts +19 -0
  66. package/dist/__storage__/web/storage.d.ts.map +1 -0
  67. package/dist/__storage__/web/storage.js +79 -0
  68. package/dist/__storage__/web/storage.js.map +1 -0
  69. package/dist/__storage__/web/storage.mjs +77 -0
  70. package/dist/__storage__/web/storage.mjs.map +1 -0
  71. package/dist/__types__/base.d.ts +407 -0
  72. package/dist/__types__/base.d.ts.map +1 -0
  73. package/dist/__types__/base.js +88 -0
  74. package/dist/__types__/base.js.map +1 -0
  75. package/dist/__types__/base.mjs +84 -0
  76. package/dist/__types__/base.mjs.map +1 -0
  77. package/dist/__wallet__/base.d.ts +3 -0
  78. package/dist/__wallet__/base.d.ts.map +1 -0
  79. package/dist/__wallet__/base.js +24 -0
  80. package/dist/__wallet__/base.js.map +1 -0
  81. package/dist/__wallet__/base.mjs +22 -0
  82. package/dist/__wallet__/base.mjs.map +1 -0
  83. package/dist/__wallet__/connector.d.ts +33 -0
  84. package/dist/__wallet__/connector.d.ts.map +1 -0
  85. package/dist/__wallet__/connector.js +63 -0
  86. package/dist/__wallet__/connector.js.map +1 -0
  87. package/dist/__wallet__/connector.mjs +61 -0
  88. package/dist/__wallet__/connector.mjs.map +1 -0
  89. package/dist/__wallet__/mobile/manager.d.ts +35 -0
  90. package/dist/__wallet__/mobile/manager.d.ts.map +1 -0
  91. package/dist/__wallet__/mobile/manager.js +95 -0
  92. package/dist/__wallet__/mobile/manager.js.map +1 -0
  93. package/dist/__wallet__/mobile/manager.mjs +93 -0
  94. package/dist/__wallet__/mobile/manager.mjs.map +1 -0
  95. package/dist/__wallet__/stamper.d.ts +19 -0
  96. package/dist/__wallet__/stamper.d.ts.map +1 -0
  97. package/dist/__wallet__/stamper.js +116 -0
  98. package/dist/__wallet__/stamper.js.map +1 -0
  99. package/dist/__wallet__/stamper.mjs +113 -0
  100. package/dist/__wallet__/stamper.mjs.map +1 -0
  101. package/dist/__wallet__/wallet-connect/base.d.ts +83 -0
  102. package/dist/__wallet__/wallet-connect/base.d.ts.map +1 -0
  103. package/dist/__wallet__/wallet-connect/base.js +362 -0
  104. package/dist/__wallet__/wallet-connect/base.js.map +1 -0
  105. package/dist/__wallet__/wallet-connect/base.mjs +360 -0
  106. package/dist/__wallet__/wallet-connect/base.mjs.map +1 -0
  107. package/dist/__wallet__/wallet-connect/client.d.ts +78 -0
  108. package/dist/__wallet__/wallet-connect/client.d.ts.map +1 -0
  109. package/dist/__wallet__/wallet-connect/client.js +139 -0
  110. package/dist/__wallet__/wallet-connect/client.js.map +1 -0
  111. package/dist/__wallet__/wallet-connect/client.mjs +137 -0
  112. package/dist/__wallet__/wallet-connect/client.mjs.map +1 -0
  113. package/dist/__wallet__/web/manager.d.ts +41 -0
  114. package/dist/__wallet__/web/manager.d.ts.map +1 -0
  115. package/dist/__wallet__/web/manager.js +115 -0
  116. package/dist/__wallet__/web/manager.js.map +1 -0
  117. package/dist/__wallet__/web/manager.mjs +113 -0
  118. package/dist/__wallet__/web/manager.mjs.map +1 -0
  119. package/dist/__wallet__/web/native/ethereum.d.ts +67 -0
  120. package/dist/__wallet__/web/native/ethereum.d.ts.map +1 -0
  121. package/dist/__wallet__/web/native/ethereum.js +248 -0
  122. package/dist/__wallet__/web/native/ethereum.js.map +1 -0
  123. package/dist/__wallet__/web/native/ethereum.mjs +245 -0
  124. package/dist/__wallet__/web/native/ethereum.mjs.map +1 -0
  125. package/dist/__wallet__/web/native/solana.d.ts +19 -0
  126. package/dist/__wallet__/web/native/solana.d.ts.map +1 -0
  127. package/dist/__wallet__/web/native/solana.js +149 -0
  128. package/dist/__wallet__/web/native/solana.js.map +1 -0
  129. package/dist/__wallet__/web/native/solana.mjs +146 -0
  130. package/dist/__wallet__/web/native/solana.mjs.map +1 -0
  131. package/dist/index.d.ts +9 -0
  132. package/dist/index.d.ts.map +1 -0
  133. package/dist/index.js +78 -0
  134. package/dist/index.js.map +1 -0
  135. package/dist/index.mjs +8 -0
  136. package/dist/index.mjs.map +1 -0
  137. package/dist/turnkey-helpers.d.ts +68 -0
  138. package/dist/turnkey-helpers.d.ts.map +1 -0
  139. package/dist/turnkey-helpers.js +466 -0
  140. package/dist/turnkey-helpers.js.map +1 -0
  141. package/dist/turnkey-helpers.mjs +399 -0
  142. package/dist/turnkey-helpers.mjs.map +1 -0
  143. package/dist/utils.d.ts +54 -0
  144. package/dist/utils.d.ts.map +1 -0
  145. package/dist/utils.js +596 -0
  146. package/dist/utils.js.map +1 -0
  147. package/dist/utils.mjs +574 -0
  148. package/dist/utils.mjs.map +1 -0
  149. package/package.json +67 -0
@@ -0,0 +1,137 @@
1
+ import SignClient from '@walletconnect/sign-client';
2
+
3
+ class WalletConnectClient {
4
+ constructor() {
5
+ // tracks the pending approval callback returned from `connect()`
6
+ this.pendingApproval = null;
7
+ // callbacks to run when the session is deleted
8
+ this.sessionDeleteHandlers = [];
9
+ }
10
+ /**
11
+ * Registers a callback that runs when the WalletConnect session is deleted.
12
+ *
13
+ * - Useful for clearing UI state or internal session data.
14
+ *
15
+ * @param fn - A callback function to invoke when the session is deleted.
16
+ */
17
+ onSessionDelete(fn) {
18
+ this.sessionDeleteHandlers.push(fn);
19
+ }
20
+ /**
21
+ * Initializes the WalletConnect SignClient with your project credentials.
22
+ *
23
+ * - Must be called before calling `pair()` or `request()`.
24
+ * - Configures metadata and optionally a custom relay server.
25
+ *
26
+ * @param opts.projectId - WalletConnect project ID.
27
+ * @param opts.metadata - Metadata about your app (name, URL, icons).
28
+ * @param opts.relayUrl - (Optional) Custom relay server URL.
29
+ * @returns A promise that resolves once the client is initialized.
30
+ */
31
+ async init(opts) {
32
+ this.client = await SignClient.init({
33
+ projectId: opts.projectId,
34
+ metadata: opts.appMetadata,
35
+ ...(opts.relayUrl ? { relayUrl: opts.relayUrl } : {}),
36
+ });
37
+ // we listen for session deletion events and notify subscribers
38
+ this.client.on("session_delete", () => {
39
+ this.sessionDeleteHandlers.forEach((h) => h());
40
+ });
41
+ }
42
+ /**
43
+ * Initiates a pairing request and returns a URI to be scanned or deep-linked.
44
+ *
45
+ * - Must be followed by a call to `approve()` to complete the pairing.
46
+ * - Throws if a pairing is already in progress.
47
+ *
48
+ * @param namespaces - Namespaces to request for optional capabilities.
49
+ * @returns A WalletConnect URI for the wallet to connect with.
50
+ * @throws {Error} If a pairing is already in progress or URI is not returned.
51
+ */
52
+ async pair(namespaces) {
53
+ if (this.pendingApproval) {
54
+ throw new Error("WalletConnect: Pairing already in progress");
55
+ }
56
+ const { uri, approval } = await this.client.connect({
57
+ optionalNamespaces: namespaces,
58
+ });
59
+ if (!uri) {
60
+ throw new Error("WalletConnect: no URI returned");
61
+ }
62
+ this.pendingApproval = approval;
63
+ return uri;
64
+ }
65
+ /**
66
+ * Completes the pairing approval process after the wallet approves the request.
67
+ *
68
+ * - Must be called after `pair()` and after the wallet has scanned and approved the URI.
69
+ *
70
+ * @returns A promise that resolves to the established session.
71
+ * @throws {Error} If called before `pair()` or approval fails.
72
+ */
73
+ async approve() {
74
+ if (!this.pendingApproval) {
75
+ throw new Error("WalletConnect: call pair() before approve()");
76
+ }
77
+ try {
78
+ const session = await this.pendingApproval();
79
+ return session;
80
+ }
81
+ finally {
82
+ // we clear the pending state regardless of outcome
83
+ this.pendingApproval = null;
84
+ }
85
+ }
86
+ /**
87
+ * Retrieves the most recent active WalletConnect session.
88
+ *
89
+ * @returns The most recent session, or `null` if none are active.
90
+ */
91
+ getSession() {
92
+ const sessions = this.client.session.getAll();
93
+ return sessions.length ? sessions[sessions.length - 1] : null;
94
+ }
95
+ /**
96
+ * Sends a JSON-RPC request over the active WalletConnect session.
97
+ *
98
+ * - The session must already be connected.
99
+ *
100
+ * @param chainId - Chain ID of the target blockchain (e.g. `eip155:1`).
101
+ * @param method - The RPC method name to call.
102
+ * @param params - The parameters to pass into the RPC method.
103
+ * @returns A promise that resolves with the RPC response.
104
+ * @throws {Error} If no active session is found.
105
+ */
106
+ async request(chainId, method, params) {
107
+ const session = this.getSession();
108
+ if (!session) {
109
+ throw new Error("WalletConnect: no active session");
110
+ }
111
+ return this.client.request({
112
+ topic: session.topic,
113
+ chainId,
114
+ request: { method, params },
115
+ });
116
+ }
117
+ /**
118
+ * Disconnects the active session, if one exists.
119
+ *
120
+ * - Sends a disconnect signal to the wallet.
121
+ * - Does nothing if no session is currently active.
122
+ *
123
+ * @returns A promise that resolves once disconnection is complete.
124
+ */
125
+ async disconnect() {
126
+ const session = this.getSession();
127
+ if (!session)
128
+ return;
129
+ await this.client.disconnect({
130
+ topic: session.topic,
131
+ reason: { code: 6000, message: "User disconnected" },
132
+ });
133
+ }
134
+ }
135
+
136
+ export { WalletConnectClient };
137
+ //# sourceMappingURL=client.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.mjs","sources":["../../../src/__wallet__/wallet-connect/client.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { CrossPlatformWalletStamper } from "../stamper";
2
+ import { CrossPlatformWalletConnector } from "../connector";
3
+ import { TWalletManagerConfig, WalletInterface, WalletProvider, WalletInterfaceType, Chain } from "@types";
4
+ export declare class WebWalletManager {
5
+ private initializers;
6
+ private wcClient?;
7
+ readonly wallets: Partial<Record<WalletInterfaceType, WalletInterface>>;
8
+ private chainToInterfaces;
9
+ readonly stamper?: CrossPlatformWalletStamper;
10
+ readonly connector?: CrossPlatformWalletConnector;
11
+ /**
12
+ * Constructs a WebWalletManager instance based on the provided configuration.
13
+ * Sets up native wallets and WalletConnect support.
14
+ *
15
+ * @param cfg - Wallet manager configuration including enabled chains and WalletConnect setup.
16
+ */
17
+ constructor(cfg: TWalletManagerConfig);
18
+ /**
19
+ * Initializes the wallet manager and all wallet connectors.
20
+ *
21
+ * @param cfg - Wallet manager configuration.
22
+ * @returns A promise that resolves once all wallet initializers have completed.
23
+ */
24
+ init(cfg: TWalletManagerConfig): Promise<void>;
25
+ /**
26
+ * Retrieves available wallet providers based on the configured chains.
27
+ *
28
+ * @param chain - Optional chain to filter providers by.
29
+ * @returns A promise that resolves to an array of wallet providers.
30
+ * @throws If no wallet interface is registered for the given chain.
31
+ */
32
+ getProviders(chain?: Chain): Promise<WalletProvider[]>;
33
+ /**
34
+ * Registers a wallet interface as supporting a specific blockchain chain.
35
+ *
36
+ * @param chain - The blockchain chain (e.g., Ethereum, Solana).
37
+ * @param iface - The wallet interface type (e.g., native, WalletConnect).
38
+ */
39
+ private addChainInterface;
40
+ }
41
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/__wallet__/web/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAG5D,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,KAAK,EACN,MAAM,QAAQ,CAAC;AAIhB,qBAAa,gBAAgB;IAE3B,OAAO,CAAC,YAAY,CAAkC;IAGtD,OAAO,CAAC,QAAQ,CAAC,CAAsB;IAGvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC,CAAM;IAG7E,OAAO,CAAC,iBAAiB,CAAqD;IAG9E,QAAQ,CAAC,OAAO,CAAC,EAAE,0BAA0B,CAAC;IAG9C,QAAQ,CAAC,SAAS,CAAC,EAAE,4BAA4B,CAAC;IAElD;;;;;OAKG;gBACS,GAAG,EAAE,oBAAoB;IAyDrC;;;;;OAKG;IACG,IAAI,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpD;;;;;;OAMG;IACG,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA4B5D;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB,CAGvB;CACH"}
@@ -0,0 +1,115 @@
1
+ 'use strict';
2
+
3
+ var stamper = require('../stamper.js');
4
+ var connector = require('../connector.js');
5
+ var ethereum = require('./native/ethereum.js');
6
+ var solana = require('./native/solana.js');
7
+ var base = require('../../__types__/base.js');
8
+ var client = require('../wallet-connect/client.js');
9
+ var base$1 = require('../wallet-connect/base.js');
10
+
11
+ class WebWalletManager {
12
+ /**
13
+ * Constructs a WebWalletManager instance based on the provided configuration.
14
+ * Sets up native wallets and WalletConnect support.
15
+ *
16
+ * @param cfg - Wallet manager configuration including enabled chains and WalletConnect setup.
17
+ */
18
+ constructor(cfg) {
19
+ // queue of async initialization functions
20
+ this.initializers = [];
21
+ // mapping of wallet interface types to their wallet instances
22
+ this.wallets = {};
23
+ // maps a blockchain chain to its corresponding wallet interface types
24
+ this.chainToInterfaces = {};
25
+ /**
26
+ * Registers a wallet interface as supporting a specific blockchain chain.
27
+ *
28
+ * @param chain - The blockchain chain (e.g., Ethereum, Solana).
29
+ * @param iface - The wallet interface type (e.g., native, WalletConnect).
30
+ */
31
+ this.addChainInterface = (chain, iface) => {
32
+ if (!this.chainToInterfaces[chain])
33
+ this.chainToInterfaces[chain] = [];
34
+ this.chainToInterfaces[chain].push(iface);
35
+ };
36
+ const enableNativeEvm = cfg.chains.ethereum ?? false;
37
+ const enableNativeSol = cfg.chains.solana ?? false;
38
+ const ethereumNamespaces = cfg.chains.ethereum?.walletConnectNamespaces ?? [];
39
+ const solanaNamespaces = cfg.chains.solana?.walletConnectNamespaces ?? [];
40
+ const enableWalletConnectEvm = ethereumNamespaces.length > 0;
41
+ const enableWalletConnectSol = solanaNamespaces.length > 0;
42
+ const enableWalletConnect = enableWalletConnectEvm || enableWalletConnectSol;
43
+ // set up native Ethereum wallet support
44
+ if (enableNativeEvm) {
45
+ this.wallets[base.WalletInterfaceType.Ethereum] = new ethereum.EthereumWallet();
46
+ this.addChainInterface(base.Chain.Ethereum, base.WalletInterfaceType.Ethereum);
47
+ }
48
+ // set up native Solana wallet support
49
+ if (enableNativeSol) {
50
+ this.wallets[base.WalletInterfaceType.Solana] = new solana.SolanaWallet();
51
+ this.addChainInterface(base.Chain.Solana, base.WalletInterfaceType.Solana);
52
+ }
53
+ // if WalletConnect is configured, set it up
54
+ if (cfg.walletConnect && enableWalletConnect) {
55
+ this.wcClient = new client.WalletConnectClient();
56
+ const wcUnified = new base$1.WalletConnectWallet(this.wcClient);
57
+ this.wallets[base.WalletInterfaceType.WalletConnect] = wcUnified;
58
+ // add async init step to the initializer queue
59
+ this.initializers.push(() => wcUnified.init({ ethereumNamespaces, solanaNamespaces }));
60
+ // register WalletConnect as a wallet interface for each enabled chain
61
+ if (enableWalletConnectEvm)
62
+ this.addChainInterface(base.Chain.Ethereum, base.WalletInterfaceType.WalletConnect);
63
+ if (enableWalletConnectSol)
64
+ this.addChainInterface(base.Chain.Solana, base.WalletInterfaceType.WalletConnect);
65
+ }
66
+ if (cfg.features?.auth) {
67
+ this.stamper = new stamper.CrossPlatformWalletStamper(this.wallets);
68
+ }
69
+ if (cfg.features?.connecting) {
70
+ this.connector = new connector.CrossPlatformWalletConnector(this.wallets);
71
+ }
72
+ }
73
+ /**
74
+ * Initializes the wallet manager and all wallet connectors.
75
+ *
76
+ * @param cfg - Wallet manager configuration.
77
+ * @returns A promise that resolves once all wallet initializers have completed.
78
+ */
79
+ async init(cfg) {
80
+ if (this.wcClient) {
81
+ await this.wcClient.init(cfg.walletConnect);
82
+ }
83
+ // Run all wallet-specific initializers
84
+ await Promise.all(this.initializers.map((fn) => fn()));
85
+ await this.stamper?.init();
86
+ }
87
+ /**
88
+ * Retrieves available wallet providers based on the configured chains.
89
+ *
90
+ * @param chain - Optional chain to filter providers by.
91
+ * @returns A promise that resolves to an array of wallet providers.
92
+ * @throws If no wallet interface is registered for the given chain.
93
+ */
94
+ async getProviders(chain) {
95
+ if (chain) {
96
+ const ifaceTypes = this.chainToInterfaces[chain];
97
+ if (!ifaceTypes || ifaceTypes.length === 0)
98
+ throw new Error(`No wallet supports chain: ${chain}`);
99
+ const walletsToQuery = ifaceTypes
100
+ .map((iface) => this.wallets[iface])
101
+ .filter(Boolean);
102
+ const providersArrays = await Promise.all(walletsToQuery.map((wallet) => wallet.getProviders()));
103
+ // we still need to filter by chain because WalletConnect can return providers for multiple chains
104
+ return providersArrays
105
+ .flat()
106
+ .filter((p) => p.chainInfo.namespace === chain);
107
+ }
108
+ // collect all providers from all initialized wallets
109
+ const providersArrays = await Promise.all(Object.values(this.wallets).map((wallet) => wallet.getProviders()));
110
+ return providersArrays.flat();
111
+ }
112
+ }
113
+
114
+ exports.WebWalletManager = WebWalletManager;
115
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sources":["../../../src/__wallet__/web/manager.ts"],"sourcesContent":[null],"names":["WalletInterfaceType","EthereumWallet","Chain","SolanaWallet","WalletConnectClient","WalletConnectWallet","CrossPlatformWalletStamper","CrossPlatformWalletConnector"],"mappings":"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"}
@@ -0,0 +1,113 @@
1
+ import { CrossPlatformWalletStamper } from '../stamper.mjs';
2
+ import { CrossPlatformWalletConnector } from '../connector.mjs';
3
+ import { EthereumWallet } from './native/ethereum.mjs';
4
+ import { SolanaWallet } from './native/solana.mjs';
5
+ import { WalletInterfaceType, Chain } from '../../__types__/base.mjs';
6
+ import { WalletConnectClient } from '../wallet-connect/client.mjs';
7
+ import { WalletConnectWallet } from '../wallet-connect/base.mjs';
8
+
9
+ class WebWalletManager {
10
+ /**
11
+ * Constructs a WebWalletManager instance based on the provided configuration.
12
+ * Sets up native wallets and WalletConnect support.
13
+ *
14
+ * @param cfg - Wallet manager configuration including enabled chains and WalletConnect setup.
15
+ */
16
+ constructor(cfg) {
17
+ // queue of async initialization functions
18
+ this.initializers = [];
19
+ // mapping of wallet interface types to their wallet instances
20
+ this.wallets = {};
21
+ // maps a blockchain chain to its corresponding wallet interface types
22
+ this.chainToInterfaces = {};
23
+ /**
24
+ * Registers a wallet interface as supporting a specific blockchain chain.
25
+ *
26
+ * @param chain - The blockchain chain (e.g., Ethereum, Solana).
27
+ * @param iface - The wallet interface type (e.g., native, WalletConnect).
28
+ */
29
+ this.addChainInterface = (chain, iface) => {
30
+ if (!this.chainToInterfaces[chain])
31
+ this.chainToInterfaces[chain] = [];
32
+ this.chainToInterfaces[chain].push(iface);
33
+ };
34
+ const enableNativeEvm = cfg.chains.ethereum ?? false;
35
+ const enableNativeSol = cfg.chains.solana ?? false;
36
+ const ethereumNamespaces = cfg.chains.ethereum?.walletConnectNamespaces ?? [];
37
+ const solanaNamespaces = cfg.chains.solana?.walletConnectNamespaces ?? [];
38
+ const enableWalletConnectEvm = ethereumNamespaces.length > 0;
39
+ const enableWalletConnectSol = solanaNamespaces.length > 0;
40
+ const enableWalletConnect = enableWalletConnectEvm || enableWalletConnectSol;
41
+ // set up native Ethereum wallet support
42
+ if (enableNativeEvm) {
43
+ this.wallets[WalletInterfaceType.Ethereum] = new EthereumWallet();
44
+ this.addChainInterface(Chain.Ethereum, WalletInterfaceType.Ethereum);
45
+ }
46
+ // set up native Solana wallet support
47
+ if (enableNativeSol) {
48
+ this.wallets[WalletInterfaceType.Solana] = new SolanaWallet();
49
+ this.addChainInterface(Chain.Solana, WalletInterfaceType.Solana);
50
+ }
51
+ // if WalletConnect is configured, set it up
52
+ if (cfg.walletConnect && enableWalletConnect) {
53
+ this.wcClient = new WalletConnectClient();
54
+ const wcUnified = new WalletConnectWallet(this.wcClient);
55
+ this.wallets[WalletInterfaceType.WalletConnect] = wcUnified;
56
+ // add async init step to the initializer queue
57
+ this.initializers.push(() => wcUnified.init({ ethereumNamespaces, solanaNamespaces }));
58
+ // register WalletConnect as a wallet interface for each enabled chain
59
+ if (enableWalletConnectEvm)
60
+ this.addChainInterface(Chain.Ethereum, WalletInterfaceType.WalletConnect);
61
+ if (enableWalletConnectSol)
62
+ this.addChainInterface(Chain.Solana, WalletInterfaceType.WalletConnect);
63
+ }
64
+ if (cfg.features?.auth) {
65
+ this.stamper = new CrossPlatformWalletStamper(this.wallets);
66
+ }
67
+ if (cfg.features?.connecting) {
68
+ this.connector = new CrossPlatformWalletConnector(this.wallets);
69
+ }
70
+ }
71
+ /**
72
+ * Initializes the wallet manager and all wallet connectors.
73
+ *
74
+ * @param cfg - Wallet manager configuration.
75
+ * @returns A promise that resolves once all wallet initializers have completed.
76
+ */
77
+ async init(cfg) {
78
+ if (this.wcClient) {
79
+ await this.wcClient.init(cfg.walletConnect);
80
+ }
81
+ // Run all wallet-specific initializers
82
+ await Promise.all(this.initializers.map((fn) => fn()));
83
+ await this.stamper?.init();
84
+ }
85
+ /**
86
+ * Retrieves available wallet providers based on the configured chains.
87
+ *
88
+ * @param chain - Optional chain to filter providers by.
89
+ * @returns A promise that resolves to an array of wallet providers.
90
+ * @throws If no wallet interface is registered for the given chain.
91
+ */
92
+ async getProviders(chain) {
93
+ if (chain) {
94
+ const ifaceTypes = this.chainToInterfaces[chain];
95
+ if (!ifaceTypes || ifaceTypes.length === 0)
96
+ throw new Error(`No wallet supports chain: ${chain}`);
97
+ const walletsToQuery = ifaceTypes
98
+ .map((iface) => this.wallets[iface])
99
+ .filter(Boolean);
100
+ const providersArrays = await Promise.all(walletsToQuery.map((wallet) => wallet.getProviders()));
101
+ // we still need to filter by chain because WalletConnect can return providers for multiple chains
102
+ return providersArrays
103
+ .flat()
104
+ .filter((p) => p.chainInfo.namespace === chain);
105
+ }
106
+ // collect all providers from all initialized wallets
107
+ const providersArrays = await Promise.all(Object.values(this.wallets).map((wallet) => wallet.getProviders()));
108
+ return providersArrays.flat();
109
+ }
110
+ }
111
+
112
+ export { WebWalletManager };
113
+ //# sourceMappingURL=manager.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.mjs","sources":["../../../src/__wallet__/web/manager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { Hex } from "viem";
2
+ import { EthereumWalletInterface, SignIntent, SwitchableChain, WalletInterfaceType, WalletProvider } from "@types";
3
+ /**
4
+ * Abstract base class for Ethereum wallet implementations.
5
+ *
6
+ * Provides shared logic for:
7
+ * - Provider discovery via EIP-6963
8
+ * - Connecting and disconnecting wallets
9
+ * - Recovering compressed public keys
10
+ */
11
+ export declare abstract class BaseEthereumWallet implements EthereumWalletInterface {
12
+ readonly interfaceType = WalletInterfaceType.Ethereum;
13
+ /**
14
+ * Signs a message using the specified wallet provider.
15
+ *
16
+ * @param message - The message to be signed, as a string or hex.
17
+ * @param provider - The wallet provider to use for signing.
18
+ * @param intent - The intent of the signature (e.g. message signing or transaction sending).
19
+ * @returns A promise resolving to a hex-encoded signature string.
20
+ */
21
+ abstract sign(message: string | Hex, provider: WalletProvider, intent: SignIntent): Promise<Hex>;
22
+ /**
23
+ * Retrieves the compressed public key by signing a known message.
24
+ *
25
+ * @param provider - The wallet provider to use.
26
+ * @returns A promise that resolves to the compressed public key (hex-encoded).
27
+ */
28
+ getPublicKey: (provider: WalletProvider) => Promise<string>;
29
+ /**
30
+ * Discovers EIP-1193 providers using the EIP-6963 standard.
31
+ *
32
+ * @returns A promise that resolves to a list of available wallet providers.
33
+ */
34
+ getProviders: () => Promise<WalletProvider[]>;
35
+ /**
36
+ * Ensures the wallet account is connected.
37
+ *
38
+ * @param provider - The wallet provider to use.
39
+ * @returns A promise that resolves once the account is connected.
40
+ */
41
+ connectWalletAccount: (provider: WalletProvider) => Promise<void>;
42
+ /**
43
+ * Disconnects the wallet account by revoking permissions.
44
+ *
45
+ * @param provider - The wallet provider to disconnect.
46
+ * @returns A promise that resolves once the permissions are revoked.
47
+ */
48
+ disconnectWalletAccount: (provider: WalletProvider) => Promise<void>;
49
+ switchChain(provider: WalletProvider, chainOrId: string | SwitchableChain): Promise<void>;
50
+ }
51
+ /**
52
+ * EthereumWallet implementation using EIP-1193 compatible providers.
53
+ *
54
+ * Handles message signing and transaction submission.
55
+ */
56
+ export declare class EthereumWallet extends BaseEthereumWallet {
57
+ /**
58
+ * Signs a message or sends a transaction depending on intent.
59
+ *
60
+ * @param message - The message or raw transaction to be signed.
61
+ * @param provider - The wallet provider to use.
62
+ * @param intent - Signing intent (SignMessage or SignAndSendTransaction).
63
+ * @returns A promise that resolves to a hex string (signature or tx hash).
64
+ */
65
+ sign: (message: string, provider: WalletProvider, intent: SignIntent) => Promise<Hex>;
66
+ }
67
+ //# sourceMappingURL=ethereum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ethereum.d.ts","sourceRoot":"","sources":["../../../../src/__wallet__/web/native/ethereum.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,GAAG,EAIJ,MAAM,MAAM,CAAC;AAGd,OAAO,EAEL,uBAAuB,EACvB,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,cAAc,EAGf,MAAM,QAAQ,CAAC;AAMhB;;;;;;;GAOG;AACH,8BAAsB,kBAAmB,YAAW,uBAAuB;IACzE,QAAQ,CAAC,aAAa,gCAAgC;IAEtD;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,CACX,OAAO,EAAE,MAAM,GAAG,GAAG,EACrB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,GAAG,CAAC;IAEf;;;;;OAKG;IACH,YAAY,aAAoB,cAAc,KAAG,QAAQ,MAAM,CAAC,CAQ9D;IAEF;;;;OAIG;IACH,YAAY,QAAa,QAAQ,cAAc,EAAE,CAAC,CA2DhD;IAEF;;;;;OAKG;IACH,oBAAoB,aAAoB,cAAc,KAAG,QAAQ,IAAI,CAAC,CAGpE;IAEF;;;;;OAKG;IACH,uBAAuB,aAAoB,cAAc,KAAG,QAAQ,IAAI,CAAC,CAMvE;IAEI,WAAW,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,MAAM,GAAG,eAAe,GAClC,OAAO,CAAC,IAAI,CAAC;CAwDjB;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,kBAAkB;IACpD;;;;;;;OAOG;IACH,IAAI,YACO,MAAM,YACL,cAAc,UAChB,UAAU,KACjB,QAAQ,GAAG,CAAC,CAiCb;CACH"}