@kheopskit/core 5.0.1 → 5.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/errors-Caq2csKx.mjs +181 -0
  2. package/dist/errors-Caq2csKx.mjs.map +1 -0
  3. package/dist/errors-DPw6pc2H.js +222 -0
  4. package/dist/errors-DPw6pc2H.js.map +1 -0
  5. package/dist/ethereum.d.mts +39 -38
  6. package/dist/ethereum.d.ts +39 -38
  7. package/dist/ethereum.js +216 -343
  8. package/dist/ethereum.js.map +1 -1
  9. package/dist/ethereum.mjs +213 -344
  10. package/dist/ethereum.mjs.map +1 -1
  11. package/dist/{getCachedObservable-C4E8dfMp.d.ts → getCachedObservable-LUq9IfEx.d.mts} +5 -2
  12. package/dist/{getCachedObservable-C4E8dfMp.d.mts → getCachedObservable-LUq9IfEx.d.ts} +5 -2
  13. package/dist/iconCache-BSa42Sui.mjs +343 -0
  14. package/dist/iconCache-BSa42Sui.mjs.map +1 -0
  15. package/dist/iconCache-DS4zNiP1.js +396 -0
  16. package/dist/iconCache-DS4zNiP1.js.map +1 -0
  17. package/dist/index.d.mts +98 -36
  18. package/dist/index.d.ts +98 -36
  19. package/dist/index.js +897 -630
  20. package/dist/index.js.map +1 -1
  21. package/dist/index.mjs +881 -631
  22. package/dist/index.mjs.map +1 -1
  23. package/dist/injectedWallets-B1MCxAE9.js +148 -0
  24. package/dist/injectedWallets-B1MCxAE9.js.map +1 -0
  25. package/dist/injectedWallets-B3Vysfvr.mjs +119 -0
  26. package/dist/injectedWallets-B3Vysfvr.mjs.map +1 -0
  27. package/dist/internal.d.mts +18 -53
  28. package/dist/internal.d.ts +18 -53
  29. package/dist/internal.js +9 -32
  30. package/dist/internal.mjs +3 -32
  31. package/dist/polkadot.d.mts +37 -36
  32. package/dist/polkadot.d.ts +37 -36
  33. package/dist/polkadot.js +179 -294
  34. package/dist/polkadot.js.map +1 -1
  35. package/dist/polkadot.mjs +176 -295
  36. package/dist/polkadot.mjs.map +1 -1
  37. package/dist/polkadotExtensions-BoVKhNU_.mjs +23 -0
  38. package/dist/polkadotExtensions-BoVKhNU_.mjs.map +1 -0
  39. package/dist/polkadotExtensions-y4J9UzYl.js +28 -0
  40. package/dist/polkadotExtensions-y4J9UzYl.js.map +1 -0
  41. package/dist/solana.d.mts +50 -48
  42. package/dist/solana.d.ts +50 -48
  43. package/dist/solana.js +323 -449
  44. package/dist/solana.js.map +1 -1
  45. package/dist/solana.mjs +316 -449
  46. package/dist/solana.mjs.map +1 -1
  47. package/dist/types-Cb-vuEru.d.mts +330 -0
  48. package/dist/types-Cb-vuEru.d.ts +330 -0
  49. package/dist/types-DKU-SNio.js +169 -0
  50. package/dist/types-DKU-SNio.js.map +1 -0
  51. package/dist/types-jnifAAA0.mjs +104 -0
  52. package/dist/types-jnifAAA0.mjs.map +1 -0
  53. package/package.json +12 -12
  54. package/dist/chunk-4ENHC7G4.js +0 -210
  55. package/dist/chunk-4ENHC7G4.js.map +0 -1
  56. package/dist/chunk-6XAZANB5.mjs +0 -450
  57. package/dist/chunk-6XAZANB5.mjs.map +0 -1
  58. package/dist/chunk-7QSGAJ4A.mjs +0 -210
  59. package/dist/chunk-7QSGAJ4A.mjs.map +0 -1
  60. package/dist/chunk-B4L6GAYD.js +0 -179
  61. package/dist/chunk-B4L6GAYD.js.map +0 -1
  62. package/dist/chunk-BWUUHUDK.mjs +0 -24
  63. package/dist/chunk-BWUUHUDK.mjs.map +0 -1
  64. package/dist/chunk-D3EQMFZ2.js +0 -24
  65. package/dist/chunk-D3EQMFZ2.js.map +0 -1
  66. package/dist/chunk-XQWJM3KC.js +0 -450
  67. package/dist/chunk-XQWJM3KC.js.map +0 -1
  68. package/dist/chunk-YDLCHYHH.mjs +0 -179
  69. package/dist/chunk-YDLCHYHH.mjs.map +0 -1
  70. package/dist/internal.js.map +0 -1
  71. package/dist/internal.mjs.map +0 -1
  72. package/dist/types-C7V7DGlg.d.mts +0 -349
  73. package/dist/types-C7V7DGlg.d.ts +0 -349
