@kheopskit/core 0.0.20 → 0.0.22
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.
- package/dist/index.d.mts +6 -4
- package/dist/index.d.ts +6 -4
- package/dist/index.js +74 -39
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +122 -89
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -3
- package/CHANGELOG.md +0 -123
- package/src/api/accounts.ts +0 -43
- package/src/api/appKit.ts +0 -122
- package/src/api/config.ts +0 -13
- package/src/api/ethereum/accounts.ts +0 -207
- package/src/api/ethereum/wallets.ts +0 -117
- package/src/api/index.ts +0 -3
- package/src/api/kheopskit.ts +0 -45
- package/src/api/polkadot/accounts.ts +0 -159
- package/src/api/polkadot/wallets.ts +0 -123
- package/src/api/store.ts +0 -36
- package/src/api/types.ts +0 -109
- package/src/api/wallets.ts +0 -72
- package/src/index.ts +0 -1
- package/src/utils/WalletAccountId.ts +0 -22
- package/src/utils/WalletId.ts +0 -21
- package/src/utils/createStore.ts +0 -45
- package/src/utils/getAccountAddressType.ts +0 -11
- package/src/utils/getCachedObservable.ts +0 -12
- package/src/utils/getQuery.ts +0 -72
- package/src/utils/index.ts +0 -10
- package/src/utils/isEthereumAddress.ts +0 -4
- package/src/utils/isSs58Address.ts +0 -15
- package/src/utils/isValidAddress.ts +0 -8
- package/src/utils/isWalletPlatform.ts +0 -7
- package/src/utils/logObservable.ts +0 -21
- package/src/utils/polkadotExtensions.ts +0 -21
- package/src/utils/sleep.ts +0 -2
- package/src/utils/sortAccounts.ts +0 -36
- package/src/utils/sortWallets.ts +0 -14
- package/src/utils/throwAfter.ts +0 -6
- package/tsconfig.json +0 -10
package/dist/index.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AppKit } from '@reown/appkit/core';
|
|
1
|
+
import { AppKit, ThemeMode, ThemeVariables } from '@reown/appkit/core';
|
|
3
2
|
import { AppKitNetwork } from '@reown/appkit/networks';
|
|
4
3
|
import { Metadata } from '@walletconnect/universal-provider';
|
|
5
4
|
import { InjectedExtension, InjectedPolkadotAccount } from 'polkadot-api/pjs-signer';
|
|
6
5
|
import { EIP1193Provider, WalletClient, CustomTransport, Account } from 'viem';
|
|
6
|
+
import { Observable } from 'rxjs';
|
|
7
7
|
|
|
8
8
|
type WalletAccountId = string;
|
|
9
9
|
|
|
@@ -22,6 +22,8 @@ type KheopskitConfig = {
|
|
|
22
22
|
* see https://docs.reown.com/advanced/multichain/polkadot/dapp-integration-guide#walletconnect-code%2Fcomponent-setup
|
|
23
23
|
*/
|
|
24
24
|
networks: [AppKitNetwork, ...AppKitNetwork[]];
|
|
25
|
+
themeMode?: ThemeMode;
|
|
26
|
+
themeVariables?: ThemeVariables;
|
|
25
27
|
};
|
|
26
28
|
debug: boolean;
|
|
27
29
|
};
|
|
@@ -92,6 +94,8 @@ type EthereumAccount = {
|
|
|
92
94
|
};
|
|
93
95
|
type WalletAccount = PolkadotAccount | EthereumAccount;
|
|
94
96
|
|
|
97
|
+
declare const resolveConfig: (config: Partial<KheopskitConfig> | undefined) => KheopskitConfig;
|
|
98
|
+
|
|
95
99
|
type KheopskitState = {
|
|
96
100
|
wallets: Wallet[];
|
|
97
101
|
accounts: WalletAccount[];
|
|
@@ -99,6 +103,4 @@ type KheopskitState = {
|
|
|
99
103
|
};
|
|
100
104
|
declare const getKheopskit$: (config?: Partial<KheopskitConfig>) => Observable<KheopskitState>;
|
|
101
105
|
|
|
102
|
-
declare const resolveConfig: (config: Partial<KheopskitConfig> | undefined) => KheopskitConfig;
|
|
103
|
-
|
|
104
106
|
export { type EthereumAccount, type EthereumAppKitWallet, type EthereumInjectedWallet, type EthereumWallet, type KheopskitConfig, type KheopskitState, type PolkadotAccount, type PolkadotAppKitWallet, type PolkadotInjectedWallet, type PolkadotWallet, type Wallet, type WalletAccount, type WalletPlatform, getKheopskit$, resolveConfig };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AppKit } from '@reown/appkit/core';
|
|
1
|
+
import { AppKit, ThemeMode, ThemeVariables } from '@reown/appkit/core';
|
|
3
2
|
import { AppKitNetwork } from '@reown/appkit/networks';
|
|
4
3
|
import { Metadata } from '@walletconnect/universal-provider';
|
|
5
4
|
import { InjectedExtension, InjectedPolkadotAccount } from 'polkadot-api/pjs-signer';
|
|
6
5
|
import { EIP1193Provider, WalletClient, CustomTransport, Account } from 'viem';
|
|
6
|
+
import { Observable } from 'rxjs';
|
|
7
7
|
|
|
8
8
|
type WalletAccountId = string;
|
|
9
9
|
|
|
@@ -22,6 +22,8 @@ type KheopskitConfig = {
|
|
|
22
22
|
* see https://docs.reown.com/advanced/multichain/polkadot/dapp-integration-guide#walletconnect-code%2Fcomponent-setup
|
|
23
23
|
*/
|
|
24
24
|
networks: [AppKitNetwork, ...AppKitNetwork[]];
|
|
25
|
+
themeMode?: ThemeMode;
|
|
26
|
+
themeVariables?: ThemeVariables;
|
|
25
27
|
};
|
|
26
28
|
debug: boolean;
|
|
27
29
|
};
|
|
@@ -92,6 +94,8 @@ type EthereumAccount = {
|
|
|
92
94
|
};
|
|
93
95
|
type WalletAccount = PolkadotAccount | EthereumAccount;
|
|
94
96
|
|
|
97
|
+
declare const resolveConfig: (config: Partial<KheopskitConfig> | undefined) => KheopskitConfig;
|
|
98
|
+
|
|
95
99
|
type KheopskitState = {
|
|
96
100
|
wallets: Wallet[];
|
|
97
101
|
accounts: WalletAccount[];
|
|
@@ -99,6 +103,4 @@ type KheopskitState = {
|
|
|
99
103
|
};
|
|
100
104
|
declare const getKheopskit$: (config?: Partial<KheopskitConfig>) => Observable<KheopskitState>;
|
|
101
105
|
|
|
102
|
-
declare const resolveConfig: (config: Partial<KheopskitConfig> | undefined) => KheopskitConfig;
|
|
103
|
-
|
|
104
106
|
export { type EthereumAccount, type EthereumAppKitWallet, type EthereumInjectedWallet, type EthereumWallet, type KheopskitConfig, type KheopskitState, type PolkadotAccount, type PolkadotAppKitWallet, type PolkadotInjectedWallet, type PolkadotWallet, type Wallet, type WalletAccount, type WalletPlatform, getKheopskit$, resolveConfig };
|
package/dist/index.js
CHANGED
|
@@ -25,6 +25,19 @@ __export(index_exports, {
|
|
|
25
25
|
});
|
|
26
26
|
module.exports = __toCommonJS(index_exports);
|
|
27
27
|
|
|
28
|
+
// src/api/config.ts
|
|
29
|
+
var DEFAULT_CONFIG = {
|
|
30
|
+
autoReconnect: true,
|
|
31
|
+
platforms: ["polkadot"],
|
|
32
|
+
debug: false
|
|
33
|
+
};
|
|
34
|
+
var resolveConfig = (config) => {
|
|
35
|
+
return Object.assign({}, DEFAULT_CONFIG, config);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// src/api/kheopskit.ts
|
|
39
|
+
var import_rxjs10 = require("rxjs");
|
|
40
|
+
|
|
28
41
|
// src/utils/logObservable.ts
|
|
29
42
|
var import_rxjs = require("rxjs");
|
|
30
43
|
var logObservable = (label, opts) => (0, import_rxjs.tap)((value) => {
|
|
@@ -35,8 +48,8 @@ var logObservable = (label, opts) => (0, import_rxjs.tap)((value) => {
|
|
|
35
48
|
else console.debug(text);
|
|
36
49
|
});
|
|
37
50
|
|
|
38
|
-
// src/api/
|
|
39
|
-
var
|
|
51
|
+
// src/api/accounts.ts
|
|
52
|
+
var import_rxjs5 = require("rxjs");
|
|
40
53
|
|
|
41
54
|
// src/utils/sortAccounts.ts
|
|
42
55
|
var sortAccounts = (a1, a2) => {
|
|
@@ -62,8 +75,9 @@ var sortAccounts = (a1, a2) => {
|
|
|
62
75
|
return 0;
|
|
63
76
|
};
|
|
64
77
|
|
|
65
|
-
// src/api/accounts.ts
|
|
66
|
-
var
|
|
78
|
+
// src/api/ethereum/accounts.ts
|
|
79
|
+
var import_rxjs3 = require("rxjs");
|
|
80
|
+
var import_viem2 = require("viem");
|
|
67
81
|
|
|
68
82
|
// src/utils/createStore.ts
|
|
69
83
|
var import_rxjs2 = require("rxjs");
|
|
@@ -122,6 +136,9 @@ var isValidAddress = (address) => {
|
|
|
122
136
|
return address.startsWith("0x") ? isEthereumAddress(address) : isSs58Address(address);
|
|
123
137
|
};
|
|
124
138
|
|
|
139
|
+
// src/utils/isWalletPlatform.ts
|
|
140
|
+
var isWalletPlatform = (platform) => typeof platform === "string" && ["polkadot", "ethereum"].includes(platform);
|
|
141
|
+
|
|
125
142
|
// src/utils/WalletAccountId.ts
|
|
126
143
|
var getWalletAccountId = (walletId, address) => {
|
|
127
144
|
if (!walletId) throw new Error("Missing walletId");
|
|
@@ -129,9 +146,6 @@ var getWalletAccountId = (walletId, address) => {
|
|
|
129
146
|
return `${walletId}::${address}`;
|
|
130
147
|
};
|
|
131
148
|
|
|
132
|
-
// src/utils/isWalletPlatform.ts
|
|
133
|
-
var isWalletPlatform = (platform) => typeof platform === "string" && ["polkadot", "ethereum"].includes(platform);
|
|
134
|
-
|
|
135
149
|
// src/utils/getCachedObservable.ts
|
|
136
150
|
var CACHE = /* @__PURE__ */ new Map();
|
|
137
151
|
var getCachedObservable$ = (key, create) => {
|
|
@@ -140,8 +154,6 @@ var getCachedObservable$ = (key, create) => {
|
|
|
140
154
|
};
|
|
141
155
|
|
|
142
156
|
// src/api/ethereum/accounts.ts
|
|
143
|
-
var import_rxjs3 = require("rxjs");
|
|
144
|
-
var import_viem2 = require("viem");
|
|
145
157
|
var getInjectedWalletAccounts$ = (wallet) => {
|
|
146
158
|
if (!wallet.isConnected) return (0, import_rxjs3.of)([]);
|
|
147
159
|
return getCachedObservable$(
|
|
@@ -215,7 +227,7 @@ var getAppKitAccounts$ = (wallet) => {
|
|
|
215
227
|
(caipNetworkId) => (0, import_viem2.custom)(
|
|
216
228
|
wrapWalletConnectProvider(
|
|
217
229
|
provider,
|
|
218
|
-
// biome-ignore lint/style/noNonNullAssertion:
|
|
230
|
+
// biome-ignore lint/style/noNonNullAssertion: legacy
|
|
219
231
|
provider.session.topic,
|
|
220
232
|
caipNetworkId
|
|
221
233
|
)
|
|
@@ -406,15 +418,8 @@ var getAccounts$ = (config, wallets) => {
|
|
|
406
418
|
}).pipe((0, import_rxjs5.shareReplay)({ refCount: true, bufferSize: 1 }));
|
|
407
419
|
};
|
|
408
420
|
|
|
409
|
-
// src/api/
|
|
410
|
-
var
|
|
411
|
-
autoReconnect: true,
|
|
412
|
-
platforms: ["polkadot"],
|
|
413
|
-
debug: false
|
|
414
|
-
};
|
|
415
|
-
var resolveConfig = (config) => {
|
|
416
|
-
return Object.assign({}, DEFAULT_CONFIG, config);
|
|
417
|
-
};
|
|
421
|
+
// src/api/wallets.ts
|
|
422
|
+
var import_rxjs9 = require("rxjs");
|
|
418
423
|
|
|
419
424
|
// src/utils/sortWallets.ts
|
|
420
425
|
var sortWallets = (w1, w2) => {
|
|
@@ -426,8 +431,12 @@ var sortWallets = (w1, w2) => {
|
|
|
426
431
|
return w1.name.localeCompare(w2.name);
|
|
427
432
|
};
|
|
428
433
|
|
|
429
|
-
// src/api/wallets.ts
|
|
430
|
-
var
|
|
434
|
+
// src/api/ethereum/wallets.ts
|
|
435
|
+
var import_mipd = require("mipd");
|
|
436
|
+
var import_rxjs7 = require("rxjs");
|
|
437
|
+
|
|
438
|
+
// src/api/store.ts
|
|
439
|
+
var import_lodash = require("lodash");
|
|
431
440
|
|
|
432
441
|
// src/utils/WalletId.ts
|
|
433
442
|
var getWalletId = (platform, identifier) => {
|
|
@@ -444,7 +453,6 @@ var parseWalletId = (walletId) => {
|
|
|
444
453
|
};
|
|
445
454
|
|
|
446
455
|
// src/api/store.ts
|
|
447
|
-
var import_lodash = require("lodash");
|
|
448
456
|
var LOCAL_STORAGE_KEY = "kheopskit";
|
|
449
457
|
var DEFAULT_SETTINGS = {};
|
|
450
458
|
var storage = createStore(LOCAL_STORAGE_KEY, DEFAULT_SETTINGS);
|
|
@@ -469,10 +477,6 @@ var store = {
|
|
|
469
477
|
removeEnabledWalletId
|
|
470
478
|
};
|
|
471
479
|
|
|
472
|
-
// src/api/ethereum/wallets.ts
|
|
473
|
-
var import_mipd = require("mipd");
|
|
474
|
-
var import_rxjs7 = require("rxjs");
|
|
475
|
-
|
|
476
480
|
// src/api/appKit.ts
|
|
477
481
|
var import_core = require("@reown/appkit/core");
|
|
478
482
|
var import_rxjs6 = require("rxjs");
|
|
@@ -487,11 +491,16 @@ var getAppKitWallets$ = (config) => {
|
|
|
487
491
|
projectId: walletConnect.projectId,
|
|
488
492
|
metadata: walletConnect.metadata,
|
|
489
493
|
networks: walletConnect.networks,
|
|
494
|
+
themeMode: walletConnect.themeMode,
|
|
495
|
+
themeVariables: walletConnect.themeVariables,
|
|
490
496
|
universalProviderConfigOverride: {
|
|
491
497
|
methods: {
|
|
492
498
|
polkadot: ["polkadot_signTransaction", "polkadot_signMessage"]
|
|
493
499
|
}
|
|
494
|
-
}
|
|
500
|
+
},
|
|
501
|
+
allWallets: "HIDE",
|
|
502
|
+
debug: config.debug,
|
|
503
|
+
allowUnsupportedChain: true
|
|
495
504
|
});
|
|
496
505
|
const status$ = new import_rxjs6.BehaviorSubject({
|
|
497
506
|
isPolkadotConnected: false,
|
|
@@ -635,6 +644,11 @@ var getEthereumWallets$ = (config) => {
|
|
|
635
644
|
}).pipe((0, import_rxjs7.shareReplay)({ refCount: true, bufferSize: 1 }));
|
|
636
645
|
};
|
|
637
646
|
|
|
647
|
+
// src/api/polkadot/wallets.ts
|
|
648
|
+
var import_lodash2 = require("lodash");
|
|
649
|
+
var import_pjs_signer2 = require("polkadot-api/pjs-signer");
|
|
650
|
+
var import_rxjs8 = require("rxjs");
|
|
651
|
+
|
|
638
652
|
// src/utils/polkadotExtensions.ts
|
|
639
653
|
var POLKADOT_EXTENSIONS = {
|
|
640
654
|
talisman: {
|
|
@@ -656,10 +670,29 @@ var POLKADOT_EXTENSIONS = {
|
|
|
656
670
|
};
|
|
657
671
|
|
|
658
672
|
// src/api/polkadot/wallets.ts
|
|
659
|
-
var import_lodash2 = require("lodash");
|
|
660
|
-
var import_pjs_signer2 = require("polkadot-api/pjs-signer");
|
|
661
|
-
var import_rxjs8 = require("rxjs");
|
|
662
673
|
var getInjectedWalletsIds = () => (0, import_pjs_signer2.getInjectedExtensions)().map((name) => getWalletId("polkadot", name));
|
|
674
|
+
var createWalletIdsPoller$ = () => {
|
|
675
|
+
return new import_rxjs8.Observable((subscriber) => {
|
|
676
|
+
subscriber.next(getInjectedWalletsIds());
|
|
677
|
+
const intervals = [100, 200, 300, 500];
|
|
678
|
+
let index = 0;
|
|
679
|
+
const poll = () => {
|
|
680
|
+
subscriber.next(getInjectedWalletsIds());
|
|
681
|
+
if (index < intervals.length) {
|
|
682
|
+
const delay = intervals[index++];
|
|
683
|
+
setTimeout(poll, delay);
|
|
684
|
+
}
|
|
685
|
+
};
|
|
686
|
+
if (intervals.length > 0) {
|
|
687
|
+
setTimeout(poll, intervals[index++] ?? 100);
|
|
688
|
+
}
|
|
689
|
+
return () => {
|
|
690
|
+
};
|
|
691
|
+
}).pipe(
|
|
692
|
+
(0, import_rxjs8.distinctUntilChanged)(import_lodash2.isEqual),
|
|
693
|
+
(0, import_rxjs8.shareReplay)({ refCount: true, bufferSize: 1 })
|
|
694
|
+
);
|
|
695
|
+
};
|
|
663
696
|
var polkadotInjectedWallets$ = new import_rxjs8.Observable((subscriber) => {
|
|
664
697
|
const enabledExtensions$ = new import_rxjs8.BehaviorSubject(/* @__PURE__ */ new Map());
|
|
665
698
|
const connect = async (walletId) => {
|
|
@@ -680,11 +713,7 @@ var polkadotInjectedWallets$ = new import_rxjs8.Observable((subscriber) => {
|
|
|
680
713
|
enabledExtensions$.next(newMap);
|
|
681
714
|
store.removeEnabledWalletId(walletId);
|
|
682
715
|
};
|
|
683
|
-
const walletIds$ = (
|
|
684
|
-
(0, import_rxjs8.mergeMap)((time) => (0, import_rxjs8.timer)(time)),
|
|
685
|
-
(0, import_rxjs8.map)(() => getInjectedWalletsIds()),
|
|
686
|
-
(0, import_rxjs8.distinctUntilChanged)(import_lodash2.isEqual)
|
|
687
|
-
);
|
|
716
|
+
const walletIds$ = createWalletIdsPoller$();
|
|
688
717
|
const subscription = (0, import_rxjs8.combineLatest)([walletIds$, enabledExtensions$]).pipe(
|
|
689
718
|
(0, import_rxjs8.map)(([walletIds, enabledExtensions]) => {
|
|
690
719
|
return walletIds.map((id) => {
|
|
@@ -751,8 +780,11 @@ var getWallets$ = (config) => {
|
|
|
751
780
|
}
|
|
752
781
|
);
|
|
753
782
|
const wallets$ = observables.length ? (0, import_rxjs9.combineLatest)(observables).pipe(
|
|
754
|
-
(0, import_rxjs9.map)((wallets) => wallets.flat().sort(sortWallets))
|
|
783
|
+
(0, import_rxjs9.map)((wallets) => wallets.flat().sort(sortWallets)),
|
|
784
|
+
// Emit empty array immediately so UI doesn't wait
|
|
785
|
+
(0, import_rxjs9.startWith)([])
|
|
755
786
|
) : (0, import_rxjs9.of)([]);
|
|
787
|
+
const reconnectingWallets = /* @__PURE__ */ new Set();
|
|
756
788
|
const subAutoReconnect = (0, import_rxjs9.combineLatest)([wallets$, autoReconnectWalletIds$]).pipe(
|
|
757
789
|
(0, import_rxjs9.filter)(([, walletIds]) => config.autoReconnect && !!walletIds?.length),
|
|
758
790
|
(0, import_rxjs9.mergeMap)(
|
|
@@ -760,14 +792,16 @@ var getWallets$ = (config) => {
|
|
|
760
792
|
),
|
|
761
793
|
(0, import_rxjs9.distinct)((w) => w.id)
|
|
762
794
|
).subscribe(async (wallet) => {
|
|
763
|
-
if (wallet.isConnected) {
|
|
764
|
-
console.warn("Wallet %s already connected", wallet.id);
|
|
795
|
+
if (wallet.isConnected || reconnectingWallets.has(wallet.id)) {
|
|
765
796
|
return;
|
|
766
797
|
}
|
|
798
|
+
reconnectingWallets.add(wallet.id);
|
|
767
799
|
try {
|
|
768
800
|
await wallet.connect();
|
|
769
801
|
} catch (err) {
|
|
770
802
|
console.error("Failed to reconnect wallet %s", wallet.id, { err });
|
|
803
|
+
} finally {
|
|
804
|
+
reconnectingWallets.delete(wallet.id);
|
|
771
805
|
}
|
|
772
806
|
});
|
|
773
807
|
const subWallets = wallets$.subscribe(subscriber);
|
|
@@ -792,7 +826,8 @@ var getKheopskit$ = (config) => {
|
|
|
792
826
|
subscription.unsubscribe();
|
|
793
827
|
};
|
|
794
828
|
}).pipe(
|
|
795
|
-
(0, import_rxjs10.throttleTime)(
|
|
829
|
+
(0, import_rxjs10.throttleTime)(16, void 0, { leading: true, trailing: true }),
|
|
830
|
+
// ~1 frame at 60fps
|
|
796
831
|
logObservable("kheopskit$", { enabled: kc.debug, printValue: true }),
|
|
797
832
|
(0, import_rxjs10.shareReplay)({ bufferSize: 1, refCount: true })
|
|
798
833
|
);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/utils/logObservable.ts","../src/api/kheopskit.ts","../src/utils/sortAccounts.ts","../src/api/accounts.ts","../src/utils/createStore.ts","../src/utils/isEthereumAddress.ts","../src/utils/isSs58Address.ts","../src/utils/isValidAddress.ts","../src/utils/WalletAccountId.ts","../src/utils/isWalletPlatform.ts","../src/utils/getCachedObservable.ts","../src/api/ethereum/accounts.ts","../src/api/polkadot/accounts.ts","../src/api/config.ts","../src/utils/sortWallets.ts","../src/api/wallets.ts","../src/utils/WalletId.ts","../src/api/store.ts","../src/api/ethereum/wallets.ts","../src/api/appKit.ts","../src/utils/polkadotExtensions.ts","../src/api/polkadot/wallets.ts"],"sourcesContent":["export * from \"./api\";\n","import { type MonoTypeOperatorFunction, tap } from \"rxjs\";\n\ntype Opts = {\n printValue?: boolean;\n enabled?: boolean;\n};\n\nexport const logObservable = <T>(\n label: string,\n opts?: Opts,\n): MonoTypeOperatorFunction<T> =>\n tap((value) => {\n const { printValue = false, enabled = true } = opts || {};\n\n if (!label || !enabled) return;\n\n const text = `[kheopskit] observable ${label} emit`;\n\n if (printValue) console.debug(text, value);\n else console.debug(text);\n });\n","import { logObservable } from \"@/utils/logObservable\";\nimport {\n Observable,\n combineLatest,\n map,\n shareReplay,\n throttleTime,\n} from \"rxjs\";\nimport { getAccounts$ } from \"./accounts\";\nimport { resolveConfig } from \"./config\";\nimport type { KheopskitConfig, Wallet, WalletAccount } from \"./types\";\nimport { getWallets$ } from \"./wallets\";\n\nexport type { KheopskitConfig } from \"./types\";\n\nexport type KheopskitState = {\n wallets: Wallet[];\n accounts: WalletAccount[];\n config: KheopskitConfig;\n};\n\nexport const getKheopskit$ = (config?: Partial<KheopskitConfig>) => {\n const kc = resolveConfig(config);\n\n console.debug(\"[kheopskit] config\", kc);\n\n return new Observable<KheopskitState>((subscriber) => {\n const wallets$ = getWallets$(kc);\n\n const subscription = combineLatest({\n wallets: wallets$,\n accounts: getAccounts$(kc, wallets$),\n })\n .pipe(map(({ wallets, accounts }) => ({ config: kc, wallets, accounts })))\n .subscribe(subscriber);\n\n return () => {\n subscription.unsubscribe();\n };\n }).pipe(\n throttleTime(50, undefined, { leading: true, trailing: true }),\n logObservable(\"kheopskit$\", { enabled: kc.debug, printValue: true }),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n};\n","import type { WalletAccount } from \"@/api\";\n\nexport const sortAccounts = (a1: WalletAccount, a2: WalletAccount) => {\n if (a1.platform === \"polkadot\") {\n if (a2.platform === \"polkadot\") {\n // sort by wallet name, fallback to address\n if (a1.walletName !== a2.walletName) {\n if (a1.walletName === \"talisman\") return -1;\n if (a2.walletName === \"talisman\") return 1;\n return a1.walletName.localeCompare(a2.walletName);\n }\n\n // sort by name, fallback to address\n return a1.name !== a2.name\n ? (a1.name ?? \"\").localeCompare(a2.name ?? \"\")\n : a1.address.localeCompare(a2.address);\n }\n\n return -1; // polkadot accounts first\n }\n\n if (a2.platform === \"ethereum\") {\n // sort by wallet name, fallback to address\n if (a1.walletName !== a2.walletName) {\n if (a1.walletName === \"Talisman\") return -1;\n if (a2.walletName === \"Talisman\") return 1;\n return a1.walletName.localeCompare(a2.walletName);\n }\n\n // keep order as provider by the wallet\n return 0;\n }\n\n // impossible case\n return 0;\n};\n","import { sortAccounts } from \"@/utils/sortAccounts\";\nimport { Observable, combineLatest, map, of, shareReplay } from \"rxjs\";\nimport { getEthereumAccounts$ } from \"./ethereum/accounts\";\nimport { getPolkadotAccounts$ } from \"./polkadot/accounts\";\nimport type { KheopskitConfig, Wallet, WalletAccount } from \"./types\";\n\nexport const getAccounts$ = (\n config: KheopskitConfig,\n wallets: Observable<Wallet[]>,\n) => {\n return new Observable<WalletAccount[]>((subscriber) => {\n const sources = config.platforms.map<Observable<WalletAccount[]>>(\n (platform) => {\n switch (platform) {\n case \"polkadot\":\n return getPolkadotAccounts$(\n wallets.pipe(\n map((w) => w.filter((w) => w.platform === \"polkadot\")),\n ),\n );\n case \"ethereum\":\n return getEthereumAccounts$(\n wallets.pipe(\n map((w) => w.filter((w) => w.platform === \"ethereum\")),\n ),\n );\n }\n },\n );\n\n const accounts$ = sources.length\n ? combineLatest(sources).pipe(\n map((accounts) => accounts.flat().sort(sortAccounts)),\n )\n : of([]);\n\n const sub = accounts$.subscribe(subscriber);\n\n return () => {\n sub.unsubscribe();\n };\n }).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n};\n","import { BehaviorSubject, filter, fromEvent, map } from \"rxjs\";\n\nexport const createStore = <T>(key: string, defaultValue: T) => {\n const subject = new BehaviorSubject<T>(getStoredData(key, defaultValue));\n\n // Cross-tab sync via 'storage' event (won't fire if key is updated from same tab)\n fromEvent<StorageEvent>(window, \"storage\")\n .pipe(\n filter((event) => event.key === key),\n map((event) => parseData(event.newValue, defaultValue)),\n )\n .subscribe((newValue) => subject.next(newValue));\n\n const update = (val: T) => {\n setStoredData(key, val);\n subject.next(val);\n };\n\n return {\n observable: subject.asObservable(),\n set: (val: T) => update(val),\n mutate: (transform: (prev: T) => T) =>\n update(transform(subject.getValue())),\n get: () => structuredClone(subject.getValue()),\n };\n};\n\nconst parseData = <T>(str: string | null, defaultValue: T): T => {\n try {\n if (str) return JSON.parse(str);\n } catch {\n // invalid data\n }\n return defaultValue;\n};\n\nconst getStoredData = <T>(key: string, defaultValue: T): T => {\n const str = localStorage.getItem(key);\n return parseData(str, defaultValue);\n};\n\nconst setStoredData = <T>(key: string, val: T) => {\n const str = JSON.stringify(val);\n localStorage.setItem(key, str);\n};\n","import { isAddress } from \"viem\";\n\nexport const isEthereumAddress = (address: string): boolean =>\n isAddress(address);\n","import { AccountId, type SS58String } from \"polkadot-api\";\n\nconst accountIdEncoder = AccountId().enc;\n\nexport const isSs58Address = (\n address: SS58String | string,\n): address is SS58String => {\n try {\n if (!address) return false;\n accountIdEncoder(address);\n return true;\n } catch {\n return false;\n }\n};\n","import { isEthereumAddress } from \"./isEthereumAddress\";\nimport { isSs58Address } from \"./isSs58Address\";\n\nexport const isValidAddress = (address: string): boolean => {\n return address.startsWith(\"0x\")\n ? isEthereumAddress(address)\n : isSs58Address(address);\n};\n","import type { SS58String } from \"polkadot-api\";\n\nimport { isValidAddress } from \"./isValidAddress\";\n\nexport type WalletAccountId = string;\n\nexport const getWalletAccountId = (\n walletId: string,\n address: SS58String,\n): WalletAccountId => {\n if (!walletId) throw new Error(\"Missing walletId\");\n if (!isValidAddress(address)) throw new Error(\"Invalid address\");\n return `${walletId}::${address}`;\n};\n\nexport const parseWalletAccountId = (accountId: string) => {\n if (!accountId) throw new Error(\"Invalid walletAccountId\");\n const [walletId, address] = accountId.split(\"::\");\n if (!walletId) throw new Error(\"Missing walletId\");\n if (!address || !isValidAddress(address)) throw new Error(\"Invalid address\");\n return { walletId, address };\n};\n","import type { WalletPlatform } from \"@/api/types\";\n\nexport const isWalletPlatform = (\n platform: unknown,\n): platform is WalletPlatform =>\n typeof platform === \"string\" &&\n [\"polkadot\", \"ethereum\"].includes(platform as WalletPlatform);\n","import type { Observable } from \"rxjs\";\n\nconst CACHE = new Map<string, Observable<unknown>>();\n\nexport const getCachedObservable$ = <T, Obs = Observable<T>>(\n key: string,\n create: () => Obs,\n): Obs => {\n if (!CACHE.has(key)) CACHE.set(key, create() as Observable<unknown>);\n\n return CACHE.get(key) as Obs;\n};\n","import type {\n EthereumAccount,\n EthereumAppKitWallet,\n EthereumInjectedWallet,\n EthereumWallet,\n} from \"@/api/types\";\nimport { getWalletAccountId } from \"@/utils\";\nimport { getCachedObservable$ } from \"@/utils/getCachedObservable\";\nimport type UniversalProvider from \"@walletconnect/universal-provider\";\nimport {\n Observable,\n ReplaySubject,\n combineLatest,\n distinctUntilChanged,\n map,\n of,\n shareReplay,\n switchMap,\n} from \"rxjs\";\nimport {\n type EIP1193Provider,\n createWalletClient,\n custom,\n getAddress,\n} from \"viem\";\n\nconst getInjectedWalletAccounts$ = (\n wallet: EthereumInjectedWallet,\n): Observable<EthereumAccount[]> => {\n if (!wallet.isConnected) return of([]);\n\n return getCachedObservable$(`accounts:${wallet.id}`, () =>\n new Observable<EthereumAccount[]>((subscriber) => {\n const getAccount = (address: string, i: number): EthereumAccount => {\n // console.log(\"[Injected] createWalletClient\", address);\n const client = createWalletClient({\n account: address as `0x${string}`,\n transport: custom(wallet.provider as EIP1193Provider),\n });\n\n return {\n id: getWalletAccountId(wallet.id, address),\n platform: \"ethereum\",\n client,\n address: getAddress(address),\n walletName: wallet.name,\n walletId: wallet.id,\n isWalletDefault: i === 0,\n };\n };\n\n const handleAccountsChanged = (addresses: string[]) => {\n subscriber.next(addresses.map(getAccount));\n };\n\n // subscribe to changes\n wallet.provider.on(\"accountsChanged\", handleAccountsChanged);\n\n // initial value\n wallet.provider\n .request({ method: \"eth_accounts\" })\n .then((addresses: string[]) => {\n subscriber.next(addresses.map(getAccount));\n })\n .catch((err) => {\n console.error(\"Failed to get accounts\", err);\n subscriber.next([]);\n });\n\n return () => {\n wallet.provider.removeListener(\n \"accountsChanged\",\n handleAccountsChanged,\n );\n };\n }).pipe(shareReplay({ refCount: true, bufferSize: 1 })),\n );\n};\n\nconst wrapWalletConnectProvider = (\n provider: EIP1193Provider,\n sessionTopic: string,\n caipNetworkId: string,\n): EIP1193Provider => {\n return new Proxy(provider, {\n get(target, prop, receiver) {\n if (prop !== \"request\") return Reflect.get(target, prop, receiver);\n\n // biome-ignore lint/suspicious/noExplicitAny: <explanation>\n return (args: any) => {\n // console.log(\"request\", { target, prop, receiver, caipNetworkId, args });\n\n if (args && typeof args === \"object\" && args.method) {\n if (!args.topic) args.topic = sessionTopic;\n if (!args.chainId) args.chainId = caipNetworkId;\n }\n return target.request(args);\n };\n },\n });\n};\n\nconst getAppKitAccounts$ = (\n wallet: EthereumAppKitWallet,\n): Observable<EthereumAccount[]> => {\n const account = wallet.appKit.getAccount(\"eip155\");\n const provider = wallet.appKit.getProvider<UniversalProvider>(\"eip155\");\n\n if (\n !wallet.isConnected ||\n !wallet.appKit ||\n !account?.allAccounts.length ||\n !provider?.session\n )\n return of([]);\n\n return getCachedObservable$(\"accounts:appKit\", () =>\n new Observable<EthereumAccount[]>((subscriber) => {\n const caipNetworkId$ = new ReplaySubject<string>(1);\n\n const handleChainChanged = (chainId: unknown) => {\n caipNetworkId$.next(`eip155:${chainId}`);\n };\n\n provider.on(\"chainChanged\", handleChainChanged);\n provider.request({ method: \"eth_chainId\" }).then(handleChainChanged);\n\n const sub = caipNetworkId$\n .pipe(\n distinctUntilChanged(),\n map((caipNetworkId) =>\n custom(\n wrapWalletConnectProvider(\n provider as EIP1193Provider,\n // biome-ignore lint/style/noNonNullAssertion: <explanation>\n provider.session!.topic,\n caipNetworkId,\n ),\n ),\n ),\n map((transport) =>\n account.allAccounts.map((acc, i): EthereumAccount => {\n // console.log(\"[AppKit] createWalletClient\", acc);\n const client = createWalletClient({\n account: acc.address as `0x${string}`,\n transport,\n });\n\n return {\n id: getWalletAccountId(wallet.id, acc.address),\n platform: \"ethereum\",\n walletName: wallet.name,\n walletId: wallet.id,\n address: acc.address as `0x${string}`,\n client,\n isWalletDefault: i === 0,\n };\n }),\n ),\n )\n .subscribe(subscriber);\n\n return () => {\n provider.off(\"chainChanged\", handleChainChanged);\n sub.unsubscribe();\n };\n }).pipe(shareReplay({ refCount: true, bufferSize: 1 })),\n );\n};\n\nexport const getEthereumAccounts$ = (\n ethereumWallets: Observable<EthereumWallet[]>,\n) =>\n new Observable<EthereumAccount[]>((subscriber) => {\n const sub = ethereumWallets\n .pipe(\n map((wallets) => wallets.filter((w) => w.isConnected)),\n switchMap((wallets) => {\n return wallets.length\n ? combineLatest([\n ...wallets\n .filter((w) => w.type === \"injected\")\n .map(getInjectedWalletAccounts$),\n ...wallets\n .filter((w) => w.type === \"appKit\")\n .map(getAppKitAccounts$),\n // todo appkit\n ])\n : of([]);\n }),\n map((accounts) => accounts.flat()),\n distinctUntilChanged(isSameAccountsList),\n )\n .subscribe(subscriber);\n\n return () => {\n sub.unsubscribe();\n };\n }).pipe(\n // logObservable(\"ethereumAccounts$\", true),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\nconst isSameAccountsList = (a: EthereumAccount[], b: EthereumAccount[]) => {\n if (a.length !== b.length) return false;\n return a.every((account, i) => account.id === b[i]?.id);\n};\n","import type {\n PolkadotAccount,\n PolkadotAppKitWallet,\n PolkadotInjectedWallet,\n PolkadotWallet,\n} from \"@/api/types\";\nimport { getWalletAccountId } from \"@/utils\";\nimport type { AppKit } from \"@reown/appkit/core\";\nimport type UniversalProvider from \"@walletconnect/universal-provider\";\nimport {\n type InjectedExtension,\n type InjectedPolkadotAccount,\n getPolkadotSignerFromPjs,\n} from \"polkadot-api/pjs-signer\";\nimport {\n Observable,\n combineLatest,\n distinctUntilChanged,\n map,\n of,\n shareReplay,\n switchMap,\n} from \"rxjs\";\n\nconst getInjectedWalletAccounts$ = (\n wallet: PolkadotInjectedWallet,\n): Observable<PolkadotAccount[]> => {\n if (!wallet.isConnected) return of([]);\n\n return new Observable<PolkadotAccount[]>((subscriber) => {\n const getAccount = (account: InjectedPolkadotAccount): PolkadotAccount => ({\n id: getWalletAccountId(wallet.id, account.address),\n ...account,\n platform: \"polkadot\",\n walletName: wallet.name,\n walletId: wallet.id,\n });\n\n const extension = wallet.extension as InjectedExtension;\n\n // subscribe to changes\n const unsubscribe = extension.subscribe((accounts) => {\n subscriber.next(accounts.map(getAccount));\n });\n\n // initial value\n subscriber.next(extension.getAccounts().map(getAccount));\n\n return () => {\n return unsubscribe();\n };\n });\n};\n\nconst getAppKitPolkadotSigner = (appKit: AppKit, address: string) => {\n const provider = appKit.getProvider<UniversalProvider>(\"polkadot\");\n if (!provider) throw new Error(\"No provider found\");\n if (!provider.session) throw new Error(\"No session found\");\n\n return getPolkadotSignerFromPjs(\n address,\n (transactionPayload) => {\n if (!provider.session) throw new Error(\"No session found\");\n\n return provider.client.request({\n topic: provider.session.topic,\n chainId: `polkadot:${transactionPayload.genesisHash.substring(2, 34)}`,\n request: {\n method: \"polkadot_signTransaction\",\n params: {\n address,\n transactionPayload,\n },\n },\n });\n },\n async ({ address, data }) => {\n if (!provider.session) throw new Error(\"No session found\");\n const networks = appKit.getCaipNetworks(\"polkadot\");\n const chainId = networks[0]?.caipNetworkId;\n if (!chainId) throw new Error(\"No chainId found\");\n\n return provider.client.request({\n topic: provider.session.topic,\n chainId,\n request: {\n method: \"polkadot_signMessage\",\n params: {\n address,\n message: data,\n },\n },\n });\n },\n );\n};\n\nconst getAppKitAccounts$ = (wallet: PolkadotAppKitWallet) => {\n const account = wallet.appKit.getAccount(\"polkadot\");\n const provider = wallet.appKit.getProvider<UniversalProvider>(\"polkadot\");\n\n if (\n !wallet.isConnected ||\n !wallet.appKit ||\n !account?.allAccounts.length ||\n !provider?.session\n )\n return of([]);\n\n return of(\n account.allAccounts.map(\n (acc): PolkadotAccount => ({\n id: getWalletAccountId(wallet.id, acc.address),\n platform: \"polkadot\",\n walletName: wallet.name,\n walletId: wallet.id,\n address: acc.address,\n polkadotSigner: getAppKitPolkadotSigner(wallet.appKit, acc.address),\n genesisHash: null,\n name: `${wallet.name} Polkadot`,\n type: \"sr25519\",\n }),\n ),\n );\n};\n\nexport const getPolkadotAccounts$ = (\n polkadotWallets$: Observable<PolkadotWallet[]>,\n) =>\n new Observable<PolkadotAccount[]>((subscriber) => {\n const sub = polkadotWallets$\n .pipe(\n map((wallets) => wallets.filter((w) => w.isConnected)),\n switchMap((wallets) =>\n wallets.length\n ? combineLatest([\n ...wallets\n .filter((w) => w.type === \"injected\")\n .map(getInjectedWalletAccounts$),\n ...wallets\n .filter((w) => w.type === \"appKit\")\n .map(getAppKitAccounts$),\n ])\n : of([]),\n ),\n map((accounts) => accounts.flat()),\n distinctUntilChanged(isSameAccountsList),\n )\n .subscribe(subscriber);\n\n return () => {\n sub.unsubscribe();\n };\n }).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n\nconst isSameAccountsList = (a: PolkadotAccount[], b: PolkadotAccount[]) => {\n if (a.length !== b.length) return false;\n return a.every((account, i) => account.id === b[i]?.id);\n};\n","import type { KheopskitConfig } from \"./types\";\n\nconst DEFAULT_CONFIG: KheopskitConfig = {\n autoReconnect: true,\n platforms: [\"polkadot\"],\n debug: false,\n};\n\nexport const resolveConfig = (\n config: Partial<KheopskitConfig> | undefined,\n): KheopskitConfig => {\n return Object.assign({}, DEFAULT_CONFIG, config);\n};\n","import type { Wallet } from \"@/api\";\n\nexport const sortWallets = (w1: Wallet, w2: Wallet) => {\n // Sort by platform first: polkadot first, then ethereum\n if (w1.platform !== w2.platform) {\n return w1.platform === \"polkadot\" ? -1 : 1;\n }\n\n // Sort by name, but Talisman first\n if (w1.name.toLowerCase() === \"talisman\") return -1;\n if (w2.name.toLowerCase() === \"talisman\") return 1;\n\n return w1.name.localeCompare(w2.name);\n};\n","import { sortWallets } from \"@/utils/sortWallets\";\nimport {\n Observable,\n combineLatest,\n distinct,\n filter,\n map,\n mergeMap,\n of,\n shareReplay,\n take,\n} from \"rxjs\";\nimport { getEthereumWallets$ } from \"./ethereum/wallets\";\nimport { getPolkadotWallets$ } from \"./polkadot/wallets\";\nimport { store } from \"./store\";\nimport type { KheopskitConfig, Wallet } from \"./types\";\n\n// lock the list of wallets to auto reconnect on first call\nconst autoReconnectWalletIds$ = store.observable.pipe(\n map((s) => s.autoReconnect ?? []),\n take(1),\n shareReplay(1),\n);\n\nexport const getWallets$ = (config: KheopskitConfig) => {\n return new Observable<Wallet[]>((subscriber) => {\n const observables = config.platforms.map<Observable<Wallet[]>>(\n (platform) => {\n switch (platform) {\n case \"polkadot\":\n return getPolkadotWallets$(config);\n case \"ethereum\":\n return getEthereumWallets$(config);\n }\n },\n );\n\n const wallets$ = observables.length\n ? combineLatest(observables).pipe(\n map((wallets) => wallets.flat().sort(sortWallets)),\n )\n : of([]);\n\n const subAutoReconnect = combineLatest([wallets$, autoReconnectWalletIds$])\n .pipe(\n filter(([, walletIds]) => config.autoReconnect && !!walletIds?.length),\n mergeMap(([wallets, walletIds]) =>\n wallets.filter((wallet) => walletIds?.includes(wallet.id)),\n ),\n distinct((w) => w.id),\n )\n .subscribe(async (wallet) => {\n if (wallet.isConnected) {\n console.warn(\"Wallet %s already connected\", wallet.id);\n return;\n }\n\n try {\n await wallet.connect();\n } catch (err) {\n console.error(\"Failed to reconnect wallet %s\", wallet.id, { err });\n }\n });\n\n const subWallets = wallets$.subscribe(subscriber);\n\n return () => {\n subAutoReconnect.unsubscribe();\n subWallets.unsubscribe();\n };\n }).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n};\n","import type { WalletPlatform } from \"@/api/types\";\nimport { isWalletPlatform } from \"./isWalletPlatform\";\n\nexport type WalletId = string;\n\nexport const getWalletId = (\n platform: WalletPlatform,\n identifier: string,\n): WalletId => {\n if (!isWalletPlatform(platform)) throw new Error(\"Invalid platform\");\n if (!identifier) throw new Error(\"Invalid name\");\n return `${platform}:${identifier}`;\n};\n\nexport const parseWalletId = (walletId: string) => {\n if (!walletId) throw new Error(\"Invalid walletId\");\n const [platform, identifier] = walletId.split(\":\");\n if (!isWalletPlatform(platform)) throw new Error(\"Invalid platform\");\n if (!identifier) throw new Error(\"Invalid address\");\n return { platform, identifier };\n};\n","import { type WalletId, parseWalletId } from \"@/utils/WalletId\";\nimport { createStore } from \"@/utils/createStore\";\nimport { uniq } from \"lodash\";\n\nconst LOCAL_STORAGE_KEY = \"kheopskit\";\n\nexport type KheopskitStoreData = {\n autoReconnect?: WalletId[];\n};\n\nconst DEFAULT_SETTINGS: KheopskitStoreData = {};\n\nconst storage = createStore(LOCAL_STORAGE_KEY, DEFAULT_SETTINGS);\n\nexport const addEnabledWalletId = (walletId: WalletId) => {\n parseWalletId(walletId); // validate walletId\n storage.mutate((prev) => ({\n ...prev,\n autoReconnect: uniq((prev.autoReconnect ?? []).concat(walletId)),\n }));\n};\n\nexport const removeEnabledWalletId = (walletId: WalletId) => {\n storage.mutate((prev) => ({\n ...prev,\n autoReconnect: uniq(\n (prev.autoReconnect ?? []).filter((id) => id !== walletId),\n ),\n }));\n};\n\nexport const store = {\n observable: storage.observable,\n addEnabledWalletId,\n removeEnabledWalletId,\n};\n","import { store } from \"@/api/store\";\nimport type {\n EthereumInjectedWallet,\n EthereumWallet,\n KheopskitConfig,\n} from \"@/api/types\";\nimport { type WalletId, getWalletId } from \"@/utils/WalletId\";\nimport { type EIP6963ProviderDetail, createStore } from \"mipd\";\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n map,\n shareReplay,\n} from \"rxjs\";\nimport type { EIP1193Provider } from \"viem\";\nimport { getAppKitWallets$ } from \"../appKit\";\n\nconst providersDetails$ = new Observable<EIP6963ProviderDetail[]>(\n (subscriber) => {\n const store = createStore();\n\n const unsubscribe = store.subscribe((providerDetails) => {\n subscriber.next(providerDetails as EIP6963ProviderDetail[]);\n });\n\n const providerDetails = store.getProviders();\n\n subscriber.next(providerDetails as EIP6963ProviderDetail[]);\n\n return () => {\n unsubscribe();\n store.destroy();\n };\n },\n).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n\nconst ethereumInjectedWallets$ = new Observable<EthereumInjectedWallet[]>(\n (subscriber) => {\n const enabledWalletIds$ = new BehaviorSubject<Set<WalletId>>(new Set());\n\n const connectWallet = async (\n walletId: WalletId,\n provider: EIP1193Provider,\n ) => {\n if (enabledWalletIds$.value.has(walletId))\n throw new Error(`Extension ${walletId} already connected`);\n\n await provider.request({\n method: \"eth_requestAccounts\",\n });\n\n const newSet = new Set(enabledWalletIds$.value);\n newSet.add(walletId);\n enabledWalletIds$.next(newSet);\n\n store.addEnabledWalletId(walletId);\n };\n\n const disconnectWallet = async (walletId: WalletId) => {\n if (!enabledWalletIds$.value.has(walletId))\n throw new Error(`Extension ${walletId} is not connected`);\n const newSet = new Set(enabledWalletIds$.value);\n newSet.delete(walletId);\n enabledWalletIds$.next(newSet);\n\n store.removeEnabledWalletId(walletId);\n };\n\n const sub = combineLatest([providersDetails$, enabledWalletIds$])\n .pipe(\n map(([providerDetails, enabledWalletIds]) => {\n return providerDetails.map((pd): EthereumInjectedWallet => {\n const walletId = getWalletId(\"ethereum\", pd.info.rdns);\n const provider = pd.provider as EIP1193Provider;\n\n return {\n platform: \"ethereum\",\n type: \"injected\",\n id: walletId,\n name: pd.info.name,\n icon: pd.info.icon,\n provider,\n isConnected: enabledWalletIds.has(walletId),\n providerId: pd.info.rdns,\n connect: () => connectWallet(walletId, provider),\n disconnect: () => disconnectWallet(walletId),\n };\n });\n }),\n )\n .subscribe(subscriber);\n\n return () => {\n sub.unsubscribe();\n };\n },\n).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n\nexport const getEthereumWallets$ = (config: KheopskitConfig) => {\n return new Observable<EthereumWallet[]>((subscriber) => {\n const subscription = combineLatest([\n ethereumInjectedWallets$,\n getAppKitWallets$(config)?.pipe(map((w) => w.ethereum)),\n ])\n .pipe(\n map(([injectedWallets, appKitWallet]) =>\n appKitWallet ? [...injectedWallets, appKitWallet] : injectedWallets,\n ),\n )\n .subscribe(subscriber);\n\n return () => {\n subscription.unsubscribe();\n };\n }).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n};\n","import { getWalletId } from \"@/utils/WalletId\";\nimport { createAppKit } from \"@reown/appkit/core\";\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n distinctUntilChanged,\n map,\n of,\n shareReplay,\n} from \"rxjs\";\nimport type {\n EthereumAppKitWallet,\n KheopskitConfig,\n PolkadotAppKitWallet,\n} from \"./types\";\n\nconst WALLET_CONNECT_ICON =\n \"data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjQwMCIgdmlld0JveD0iMCAwIDQwMCA0MDAiIHdpZHRoPSI0MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZD0ibTAgMGg0MDB2NDAwaC00MDB6Ii8+PC9jbGlwUGF0aD48ZyBjbGlwLXBhdGg9InVybCgjYSkiPjxjaXJjbGUgY3g9IjIwMCIgY3k9IjIwMCIgZmlsbD0iIzMzOTZmZiIgcj0iMTk5LjUiIHN0cm9rZT0iIzY2YjFmZiIvPjxwYXRoIGQ9Im0xMjIuNTE5IDE0OC45NjVjNDIuNzkxLTQxLjcyOSAxMTIuMTcxLTQxLjcyOSAxNTQuOTYyIDBsNS4xNSA1LjAyMmMyLjE0IDIuMDg2IDIuMTQgNS40NjkgMCA3LjU1NWwtMTcuNjE3IDE3LjE4Yy0xLjA3IDEuMDQzLTIuODA0IDEuMDQzLTMuODc0IDBsLTcuMDg3LTYuOTExYy0yOS44NTMtMjkuMTExLTc4LjI1My0yOS4xMTEtMTA4LjEwNiAwbC03LjU5IDcuNDAxYy0xLjA3IDEuMDQzLTIuODA0IDEuMDQzLTMuODc0IDBsLTE3LjYxNy0xNy4xOGMtMi4xNC0yLjA4Ni0yLjE0LTUuNDY5IDAtNy41NTV6bTE5MS4zOTcgMzUuNTI5IDE1LjY3OSAxNS4yOWMyLjE0IDIuMDg2IDIuMTQgNS40NjkgMCA3LjU1NWwtNzAuNyA2OC45NDRjLTIuMTM5IDIuMDg3LTUuNjA4IDIuMDg3LTcuNzQ4IDBsLTUwLjE3OC00OC45MzFjLS41MzUtLjUyMi0xLjQwMi0uNTIyLTEuOTM3IDBsLTUwLjE3OCA0OC45MzFjLTIuMTM5IDIuMDg3LTUuNjA4IDIuMDg3LTcuNzQ4IDBsLTcwLjcwMTUtNjguOTQ1Yy0yLjEzOTYtMi4wODYtMi4xMzk2LTUuNDY5IDAtNy41NTVsMTUuNjc5NS0xNS4yOWMyLjEzOTYtMi4wODYgNS42MDg1LTIuMDg2IDcuNzQ4MSAwbDUwLjE3ODkgNDguOTMyYy41MzUuNTIyIDEuNDAyLjUyMiAxLjkzNyAwbDUwLjE3Ny00OC45MzJjMi4xMzktMi4wODcgNS42MDgtMi4wODcgNy43NDggMGw1MC4xNzkgNDguOTMyYy41MzUuNTIyIDEuNDAyLjUyMiAxLjkzNyAwbDUwLjE3OS00OC45MzFjMi4xMzktMi4wODcgNS42MDgtMi4wODcgNy43NDggMHoiIGZpbGw9IiNmZmYiLz48L2c+PC9zdmc+\";\n\ntype AppKitWallets = {\n polkadot?: PolkadotAppKitWallet;\n ethereum?: EthereumAppKitWallet;\n};\n\n// once it exists, appKit object should never be recreated\nlet cachedAppKit: Observable<AppKitWallets> | null = null;\n\nexport const getAppKitWallets$ = (\n config: KheopskitConfig,\n): Observable<AppKitWallets> => {\n if (!config.walletConnect) return of({}); // of(null).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n\n const walletConnect = config.walletConnect;\n\n if (!cachedAppKit) {\n cachedAppKit = new Observable<AppKitWallets>((subscriber) => {\n const appKit = createAppKit({\n projectId: walletConnect.projectId,\n metadata: walletConnect.metadata,\n networks: walletConnect.networks,\n universalProviderConfigOverride: {\n methods: {\n polkadot: [\"polkadot_signTransaction\", \"polkadot_signMessage\"],\n },\n },\n });\n\n const status$ = new BehaviorSubject({\n isPolkadotConnected: false,\n isEthereumConnected: false,\n });\n\n const unsubProviders = appKit.subscribeProviders((providers) => {\n status$.next({\n isPolkadotConnected: !!providers.polkadot,\n isEthereumConnected: !!providers.eip155,\n });\n });\n\n const polkadotWallet$ = appKit.chainNamespaces.includes(\"polkadot\")\n ? status$.pipe(\n map((s) => s.isPolkadotConnected),\n distinctUntilChanged(),\n map((isConnected): PolkadotAppKitWallet => {\n const walletInfo = appKit.getWalletInfo();\n\n return {\n id: getWalletId(\"polkadot\", \"walletconnect\"),\n platform: \"polkadot\",\n type: \"appKit\",\n appKit, // todo maybe we dont want to expose the appKit instance\n name: walletInfo?.name ?? \"WalletConnect\",\n icon: walletInfo?.icon ?? WALLET_CONNECT_ICON,\n connect: async () => {\n if (!isConnected) await appKit.open();\n },\n disconnect: () => {\n if (isConnected) appKit.disconnect();\n },\n isConnected,\n };\n }),\n )\n : of(undefined);\n\n const ethereumWallet$ = appKit.chainNamespaces.includes(\"eip155\")\n ? status$.pipe(\n map((s) => s.isEthereumConnected),\n distinctUntilChanged(),\n map((isConnected): EthereumAppKitWallet => {\n const walletInfo = appKit.getWalletInfo();\n\n return {\n id: getWalletId(\"ethereum\", \"walletconnect\"),\n platform: \"ethereum\",\n type: \"appKit\",\n appKit,\n name: walletInfo?.name ?? \"WalletConnect\",\n icon: walletInfo?.icon ?? WALLET_CONNECT_ICON,\n connect: () => appKit.open(),\n disconnect: () => appKit.disconnect(),\n isConnected,\n };\n }),\n )\n : of(undefined);\n\n const sub = combineLatest({\n polkadot: polkadotWallet$,\n ethereum: ethereumWallet$,\n }).subscribe(subscriber);\n\n return () => {\n sub.unsubscribe();\n unsubProviders();\n };\n }).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n }\n\n return cachedAppKit;\n};\n","export const POLKADOT_EXTENSIONS: Record<\n string,\n { name: string; icon: string }\n> = {\n talisman: {\n name: \"Talisman\",\n icon: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDEyOCAxMjgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8cGF0aCBmaWxsPSIjZGRmZTc2IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDcwLjI1YzAgMjEuMjU1IDAgMzEuODgzIDQuNDYzIDM5Ljg1MmEzNSAzNSAwIDAgMCAxMy40MzUgMTMuNDM1QzI1Ljg2NyAxMjggMzYuNDk1IDEyOCA1Ny43NSAxMjhoMTIuNWMyMS4yNTUgMCAzMS44ODMgMCAzOS44NTItNC40NjNhMzUgMzUgMCAwIDAgMTMuNDM1LTEzLjQzNUMxMjggMTAyLjEzMyAxMjggOTEuNTA1IDEyOCA3MC4yNXYtMTIuNWMwLTIxLjI1NSAwLTMxLjg4My00LjQ2My0zOS44NTJhMzUgMzUgMCAwIDAtMTMuNDM1LTEzLjQzNUMxMDIuMTMzIDAgOTEuNTA1IDAgNzAuMjUgMGgtMTIuNUMzNi40OTUgMCAyNS44NjcgMCAxNy44OTggNC40NjNBMzUgMzUgMCAwIDAgNC40NjMgMTcuODk4QzAgMjUuODY3IDAgMzYuNDk1IDAgNTcuNzVaIi8+CiAgICA8cGF0aCBmaWxsPSIjZWE1NzUwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0zMy44NzkgMzUuMTE3LS41IDE5LjE2NWM4LjEwNyA0LjE2OCAxNS43NSA0LjA3NSAyNC43NCAyLjA2MyAzLjU2LTEuMzk3IDYuMDU2LTEuNzAyIDkuNTExIDAgOS4wNjcgMi44MTYgMTYuOTY5IDEuOTUgMjUuMTg1LTIuMjQzbC0uNDg1LTE5LjE4N2MwLTEwLjgwNS03LjAwNC0xNC45NjItMTQuNjMyLTEyLjczOS0uNzc5LjIzMi0xLjk0NCAxLjI3NC0xLjk0NCAyLjIwN2wtLjE4MSAxOC43MzNhMS43NyAxLjc3IDAgMSAxLTMuNTM4LS4wMTVWMjAuMDY3YTguODM4IDguODM4IDAgMCAwLTE3LjY3NSAwVjQzLjFhMS43NyAxLjc3IDAgMSAxLTMuNTM4LjAxNWwtLjE3Ni0xOC43NDNjMC0uOTIzLTEuMTA5LTEuOTYtMS44ODItMi4xOTItOC44LTIuNjEtMTQuODggMi41MzgtMTQuODggMTIuOTM2Wm0yLjQ3NSAyMy44NDNhNDguNDMgNDguNDMgMCAwIDEtNS4yMDktMi4yNTRjLTQuNzMtMi4yNjktMTIuMDk1LTEuNTYyLTE3LjA3MiA0LjExMS0yLjI3NCAyLjYtLjUxNSA2LjM2IDIuNzcgNy40NDggMS41ODMuNTI2IDMuMDE3IDEuNDEzIDQuMzUzIDIuNDA4bC40NjQuMzM2YzQuMTMyIDIuOTY1IDYuNzkzIDcuNDA2IDcuMDU2IDEyLjQ4NmwuMjUzIDQuODEyYTMxLjYxNiAzMS42MTYgMCAwIDAgMTkuNDI4IDI1Ljk1OSAzOC41OSAzOC41OSAwIDAgMCAyOS4zMjcgMCAzMS42MTYgMzEuNjE2IDAgMCAwIDE5LjQyOS0yNS45NTljLjA0Ni0uODI1LjA2MS0xLjY1LjA1MS0yLjQ2NWwuMTI0LTIuMzQ3Yy4yNjMtNS4wOCAyLjkyNC05LjUyIDcuMDU2LTEyLjQ4NmwuNDY0LS4zMzZjMS4zNC0uOTk1IDIuNzctMS44ODIgNC4zNTMtMi40MDggMy4yODUtMS4wODkgNS4wNS00Ljg0OSAyLjc3LTcuNDQ4LTQuOTc4LTUuNjczLTEyLjM0My02LjM3NS0xNy4wNzItNC4xMS0xLjcxOC44MjUtMy40MzUgMS42NS01LjIxIDIuMjUzbC0zLjYyIDEuMjM4LS4wMS4wNDFjLTYuNjU0IDEuODQyLTEyLjEyIDEuODQ3LTE4LjM5OC0uNzQyLTMuMTc3LTEuMzEtNi4zOC0xLjU1OC05LjQ4IDAtNS45NjcgMS44NTYtMTIuMDQ4IDIuNjQtMTguMjA2LjcwMWwtMy42MjYtMS4yMzhabTI2LjY2NSA0NC43MzJjMTMuMzkgMCAyNC4yNDEtMTUuNTk2IDI0LjI0MS0xNS41OTZTNzYuNDEgNzIuNDk5IDYzLjAyIDcyLjQ5OWMtMTMuMzg1IDAtMjQuMjM2IDE1LjU5Ny0yNC4yMzYgMTUuNTk3czEwLjg1MSAxNS41OTYgMjQuMjQgMTUuNTk2Wm0xMC44ODMtMTUuNTk2YzAgNi4wMS00Ljg3MiAxMC44ODItMTAuODgzIDEwLjg4Mi02LjAxIDAtMTAuODgyLTQuODcyLTEwLjg4Mi0xMC44ODJzNC44NzItMTAuODgzIDEwLjg4Mi0xMC44ODMgMTAuODgzIDQuODcyIDEwLjg4MyAxMC44ODNabS0xMC44ODMgNC45MzZhNC45MzYgNC45MzYgMCAxIDAgMC05Ljg3MiA0LjkzNiA0LjkzNiAwIDAgMCAwIDkuODcyWiIvPgo8L3N2Zz4K\",\n },\n \"polkadot-js\": {\n name: \"Polkadot.js\",\n icon: \"data:image/svg+xml;base64,ICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwNi4yIDEwNi4yIj4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJMYXllcl8yIiBkYXRhLW5hbWU9IkxheWVyIDIiPgogICAgICA8ZyBpZD0iTGF5ZXJfMS0yIiBkYXRhLW5hbWU9IkxheWVyIDEiPgogICAgICAgIDxjaXJjbGUgY3g9IjUzLjEiIGN5PSI1My4xIiByPSI1My4xIiBmaWxsPSIjZjI5MjM1IiAvPgogICAgICAgIDxwYXRoCiAgICAgICAgICBmaWxsPSIjZmZmIgogICAgICAgICAgZD0iTTU0LjQ3IDEzLjc2YTI4Ljg1IDI4Ljg1IDAgMDAtMjguNzMgMjguNzMgMjkuMzQgMjkuMzQgMCAwMDEuNTIgOS4zNCA0IDQgMCAxMDcuNDktMi41MkExOC42NyAxOC42NyAwIDAxMzMuNjMgNDJhMjAuNzIgMjAuNzIgMCAxMTIyIDIxLjMxcy00IC4yNS02IC40OWMtLjc0LjExLTEuNDguMjYtMi4yLjQ0YS4yOC4yOCAwIDAxLS4zOCAwIC4yNy4yNyAwIDAxMC0uMzJsLjYzLTMuNDEgMy43OS0xN2EzLjk0IDMuOTQgMCAxMC03LjcxLTEuNjVzLTkgNDEuNy05IDQyLjA4YTMuNzkgMy43OSAwIDAwMi43NCA0LjZoLjI4YTMuNzggMy43OCAwIDAwNC42MS0yLjcxLjQzLjQzIDAgMDAwLS4xMXYtLjE5Yy4xMS0uNDkgMS4yNS02IDEuMjUtNmExMC4yMyAxMC4yMyAwIDAxOC40Ni04Yy44Ny0uMTMgNC41My0uMzggNC41My0uMzhhMjguNzEgMjguNzEgMCAwMC0yLjExLTU3LjI3eiIKICAgICAgICAvPgogICAgICAgIDxwYXRoCiAgICAgICAgICBmaWxsPSIjZmZmIgogICAgICAgICAgZD0iTTU2LjIxIDgwYTQuNzggNC43OCAwIDAwLTUuNjYgMy43MS4yNC4yNCAwIDAxMCAuMDggNC43NyA0Ljc3IDAgMDAzLjY1IDUuNjdoLjE0QTQuNyA0LjcgMCAwMDYwIDg2di0uMzJBNSA1IDAgMDA1Ni4yMSA4MHoiCiAgICAgICAgLz4KICAgICAgPC9nPgogICAgPC9nPgogIDwvc3ZnPg==\",\n },\n \"subwallet-js\": {\n name: \"SubWallet\",\n icon: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYwIiBoZWlnaHQ9IjE2MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNODAgNGM1Ny42MyAwIDc2IDE4LjM3IDc2IDc2IDAgNTcuNjMtMTguMzcgNzYtNzYgNzYtNTcuNjMgMC03Ni0xOC4zNy03Ni03NkM0IDIyLjM3IDIyLjM3IDQgODAgNFoiIGZpbGw9InVybCgjYSkiLz48ZyBjbGlwLXBhdGg9InVybCgjYikiPjxwYXRoIGQ9Ik0xMTIuNjE1IDY2LjcyVjUzLjM5OEw1OC43NiAzMiA0OCAzNy40MTJsLjA1NyA0MS40NjQgNDAuMjkyIDE2LjA3LTIxLjUyIDkuMDc1di03LjAxOEw1Ni45NSA5My4wM2wtOC44OTMgNC4xNjN2MjUuMzk1TDU4Ljc2OSAxMjhsNTMuODQ2LTI0LjA2MlY4Ni44NjlMNjQuMTU0IDY3LjY1N1Y1NmwzOC40NDkgMTUuMjE2IDEwLjAxMi00LjQ5NloiIGZpbGw9IiNmZmYiLz48L2c+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4MT0iODAiIHkxPSI0IiB4Mj0iODAiIHkyPSIxNTYiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjMDA0QkZGIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNENFQUFDIi8+PC9saW5lYXJHcmFkaWVudD48Y2xpcFBhdGggaWQ9ImIiPjxwYXRoIGZpbGw9IiNmZmYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4IDMyKSIgZD0iTTAgMGg2NC42MTV2OTZIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4=\",\n },\n enkrypt: {\n name: \"Enkrypt\",\n icon: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODEiIGhlaWdodD0iODEiIHZpZXdCb3g9IjAgMCA4MSA4MSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNy4wMDU3IDE3LjAwNjJDMTguOTMwMyAxNS4wODE2IDIxLjU0MDUgMTQuMDAwNCAyNC4yNjIyIDE0LjAwMDRMNjcuMzI5NiAxNFYyMS44NzQxQzY3LjMyOTYgMjMuODMwNSA2Ni41NTIzIDI1LjcwNjcgNjUuMTY5IDI3LjA5QzYzLjc4NTcgMjguNDczMyA2MS45MDk1IDI5LjI1MDQgNTkuOTUzMiAyOS4yNTA0SDM5LjcwNDVDMzYuOTgyOCAyOS4yNTA0IDM0LjM3MjYgMzAuMzMxNiAzMi40NDggMzIuMjU2MUMzMC41MjM1IDM0LjE4MDcgMjkuNDQyMyAzNi43OTA5IDI5LjQ0MjMgMzkuNTEyNlY0Mi4xMjQyQzI5LjQ0MjMgNDQuODQ1OSAzMC41MjM1IDQ3LjQ1NjEgMzIuNDQ4IDQ5LjM4MDZDMzQuMzcyNiA1MS4zMDUxIDM2Ljk4MjggNTIuMzg2MyAzOS43MDQ1IDUyLjM4NjNINTkuOTUzMkM2MS45MDk1IDUyLjM4NjMgNjMuNzg1NyA1My4xNjM1IDY1LjE2OSA1NC41NDY4QzY2LjU1MjMgNTUuOTMwMSA2Ny4zMjk2IDU3LjgwNjMgNjcuMzI5NiA1OS43NjI2VjY3LjMzSDI0LjI2MjJDMjEuNTQwNSA2Ny4zMyAxOC45MzAzIDY2LjI0ODggMTcuMDA1NyA2NC4zMjQzQzE1LjA4MTIgNjIuMzk5NyAxNCA1OS43ODk1IDE0IDU3LjA2NzhWMjQuMjYyNkMxNCAyMS41NDA5IDE1LjA4MTIgMTguOTMwNyAxNy4wMDU3IDE3LjAwNjJaTTQwLjE0NzkgMzMuNTQyM0g2MC45MTU3QzY0LjQ1OCAzMy41NDIzIDY3LjMyOTUgMzYuNDEzOCA2Ny4zMjk1IDM5Ljk1NjFWNDEuNjgxNkM2Ny4zMjk1IDQ1LjIyMzggNjQuNDU4IDQ4LjA5NTQgNjAuOTE1NyA0OC4wOTU0SDQwLjE0NzlDMzYuNjA1NyA0OC4wOTU0IDMzLjczNDEgNDUuMjIzOCAzMy43MzQxIDQxLjY4MTZWMzkuOTU2MUMzMy43MzQxIDM2LjQxMzggMzYuNjA1NyAzMy41NDIzIDQwLjE0NzkgMzMuNTQyM1oiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8yODdfMjM1OSkiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8yODdfMjM1OSIgeDE9IjE5LjM2MDIiIHkxPSIxNCIgeDI9IjU2Ljc2OTYiIHkyPSI2OS44MDA1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNDNTQ5RkYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNjU0QkZGIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==\",\n },\n};\n","import { store } from \"@/api/store\";\nimport type {\n KheopskitConfig,\n PolkadotInjectedWallet,\n PolkadotWallet,\n} from \"@/api/types\";\nimport { type WalletId, getWalletId, parseWalletId } from \"@/utils/WalletId\";\nimport { POLKADOT_EXTENSIONS } from \"@/utils/polkadotExtensions\";\nimport { isEqual } from \"lodash\";\nimport {\n type InjectedExtension,\n connectInjectedExtension,\n getInjectedExtensions,\n} from \"polkadot-api/pjs-signer\";\nimport {\n BehaviorSubject,\n Observable,\n combineLatest,\n distinctUntilChanged,\n map,\n mergeMap,\n of,\n shareReplay,\n timer,\n} from \"rxjs\";\nimport { getAppKitWallets$ } from \"../appKit\";\n\nconst getInjectedWalletsIds = () =>\n getInjectedExtensions().map((name) => getWalletId(\"polkadot\", name));\n\nexport const polkadotInjectedWallets$ = new Observable<\n PolkadotInjectedWallet[]\n>((subscriber) => {\n const enabledExtensions$ = new BehaviorSubject<\n Map<WalletId, InjectedExtension>\n >(new Map());\n\n const connect = async (walletId: WalletId) => {\n if (enabledExtensions$.value.has(walletId))\n throw new Error(`Extension ${walletId} already connected`);\n const { identifier } = parseWalletId(walletId);\n const extension = await connectInjectedExtension(identifier);\n\n const newMap = new Map(enabledExtensions$.value);\n newMap.set(walletId, extension);\n enabledExtensions$.next(newMap);\n\n store.addEnabledWalletId(walletId);\n };\n\n const disconnect = (walletId: WalletId) => {\n if (!enabledExtensions$.value.has(walletId))\n throw new Error(`Extension ${walletId} is not connected`);\n\n const newMap = new Map(enabledExtensions$.value);\n newMap.delete(walletId);\n enabledExtensions$.next(newMap);\n\n store.removeEnabledWalletId(walletId);\n };\n\n const walletIds$ = of(0, 200, 500, 1000) // poll for wallets that inject after page load\n .pipe(\n mergeMap((time) => timer(time)),\n map(() => getInjectedWalletsIds()),\n distinctUntilChanged<WalletId[]>(isEqual),\n );\n\n const subscription = combineLatest([walletIds$, enabledExtensions$])\n .pipe(\n map(([walletIds, enabledExtensions]) => {\n return walletIds.map((id): PolkadotInjectedWallet => {\n const { identifier } = parseWalletId(id);\n const extension = enabledExtensions.get(id);\n const extInfo = POLKADOT_EXTENSIONS[identifier];\n\n return {\n id,\n type: \"injected\",\n platform: \"polkadot\",\n name: extInfo?.name ?? identifier,\n icon: extInfo?.icon ?? \"\",\n extensionId: identifier,\n extension,\n isConnected: !!extension,\n connect: () => connect(id),\n disconnect: () => disconnect(id),\n };\n });\n }),\n )\n .subscribe(subscriber);\n\n return () => {\n // console.log(\"Unsubscribing from polkadotInjectedWallets$\");\n subscription.unsubscribe();\n };\n}).pipe(\n // logObservable(\"polkadotInjectedWallets$\"),\n shareReplay({ refCount: true, bufferSize: 1 }),\n);\n\nexport const getPolkadotWallets$ = (config: KheopskitConfig) => {\n return new Observable<PolkadotWallet[]>((subscriber) => {\n const subscription = combineLatest([\n polkadotInjectedWallets$,\n getAppKitWallets$(config)?.pipe(map((w) => w.polkadot)),\n ])\n .pipe(\n map(([injectedWallets, appKitWallet]) =>\n appKitWallet ? [...injectedWallets, appKitWallet] : injectedWallets,\n ),\n )\n .subscribe(subscriber);\n\n return () => {\n subscription.unsubscribe();\n };\n }).pipe(\n // logObservable(\"getPolkadotWallets$\"),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n};\n"],"mappings":"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","names":["import_rxjs","import_rxjs","import_rxjs","import_rxjs","import_viem","import_rxjs","getInjectedWalletAccounts$","address","getAppKitAccounts$","isSameAccountsList","w","import_rxjs","import_rxjs","import_rxjs","store","providerDetails","import_lodash","import_pjs_signer","import_rxjs"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/api/config.ts","../src/api/kheopskit.ts","../src/utils/logObservable.ts","../src/api/accounts.ts","../src/utils/sortAccounts.ts","../src/api/ethereum/accounts.ts","../src/utils/createStore.ts","../src/utils/isEthereumAddress.ts","../src/utils/isSs58Address.ts","../src/utils/isValidAddress.ts","../src/utils/isWalletPlatform.ts","../src/utils/WalletAccountId.ts","../src/utils/getCachedObservable.ts","../src/api/polkadot/accounts.ts","../src/api/wallets.ts","../src/utils/sortWallets.ts","../src/api/ethereum/wallets.ts","../src/api/store.ts","../src/utils/WalletId.ts","../src/api/appKit.ts","../src/api/polkadot/wallets.ts","../src/utils/polkadotExtensions.ts"],"sourcesContent":["export * from \"./api\";\n","import type { KheopskitConfig } from \"./types\";\n\nconst DEFAULT_CONFIG: KheopskitConfig = {\n\tautoReconnect: true,\n\tplatforms: [\"polkadot\"],\n\tdebug: false,\n};\n\nexport const resolveConfig = (\n\tconfig: Partial<KheopskitConfig> | undefined,\n): KheopskitConfig => {\n\treturn Object.assign({}, DEFAULT_CONFIG, config);\n};\n","import {\n\tcombineLatest,\n\tmap,\n\tObservable,\n\tshareReplay,\n\tthrottleTime,\n} from \"rxjs\";\nimport { logObservable } from \"@/utils/logObservable\";\nimport { getAccounts$ } from \"./accounts\";\nimport { resolveConfig } from \"./config\";\nimport type { KheopskitConfig, Wallet, WalletAccount } from \"./types\";\nimport { getWallets$ } from \"./wallets\";\n\nexport type { KheopskitConfig } from \"./types\";\n\nexport type KheopskitState = {\n\twallets: Wallet[];\n\taccounts: WalletAccount[];\n\tconfig: KheopskitConfig;\n};\n\nexport const getKheopskit$ = (config?: Partial<KheopskitConfig>) => {\n\tconst kc = resolveConfig(config);\n\n\tconsole.debug(\"[kheopskit] config\", kc);\n\n\treturn new Observable<KheopskitState>((subscriber) => {\n\t\tconst wallets$ = getWallets$(kc);\n\n\t\tconst subscription = combineLatest({\n\t\t\twallets: wallets$,\n\t\t\taccounts: getAccounts$(kc, wallets$),\n\t\t})\n\t\t\t.pipe(map(({ wallets, accounts }) => ({ config: kc, wallets, accounts })))\n\t\t\t.subscribe(subscriber);\n\n\t\treturn () => {\n\t\t\tsubscription.unsubscribe();\n\t\t};\n\t}).pipe(\n\t\tthrottleTime(16, undefined, { leading: true, trailing: true }), // ~1 frame at 60fps\n\t\tlogObservable(\"kheopskit$\", { enabled: kc.debug, printValue: true }),\n\t\tshareReplay({ bufferSize: 1, refCount: true }),\n\t);\n};\n","import { type MonoTypeOperatorFunction, tap } from \"rxjs\";\n\ntype Opts = {\n\tprintValue?: boolean;\n\tenabled?: boolean;\n};\n\nexport const logObservable = <T>(\n\tlabel: string,\n\topts?: Opts,\n): MonoTypeOperatorFunction<T> =>\n\ttap((value) => {\n\t\tconst { printValue = false, enabled = true } = opts || {};\n\n\t\tif (!label || !enabled) return;\n\n\t\tconst text = `[kheopskit] observable ${label} emit`;\n\n\t\tif (printValue) console.debug(text, value);\n\t\telse console.debug(text);\n\t});\n","import { combineLatest, map, Observable, of, shareReplay } from \"rxjs\";\nimport { sortAccounts } from \"@/utils/sortAccounts\";\nimport { getEthereumAccounts$ } from \"./ethereum/accounts\";\nimport { getPolkadotAccounts$ } from \"./polkadot/accounts\";\nimport type { KheopskitConfig, Wallet, WalletAccount } from \"./types\";\n\nexport const getAccounts$ = (\n\tconfig: KheopskitConfig,\n\twallets: Observable<Wallet[]>,\n) => {\n\treturn new Observable<WalletAccount[]>((subscriber) => {\n\t\t// biome-ignore lint/suspicious/useIterableCallbackReturn: false positive\n\t\tconst sources = config.platforms.map<Observable<WalletAccount[]>>(\n\t\t\t(platform) => {\n\t\t\t\tswitch (platform) {\n\t\t\t\t\tcase \"polkadot\":\n\t\t\t\t\t\treturn getPolkadotAccounts$(\n\t\t\t\t\t\t\twallets.pipe(\n\t\t\t\t\t\t\t\tmap((w) => w.filter((w) => w.platform === \"polkadot\")),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\tcase \"ethereum\":\n\t\t\t\t\t\treturn getEthereumAccounts$(\n\t\t\t\t\t\t\twallets.pipe(\n\t\t\t\t\t\t\t\tmap((w) => w.filter((w) => w.platform === \"ethereum\")),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\n\t\tconst accounts$ = sources.length\n\t\t\t? combineLatest(sources).pipe(\n\t\t\t\t\tmap((accounts) => accounts.flat().sort(sortAccounts)),\n\t\t\t\t)\n\t\t\t: of([]);\n\n\t\tconst sub = accounts$.subscribe(subscriber);\n\n\t\treturn () => {\n\t\t\tsub.unsubscribe();\n\t\t};\n\t}).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n};\n","import type { WalletAccount } from \"@/api\";\n\nexport const sortAccounts = (a1: WalletAccount, a2: WalletAccount) => {\n\tif (a1.platform === \"polkadot\") {\n\t\tif (a2.platform === \"polkadot\") {\n\t\t\t// sort by wallet name, fallback to address\n\t\t\tif (a1.walletName !== a2.walletName) {\n\t\t\t\tif (a1.walletName === \"talisman\") return -1;\n\t\t\t\tif (a2.walletName === \"talisman\") return 1;\n\t\t\t\treturn a1.walletName.localeCompare(a2.walletName);\n\t\t\t}\n\n\t\t\t// sort by name, fallback to address\n\t\t\treturn a1.name !== a2.name\n\t\t\t\t? (a1.name ?? \"\").localeCompare(a2.name ?? \"\")\n\t\t\t\t: a1.address.localeCompare(a2.address);\n\t\t}\n\n\t\treturn -1; // polkadot accounts first\n\t}\n\n\tif (a2.platform === \"ethereum\") {\n\t\t// sort by wallet name, fallback to address\n\t\tif (a1.walletName !== a2.walletName) {\n\t\t\tif (a1.walletName === \"Talisman\") return -1;\n\t\t\tif (a2.walletName === \"Talisman\") return 1;\n\t\t\treturn a1.walletName.localeCompare(a2.walletName);\n\t\t}\n\n\t\t// keep order as provider by the wallet\n\t\treturn 0;\n\t}\n\n\t// impossible case\n\treturn 0;\n};\n","import type UniversalProvider from \"@walletconnect/universal-provider\";\nimport {\n\tcombineLatest,\n\tdistinctUntilChanged,\n\tmap,\n\tObservable,\n\tof,\n\tReplaySubject,\n\tshareReplay,\n\tswitchMap,\n} from \"rxjs\";\nimport {\n\tcreateWalletClient,\n\tcustom,\n\ttype EIP1193Provider,\n\tgetAddress,\n} from \"viem\";\nimport type {\n\tEthereumAccount,\n\tEthereumAppKitWallet,\n\tEthereumInjectedWallet,\n\tEthereumWallet,\n} from \"@/api/types\";\nimport { getWalletAccountId } from \"@/utils\";\nimport { getCachedObservable$ } from \"@/utils/getCachedObservable\";\n\nconst getInjectedWalletAccounts$ = (\n\twallet: EthereumInjectedWallet,\n): Observable<EthereumAccount[]> => {\n\tif (!wallet.isConnected) return of([]);\n\n\treturn getCachedObservable$(`accounts:${wallet.id}`, () =>\n\t\tnew Observable<EthereumAccount[]>((subscriber) => {\n\t\t\tconst getAccount = (address: string, i: number): EthereumAccount => {\n\t\t\t\t// console.log(\"[Injected] createWalletClient\", address);\n\t\t\t\tconst client = createWalletClient({\n\t\t\t\t\taccount: address as `0x${string}`,\n\t\t\t\t\ttransport: custom(wallet.provider as EIP1193Provider),\n\t\t\t\t});\n\n\t\t\t\treturn {\n\t\t\t\t\tid: getWalletAccountId(wallet.id, address),\n\t\t\t\t\tplatform: \"ethereum\",\n\t\t\t\t\tclient,\n\t\t\t\t\taddress: getAddress(address),\n\t\t\t\t\twalletName: wallet.name,\n\t\t\t\t\twalletId: wallet.id,\n\t\t\t\t\tisWalletDefault: i === 0,\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tconst handleAccountsChanged = (addresses: string[]) => {\n\t\t\t\tsubscriber.next(addresses.map(getAccount));\n\t\t\t};\n\n\t\t\t// subscribe to changes\n\t\t\twallet.provider.on(\"accountsChanged\", handleAccountsChanged);\n\n\t\t\t// initial value\n\t\t\twallet.provider\n\t\t\t\t.request({ method: \"eth_accounts\" })\n\t\t\t\t.then((addresses: string[]) => {\n\t\t\t\t\tsubscriber.next(addresses.map(getAccount));\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tconsole.error(\"Failed to get accounts\", err);\n\t\t\t\t\tsubscriber.next([]);\n\t\t\t\t});\n\n\t\t\treturn () => {\n\t\t\t\twallet.provider.removeListener(\n\t\t\t\t\t\"accountsChanged\",\n\t\t\t\t\thandleAccountsChanged,\n\t\t\t\t);\n\t\t\t};\n\t\t}).pipe(shareReplay({ refCount: true, bufferSize: 1 })),\n\t);\n};\n\nconst wrapWalletConnectProvider = (\n\tprovider: EIP1193Provider,\n\tsessionTopic: string,\n\tcaipNetworkId: string,\n): EIP1193Provider => {\n\treturn new Proxy(provider, {\n\t\tget(target, prop, receiver) {\n\t\t\tif (prop !== \"request\") return Reflect.get(target, prop, receiver);\n\n\t\t\t// biome-ignore lint/suspicious/noExplicitAny: legacy\n\t\t\treturn (args: any) => {\n\t\t\t\tif (args && typeof args === \"object\" && args.method) {\n\t\t\t\t\tif (!args.topic) args.topic = sessionTopic;\n\t\t\t\t\tif (!args.chainId) args.chainId = caipNetworkId;\n\t\t\t\t}\n\t\t\t\treturn target.request(args);\n\t\t\t};\n\t\t},\n\t});\n};\n\nconst getAppKitAccounts$ = (\n\twallet: EthereumAppKitWallet,\n): Observable<EthereumAccount[]> => {\n\tconst account = wallet.appKit.getAccount(\"eip155\");\n\tconst provider = wallet.appKit.getProvider<UniversalProvider>(\"eip155\");\n\n\tif (\n\t\t!wallet.isConnected ||\n\t\t!wallet.appKit ||\n\t\t!account?.allAccounts.length ||\n\t\t!provider?.session\n\t)\n\t\treturn of([]);\n\n\treturn getCachedObservable$(\"accounts:appKit\", () =>\n\t\tnew Observable<EthereumAccount[]>((subscriber) => {\n\t\t\tconst caipNetworkId$ = new ReplaySubject<string>(1);\n\n\t\t\tconst handleChainChanged = (chainId: unknown) => {\n\t\t\t\tcaipNetworkId$.next(`eip155:${chainId}`);\n\t\t\t};\n\n\t\t\tprovider.on(\"chainChanged\", handleChainChanged);\n\t\t\tprovider.request({ method: \"eth_chainId\" }).then(handleChainChanged);\n\n\t\t\tconst sub = caipNetworkId$\n\t\t\t\t.pipe(\n\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t\tmap((caipNetworkId) =>\n\t\t\t\t\t\tcustom(\n\t\t\t\t\t\t\twrapWalletConnectProvider(\n\t\t\t\t\t\t\t\tprovider as EIP1193Provider,\n\t\t\t\t\t\t\t\t// biome-ignore lint/style/noNonNullAssertion: legacy\n\t\t\t\t\t\t\t\tprovider.session!.topic,\n\t\t\t\t\t\t\t\tcaipNetworkId,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t\tmap((transport) =>\n\t\t\t\t\t\taccount.allAccounts.map((acc, i): EthereumAccount => {\n\t\t\t\t\t\t\t// console.log(\"[AppKit] createWalletClient\", acc);\n\t\t\t\t\t\t\tconst client = createWalletClient({\n\t\t\t\t\t\t\t\taccount: acc.address as `0x${string}`,\n\t\t\t\t\t\t\t\ttransport,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tid: getWalletAccountId(wallet.id, acc.address),\n\t\t\t\t\t\t\t\tplatform: \"ethereum\",\n\t\t\t\t\t\t\t\twalletName: wallet.name,\n\t\t\t\t\t\t\t\twalletId: wallet.id,\n\t\t\t\t\t\t\t\taddress: acc.address as `0x${string}`,\n\t\t\t\t\t\t\t\tclient,\n\t\t\t\t\t\t\t\tisWalletDefault: i === 0,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t.subscribe(subscriber);\n\n\t\t\treturn () => {\n\t\t\t\tprovider.off(\"chainChanged\", handleChainChanged);\n\t\t\t\tsub.unsubscribe();\n\t\t\t};\n\t\t}).pipe(shareReplay({ refCount: true, bufferSize: 1 })),\n\t);\n};\n\nexport const getEthereumAccounts$ = (\n\tethereumWallets: Observable<EthereumWallet[]>,\n) =>\n\tnew Observable<EthereumAccount[]>((subscriber) => {\n\t\tconst sub = ethereumWallets\n\t\t\t.pipe(\n\t\t\t\tmap((wallets) => wallets.filter((w) => w.isConnected)),\n\t\t\t\tswitchMap((wallets) => {\n\t\t\t\t\treturn wallets.length\n\t\t\t\t\t\t? combineLatest([\n\t\t\t\t\t\t\t\t...wallets\n\t\t\t\t\t\t\t\t\t.filter((w) => w.type === \"injected\")\n\t\t\t\t\t\t\t\t\t.map(getInjectedWalletAccounts$),\n\t\t\t\t\t\t\t\t...wallets\n\t\t\t\t\t\t\t\t\t.filter((w) => w.type === \"appKit\")\n\t\t\t\t\t\t\t\t\t.map(getAppKitAccounts$),\n\t\t\t\t\t\t\t\t// todo appkit\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t: of([]);\n\t\t\t\t}),\n\t\t\t\tmap((accounts) => accounts.flat()),\n\t\t\t\tdistinctUntilChanged(isSameAccountsList),\n\t\t\t)\n\t\t\t.subscribe(subscriber);\n\n\t\treturn () => {\n\t\t\tsub.unsubscribe();\n\t\t};\n\t}).pipe(\n\t\t// logObservable(\"ethereumAccounts$\", true),\n\t\tshareReplay({ refCount: true, bufferSize: 1 }),\n\t);\n\nconst isSameAccountsList = (a: EthereumAccount[], b: EthereumAccount[]) => {\n\tif (a.length !== b.length) return false;\n\treturn a.every((account, i) => account.id === b[i]?.id);\n};\n","import { BehaviorSubject, filter, fromEvent, map } from \"rxjs\";\n\nexport const createStore = <T>(key: string, defaultValue: T) => {\n\tconst subject = new BehaviorSubject<T>(getStoredData(key, defaultValue));\n\n\t// Cross-tab sync via 'storage' event (won't fire if key is updated from same tab)\n\tfromEvent<StorageEvent>(window, \"storage\")\n\t\t.pipe(\n\t\t\tfilter((event) => event.key === key),\n\t\t\tmap((event) => parseData(event.newValue, defaultValue)),\n\t\t)\n\t\t.subscribe((newValue) => subject.next(newValue));\n\n\tconst update = (val: T) => {\n\t\tsetStoredData(key, val);\n\t\tsubject.next(val);\n\t};\n\n\treturn {\n\t\tobservable: subject.asObservable(),\n\t\tset: (val: T) => update(val),\n\t\tmutate: (transform: (prev: T) => T) =>\n\t\t\tupdate(transform(subject.getValue())),\n\t\tget: () => structuredClone(subject.getValue()),\n\t};\n};\n\nconst parseData = <T>(str: string | null, defaultValue: T): T => {\n\ttry {\n\t\tif (str) return JSON.parse(str);\n\t} catch {\n\t\t// invalid data\n\t}\n\treturn defaultValue;\n};\n\nconst getStoredData = <T>(key: string, defaultValue: T): T => {\n\tconst str = localStorage.getItem(key);\n\treturn parseData(str, defaultValue);\n};\n\nconst setStoredData = <T>(key: string, val: T) => {\n\tconst str = JSON.stringify(val);\n\tlocalStorage.setItem(key, str);\n};\n","import { isAddress } from \"viem\";\n\nexport const isEthereumAddress = (address: string): boolean =>\n\tisAddress(address);\n","import { AccountId, type SS58String } from \"polkadot-api\";\n\nconst accountIdEncoder = AccountId().enc;\n\nexport const isSs58Address = (\n\taddress: SS58String | string,\n): address is SS58String => {\n\ttry {\n\t\tif (!address) return false;\n\t\taccountIdEncoder(address);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n","import { isEthereumAddress } from \"./isEthereumAddress\";\nimport { isSs58Address } from \"./isSs58Address\";\n\nexport const isValidAddress = (address: string): boolean => {\n\treturn address.startsWith(\"0x\")\n\t\t? isEthereumAddress(address)\n\t\t: isSs58Address(address);\n};\n","import type { WalletPlatform } from \"@/api/types\";\n\nexport const isWalletPlatform = (\n\tplatform: unknown,\n): platform is WalletPlatform =>\n\ttypeof platform === \"string\" &&\n\t[\"polkadot\", \"ethereum\"].includes(platform as WalletPlatform);\n","import type { SS58String } from \"polkadot-api\";\n\nimport { isValidAddress } from \"./isValidAddress\";\n\nexport type WalletAccountId = string;\n\nexport const getWalletAccountId = (\n\twalletId: string,\n\taddress: SS58String,\n): WalletAccountId => {\n\tif (!walletId) throw new Error(\"Missing walletId\");\n\tif (!isValidAddress(address)) throw new Error(\"Invalid address\");\n\treturn `${walletId}::${address}`;\n};\n\nexport const parseWalletAccountId = (accountId: string) => {\n\tif (!accountId) throw new Error(\"Invalid walletAccountId\");\n\tconst [walletId, address] = accountId.split(\"::\");\n\tif (!walletId) throw new Error(\"Missing walletId\");\n\tif (!address || !isValidAddress(address)) throw new Error(\"Invalid address\");\n\treturn { walletId, address };\n};\n","import type { Observable } from \"rxjs\";\n\nconst CACHE = new Map<string, Observable<unknown>>();\n\nexport const getCachedObservable$ = <T, Obs = Observable<T>>(\n\tkey: string,\n\tcreate: () => Obs,\n): Obs => {\n\tif (!CACHE.has(key)) CACHE.set(key, create() as Observable<unknown>);\n\n\treturn CACHE.get(key) as Obs;\n};\n","import type { AppKit } from \"@reown/appkit/core\";\nimport type UniversalProvider from \"@walletconnect/universal-provider\";\nimport {\n\tgetPolkadotSignerFromPjs,\n\ttype InjectedExtension,\n\ttype InjectedPolkadotAccount,\n} from \"polkadot-api/pjs-signer\";\nimport {\n\tcombineLatest,\n\tdistinctUntilChanged,\n\tmap,\n\tObservable,\n\tof,\n\tshareReplay,\n\tswitchMap,\n} from \"rxjs\";\nimport type {\n\tPolkadotAccount,\n\tPolkadotAppKitWallet,\n\tPolkadotInjectedWallet,\n\tPolkadotWallet,\n} from \"@/api/types\";\nimport { getWalletAccountId } from \"@/utils\";\n\nconst getInjectedWalletAccounts$ = (\n\twallet: PolkadotInjectedWallet,\n): Observable<PolkadotAccount[]> => {\n\tif (!wallet.isConnected) return of([]);\n\n\treturn new Observable<PolkadotAccount[]>((subscriber) => {\n\t\tconst getAccount = (account: InjectedPolkadotAccount): PolkadotAccount => ({\n\t\t\tid: getWalletAccountId(wallet.id, account.address),\n\t\t\t...account,\n\t\t\tplatform: \"polkadot\",\n\t\t\twalletName: wallet.name,\n\t\t\twalletId: wallet.id,\n\t\t});\n\n\t\tconst extension = wallet.extension as InjectedExtension;\n\n\t\t// subscribe to changes\n\t\tconst unsubscribe = extension.subscribe((accounts) => {\n\t\t\tsubscriber.next(accounts.map(getAccount));\n\t\t});\n\n\t\t// initial value\n\t\tsubscriber.next(extension.getAccounts().map(getAccount));\n\n\t\treturn () => {\n\t\t\treturn unsubscribe();\n\t\t};\n\t});\n};\n\nconst getAppKitPolkadotSigner = (appKit: AppKit, address: string) => {\n\tconst provider = appKit.getProvider<UniversalProvider>(\"polkadot\");\n\tif (!provider) throw new Error(\"No provider found\");\n\tif (!provider.session) throw new Error(\"No session found\");\n\n\treturn getPolkadotSignerFromPjs(\n\t\taddress,\n\t\t(transactionPayload) => {\n\t\t\tif (!provider.session) throw new Error(\"No session found\");\n\n\t\t\treturn provider.client.request({\n\t\t\t\ttopic: provider.session.topic,\n\t\t\t\tchainId: `polkadot:${transactionPayload.genesisHash.substring(2, 34)}`,\n\t\t\t\trequest: {\n\t\t\t\t\tmethod: \"polkadot_signTransaction\",\n\t\t\t\t\tparams: {\n\t\t\t\t\t\taddress,\n\t\t\t\t\t\ttransactionPayload,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tasync ({ address, data }) => {\n\t\t\tif (!provider.session) throw new Error(\"No session found\");\n\t\t\tconst networks = appKit.getCaipNetworks(\"polkadot\");\n\t\t\tconst chainId = networks[0]?.caipNetworkId;\n\t\t\tif (!chainId) throw new Error(\"No chainId found\");\n\n\t\t\treturn provider.client.request({\n\t\t\t\ttopic: provider.session.topic,\n\t\t\t\tchainId,\n\t\t\t\trequest: {\n\t\t\t\t\tmethod: \"polkadot_signMessage\",\n\t\t\t\t\tparams: {\n\t\t\t\t\t\taddress,\n\t\t\t\t\t\tmessage: data,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t);\n};\n\nconst getAppKitAccounts$ = (wallet: PolkadotAppKitWallet) => {\n\tconst account = wallet.appKit.getAccount(\"polkadot\");\n\tconst provider = wallet.appKit.getProvider<UniversalProvider>(\"polkadot\");\n\n\tif (\n\t\t!wallet.isConnected ||\n\t\t!wallet.appKit ||\n\t\t!account?.allAccounts.length ||\n\t\t!provider?.session\n\t)\n\t\treturn of([]);\n\n\treturn of(\n\t\taccount.allAccounts.map(\n\t\t\t(acc): PolkadotAccount => ({\n\t\t\t\tid: getWalletAccountId(wallet.id, acc.address),\n\t\t\t\tplatform: \"polkadot\",\n\t\t\t\twalletName: wallet.name,\n\t\t\t\twalletId: wallet.id,\n\t\t\t\taddress: acc.address,\n\t\t\t\tpolkadotSigner: getAppKitPolkadotSigner(wallet.appKit, acc.address),\n\t\t\t\tgenesisHash: null,\n\t\t\t\tname: `${wallet.name} Polkadot`,\n\t\t\t\ttype: \"sr25519\",\n\t\t\t}),\n\t\t),\n\t);\n};\n\nexport const getPolkadotAccounts$ = (\n\tpolkadotWallets$: Observable<PolkadotWallet[]>,\n) =>\n\tnew Observable<PolkadotAccount[]>((subscriber) => {\n\t\tconst sub = polkadotWallets$\n\t\t\t.pipe(\n\t\t\t\tmap((wallets) => wallets.filter((w) => w.isConnected)),\n\t\t\t\tswitchMap((wallets) =>\n\t\t\t\t\twallets.length\n\t\t\t\t\t\t? combineLatest([\n\t\t\t\t\t\t\t\t...wallets\n\t\t\t\t\t\t\t\t\t.filter((w) => w.type === \"injected\")\n\t\t\t\t\t\t\t\t\t.map(getInjectedWalletAccounts$),\n\t\t\t\t\t\t\t\t...wallets\n\t\t\t\t\t\t\t\t\t.filter((w) => w.type === \"appKit\")\n\t\t\t\t\t\t\t\t\t.map(getAppKitAccounts$),\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t: of([]),\n\t\t\t\t),\n\t\t\t\tmap((accounts) => accounts.flat()),\n\t\t\t\tdistinctUntilChanged(isSameAccountsList),\n\t\t\t)\n\t\t\t.subscribe(subscriber);\n\n\t\treturn () => {\n\t\t\tsub.unsubscribe();\n\t\t};\n\t}).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n\nconst isSameAccountsList = (a: PolkadotAccount[], b: PolkadotAccount[]) => {\n\tif (a.length !== b.length) return false;\n\treturn a.every((account, i) => account.id === b[i]?.id);\n};\n","import {\n\tcombineLatest,\n\tdistinct,\n\tfilter,\n\tmap,\n\tmergeMap,\n\tObservable,\n\tof,\n\tshareReplay,\n\tstartWith,\n\ttake,\n} from \"rxjs\";\nimport { sortWallets } from \"@/utils/sortWallets\";\nimport { getEthereumWallets$ } from \"./ethereum/wallets\";\nimport { getPolkadotWallets$ } from \"./polkadot/wallets\";\nimport { store } from \"./store\";\nimport type { KheopskitConfig, Wallet } from \"./types\";\n\n// lock the list of wallets to auto reconnect on first call\nconst autoReconnectWalletIds$ = store.observable.pipe(\n\tmap((s) => s.autoReconnect ?? []),\n\ttake(1),\n\tshareReplay(1),\n);\n\nexport const getWallets$ = (config: KheopskitConfig) => {\n\treturn new Observable<Wallet[]>((subscriber) => {\n\t\t// biome-ignore lint/suspicious/useIterableCallbackReturn: false positive\n\t\tconst observables = config.platforms.map(\n\t\t\t(platform): Observable<Wallet[]> => {\n\t\t\t\tswitch (platform) {\n\t\t\t\t\tcase \"polkadot\":\n\t\t\t\t\t\treturn getPolkadotWallets$(config);\n\t\t\t\t\tcase \"ethereum\":\n\t\t\t\t\t\treturn getEthereumWallets$(config);\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\n\t\tconst wallets$ = observables.length\n\t\t\t? combineLatest(observables).pipe(\n\t\t\t\t\tmap((wallets) => wallets.flat().sort(sortWallets)),\n\t\t\t\t\t// Emit empty array immediately so UI doesn't wait\n\t\t\t\t\tstartWith([] as Wallet[]),\n\t\t\t\t)\n\t\t\t: of([]);\n\n\t\t// Track wallets being reconnected to avoid duplicate attempts\n\t\tconst reconnectingWallets = new Set<string>();\n\n\t\tconst subAutoReconnect = combineLatest([wallets$, autoReconnectWalletIds$])\n\t\t\t.pipe(\n\t\t\t\tfilter(([, walletIds]) => config.autoReconnect && !!walletIds?.length),\n\t\t\t\tmergeMap(([wallets, walletIds]) =>\n\t\t\t\t\twallets.filter((wallet) => walletIds?.includes(wallet.id)),\n\t\t\t\t),\n\t\t\t\tdistinct((w) => w.id),\n\t\t\t)\n\t\t\t.subscribe(async (wallet) => {\n\t\t\t\tif (wallet.isConnected || reconnectingWallets.has(wallet.id)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treconnectingWallets.add(wallet.id);\n\t\t\t\ttry {\n\t\t\t\t\tawait wallet.connect();\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconsole.error(\"Failed to reconnect wallet %s\", wallet.id, { err });\n\t\t\t\t} finally {\n\t\t\t\t\treconnectingWallets.delete(wallet.id);\n\t\t\t\t}\n\t\t\t});\n\n\t\tconst subWallets = wallets$.subscribe(subscriber);\n\n\t\treturn () => {\n\t\t\tsubAutoReconnect.unsubscribe();\n\t\t\tsubWallets.unsubscribe();\n\t\t};\n\t}).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n};\n","import type { Wallet } from \"@/api\";\n\nexport const sortWallets = (w1: Wallet, w2: Wallet) => {\n\t// Sort by platform first: polkadot first, then ethereum\n\tif (w1.platform !== w2.platform) {\n\t\treturn w1.platform === \"polkadot\" ? -1 : 1;\n\t}\n\n\t// Sort by name, but Talisman first\n\tif (w1.name.toLowerCase() === \"talisman\") return -1;\n\tif (w2.name.toLowerCase() === \"talisman\") return 1;\n\n\treturn w1.name.localeCompare(w2.name);\n};\n","import { createStore, type EIP6963ProviderDetail } from \"mipd\";\nimport {\n\tBehaviorSubject,\n\tcombineLatest,\n\tmap,\n\tObservable,\n\tshareReplay,\n} from \"rxjs\";\nimport type { EIP1193Provider } from \"viem\";\nimport { store } from \"@/api/store\";\nimport type {\n\tEthereumInjectedWallet,\n\tEthereumWallet,\n\tKheopskitConfig,\n} from \"@/api/types\";\nimport { getWalletId, type WalletId } from \"@/utils/WalletId\";\nimport { getAppKitWallets$ } from \"../appKit\";\n\nconst providersDetails$ = new Observable<EIP6963ProviderDetail[]>(\n\t(subscriber) => {\n\t\tconst store = createStore();\n\n\t\tconst unsubscribe = store.subscribe((providerDetails) => {\n\t\t\tsubscriber.next(providerDetails as EIP6963ProviderDetail[]);\n\t\t});\n\n\t\tconst providerDetails = store.getProviders();\n\n\t\tsubscriber.next(providerDetails as EIP6963ProviderDetail[]);\n\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t\tstore.destroy();\n\t\t};\n\t},\n).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n\nconst ethereumInjectedWallets$ = new Observable<EthereumInjectedWallet[]>(\n\t(subscriber) => {\n\t\tconst enabledWalletIds$ = new BehaviorSubject<Set<WalletId>>(new Set());\n\n\t\tconst connectWallet = async (\n\t\t\twalletId: WalletId,\n\t\t\tprovider: EIP1193Provider,\n\t\t) => {\n\t\t\tif (enabledWalletIds$.value.has(walletId))\n\t\t\t\tthrow new Error(`Extension ${walletId} already connected`);\n\n\t\t\tawait provider.request({\n\t\t\t\tmethod: \"eth_requestAccounts\",\n\t\t\t});\n\n\t\t\tconst newSet = new Set(enabledWalletIds$.value);\n\t\t\tnewSet.add(walletId);\n\t\t\tenabledWalletIds$.next(newSet);\n\n\t\t\tstore.addEnabledWalletId(walletId);\n\t\t};\n\n\t\tconst disconnectWallet = async (walletId: WalletId) => {\n\t\t\tif (!enabledWalletIds$.value.has(walletId))\n\t\t\t\tthrow new Error(`Extension ${walletId} is not connected`);\n\t\t\tconst newSet = new Set(enabledWalletIds$.value);\n\t\t\tnewSet.delete(walletId);\n\t\t\tenabledWalletIds$.next(newSet);\n\n\t\t\tstore.removeEnabledWalletId(walletId);\n\t\t};\n\n\t\tconst sub = combineLatest([providersDetails$, enabledWalletIds$])\n\t\t\t.pipe(\n\t\t\t\tmap(([providerDetails, enabledWalletIds]) => {\n\t\t\t\t\treturn providerDetails.map((pd): EthereumInjectedWallet => {\n\t\t\t\t\t\tconst walletId = getWalletId(\"ethereum\", pd.info.rdns);\n\t\t\t\t\t\tconst provider = pd.provider as EIP1193Provider;\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tplatform: \"ethereum\",\n\t\t\t\t\t\t\ttype: \"injected\",\n\t\t\t\t\t\t\tid: walletId,\n\t\t\t\t\t\t\tname: pd.info.name,\n\t\t\t\t\t\t\ticon: pd.info.icon,\n\t\t\t\t\t\t\tprovider,\n\t\t\t\t\t\t\tisConnected: enabledWalletIds.has(walletId),\n\t\t\t\t\t\t\tproviderId: pd.info.rdns,\n\t\t\t\t\t\t\tconnect: () => connectWallet(walletId, provider),\n\t\t\t\t\t\t\tdisconnect: () => disconnectWallet(walletId),\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe(subscriber);\n\n\t\treturn () => {\n\t\t\tsub.unsubscribe();\n\t\t};\n\t},\n).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n\nexport const getEthereumWallets$ = (config: KheopskitConfig) => {\n\treturn new Observable<EthereumWallet[]>((subscriber) => {\n\t\tconst subscription = combineLatest([\n\t\t\tethereumInjectedWallets$,\n\t\t\tgetAppKitWallets$(config)?.pipe(map((w) => w.ethereum)),\n\t\t])\n\t\t\t.pipe(\n\t\t\t\tmap(([injectedWallets, appKitWallet]) =>\n\t\t\t\t\tappKitWallet ? [...injectedWallets, appKitWallet] : injectedWallets,\n\t\t\t\t),\n\t\t\t)\n\t\t\t.subscribe(subscriber);\n\n\t\treturn () => {\n\t\t\tsubscription.unsubscribe();\n\t\t};\n\t}).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n};\n","import { uniq } from \"lodash\";\nimport { createStore } from \"@/utils/createStore\";\nimport { parseWalletId, type WalletId } from \"@/utils/WalletId\";\n\nconst LOCAL_STORAGE_KEY = \"kheopskit\";\n\nexport type KheopskitStoreData = {\n\tautoReconnect?: WalletId[];\n};\n\nconst DEFAULT_SETTINGS: KheopskitStoreData = {};\n\nconst storage = createStore(LOCAL_STORAGE_KEY, DEFAULT_SETTINGS);\n\nexport const addEnabledWalletId = (walletId: WalletId) => {\n\tparseWalletId(walletId); // validate walletId\n\tstorage.mutate((prev) => ({\n\t\t...prev,\n\t\tautoReconnect: uniq((prev.autoReconnect ?? []).concat(walletId)),\n\t}));\n};\n\nexport const removeEnabledWalletId = (walletId: WalletId) => {\n\tstorage.mutate((prev) => ({\n\t\t...prev,\n\t\tautoReconnect: uniq(\n\t\t\t(prev.autoReconnect ?? []).filter((id) => id !== walletId),\n\t\t),\n\t}));\n};\n\nexport const store = {\n\tobservable: storage.observable,\n\taddEnabledWalletId,\n\tremoveEnabledWalletId,\n};\n","import type { WalletPlatform } from \"@/api/types\";\nimport { isWalletPlatform } from \"./isWalletPlatform\";\n\nexport type WalletId = string;\n\nexport const getWalletId = (\n\tplatform: WalletPlatform,\n\tidentifier: string,\n): WalletId => {\n\tif (!isWalletPlatform(platform)) throw new Error(\"Invalid platform\");\n\tif (!identifier) throw new Error(\"Invalid name\");\n\treturn `${platform}:${identifier}`;\n};\n\nexport const parseWalletId = (walletId: string) => {\n\tif (!walletId) throw new Error(\"Invalid walletId\");\n\tconst [platform, identifier] = walletId.split(\":\");\n\tif (!isWalletPlatform(platform)) throw new Error(\"Invalid platform\");\n\tif (!identifier) throw new Error(\"Invalid address\");\n\treturn { platform, identifier };\n};\n","import { createAppKit } from \"@reown/appkit/core\";\nimport {\n\tBehaviorSubject,\n\tcombineLatest,\n\tdistinctUntilChanged,\n\tmap,\n\tObservable,\n\tof,\n\tshareReplay,\n} from \"rxjs\";\nimport { getWalletId } from \"@/utils/WalletId\";\nimport type {\n\tEthereumAppKitWallet,\n\tKheopskitConfig,\n\tPolkadotAppKitWallet,\n} from \"./types\";\n\nconst WALLET_CONNECT_ICON =\n\t\"data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjQwMCIgdmlld0JveD0iMCAwIDQwMCA0MDAiIHdpZHRoPSI0MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZD0ibTAgMGg0MDB2NDAwaC00MDB6Ii8+PC9jbGlwUGF0aD48ZyBjbGlwLXBhdGg9InVybCgjYSkiPjxjaXJjbGUgY3g9IjIwMCIgY3k9IjIwMCIgZmlsbD0iIzMzOTZmZiIgcj0iMTk5LjUiIHN0cm9rZT0iIzY2YjFmZiIvPjxwYXRoIGQ9Im0xMjIuNTE5IDE0OC45NjVjNDIuNzkxLTQxLjcyOSAxMTIuMTcxLTQxLjcyOSAxNTQuOTYyIDBsNS4xNSA1LjAyMmMyLjE0IDIuMDg2IDIuMTQgNS40NjkgMCA3LjU1NWwtMTcuNjE3IDE3LjE4Yy0xLjA3IDEuMDQzLTIuODA0IDEuMDQzLTMuODc0IDBsLTcuMDg3LTYuOTExYy0yOS44NTMtMjkuMTExLTc4LjI1My0yOS4xMTEtMTA4LjEwNiAwbC03LjU5IDcuNDAxYy0xLjA3IDEuMDQzLTIuODA0IDEuMDQzLTMuODc0IDBsLTE3LjYxNy0xNy4xOGMtMi4xNC0yLjA4Ni0yLjE0LTUuNDY5IDAtNy41NTV6bTE5MS4zOTcgMzUuNTI5IDE1LjY3OSAxNS4yOWMyLjE0IDIuMDg2IDIuMTQgNS40NjkgMCA3LjU1NWwtNzAuNyA2OC45NDRjLTIuMTM5IDIuMDg3LTUuNjA4IDIuMDg3LTcuNzQ4IDBsLTUwLjE3OC00OC45MzFjLS41MzUtLjUyMi0xLjQwMi0uNTIyLTEuOTM3IDBsLTUwLjE3OCA0OC45MzFjLTIuMTM5IDIuMDg3LTUuNjA4IDIuMDg3LTcuNzQ4IDBsLTcwLjcwMTUtNjguOTQ1Yy0yLjEzOTYtMi4wODYtMi4xMzk2LTUuNDY5IDAtNy41NTVsMTUuNjc5NS0xNS4yOWMyLjEzOTYtMi4wODYgNS42MDg1LTIuMDg2IDcuNzQ4MSAwbDUwLjE3ODkgNDguOTMyYy41MzUuNTIyIDEuNDAyLjUyMiAxLjkzNyAwbDUwLjE3Ny00OC45MzJjMi4xMzktMi4wODcgNS42MDgtMi4wODcgNy43NDggMGw1MC4xNzkgNDguOTMyYy41MzUuNTIyIDEuNDAyLjUyMiAxLjkzNyAwbDUwLjE3OS00OC45MzFjMi4xMzktMi4wODcgNS42MDgtMi4wODcgNy43NDggMHoiIGZpbGw9IiNmZmYiLz48L2c+PC9zdmc+\";\n\ntype AppKitWallets = {\n\tpolkadot?: PolkadotAppKitWallet;\n\tethereum?: EthereumAppKitWallet;\n};\n\n// once it exists, appKit object should never be recreated\nlet cachedAppKit: Observable<AppKitWallets> | null = null;\n\nexport const getAppKitWallets$ = (\n\tconfig: KheopskitConfig,\n): Observable<AppKitWallets> => {\n\tif (!config.walletConnect) return of({});\n\n\tconst walletConnect = config.walletConnect;\n\n\tif (!cachedAppKit) {\n\t\tcachedAppKit = new Observable<AppKitWallets>((subscriber) => {\n\t\t\tconst appKit = createAppKit({\n\t\t\t\tprojectId: walletConnect.projectId,\n\t\t\t\tmetadata: walletConnect.metadata,\n\t\t\t\tnetworks: walletConnect.networks,\n\t\t\t\tthemeMode: walletConnect.themeMode,\n\t\t\t\tthemeVariables: walletConnect.themeVariables,\n\t\t\t\tuniversalProviderConfigOverride: {\n\t\t\t\t\tmethods: {\n\t\t\t\t\t\tpolkadot: [\"polkadot_signTransaction\", \"polkadot_signMessage\"],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tallWallets: \"HIDE\",\n\t\t\t\tdebug: config.debug,\n\t\t\t\tallowUnsupportedChain: true,\n\t\t\t});\n\n\t\t\tconst status$ = new BehaviorSubject({\n\t\t\t\tisPolkadotConnected: false,\n\t\t\t\tisEthereumConnected: false,\n\t\t\t});\n\n\t\t\tconst unsubProviders = appKit.subscribeProviders((providers) => {\n\t\t\t\tstatus$.next({\n\t\t\t\t\tisPolkadotConnected: !!providers.polkadot,\n\t\t\t\t\tisEthereumConnected: !!providers.eip155,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tconst polkadotWallet$ = appKit.chainNamespaces.includes(\"polkadot\")\n\t\t\t\t? status$.pipe(\n\t\t\t\t\t\tmap((s) => s.isPolkadotConnected),\n\t\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t\t\tmap((isConnected): PolkadotAppKitWallet => {\n\t\t\t\t\t\t\tconst walletInfo = appKit.getWalletInfo();\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tid: getWalletId(\"polkadot\", \"walletconnect\"),\n\t\t\t\t\t\t\t\tplatform: \"polkadot\",\n\t\t\t\t\t\t\t\ttype: \"appKit\",\n\t\t\t\t\t\t\t\tappKit, // todo maybe we dont want to expose the appKit instance\n\t\t\t\t\t\t\t\tname: walletInfo?.name ?? \"WalletConnect\",\n\t\t\t\t\t\t\t\ticon: walletInfo?.icon ?? WALLET_CONNECT_ICON,\n\t\t\t\t\t\t\t\tconnect: async () => {\n\t\t\t\t\t\t\t\t\tif (!isConnected) await appKit.open();\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tdisconnect: () => {\n\t\t\t\t\t\t\t\t\tif (isConnected) appKit.disconnect();\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tisConnected,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t: of(undefined);\n\n\t\t\tconst ethereumWallet$ = appKit.chainNamespaces.includes(\"eip155\")\n\t\t\t\t? status$.pipe(\n\t\t\t\t\t\tmap((s) => s.isEthereumConnected),\n\t\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t\t\tmap((isConnected): EthereumAppKitWallet => {\n\t\t\t\t\t\t\tconst walletInfo = appKit.getWalletInfo();\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tid: getWalletId(\"ethereum\", \"walletconnect\"),\n\t\t\t\t\t\t\t\tplatform: \"ethereum\",\n\t\t\t\t\t\t\t\ttype: \"appKit\",\n\t\t\t\t\t\t\t\tappKit,\n\t\t\t\t\t\t\t\tname: walletInfo?.name ?? \"WalletConnect\",\n\t\t\t\t\t\t\t\ticon: walletInfo?.icon ?? WALLET_CONNECT_ICON,\n\t\t\t\t\t\t\t\tconnect: () => appKit.open(),\n\t\t\t\t\t\t\t\tdisconnect: () => appKit.disconnect(),\n\t\t\t\t\t\t\t\tisConnected,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t: of(undefined);\n\n\t\t\tconst sub = combineLatest({\n\t\t\t\tpolkadot: polkadotWallet$,\n\t\t\t\tethereum: ethereumWallet$,\n\t\t\t}).subscribe(subscriber);\n\n\t\t\treturn () => {\n\t\t\t\tsub.unsubscribe();\n\t\t\t\tunsubProviders();\n\t\t\t};\n\t\t}).pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n\t}\n\n\treturn cachedAppKit;\n};\n","import { isEqual } from \"lodash\";\nimport {\n\tconnectInjectedExtension,\n\tgetInjectedExtensions,\n\ttype InjectedExtension,\n} from \"polkadot-api/pjs-signer\";\nimport {\n\tBehaviorSubject,\n\tcombineLatest,\n\tdistinctUntilChanged,\n\tmap,\n\tObservable,\n\tshareReplay,\n} from \"rxjs\";\nimport { store } from \"@/api/store\";\nimport type {\n\tKheopskitConfig,\n\tPolkadotInjectedWallet,\n\tPolkadotWallet,\n} from \"@/api/types\";\nimport { POLKADOT_EXTENSIONS } from \"@/utils/polkadotExtensions\";\nimport { getWalletId, parseWalletId, type WalletId } from \"@/utils/WalletId\";\nimport { getAppKitWallets$ } from \"../appKit\";\n\nconst getInjectedWalletsIds = () =>\n\tgetInjectedExtensions().map((name) => getWalletId(\"polkadot\", name));\n\n// Create a polling observable that starts immediately and polls at intervals\nconst createWalletIdsPoller$ = () => {\n\treturn new Observable<WalletId[]>((subscriber) => {\n\t\t// Emit immediately on subscribe\n\t\tsubscriber.next(getInjectedWalletsIds());\n\n\t\t// Poll at shorter intervals initially, then slow down\n\t\tconst intervals = [100, 200, 300, 500];\n\t\tlet index = 0;\n\n\t\tconst poll = () => {\n\t\t\tsubscriber.next(getInjectedWalletsIds());\n\t\t\tif (index < intervals.length) {\n\t\t\t\tconst delay = intervals[index++];\n\t\t\t\tsetTimeout(poll, delay);\n\t\t\t}\n\t\t};\n\n\t\t// Start polling after first immediate emission\n\t\tif (intervals.length > 0) {\n\t\t\tsetTimeout(poll, intervals[index++] ?? 100);\n\t\t}\n\n\t\treturn () => {\n\t\t\t// Cleanup handled by setTimeout naturally expiring\n\t\t};\n\t}).pipe(\n\t\tdistinctUntilChanged<WalletId[]>(isEqual),\n\t\tshareReplay({ refCount: true, bufferSize: 1 }),\n\t);\n};\n\nexport const polkadotInjectedWallets$ = new Observable<\n\tPolkadotInjectedWallet[]\n>((subscriber) => {\n\tconst enabledExtensions$ = new BehaviorSubject<\n\t\tMap<WalletId, InjectedExtension>\n\t>(new Map());\n\n\tconst connect = async (walletId: WalletId) => {\n\t\tif (enabledExtensions$.value.has(walletId))\n\t\t\tthrow new Error(`Extension ${walletId} already connected`);\n\t\tconst { identifier } = parseWalletId(walletId);\n\t\tconst extension = await connectInjectedExtension(identifier);\n\n\t\tconst newMap = new Map(enabledExtensions$.value);\n\t\tnewMap.set(walletId, extension);\n\t\tenabledExtensions$.next(newMap);\n\n\t\tstore.addEnabledWalletId(walletId);\n\t};\n\n\tconst disconnect = (walletId: WalletId) => {\n\t\tif (!enabledExtensions$.value.has(walletId))\n\t\t\tthrow new Error(`Extension ${walletId} is not connected`);\n\n\t\tconst newMap = new Map(enabledExtensions$.value);\n\t\tnewMap.delete(walletId);\n\t\tenabledExtensions$.next(newMap);\n\n\t\tstore.removeEnabledWalletId(walletId);\n\t};\n\n\tconst walletIds$ = createWalletIdsPoller$();\n\n\tconst subscription = combineLatest([walletIds$, enabledExtensions$])\n\t\t.pipe(\n\t\t\tmap(([walletIds, enabledExtensions]) => {\n\t\t\t\treturn walletIds.map((id): PolkadotInjectedWallet => {\n\t\t\t\t\tconst { identifier } = parseWalletId(id);\n\t\t\t\t\tconst extension = enabledExtensions.get(id);\n\t\t\t\t\tconst extInfo = POLKADOT_EXTENSIONS[identifier];\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid,\n\t\t\t\t\t\ttype: \"injected\",\n\t\t\t\t\t\tplatform: \"polkadot\",\n\t\t\t\t\t\tname: extInfo?.name ?? identifier,\n\t\t\t\t\t\ticon: extInfo?.icon ?? \"\",\n\t\t\t\t\t\textensionId: identifier,\n\t\t\t\t\t\textension,\n\t\t\t\t\t\tisConnected: !!extension,\n\t\t\t\t\t\tconnect: () => connect(id),\n\t\t\t\t\t\tdisconnect: () => disconnect(id),\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}),\n\t\t)\n\t\t.subscribe(subscriber);\n\n\treturn () => {\n\t\t// console.log(\"Unsubscribing from polkadotInjectedWallets$\");\n\t\tsubscription.unsubscribe();\n\t};\n}).pipe(\n\t// logObservable(\"polkadotInjectedWallets$\"),\n\tshareReplay({ refCount: true, bufferSize: 1 }),\n);\n\nexport const getPolkadotWallets$ = (config: KheopskitConfig) => {\n\treturn new Observable<PolkadotWallet[]>((subscriber) => {\n\t\tconst subscription = combineLatest([\n\t\t\tpolkadotInjectedWallets$,\n\t\t\tgetAppKitWallets$(config)?.pipe(map((w) => w.polkadot)),\n\t\t])\n\t\t\t.pipe(\n\t\t\t\tmap(([injectedWallets, appKitWallet]) =>\n\t\t\t\t\tappKitWallet ? [...injectedWallets, appKitWallet] : injectedWallets,\n\t\t\t\t),\n\t\t\t)\n\t\t\t.subscribe(subscriber);\n\n\t\treturn () => {\n\t\t\tsubscription.unsubscribe();\n\t\t};\n\t}).pipe(\n\t\t// logObservable(\"getPolkadotWallets$\"),\n\t\tshareReplay({ refCount: true, bufferSize: 1 }),\n\t);\n};\n","export const POLKADOT_EXTENSIONS: Record<\n\tstring,\n\t{ name: string; icon: string }\n> = {\n\ttalisman: {\n\t\tname: \"Talisman\",\n\t\ticon: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDEyOCAxMjgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8cGF0aCBmaWxsPSIjZGRmZTc2IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDcwLjI1YzAgMjEuMjU1IDAgMzEuODgzIDQuNDYzIDM5Ljg1MmEzNSAzNSAwIDAgMCAxMy40MzUgMTMuNDM1QzI1Ljg2NyAxMjggMzYuNDk1IDEyOCA1Ny43NSAxMjhoMTIuNWMyMS4yNTUgMCAzMS44ODMgMCAzOS44NTItNC40NjNhMzUgMzUgMCAwIDAgMTMuNDM1LTEzLjQzNUMxMjggMTAyLjEzMyAxMjggOTEuNTA1IDEyOCA3MC4yNXYtMTIuNWMwLTIxLjI1NSAwLTMxLjg4My00LjQ2My0zOS44NTJhMzUgMzUgMCAwIDAtMTMuNDM1LTEzLjQzNUMxMDIuMTMzIDAgOTEuNTA1IDAgNzAuMjUgMGgtMTIuNUMzNi40OTUgMCAyNS44NjcgMCAxNy44OTggNC40NjNBMzUgMzUgMCAwIDAgNC40NjMgMTcuODk4QzAgMjUuODY3IDAgMzYuNDk1IDAgNTcuNzVaIi8+CiAgICA8cGF0aCBmaWxsPSIjZWE1NzUwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0zMy44NzkgMzUuMTE3LS41IDE5LjE2NWM4LjEwNyA0LjE2OCAxNS43NSA0LjA3NSAyNC43NCAyLjA2MyAzLjU2LTEuMzk3IDYuMDU2LTEuNzAyIDkuNTExIDAgOS4wNjcgMi44MTYgMTYuOTY5IDEuOTUgMjUuMTg1LTIuMjQzbC0uNDg1LTE5LjE4N2MwLTEwLjgwNS03LjAwNC0xNC45NjItMTQuNjMyLTEyLjczOS0uNzc5LjIzMi0xLjk0NCAxLjI3NC0xLjk0NCAyLjIwN2wtLjE4MSAxOC43MzNhMS43NyAxLjc3IDAgMSAxLTMuNTM4LS4wMTVWMjAuMDY3YTguODM4IDguODM4IDAgMCAwLTE3LjY3NSAwVjQzLjFhMS43NyAxLjc3IDAgMSAxLTMuNTM4LjAxNWwtLjE3Ni0xOC43NDNjMC0uOTIzLTEuMTA5LTEuOTYtMS44ODItMi4xOTItOC44LTIuNjEtMTQuODggMi41MzgtMTQuODggMTIuOTM2Wm0yLjQ3NSAyMy44NDNhNDguNDMgNDguNDMgMCAwIDEtNS4yMDktMi4yNTRjLTQuNzMtMi4yNjktMTIuMDk1LTEuNTYyLTE3LjA3MiA0LjExMS0yLjI3NCAyLjYtLjUxNSA2LjM2IDIuNzcgNy40NDggMS41ODMuNTI2IDMuMDE3IDEuNDEzIDQuMzUzIDIuNDA4bC40NjQuMzM2YzQuMTMyIDIuOTY1IDYuNzkzIDcuNDA2IDcuMDU2IDEyLjQ4NmwuMjUzIDQuODEyYTMxLjYxNiAzMS42MTYgMCAwIDAgMTkuNDI4IDI1Ljk1OSAzOC41OSAzOC41OSAwIDAgMCAyOS4zMjcgMCAzMS42MTYgMzEuNjE2IDAgMCAwIDE5LjQyOS0yNS45NTljLjA0Ni0uODI1LjA2MS0xLjY1LjA1MS0yLjQ2NWwuMTI0LTIuMzQ3Yy4yNjMtNS4wOCAyLjkyNC05LjUyIDcuMDU2LTEyLjQ4NmwuNDY0LS4zMzZjMS4zNC0uOTk1IDIuNzctMS44ODIgNC4zNTMtMi40MDggMy4yODUtMS4wODkgNS4wNS00Ljg0OSAyLjc3LTcuNDQ4LTQuOTc4LTUuNjczLTEyLjM0My02LjM3NS0xNy4wNzItNC4xMS0xLjcxOC44MjUtMy40MzUgMS42NS01LjIxIDIuMjUzbC0zLjYyIDEuMjM4LS4wMS4wNDFjLTYuNjU0IDEuODQyLTEyLjEyIDEuODQ3LTE4LjM5OC0uNzQyLTMuMTc3LTEuMzEtNi4zOC0xLjU1OC05LjQ4IDAtNS45NjcgMS44NTYtMTIuMDQ4IDIuNjQtMTguMjA2LjcwMWwtMy42MjYtMS4yMzhabTI2LjY2NSA0NC43MzJjMTMuMzkgMCAyNC4yNDEtMTUuNTk2IDI0LjI0MS0xNS41OTZTNzYuNDEgNzIuNDk5IDYzLjAyIDcyLjQ5OWMtMTMuMzg1IDAtMjQuMjM2IDE1LjU5Ny0yNC4yMzYgMTUuNTk3czEwLjg1MSAxNS41OTYgMjQuMjQgMTUuNTk2Wm0xMC44ODMtMTUuNTk2YzAgNi4wMS00Ljg3MiAxMC44ODItMTAuODgzIDEwLjg4Mi02LjAxIDAtMTAuODgyLTQuODcyLTEwLjg4Mi0xMC44ODJzNC44NzItMTAuODgzIDEwLjg4Mi0xMC44ODMgMTAuODgzIDQuODcyIDEwLjg4MyAxMC44ODNabS0xMC44ODMgNC45MzZhNC45MzYgNC45MzYgMCAxIDAgMC05Ljg3MiA0LjkzNiA0LjkzNiAwIDAgMCAwIDkuODcyWiIvPgo8L3N2Zz4K\",\n\t},\n\t\"polkadot-js\": {\n\t\tname: \"Polkadot.js\",\n\t\ticon: \"data:image/svg+xml;base64,ICA8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwNi4yIDEwNi4yIj4KICAgIDxkZWZzPjwvZGVmcz4KICAgIDxnIGlkPSJMYXllcl8yIiBkYXRhLW5hbWU9IkxheWVyIDIiPgogICAgICA8ZyBpZD0iTGF5ZXJfMS0yIiBkYXRhLW5hbWU9IkxheWVyIDEiPgogICAgICAgIDxjaXJjbGUgY3g9IjUzLjEiIGN5PSI1My4xIiByPSI1My4xIiBmaWxsPSIjZjI5MjM1IiAvPgogICAgICAgIDxwYXRoCiAgICAgICAgICBmaWxsPSIjZmZmIgogICAgICAgICAgZD0iTTU0LjQ3IDEzLjc2YTI4Ljg1IDI4Ljg1IDAgMDAtMjguNzMgMjguNzMgMjkuMzQgMjkuMzQgMCAwMDEuNTIgOS4zNCA0IDQgMCAxMDcuNDktMi41MkExOC42NyAxOC42NyAwIDAxMzMuNjMgNDJhMjAuNzIgMjAuNzIgMCAxMTIyIDIxLjMxcy00IC4yNS02IC40OWMtLjc0LjExLTEuNDguMjYtMi4yLjQ0YS4yOC4yOCAwIDAxLS4zOCAwIC4yNy4yNyAwIDAxMC0uMzJsLjYzLTMuNDEgMy43OS0xN2EzLjk0IDMuOTQgMCAxMC03LjcxLTEuNjVzLTkgNDEuNy05IDQyLjA4YTMuNzkgMy43OSAwIDAwMi43NCA0LjZoLjI4YTMuNzggMy43OCAwIDAwNC42MS0yLjcxLjQzLjQzIDAgMDAwLS4xMXYtLjE5Yy4xMS0uNDkgMS4yNS02IDEuMjUtNmExMC4yMyAxMC4yMyAwIDAxOC40Ni04Yy44Ny0uMTMgNC41My0uMzggNC41My0uMzhhMjguNzEgMjguNzEgMCAwMC0yLjExLTU3LjI3eiIKICAgICAgICAvPgogICAgICAgIDxwYXRoCiAgICAgICAgICBmaWxsPSIjZmZmIgogICAgICAgICAgZD0iTTU2LjIxIDgwYTQuNzggNC43OCAwIDAwLTUuNjYgMy43MS4yNC4yNCAwIDAxMCAuMDggNC43NyA0Ljc3IDAgMDAzLjY1IDUuNjdoLjE0QTQuNyA0LjcgMCAwMDYwIDg2di0uMzJBNSA1IDAgMDA1Ni4yMSA4MHoiCiAgICAgICAgLz4KICAgICAgPC9nPgogICAgPC9nPgogIDwvc3ZnPg==\",\n\t},\n\t\"subwallet-js\": {\n\t\tname: \"SubWallet\",\n\t\ticon: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYwIiBoZWlnaHQ9IjE2MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNODAgNGM1Ny42MyAwIDc2IDE4LjM3IDc2IDc2IDAgNTcuNjMtMTguMzcgNzYtNzYgNzYtNTcuNjMgMC03Ni0xOC4zNy03Ni03NkM0IDIyLjM3IDIyLjM3IDQgODAgNFoiIGZpbGw9InVybCgjYSkiLz48ZyBjbGlwLXBhdGg9InVybCgjYikiPjxwYXRoIGQ9Ik0xMTIuNjE1IDY2LjcyVjUzLjM5OEw1OC43NiAzMiA0OCAzNy40MTJsLjA1NyA0MS40NjQgNDAuMjkyIDE2LjA3LTIxLjUyIDkuMDc1di03LjAxOEw1Ni45NSA5My4wM2wtOC44OTMgNC4xNjN2MjUuMzk1TDU4Ljc2OSAxMjhsNTMuODQ2LTI0LjA2MlY4Ni44NjlMNjQuMTU0IDY3LjY1N1Y1NmwzOC40NDkgMTUuMjE2IDEwLjAxMi00LjQ5NloiIGZpbGw9IiNmZmYiLz48L2c+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJhIiB4MT0iODAiIHkxPSI0IiB4Mj0iODAiIHkyPSIxNTYiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjMDA0QkZGIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNENFQUFDIi8+PC9saW5lYXJHcmFkaWVudD48Y2xpcFBhdGggaWQ9ImIiPjxwYXRoIGZpbGw9IiNmZmYiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4IDMyKSIgZD0iTTAgMGg2NC42MTV2OTZIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4=\",\n\t},\n\tenkrypt: {\n\t\tname: \"Enkrypt\",\n\t\ticon: \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODEiIGhlaWdodD0iODEiIHZpZXdCb3g9IjAgMCA4MSA4MSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNy4wMDU3IDE3LjAwNjJDMTguOTMwMyAxNS4wODE2IDIxLjU0MDUgMTQuMDAwNCAyNC4yNjIyIDE0LjAwMDRMNjcuMzI5NiAxNFYyMS44NzQxQzY3LjMyOTYgMjMuODMwNSA2Ni41NTIzIDI1LjcwNjcgNjUuMTY5IDI3LjA5QzYzLjc4NTcgMjguNDczMyA2MS45MDk1IDI5LjI1MDQgNTkuOTUzMiAyOS4yNTA0SDM5LjcwNDVDMzYuOTgyOCAyOS4yNTA0IDM0LjM3MjYgMzAuMzMxNiAzMi40NDggMzIuMjU2MUMzMC41MjM1IDM0LjE4MDcgMjkuNDQyMyAzNi43OTA5IDI5LjQ0MjMgMzkuNTEyNlY0Mi4xMjQyQzI5LjQ0MjMgNDQuODQ1OSAzMC41MjM1IDQ3LjQ1NjEgMzIuNDQ4IDQ5LjM4MDZDMzQuMzcyNiA1MS4zMDUxIDM2Ljk4MjggNTIuMzg2MyAzOS43MDQ1IDUyLjM4NjNINTkuOTUzMkM2MS45MDk1IDUyLjM4NjMgNjMuNzg1NyA1My4xNjM1IDY1LjE2OSA1NC41NDY4QzY2LjU1MjMgNTUuOTMwMSA2Ny4zMjk2IDU3LjgwNjMgNjcuMzI5NiA1OS43NjI2VjY3LjMzSDI0LjI2MjJDMjEuNTQwNSA2Ny4zMyAxOC45MzAzIDY2LjI0ODggMTcuMDA1NyA2NC4zMjQzQzE1LjA4MTIgNjIuMzk5NyAxNCA1OS43ODk1IDE0IDU3LjA2NzhWMjQuMjYyNkMxNCAyMS41NDA5IDE1LjA4MTIgMTguOTMwNyAxNy4wMDU3IDE3LjAwNjJaTTQwLjE0NzkgMzMuNTQyM0g2MC45MTU3QzY0LjQ1OCAzMy41NDIzIDY3LjMyOTUgMzYuNDEzOCA2Ny4zMjk1IDM5Ljk1NjFWNDEuNjgxNkM2Ny4zMjk1IDQ1LjIyMzggNjQuNDU4IDQ4LjA5NTQgNjAuOTE1NyA0OC4wOTU0SDQwLjE0NzlDMzYuNjA1NyA0OC4wOTU0IDMzLjczNDEgNDUuMjIzOCAzMy43MzQxIDQxLjY4MTZWMzkuOTU2MUMzMy43MzQxIDM2LjQxMzggMzYuNjA1NyAzMy41NDIzIDQwLjE0NzkgMzMuNTQyM1oiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8yODdfMjM1OSkiLz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8yODdfMjM1OSIgeDE9IjE5LjM2MDIiIHkxPSIxNCIgeDI9IjU2Ljc2OTYiIHkyPSI2OS44MDA1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiNDNTQ5RkYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNjU0QkZGIi8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==\",\n\t},\n};\n"],"mappings":"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","names":["import_rxjs","import_rxjs","import_rxjs","import_viem","import_rxjs","import_rxjs","getInjectedWalletAccounts$","address","getAppKitAccounts$","isSameAccountsList","w","import_rxjs","import_rxjs","import_rxjs","store","providerDetails","import_lodash","import_pjs_signer","import_rxjs"]}
|