package/dist/ethereum.js CHANGED
@@ -1,351 +1,224 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
-
3
-
4
-
5
-
6
- var _chunkXQWJM3KCjs = require('./chunk-XQWJM3KC.js');
7
-
8
-
9
-
10
-
11
-
12
-
13
- var _chunk4ENHC7G4js = require('./chunk-4ENHC7G4.js');
14
-
15
- // src/api/ethereum/accounts.ts
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
- var _rxjs = require('rxjs');
26
-
27
-
28
-
29
-
30
- var _viem = require('viem');
31
- var normalizeEvmChainId = (value) => {
32
- let raw = value;
33
- if (typeof raw === "string" && raw.startsWith("eip155:")) {
34
- raw = raw.slice("eip155:".length);
35
- }
36
- if (typeof raw === "bigint") {
37
- return raw >= 0n ? Number(raw) : void 0;
38
- }
39
- if (typeof raw === "number") {
40
- return Number.isInteger(raw) && raw >= 0 ? raw : void 0;
41
- }
42
- if (typeof raw === "string") {
43
- const normalized = raw.trim().toLowerCase();
44
- if (!normalized) return void 0;
45
- const parsed = normalized.startsWith("0x") ? Number.parseInt(normalized, 16) : Number.parseInt(normalized, 10);
46
- return Number.isNaN(parsed) ? void 0 : parsed;
47
- }
48
- return void 0;
49
- };
50
- var toCaipNetworkId = (value) => {
51
- const chainId = normalizeEvmChainId(value);
52
- return chainId === void 0 ? void 0 : `eip155:${chainId}`;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_types = require("./types-DKU-SNio.js");
3
+ const require_errors = require("./errors-DPw6pc2H.js");
4
+ const require_injectedWallets = require("./injectedWallets-B1MCxAE9.js");
5
+ let rxjs = require("rxjs");
6
+ let viem = require("viem");
7
+ let mipd = require("mipd");
8
+ //#region src/api/ethereum/accounts.ts
9
+ const normalizeEvmChainId = (value) => {
10
+ let raw = value;
11
+ if (typeof raw === "string" && raw.startsWith("eip155:")) raw = raw.slice(7);
12
+ if (typeof raw === "bigint") return raw >= 0n ? Number(raw) : void 0;
13
+ if (typeof raw === "number") return Number.isInteger(raw) && raw >= 0 ? raw : void 0;
14
+ if (typeof raw === "string") {
15
+ const normalized = raw.trim().toLowerCase();
16
+ if (!normalized) return void 0;
17
+ const parsed = normalized.startsWith("0x") ? Number.parseInt(normalized, 16) : Number.parseInt(normalized, 10);
18
+ return Number.isNaN(parsed) ? void 0 : parsed;
19
+ }
53
20
  };
54
- var getInjectedWalletAccounts$ = (wallet) => {
55
- if (!wallet.isConnected) return _rxjs.of.call(void 0, []);
56
- return _chunk4ENHC7G4js.getCachedObservable$.call(void 0,
57
- `accounts:${wallet.id}`,
58
- () => new (0, _rxjs.Observable)((subscriber) => {
59
- const addresses$ = new (0, _rxjs.ReplaySubject)(1);
60
- const chainId$ = new (0, _rxjs.ReplaySubject)(1);
61
- const getAccount = (address, chainId) => {
62
- const client = _viem.createWalletClient.call(void 0, {
63
- account: address,
64
- transport: _viem.custom.call(void 0, wallet.provider)
65
- });
66
- return {
67
- id: _chunkXQWJM3KCjs.getWalletAccountId.call(void 0, wallet.id, address),
68
- platform: "ethereum",
69
- client,
70
- address: _viem.getAddress.call(void 0, address),
71
- chainId,
72
- walletName: wallet.name,
73
- walletId: wallet.id
74
- };
75
- };
76
- const handleAccountsChanged = (addrs) => {
77
- addresses$.next(addrs);
78
- };
79
- const handleChainChanged = (chainIdHex) => {
80
- chainId$.next(normalizeEvmChainId(chainIdHex));
81
- };
82
- const handleDisconnect = () => {
83
- chainId$.next(void 0);
84
- };
85
- wallet.provider.on("accountsChanged", handleAccountsChanged);
86
- wallet.provider.on("chainChanged", handleChainChanged);
87
- wallet.provider.on("disconnect", handleDisconnect);
88
- wallet.provider.request({ method: "eth_accounts" }).then((addrs) => addresses$.next(addrs)).catch((err) => {
89
- console.error("Failed to get accounts", err);
90
- addresses$.next([]);
91
- });
92
- wallet.provider.request({ method: "eth_chainId" }).then(handleChainChanged).catch(() => chainId$.next(void 0));
93
- const sub = _rxjs.combineLatest.call(void 0, [addresses$, chainId$]).pipe(
94
- _rxjs.map.call(void 0,
95
- ([addresses, chainId]) => addresses.map((addr) => getAccount(addr, chainId))
96
- )
97
- ).subscribe(subscriber);
98
- return () => {
99
- wallet.provider.removeListener(
100
- "accountsChanged",
101
- handleAccountsChanged
102
- );
103
- wallet.provider.removeListener("chainChanged", handleChainChanged);
104
- wallet.provider.removeListener("disconnect", handleDisconnect);
105
- sub.unsubscribe();
106
- };
107
- }).pipe(_rxjs.shareReplay.call(void 0, { refCount: true, bufferSize: 1 }))
108
- );
21
+ const toCaipNetworkId = (value) => {
22
+ const chainId = normalizeEvmChainId(value);
23
+ return chainId === void 0 ? void 0 : `eip155:${chainId}`;
109
24
  };
110
- var wrapWalletConnectProvider = (provider, sessionTopic, caipNetworkId) => {
111
- return new Proxy(provider, {
112
- get(target, prop, receiver) {
113
- if (prop !== "request") return Reflect.get(target, prop, receiver);
114
- return (args) => {
115
- if (!args || typeof args !== "object" || !args.method)
116
- return target.request(args);
117
- const next = { ...args };
118
- if (next.topic === void 0) next.topic = sessionTopic;
119
- if (next.chainId === void 0 && caipNetworkId !== void 0)
120
- next.chainId = caipNetworkId;
121
- return target.request(next, caipNetworkId);
122
- };
123
- }
124
- });
25
+ const getInjectedWalletAccounts$ = (wallet) => {
26
+ if (!wallet.isConnected) return (0, rxjs.of)([]);
27
+ return require_types.getCachedObservable$(`accounts:${wallet.id}`, () => new rxjs.Observable((subscriber) => {
28
+ const addresses$ = new rxjs.ReplaySubject(1);
29
+ const chainId$ = new rxjs.ReplaySubject(1);
30
+ const getAccount = (address, chainId) => {
31
+ const client = (0, viem.createWalletClient)({
32
+ account: address,
33
+ transport: (0, viem.custom)(wallet.provider)
34
+ });
35
+ return {
36
+ id: require_errors.getWalletAccountId(wallet.id, address),
37
+ platform: "ethereum",
38
+ client,
39
+ address: (0, viem.getAddress)(address),
40
+ chainId,
41
+ walletName: wallet.name,
42
+ walletId: wallet.id
43
+ };
44
+ };
45
+ const handleAccountsChanged = (addrs) => {
46
+ addresses$.next(addrs);
47
+ };
48
+ const handleChainChanged = (chainIdHex) => {
49
+ chainId$.next(normalizeEvmChainId(chainIdHex));
50
+ };
51
+ const handleDisconnect = () => {
52
+ chainId$.next(void 0);
53
+ };
54
+ wallet.provider.on("accountsChanged", handleAccountsChanged);
55
+ wallet.provider.on("chainChanged", handleChainChanged);
56
+ wallet.provider.on("disconnect", handleDisconnect);
57
+ wallet.provider.request({ method: "eth_accounts" }).then((addrs) => addresses$.next(addrs)).catch((err) => {
58
+ console.error("Failed to get accounts", err);
59
+ addresses$.next([]);
60
+ });
61
+ wallet.provider.request({ method: "eth_chainId" }).then(handleChainChanged).catch(() => chainId$.next(void 0));
62
+ const sub = (0, rxjs.combineLatest)([addresses$, chainId$]).pipe((0, rxjs.map)(([addresses, chainId]) => addresses.map((addr) => getAccount(addr, chainId)))).subscribe(subscriber);
63
+ return () => {
64
+ wallet.provider.removeListener("accountsChanged", handleAccountsChanged);
65
+ wallet.provider.removeListener("chainChanged", handleChainChanged);
66
+ wallet.provider.removeListener("disconnect", handleDisconnect);
67
+ sub.unsubscribe();
68
+ };
69
+ }).pipe((0, rxjs.shareReplay)({
70
+ refCount: true,
71
+ bufferSize: 1
72
+ })));
125
73
  };
126
- var sameAddresses = (a, b) => a.length === b.length && a.every((addr, i) => addr === b[i]);
127
- var getWalletConnectAccounts$ = (wallet) => {
128
- const provider = wallet.appKit.getProvider("eip155");
129
- if (!wallet.platforms.includes("ethereum") || !_optionalChain([provider, 'optionalAccess', _ => _.session]))
130
- return _rxjs.of.call(void 0, []);
131
- return _chunk4ENHC7G4js.getCachedObservable$.call(void 0,
132
- `accounts:${wallet.id}:ethereum:`,
133
- () => new (0, _rxjs.Observable)((subscriber) => {
134
- const caipNetworkId$ = new (0, _rxjs.ReplaySubject)(1);
135
- const addresses$ = new (0, _rxjs.ReplaySubject)(1);
136
- const readAddresses = () => {
137
- const session = provider.session;
138
- if (!session) return [];
139
- const addresses = /* @__PURE__ */ new Set();
140
- for (const namespace of Object.values(session.namespaces)) {
141
- for (const account of _nullishCoalesce(namespace.accounts, () => ( []))) {
142
- if (!account.startsWith("eip155:")) continue;
143
- const raw = account.split(":")[2];
144
- if (!raw) continue;
145
- try {
146
- addresses.add(_viem.getAddress.call(void 0, raw));
147
- } catch (e) {
148
- }
149
- }
150
- }
151
- return [...addresses];
152
- };
153
- const readCaipNetworkId = () => {
154
- const session = provider.session;
155
- if (!session) return void 0;
156
- for (const namespace of Object.values(session.namespaces)) {
157
- for (const account of _nullishCoalesce(namespace.accounts, () => ( []))) {
158
- if (!account.startsWith("eip155:")) continue;
159
- const ref = account.split(":")[1];
160
- if (ref) return `eip155:${ref}`;
161
- }
162
- }
163
- return void 0;
164
- };
165
- const handleChainChanged = (chainId) => {
166
- const caipNetworkId = toCaipNetworkId(chainId);
167
- if (caipNetworkId) {
168
- caipNetworkId$.next(caipNetworkId);
169
- }
170
- };
171
- const handleAccountsChanged = () => addresses$.next(readAddresses());
172
- provider.on("chainChanged", handleChainChanged);
173
- provider.on("accountsChanged", handleAccountsChanged);
174
- provider.on("session_update", handleAccountsChanged);
175
- caipNetworkId$.next(readCaipNetworkId());
176
- provider.request({ method: "eth_chainId" }).then(handleChainChanged).catch(() => {
177
- });
178
- addresses$.next(readAddresses());
179
- const sub = _rxjs.combineLatest.call(void 0, [
180
- caipNetworkId$.pipe(_rxjs.distinctUntilChanged.call(void 0, )),
181
- addresses$.pipe(_rxjs.distinctUntilChanged.call(void 0, sameAddresses))
182
- ]).pipe(
183
- _rxjs.map.call(void 0, ([caipNetworkId, addresses]) => {
184
- const chainId = normalizeEvmChainId(caipNetworkId);
185
- const transport = _viem.custom.call(void 0,
186
- wrapWalletConnectProvider(
187
- provider,
188
- // biome-ignore lint/style/noNonNullAssertion: legacy
189
- provider.session.topic,
190
- caipNetworkId
191
- )
192
- );
193
- return addresses.map((addr) => {
194
- const client = _viem.createWalletClient.call(void 0, {
195
- account: addr,
196
- transport
197
- });
198
- return {
199
- id: _chunkXQWJM3KCjs.getWalletAccountId.call(void 0, wallet.id, addr),
200
- platform: "ethereum",
201
- walletName: wallet.name,
202
- walletId: wallet.id,
203
- address: addr,
204
- client,
205
- chainId
206
- };
207
- });
208
- })
209
- ).subscribe(subscriber);
210
- return () => {
211
- provider.off("chainChanged", handleChainChanged);
212
- provider.off("accountsChanged", handleAccountsChanged);
213
- provider.off("session_update", handleAccountsChanged);
214
- sub.unsubscribe();
215
- };
216
- }).pipe(_rxjs.shareReplay.call(void 0, { refCount: true, bufferSize: 1 }))
217
- );
74
+ const wrapWalletConnectProvider = (provider, sessionTopic, caipNetworkId) => {
75
+ return new Proxy(provider, { get(target, prop, receiver) {
76
+ if (prop !== "request") return Reflect.get(target, prop, receiver);
77
+ return (args) => {
78
+ if (!args || typeof args !== "object" || !args.method) return target.request(args);
79
+ const next = { ...args };
80
+ if (next.topic === void 0) next.topic = sessionTopic;
81
+ if (next.chainId === void 0 && caipNetworkId !== void 0) next.chainId = caipNetworkId;
82
+ return target.request(next, caipNetworkId);
83
+ };
84
+ } });
218
85
  };
219
- var getEthereumAccounts$ = (ethereumWallets) => new (0, _rxjs.Observable)((subscriber) => {
220
- const sub = ethereumWallets.pipe(
221
- _rxjs.map.call(void 0, (wallets) => wallets.filter((w) => w.isConnected)),
222
- _rxjs.switchMap.call(void 0, (wallets) => {
223
- return wallets.length ? _rxjs.combineLatest.call(void 0, [
224
- ...wallets.filter((w) => w.type === "injected").map(getInjectedWalletAccounts$),
225
- ...wallets.filter(_chunk4ENHC7G4js.isWalletConnectWallet).map(getWalletConnectAccounts$)
226
- ]) : _rxjs.of.call(void 0, []);
227
- }),
228
- _rxjs.map.call(void 0, (accounts) => accounts.flat()),
229
- _rxjs.distinctUntilChanged.call(void 0, isSameAccountsList)
230
- ).subscribe(subscriber);
231
- return () => {
232
- sub.unsubscribe();
233
- };
234
- }).pipe(
235
- // logObservable("ethereumAccounts$", true),
236
- _rxjs.shareReplay.call(void 0, { refCount: true, bufferSize: 1 })
237
- );
238
- var isSameAccountsList = (a, b) => {
239
- if (a.length !== b.length) return false;
240
- return a.every(
241
- (account, i) => account.id === _optionalChain([b, 'access', _2 => _2[i], 'optionalAccess', _3 => _3.id]) && account.chainId === _optionalChain([b, 'access', _4 => _4[i], 'optionalAccess', _5 => _5.chainId])
242
- );
243
- };
244
-
245
- // src/api/ethereum/wallets.ts
246
-
247
-
248
- var _mipd = require('mipd');
249
-
250
-
251
-
252
-
253
-
254
-
255
-
256
-
257
- var providersDetails$ = new (0, _rxjs.Observable)(
258
- (subscriber) => {
259
- if (typeof window === "undefined") {
260
- subscriber.next([]);
261
- return () => {
262
- };
263
- }
264
- const mipdStore = _mipd.createStore.call(void 0, );
265
- const unsubscribe = mipdStore.subscribe((providerDetails2) => {
266
- subscriber.next(providerDetails2);
267
- });
268
- const providerDetails = mipdStore.getProviders();
269
- subscriber.next(providerDetails);
270
- return () => {
271
- unsubscribe();
272
- mipdStore.destroy();
273
- };
274
- }
275
- ).pipe(_rxjs.shareReplay.call(void 0, { refCount: true, bufferSize: 1 }));
276
- var createEthereumInjectedWallets$ = (store2) => new (0, _rxjs.Observable)((subscriber) => {
277
- const enabledWalletIds$ = new (0, _rxjs.BehaviorSubject)(/* @__PURE__ */ new Set());
278
- const connectWallet = async (walletId, provider) => {
279
- if (enabledWalletIds$.value.has(walletId))
280
- throw new (0, _chunkXQWJM3KCjs.KheopskitError)(
281
- "WALLET_ALREADY_CONNECTED",
282
- `wallet ${walletId} is already connected`,
283
- { walletId }
284
- );
285
- await provider.request({
286
- method: "eth_requestAccounts"
287
- });
288
- const newSet = new Set(enabledWalletIds$.value);
289
- newSet.add(walletId);
290
- enabledWalletIds$.next(newSet);
291
- store2.addEnabledWalletId(walletId);
292
- };
293
- const disconnectWallet = async (walletId) => {
294
- if (!enabledWalletIds$.value.has(walletId))
295
- throw new (0, _chunkXQWJM3KCjs.KheopskitError)(
296
- "WALLET_NOT_CONNECTED",
297
- `wallet ${walletId} is not connected`,
298
- { walletId }
299
- );
300
- const newSet = new Set(enabledWalletIds$.value);
301
- newSet.delete(walletId);
302
- enabledWalletIds$.next(newSet);
303
- store2.removeEnabledWalletId(walletId);
304
- _chunk4ENHC7G4js.clearCachedObservable.call(void 0, `accounts:${walletId}`);
305
- };
306
- const sub = _rxjs.combineLatest.call(void 0, [providersDetails$, enabledWalletIds$]).pipe(
307
- _rxjs.map.call(void 0, ([providerDetails, enabledWalletIds]) => {
308
- return providerDetails.map((pd) => {
309
- const walletId = _chunk4ENHC7G4js.getWalletId.call(void 0, "ethereum", pd.info.rdns);
310
- const provider = pd.provider;
311
- return {
312
- platform: "ethereum",
313
- type: "injected",
314
- id: walletId,
315
- name: pd.info.name,
316
- icon: pd.info.icon,
317
- provider,
318
- isConnected: enabledWalletIds.has(walletId),
319
- sourceId: pd.info.rdns,
320
- connect: () => connectWallet(walletId, provider),
321
- disconnect: () => disconnectWallet(walletId)
322
- };
323
- });
324
- }),
325
- _rxjs.distinctUntilChanged.call(void 0, walletsEqual)
326
- ).subscribe(subscriber);
327
- return () => {
328
- sub.unsubscribe();
329
- };
330
- }).pipe(_rxjs.shareReplay.call(void 0, { refCount: true, bufferSize: 1 }));
331
- var getEthereumWallets$ = (store2 = _chunkXQWJM3KCjs.store) => createEthereumInjectedWallets$(store2);
332
- var walletsEqual = (a, b) => {
333
- if (a.length !== b.length) return false;
334
- return a.every(
335
- (w, i) => w.id === _optionalChain([b, 'access', _6 => _6[i], 'optionalAccess', _7 => _7.id]) && w.isConnected === _optionalChain([b, 'access', _8 => _8[i], 'optionalAccess', _9 => _9.isConnected]) && w.name === _optionalChain([b, 'access', _10 => _10[i], 'optionalAccess', _11 => _11.name])
336
- );
86
+ const sameAddresses = (a, b) => a.length === b.length && a.every((addr, i) => addr === b[i]);
87
+ const getWalletConnectAccounts$ = (wallet) => {
88
+ const provider = wallet.appKit.getProvider("eip155");
89
+ if (!wallet.platforms.includes("ethereum") || !provider?.session) return (0, rxjs.of)([]);
90
+ return require_types.getCachedObservable$(`accounts:${wallet.id}:ethereum:`, () => new rxjs.Observable((subscriber) => {
91
+ const caipNetworkId$ = new rxjs.ReplaySubject(1);
92
+ const addresses$ = new rxjs.ReplaySubject(1);
93
+ const readAddresses = () => {
94
+ const session = provider.session;
95
+ if (!session) return [];
96
+ const addresses = /* @__PURE__ */ new Set();
97
+ for (const raw of require_injectedWallets.getCaip10Addresses(require_injectedWallets.getSessionCaip10s(session, "eip155"))) try {
98
+ addresses.add((0, viem.getAddress)(raw));
99
+ } catch {}
100
+ return [...addresses];
101
+ };
102
+ const readCaipNetworkId = () => {
103
+ const session = provider.session;
104
+ if (!session) return void 0;
105
+ for (const account of require_injectedWallets.getSessionCaip10s(session, "eip155")) {
106
+ const ref = account.split(":")[1];
107
+ if (ref) return `eip155:${ref}`;
108
+ }
109
+ };
110
+ const handleChainChanged = (chainId) => {
111
+ const caipNetworkId = toCaipNetworkId(chainId);
112
+ if (caipNetworkId) caipNetworkId$.next(caipNetworkId);
113
+ };
114
+ const handleAccountsChanged = () => addresses$.next(readAddresses());
115
+ provider.on("chainChanged", handleChainChanged);
116
+ provider.on("accountsChanged", handleAccountsChanged);
117
+ provider.on("session_update", handleAccountsChanged);
118
+ caipNetworkId$.next(readCaipNetworkId());
119
+ provider.request({ method: "eth_chainId" }).then(handleChainChanged).catch(() => {});
120
+ addresses$.next(readAddresses());
121
+ const sub = (0, rxjs.combineLatest)([caipNetworkId$.pipe((0, rxjs.distinctUntilChanged)()), addresses$.pipe((0, rxjs.distinctUntilChanged)(sameAddresses))]).pipe((0, rxjs.map)(([caipNetworkId, addresses]) => {
122
+ const chainId = normalizeEvmChainId(caipNetworkId);
123
+ const transport = (0, viem.custom)(wrapWalletConnectProvider(provider, provider.session.topic, caipNetworkId));
124
+ return addresses.map((addr) => {
125
+ const client = (0, viem.createWalletClient)({
126
+ account: addr,
127
+ transport
128
+ });
129
+ return {
130
+ id: require_errors.getWalletAccountId(wallet.id, addr),
131
+ platform: "ethereum",
132
+ walletName: wallet.name,
133
+ walletId: wallet.id,
134
+ address: addr,
135
+ client,
136
+ chainId
137
+ };
138
+ });
139
+ })).subscribe(subscriber);
140
+ return () => {
141
+ provider.off("chainChanged", handleChainChanged);
142
+ provider.off("accountsChanged", handleAccountsChanged);
143
+ provider.off("session_update", handleAccountsChanged);
144
+ sub.unsubscribe();
145
+ };
146
+ }).pipe((0, rxjs.shareReplay)({
147
+ refCount: true,
148
+ bufferSize: 1
149
+ })));
337
150
  };
338
-
339
- // src/api/ethereum/plugin.ts
340
- var ethereum = () => ({
341
- platform: "ethereum",
342
- getWallets$: (ctx) => getEthereumWallets$(ctx.store),
343
- getAccounts$: (wallets$) => getEthereumAccounts$(wallets$)
151
+ const getEthereumAccounts$ = (ethereumWallets) => require_injectedWallets.createPlatformAccounts$({
152
+ wallets$: ethereumWallets,
153
+ getInjectedAccounts$: getInjectedWalletAccounts$,
154
+ getWalletConnectAccounts$,
155
+ accountChangeKey: (account) => `${account.id}|${account.chainId ?? ""}`
344
156
  });
157
+ //#endregion
158
+ //#region src/api/ethereum/wallets.ts
159
+ /**
160
+ * Observable that emits EIP-6963 provider details from injected wallets.
161
+ * Returns empty array during SSR since browser wallet APIs are not available.
162
+ */
163
+ const providersDetails$ = new rxjs.Observable((subscriber) => {
164
+ if (typeof window === "undefined") {
165
+ subscriber.next([]);
166
+ return () => {};
167
+ }
168
+ const mipdStore = (0, mipd.createStore)();
169
+ const unsubscribe = mipdStore.subscribe((providerDetails) => {
170
+ subscriber.next(providerDetails);
171
+ });
172
+ const providerDetails = mipdStore.getProviders();
173
+ subscriber.next(providerDetails);
174
+ return () => {
175
+ unsubscribe();
176
+ mipdStore.destroy();
177
+ };
178
+ }).pipe((0, rxjs.shareReplay)({
179
+ refCount: true,
180
+ bufferSize: 1
181
+ }));
182
+ const getEthereumWallets$ = (store) => require_injectedWallets.createInjectedWallets$(store, {
183
+ sources$: providersDetails$,
184
+ getWalletId: (pd) => require_types.getWalletId("ethereum", pd.info.rdns),
185
+ connect: async (pd) => {
186
+ await pd.provider.request({ method: "eth_requestAccounts" });
187
+ },
188
+ onDisconnected: (walletId) => require_types.clearCachedObservable(`accounts:${walletId}`),
189
+ buildWallet: ({ source: pd, walletId, isConnected, connect, disconnect }) => ({
190
+ platform: "ethereum",
191
+ type: "injected",
192
+ id: walletId,
193
+ name: pd.info.name,
194
+ icon: pd.info.icon,
195
+ provider: pd.provider,
196
+ isConnected,
197
+ sourceId: pd.info.rdns,
198
+ connect,
199
+ disconnect
200
+ })
201
+ });
202
+ //#endregion
203
+ //#region src/api/ethereum/plugin.ts
204
+ /**
205
+ * Ethereum platform plugin. Pass to `getKheopskit$({ platforms: [ethereum()] })`.
206
+ *
207
+ * @example
208
+ * ```ts
209
+ * import { ethereum } from "@kheopskit/core/ethereum";
210
+ * ethereum();
211
+ * ```
212
+ */
213
+ const ethereum = () => ({
214
+ platform: "ethereum",
215
+ getWallets$: (ctx) => getEthereumWallets$(ctx.store),
216
+ getAccounts$: (wallets$) => getEthereumAccounts$(wallets$)
217
+ });
218
+ //#endregion
219
+ exports.ethereum = ethereum;
220
+ exports.isEthereumAddress = require_errors.isEthereumAddress;
221
+ exports.isInjectedWallet = require_types.isInjectedWallet;
222
+ exports.isWalletConnectWallet = require_types.isWalletConnectWallet;
345
223
 
346
-
347
-
348
-
349
-
350
- exports.ethereum = ethereum; exports.isEthereumAddress = _chunkXQWJM3KCjs.isEthereumAddress; exports.isInjectedWallet = _chunk4ENHC7G4js.isInjectedWallet; exports.isWalletConnectWallet = _chunk4ENHC7G4js.isWalletConnectWallet;
351
224
  //# sourceMappingURL=ethereum.js.map