@kheopskit/core 0.0.21 → 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 +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +68 -38
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +116 -88
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -3
- package/CHANGELOG.md +0 -131
- package/src/api/accounts.ts +0 -43
- package/src/api/appKit.ts +0 -127
- 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 -111
- 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.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../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":["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({});\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 themeMode: walletConnect.themeMode,\n themeVariables: walletConnect.themeVariables,\n universalProviderConfigOverride: {\n methods: {\n polkadot: [\"polkadot_signTransaction\", \"polkadot_signMessage\"],\n },\n },\n allWallets: \"HIDE\",\n debug: config.debug,\n allowUnsupportedChain: true,\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":";AAAA,SAAwC,WAAW;AAO5C,IAAM,gBAAgB,CAC3B,OACA,SAEA,IAAI,CAAC,UAAU;AACb,QAAM,EAAE,aAAa,OAAO,UAAU,KAAK,IAAI,QAAQ,CAAC;AAExD,MAAI,CAAC,SAAS,CAAC,QAAS;AAExB,QAAM,OAAO,0BAA0B,KAAK;AAE5C,MAAI,WAAY,SAAQ,MAAM,MAAM,KAAK;AAAA,MACpC,SAAQ,MAAM,IAAI;AACzB,CAAC;;;ACnBH;AAAA,EACE,cAAAA;AAAA,EACA,iBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC;AAAA,EACA;AAAA,OACK;;;ACLA,IAAM,eAAe,CAAC,IAAmB,OAAsB;AACpE,MAAI,GAAG,aAAa,YAAY;AAC9B,QAAI,GAAG,aAAa,YAAY;AAE9B,UAAI,GAAG,eAAe,GAAG,YAAY;AACnC,YAAI,GAAG,eAAe,WAAY,QAAO;AACzC,YAAI,GAAG,eAAe,WAAY,QAAO;AACzC,eAAO,GAAG,WAAW,cAAc,GAAG,UAAU;AAAA,MAClD;AAGA,aAAO,GAAG,SAAS,GAAG,QACjB,GAAG,QAAQ,IAAI,cAAc,GAAG,QAAQ,EAAE,IAC3C,GAAG,QAAQ,cAAc,GAAG,OAAO;AAAA,IACzC;AAEA,WAAO;AAAA,EACT;AAEA,MAAI,GAAG,aAAa,YAAY;AAE9B,QAAI,GAAG,eAAe,GAAG,YAAY;AACnC,UAAI,GAAG,eAAe,WAAY,QAAO;AACzC,UAAI,GAAG,eAAe,WAAY,QAAO;AACzC,aAAO,GAAG,WAAW,cAAc,GAAG,UAAU;AAAA,IAClD;AAGA,WAAO;AAAA,EACT;AAGA,SAAO;AACT;;;AClCA,SAAS,cAAAC,aAAY,iBAAAC,gBAAe,OAAAC,MAAK,MAAAC,KAAI,eAAAC,oBAAmB;;;ACDhE,SAAS,iBAAiB,QAAQ,WAAW,WAAW;AAEjD,IAAM,cAAc,CAAI,KAAa,iBAAoB;AAC9D,QAAM,UAAU,IAAI,gBAAmB,cAAc,KAAK,YAAY,CAAC;AAGvE,YAAwB,QAAQ,SAAS,EACtC;AAAA,IACC,OAAO,CAAC,UAAU,MAAM,QAAQ,GAAG;AAAA,IACnC,IAAI,CAAC,UAAU,UAAU,MAAM,UAAU,YAAY,CAAC;AAAA,EACxD,EACC,UAAU,CAAC,aAAa,QAAQ,KAAK,QAAQ,CAAC;AAEjD,QAAM,SAAS,CAAC,QAAW;AACzB,kBAAc,KAAK,GAAG;AACtB,YAAQ,KAAK,GAAG;AAAA,EAClB;AAEA,SAAO;AAAA,IACL,YAAY,QAAQ,aAAa;AAAA,IACjC,KAAK,CAAC,QAAW,OAAO,GAAG;AAAA,IAC3B,QAAQ,CAAC,cACP,OAAO,UAAU,QAAQ,SAAS,CAAC,CAAC;AAAA,IACtC,KAAK,MAAM,gBAAgB,QAAQ,SAAS,CAAC;AAAA,EAC/C;AACF;AAEA,IAAM,YAAY,CAAI,KAAoB,iBAAuB;AAC/D,MAAI;AACF,QAAI,IAAK,QAAO,KAAK,MAAM,GAAG;AAAA,EAChC,QAAQ;AAAA,EAER;AACA,SAAO;AACT;AAEA,IAAM,gBAAgB,CAAI,KAAa,iBAAuB;AAC5D,QAAM,MAAM,aAAa,QAAQ,GAAG;AACpC,SAAO,UAAU,KAAK,YAAY;AACpC;AAEA,IAAM,gBAAgB,CAAI,KAAa,QAAW;AAChD,QAAM,MAAM,KAAK,UAAU,GAAG;AAC9B,eAAa,QAAQ,KAAK,GAAG;AAC/B;;;AC5CA,SAAS,iBAAiB;AAEnB,IAAM,oBAAoB,CAAC,YAChC,UAAU,OAAO;;;ACHnB,SAAS,iBAAkC;AAE3C,IAAM,mBAAmB,UAAU,EAAE;AAE9B,IAAM,gBAAgB,CAC3B,YAC0B;AAC1B,MAAI;AACF,QAAI,CAAC,QAAS,QAAO;AACrB,qBAAiB,OAAO;AACxB,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;;;ACXO,IAAM,iBAAiB,CAAC,YAA6B;AAC1D,SAAO,QAAQ,WAAW,IAAI,IAC1B,kBAAkB,OAAO,IACzB,cAAc,OAAO;AAC3B;;;ACDO,IAAM,qBAAqB,CAChC,UACA,YACoB;AACpB,MAAI,CAAC,SAAU,OAAM,IAAI,MAAM,kBAAkB;AACjD,MAAI,CAAC,eAAe,OAAO,EAAG,OAAM,IAAI,MAAM,iBAAiB;AAC/D,SAAO,GAAG,QAAQ,KAAK,OAAO;AAChC;;;ACXO,IAAM,mBAAmB,CAC9B,aAEA,OAAO,aAAa,YACpB,CAAC,YAAY,UAAU,EAAE,SAAS,QAA0B;;;ACJ9D,IAAM,QAAQ,oBAAI,IAAiC;AAE5C,IAAM,uBAAuB,CAClC,KACA,WACQ;AACR,MAAI,CAAC,MAAM,IAAI,GAAG,EAAG,OAAM,IAAI,KAAK,OAAO,CAAwB;AAEnE,SAAO,MAAM,IAAI,GAAG;AACtB;;;ACFA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,IAAM,6BAA6B,CACjC,WACkC;AAClC,MAAI,CAAC,OAAO,YAAa,QAAO,GAAG,CAAC,CAAC;AAErC,SAAO;AAAA,IAAqB,YAAY,OAAO,EAAE;AAAA,IAAI,MACnD,IAAI,WAA8B,CAAC,eAAe;AAChD,YAAM,aAAa,CAAC,SAAiB,MAA+B;AAElE,cAAM,SAAS,mBAAmB;AAAA,UAChC,SAAS;AAAA,UACT,WAAW,OAAO,OAAO,QAA2B;AAAA,QACtD,CAAC;AAED,eAAO;AAAA,UACL,IAAI,mBAAmB,OAAO,IAAI,OAAO;AAAA,UACzC,UAAU;AAAA,UACV;AAAA,UACA,SAAS,WAAW,OAAO;AAAA,UAC3B,YAAY,OAAO;AAAA,UACnB,UAAU,OAAO;AAAA,UACjB,iBAAiB,MAAM;AAAA,QACzB;AAAA,MACF;AAEA,YAAM,wBAAwB,CAAC,cAAwB;AACrD,mBAAW,KAAK,UAAU,IAAI,UAAU,CAAC;AAAA,MAC3C;AAGA,aAAO,SAAS,GAAG,mBAAmB,qBAAqB;AAG3D,aAAO,SACJ,QAAQ,EAAE,QAAQ,eAAe,CAAC,EAClC,KAAK,CAAC,cAAwB;AAC7B,mBAAW,KAAK,UAAU,IAAI,UAAU,CAAC;AAAA,MAC3C,CAAC,EACA,MAAM,CAAC,QAAQ;AACd,gBAAQ,MAAM,0BAA0B,GAAG;AAC3C,mBAAW,KAAK,CAAC,CAAC;AAAA,MACpB,CAAC;AAEH,aAAO,MAAM;AACX,eAAO,SAAS;AAAA,UACd;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC,EAAE,KAAK,YAAY,EAAE,UAAU,MAAM,YAAY,EAAE,CAAC,CAAC;AAAA,EACxD;AACF;AAEA,IAAM,4BAA4B,CAChC,UACA,cACA,kBACoB;AACpB,SAAO,IAAI,MAAM,UAAU;AAAA,IACzB,IAAI,QAAQ,MAAM,UAAU;AAC1B,UAAI,SAAS,UAAW,QAAO,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAGjE,aAAO,CAAC,SAAc;AAGpB,YAAI,QAAQ,OAAO,SAAS,YAAY,KAAK,QAAQ;AACnD,cAAI,CAAC,KAAK,MAAO,MAAK,QAAQ;AAC9B,cAAI,CAAC,KAAK,QAAS,MAAK,UAAU;AAAA,QACpC;AACA,eAAO,OAAO,QAAQ,IAAI;AAAA,MAC5B;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,IAAM,qBAAqB,CACzB,WACkC;AAClC,QAAM,UAAU,OAAO,OAAO,WAAW,QAAQ;AACjD,QAAM,WAAW,OAAO,OAAO,YAA+B,QAAQ;AAEtE,MACE,CAAC,OAAO,eACR,CAAC,OAAO,UACR,CAAC,SAAS,YAAY,UACtB,CAAC,UAAU;AAEX,WAAO,GAAG,CAAC,CAAC;AAEd,SAAO;AAAA,IAAqB;AAAA,IAAmB,MAC7C,IAAI,WAA8B,CAAC,eAAe;AAChD,YAAM,iBAAiB,IAAI,cAAsB,CAAC;AAElD,YAAM,qBAAqB,CAAC,YAAqB;AAC/C,uBAAe,KAAK,UAAU,OAAO,EAAE;AAAA,MACzC;AAEA,eAAS,GAAG,gBAAgB,kBAAkB;AAC9C,eAAS,QAAQ,EAAE,QAAQ,cAAc,CAAC,EAAE,KAAK,kBAAkB;AAEnE,YAAM,MAAM,eACT;AAAA,QACC,qBAAqB;AAAA,QACrBA;AAAA,UAAI,CAAC,kBACH;AAAA,YACE;AAAA,cACE;AAAA;AAAA,cAEA,SAAS,QAAS;AAAA,cAClB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACAA;AAAA,UAAI,CAAC,cACH,QAAQ,YAAY,IAAI,CAAC,KAAK,MAAuB;AAEnD,kBAAM,SAAS,mBAAmB;AAAA,cAChC,SAAS,IAAI;AAAA,cACb;AAAA,YACF,CAAC;AAED,mBAAO;AAAA,cACL,IAAI,mBAAmB,OAAO,IAAI,IAAI,OAAO;AAAA,cAC7C,UAAU;AAAA,cACV,YAAY,OAAO;AAAA,cACnB,UAAU,OAAO;AAAA,cACjB,SAAS,IAAI;AAAA,cACb;AAAA,cACA,iBAAiB,MAAM;AAAA,YACzB;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,EACC,UAAU,UAAU;AAEvB,aAAO,MAAM;AACX,iBAAS,IAAI,gBAAgB,kBAAkB;AAC/C,YAAI,YAAY;AAAA,MAClB;AAAA,IACF,CAAC,EAAE,KAAK,YAAY,EAAE,UAAU,MAAM,YAAY,EAAE,CAAC,CAAC;AAAA,EACxD;AACF;AAEO,IAAM,uBAAuB,CAClC,oBAEA,IAAI,WAA8B,CAAC,eAAe;AAChD,QAAM,MAAM,gBACT;AAAA,IACCA,KAAI,CAAC,YAAY,QAAQ,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC;AAAA,IACrD,UAAU,CAAC,YAAY;AACrB,aAAO,QAAQ,SACX,cAAc;AAAA,QACZ,GAAG,QACA,OAAO,CAAC,MAAM,EAAE,SAAS,UAAU,EACnC,IAAI,0BAA0B;AAAA,QACjC,GAAG,QACA,OAAO,CAAC,MAAM,EAAE,SAAS,QAAQ,EACjC,IAAI,kBAAkB;AAAA;AAAA,MAE3B,CAAC,IACD,GAAG,CAAC,CAAC;AAAA,IACX,CAAC;AAAA,IACDA,KAAI,CAAC,aAAa,SAAS,KAAK,CAAC;AAAA,IACjC,qBAAqB,kBAAkB;AAAA,EACzC,EACC,UAAU,UAAU;AAEvB,SAAO,MAAM;AACX,QAAI,YAAY;AAAA,EAClB;AACF,CAAC,EAAE;AAAA;AAAA,EAED,YAAY,EAAE,UAAU,MAAM,YAAY,EAAE,CAAC;AAC/C;AAEF,IAAM,qBAAqB,CAAC,GAAsB,MAAyB;AACzE,MAAI,EAAE,WAAW,EAAE,OAAQ,QAAO;AAClC,SAAO,EAAE,MAAM,CAAC,SAAS,MAAM,QAAQ,OAAO,EAAE,CAAC,GAAG,EAAE;AACxD;;;ACrMA;AAAA,EAGE;AAAA,OACK;AACP;AAAA,EACE,cAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAC;AAAA,OACK;AAEP,IAAMC,8BAA6B,CACjC,WACkC;AAClC,MAAI,CAAC,OAAO,YAAa,QAAOH,IAAG,CAAC,CAAC;AAErC,SAAO,IAAIJ,YAA8B,CAAC,eAAe;AACvD,UAAM,aAAa,CAAC,aAAuD;AAAA,MACzE,IAAI,mBAAmB,OAAO,IAAI,QAAQ,OAAO;AAAA,MACjD,GAAG;AAAA,MACH,UAAU;AAAA,MACV,YAAY,OAAO;AAAA,MACnB,UAAU,OAAO;AAAA,IACnB;AAEA,UAAM,YAAY,OAAO;AAGzB,UAAM,cAAc,UAAU,UAAU,CAAC,aAAa;AACpD,iBAAW,KAAK,SAAS,IAAI,UAAU,CAAC;AAAA,IAC1C,CAAC;AAGD,eAAW,KAAK,UAAU,YAAY,EAAE,IAAI,UAAU,CAAC;AAEvD,WAAO,MAAM;AACX,aAAO,YAAY;AAAA,IACrB;AAAA,EACF,CAAC;AACH;AAEA,IAAM,0BAA0B,CAAC,QAAgB,YAAoB;AACnE,QAAM,WAAW,OAAO,YAA+B,UAAU;AACjE,MAAI,CAAC,SAAU,OAAM,IAAI,MAAM,mBAAmB;AAClD,MAAI,CAAC,SAAS,QAAS,OAAM,IAAI,MAAM,kBAAkB;AAEzD,SAAO;AAAA,IACL;AAAA,IACA,CAAC,uBAAuB;AACtB,UAAI,CAAC,SAAS,QAAS,OAAM,IAAI,MAAM,kBAAkB;AAEzD,aAAO,SAAS,OAAO,QAAQ;AAAA,QAC7B,OAAO,SAAS,QAAQ;AAAA,QACxB,SAAS,YAAY,mBAAmB,YAAY,UAAU,GAAG,EAAE,CAAC;AAAA,QACpE,SAAS;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,YACN;AAAA,YACA;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,OAAO,EAAE,SAAAQ,UAAS,KAAK,MAAM;AAC3B,UAAI,CAAC,SAAS,QAAS,OAAM,IAAI,MAAM,kBAAkB;AACzD,YAAM,WAAW,OAAO,gBAAgB,UAAU;AAClD,YAAM,UAAU,SAAS,CAAC,GAAG;AAC7B,UAAI,CAAC,QAAS,OAAM,IAAI,MAAM,kBAAkB;AAEhD,aAAO,SAAS,OAAO,QAAQ;AAAA,QAC7B,OAAO,SAAS,QAAQ;AAAA,QACxB;AAAA,QACA,SAAS;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,YACN,SAAAA;AAAA,YACA,SAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEA,IAAMC,sBAAqB,CAAC,WAAiC;AAC3D,QAAM,UAAU,OAAO,OAAO,WAAW,UAAU;AACnD,QAAM,WAAW,OAAO,OAAO,YAA+B,UAAU;AAExE,MACE,CAAC,OAAO,eACR,CAAC,OAAO,UACR,CAAC,SAAS,YAAY,UACtB,CAAC,UAAU;AAEX,WAAOL,IAAG,CAAC,CAAC;AAEd,SAAOA;AAAA,IACL,QAAQ,YAAY;AAAA,MAClB,CAAC,SAA0B;AAAA,QACzB,IAAI,mBAAmB,OAAO,IAAI,IAAI,OAAO;AAAA,QAC7C,UAAU;AAAA,QACV,YAAY,OAAO;AAAA,QACnB,UAAU,OAAO;AAAA,QACjB,SAAS,IAAI;AAAA,QACb,gBAAgB,wBAAwB,OAAO,QAAQ,IAAI,OAAO;AAAA,QAClE,aAAa;AAAA,QACb,MAAM,GAAG,OAAO,IAAI;AAAA,QACpB,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,uBAAuB,CAClC,qBAEA,IAAIJ,YAA8B,CAAC,eAAe;AAChD,QAAM,MAAM,iBACT;AAAA,IACCG,KAAI,CAAC,YAAY,QAAQ,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC;AAAA,IACrDG;AAAA,MAAU,CAAC,YACT,QAAQ,SACJL,eAAc;AAAA,QACZ,GAAG,QACA,OAAO,CAAC,MAAM,EAAE,SAAS,UAAU,EACnC,IAAIM,2BAA0B;AAAA,QACjC,GAAG,QACA,OAAO,CAAC,MAAM,EAAE,SAAS,QAAQ,EACjC,IAAIE,mBAAkB;AAAA,MAC3B,CAAC,IACDL,IAAG,CAAC,CAAC;AAAA,IACX;AAAA,IACAD,KAAI,CAAC,aAAa,SAAS,KAAK,CAAC;AAAA,IACjCD,sBAAqBQ,mBAAkB;AAAA,EACzC,EACC,UAAU,UAAU;AAEvB,SAAO,MAAM;AACX,QAAI,YAAY;AAAA,EAClB;AACF,CAAC,EAAE,KAAKL,aAAY,EAAE,UAAU,MAAM,YAAY,EAAE,CAAC,CAAC;AAExD,IAAMK,sBAAqB,CAAC,GAAsB,MAAyB;AACzE,MAAI,EAAE,WAAW,EAAE,OAAQ,QAAO;AAClC,SAAO,EAAE,MAAM,CAAC,SAAS,MAAM,QAAQ,OAAO,EAAE,CAAC,GAAG,EAAE;AACxD;;;ATxJO,IAAM,eAAe,CAC1B,QACA,YACG;AACH,SAAO,IAAIC,YAA4B,CAAC,eAAe;AACrD,UAAM,UAAU,OAAO,UAAU;AAAA,MAC/B,CAAC,aAAa;AACZ,gBAAQ,UAAU;AAAA,UAChB,KAAK;AACH,mBAAO;AAAA,cACL,QAAQ;AAAA,gBACNC,KAAI,CAAC,MAAM,EAAE,OAAO,CAACC,OAAMA,GAAE,aAAa,UAAU,CAAC;AAAA,cACvD;AAAA,YACF;AAAA,UACF,KAAK;AACH,mBAAO;AAAA,cACL,QAAQ;AAAA,gBACND,KAAI,CAAC,MAAM,EAAE,OAAO,CAACC,OAAMA,GAAE,aAAa,UAAU,CAAC;AAAA,cACvD;AAAA,YACF;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAEA,UAAM,YAAY,QAAQ,SACtBC,eAAc,OAAO,EAAE;AAAA,MACrBF,KAAI,CAAC,aAAa,SAAS,KAAK,EAAE,KAAK,YAAY,CAAC;AAAA,IACtD,IACAG,IAAG,CAAC,CAAC;AAET,UAAM,MAAM,UAAU,UAAU,UAAU;AAE1C,WAAO,MAAM;AACX,UAAI,YAAY;AAAA,IAClB;AAAA,EACF,CAAC,EAAE,KAAKC,aAAY,EAAE,UAAU,MAAM,YAAY,EAAE,CAAC,CAAC;AACxD;;;AUxCA,IAAM,iBAAkC;AAAA,EACtC,eAAe;AAAA,EACf,WAAW,CAAC,UAAU;AAAA,EACtB,OAAO;AACT;AAEO,IAAM,gBAAgB,CAC3B,WACoB;AACpB,SAAO,OAAO,OAAO,CAAC,GAAG,gBAAgB,MAAM;AACjD;;;ACVO,IAAM,cAAc,CAAC,IAAY,OAAe;AAErD,MAAI,GAAG,aAAa,GAAG,UAAU;AAC/B,WAAO,GAAG,aAAa,aAAa,KAAK;AAAA,EAC3C;AAGA,MAAI,GAAG,KAAK,YAAY,MAAM,WAAY,QAAO;AACjD,MAAI,GAAG,KAAK,YAAY,MAAM,WAAY,QAAO;AAEjD,SAAO,GAAG,KAAK,cAAc,GAAG,IAAI;AACtC;;;ACZA;AAAA,EACE,cAAAC;AAAA,EACA,iBAAAC;AAAA,EACA;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,MAAAC;AAAA,EACA,eAAAC;AAAA,EACA;AAAA,OACK;;;ACNA,IAAM,cAAc,CACzB,UACA,eACa;AACb,MAAI,CAAC,iBAAiB,QAAQ,EAAG,OAAM,IAAI,MAAM,kBAAkB;AACnE,MAAI,CAAC,WAAY,OAAM,IAAI,MAAM,cAAc;AAC/C,SAAO,GAAG,QAAQ,IAAI,UAAU;AAClC;AAEO,IAAM,gBAAgB,CAAC,aAAqB;AACjD,MAAI,CAAC,SAAU,OAAM,IAAI,MAAM,kBAAkB;AACjD,QAAM,CAAC,UAAU,UAAU,IAAI,SAAS,MAAM,GAAG;AACjD,MAAI,CAAC,iBAAiB,QAAQ,EAAG,OAAM,IAAI,MAAM,kBAAkB;AACnE,MAAI,CAAC,WAAY,OAAM,IAAI,MAAM,iBAAiB;AAClD,SAAO,EAAE,UAAU,WAAW;AAChC;;;AClBA,SAAS,YAAY;AAErB,IAAM,oBAAoB;AAM1B,IAAM,mBAAuC,CAAC;AAE9C,IAAM,UAAU,YAAY,mBAAmB,gBAAgB;AAExD,IAAM,qBAAqB,CAAC,aAAuB;AACxD,gBAAc,QAAQ;AACtB,UAAQ,OAAO,CAAC,UAAU;AAAA,IACxB,GAAG;AAAA,IACH,eAAe,MAAM,KAAK,iBAAiB,CAAC,GAAG,OAAO,QAAQ,CAAC;AAAA,EACjE,EAAE;AACJ;AAEO,IAAM,wBAAwB,CAAC,aAAuB;AAC3D,UAAQ,OAAO,CAAC,UAAU;AAAA,IACxB,GAAG;AAAA,IACH,eAAe;AAAA,OACZ,KAAK,iBAAiB,CAAC,GAAG,OAAO,CAAC,OAAO,OAAO,QAAQ;AAAA,IAC3D;AAAA,EACF,EAAE;AACJ;AAEO,IAAM,QAAQ;AAAA,EACnB,YAAY,QAAQ;AAAA,EACpB;AAAA,EACA;AACF;;;AC5BA,SAAqC,eAAAC,oBAAmB;AACxD;AAAA,EACE,mBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC;AAAA,OACK;;;ACbP,SAAS,oBAAoB;AAC7B;AAAA,EACE,mBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC;AAAA,EACA,eAAAC;AAAA,OACK;AAOP,IAAM,sBACJ;AAQF,IAAI,eAAiD;AAE9C,IAAM,oBAAoB,CAC/B,WAC8B;AAC9B,MAAI,CAAC,OAAO,cAAe,QAAOD,IAAG,CAAC,CAAC;AAEvC,QAAM,gBAAgB,OAAO;AAE7B,MAAI,CAAC,cAAc;AACjB,mBAAe,IAAIJ,YAA0B,CAAC,eAAe;AAC3D,YAAM,SAAS,aAAa;AAAA,QAC1B,WAAW,cAAc;AAAA,QACzB,UAAU,cAAc;AAAA,QACxB,UAAU,cAAc;AAAA,QACxB,WAAW,cAAc;AAAA,QACzB,gBAAgB,cAAc;AAAA,QAC9B,iCAAiC;AAAA,UAC/B,SAAS;AAAA,YACP,UAAU,CAAC,4BAA4B,sBAAsB;AAAA,UAC/D;AAAA,QACF;AAAA,QACA,YAAY;AAAA,QACZ,OAAO,OAAO;AAAA,QACd,uBAAuB;AAAA,MACzB,CAAC;AAED,YAAM,UAAU,IAAID,iBAAgB;AAAA,QAClC,qBAAqB;AAAA,QACrB,qBAAqB;AAAA,MACvB,CAAC;AAED,YAAM,iBAAiB,OAAO,mBAAmB,CAAC,cAAc;AAC9D,gBAAQ,KAAK;AAAA,UACX,qBAAqB,CAAC,CAAC,UAAU;AAAA,UACjC,qBAAqB,CAAC,CAAC,UAAU;AAAA,QACnC,CAAC;AAAA,MACH,CAAC;AAED,YAAM,kBAAkB,OAAO,gBAAgB,SAAS,UAAU,IAC9D,QAAQ;AAAA,QACNI,KAAI,CAAC,MAAM,EAAE,mBAAmB;AAAA,QAChCD,sBAAqB;AAAA,QACrBC,KAAI,CAAC,gBAAsC;AACzC,gBAAM,aAAa,OAAO,cAAc;AAExC,iBAAO;AAAA,YACL,IAAI,YAAY,YAAY,eAAe;AAAA,YAC3C,UAAU;AAAA,YACV,MAAM;AAAA,YACN;AAAA;AAAA,YACA,MAAM,YAAY,QAAQ;AAAA,YAC1B,MAAM,YAAY,QAAQ;AAAA,YAC1B,SAAS,YAAY;AACnB,kBAAI,CAAC,YAAa,OAAM,OAAO,KAAK;AAAA,YACtC;AAAA,YACA,YAAY,MAAM;AAChB,kBAAI,YAAa,QAAO,WAAW;AAAA,YACrC;AAAA,YACA;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH,IACAC,IAAG,MAAS;AAEhB,YAAM,kBAAkB,OAAO,gBAAgB,SAAS,QAAQ,IAC5D,QAAQ;AAAA,QACND,KAAI,CAAC,MAAM,EAAE,mBAAmB;AAAA,QAChCD,sBAAqB;AAAA,QACrBC,KAAI,CAAC,gBAAsC;AACzC,gBAAM,aAAa,OAAO,cAAc;AAExC,iBAAO;AAAA,YACL,IAAI,YAAY,YAAY,eAAe;AAAA,YAC3C,UAAU;AAAA,YACV,MAAM;AAAA,YACN;AAAA,YACA,MAAM,YAAY,QAAQ;AAAA,YAC1B,MAAM,YAAY,QAAQ;AAAA,YAC1B,SAAS,MAAM,OAAO,KAAK;AAAA,YAC3B,YAAY,MAAM,OAAO,WAAW;AAAA,YACpC;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH,IACAC,IAAG,MAAS;AAEhB,YAAM,MAAMH,eAAc;AAAA,QACxB,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC,EAAE,UAAU,UAAU;AAEvB,aAAO,MAAM;AACX,YAAI,YAAY;AAChB,uBAAe;AAAA,MACjB;AAAA,IACF,CAAC,EAAE,KAAKI,aAAY,EAAE,UAAU,MAAM,YAAY,EAAE,CAAC,CAAC;AAAA,EACxD;AAEA,SAAO;AACT;;;AD5GA,IAAM,oBAAoB,IAAIC;AAAA,EAC5B,CAAC,eAAe;AACd,UAAMC,SAAQC,aAAY;AAE1B,UAAM,cAAcD,OAAM,UAAU,CAACE,qBAAoB;AACvD,iBAAW,KAAKA,gBAA0C;AAAA,IAC5D,CAAC;AAED,UAAM,kBAAkBF,OAAM,aAAa;AAE3C,eAAW,KAAK,eAA0C;AAE1D,WAAO,MAAM;AACX,kBAAY;AACZ,MAAAA,OAAM,QAAQ;AAAA,IAChB;AAAA,EACF;AACF,EAAE,KAAKG,aAAY,EAAE,UAAU,MAAM,YAAY,EAAE,CAAC,CAAC;AAErD,IAAM,2BAA2B,IAAIJ;AAAA,EACnC,CAAC,eAAe;AACd,UAAM,oBAAoB,IAAIK,iBAA+B,oBAAI,IAAI,CAAC;AAEtE,UAAM,gBAAgB,OACpB,UACA,aACG;AACH,UAAI,kBAAkB,MAAM,IAAI,QAAQ;AACtC,cAAM,IAAI,MAAM,aAAa,QAAQ,oBAAoB;AAE3D,YAAM,SAAS,QAAQ;AAAA,QACrB,QAAQ;AAAA,MACV,CAAC;AAED,YAAM,SAAS,IAAI,IAAI,kBAAkB,KAAK;AAC9C,aAAO,IAAI,QAAQ;AACnB,wBAAkB,KAAK,MAAM;AAE7B,YAAM,mBAAmB,QAAQ;AAAA,IACnC;AAEA,UAAM,mBAAmB,OAAO,aAAuB;AACrD,UAAI,CAAC,kBAAkB,MAAM,IAAI,QAAQ;AACvC,cAAM,IAAI,MAAM,aAAa,QAAQ,mBAAmB;AAC1D,YAAM,SAAS,IAAI,IAAI,kBAAkB,KAAK;AAC9C,aAAO,OAAO,QAAQ;AACtB,wBAAkB,KAAK,MAAM;AAE7B,YAAM,sBAAsB,QAAQ;AAAA,IACtC;AAEA,UAAM,MAAMC,eAAc,CAAC,mBAAmB,iBAAiB,CAAC,EAC7D;AAAA,MACCC,KAAI,CAAC,CAAC,iBAAiB,gBAAgB,MAAM;AAC3C,eAAO,gBAAgB,IAAI,CAAC,OAA+B;AACzD,gBAAM,WAAW,YAAY,YAAY,GAAG,KAAK,IAAI;AACrD,gBAAM,WAAW,GAAG;AAEpB,iBAAO;AAAA,YACL,UAAU;AAAA,YACV,MAAM;AAAA,YACN,IAAI;AAAA,YACJ,MAAM,GAAG,KAAK;AAAA,YACd,MAAM,GAAG,KAAK;AAAA,YACd;AAAA,YACA,aAAa,iBAAiB,IAAI,QAAQ;AAAA,YAC1C,YAAY,GAAG,KAAK;AAAA,YACpB,SAAS,MAAM,cAAc,UAAU,QAAQ;AAAA,YAC/C,YAAY,MAAM,iBAAiB,QAAQ;AAAA,UAC7C;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IACH,EACC,UAAU,UAAU;AAEvB,WAAO,MAAM;AACX,UAAI,YAAY;AAAA,IAClB;AAAA,EACF;AACF,EAAE,KAAKH,aAAY,EAAE,UAAU,MAAM,YAAY,EAAE,CAAC,CAAC;AAE9C,IAAM,sBAAsB,CAAC,WAA4B;AAC9D,SAAO,IAAIJ,YAA6B,CAAC,eAAe;AACtD,UAAM,eAAeM,eAAc;AAAA,MACjC;AAAA,MACA,kBAAkB,MAAM,GAAG,KAAKC,KAAI,CAAC,MAAM,EAAE,QAAQ,CAAC;AAAA,IACxD,CAAC,EACE;AAAA,MACCA;AAAA,QAAI,CAAC,CAAC,iBAAiB,YAAY,MACjC,eAAe,CAAC,GAAG,iBAAiB,YAAY,IAAI;AAAA,MACtD;AAAA,IACF,EACC,UAAU,UAAU;AAEvB,WAAO,MAAM;AACX,mBAAa,YAAY;AAAA,IAC3B;AAAA,EACF,CAAC,EAAE,KAAKH,aAAY,EAAE,UAAU,MAAM,YAAY,EAAE,CAAC,CAAC;AACxD;;;AEpHO,IAAM,sBAGT;AAAA,EACF,UAAU;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,eAAe;AAAA,IACb,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,gBAAgB;AAAA,IACd,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACF;;;ACZA,SAAS,eAAe;AACxB;AAAA,EAEE;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE,mBAAAI;AAAA,EACA,cAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,OAAAC;AAAA,EACA;AAAA,EACA,MAAAC;AAAA,EACA,eAAAC;AAAA,EACA;AAAA,OACK;AAGP,IAAM,wBAAwB,MAC5B,sBAAsB,EAAE,IAAI,CAAC,SAAS,YAAY,YAAY,IAAI,CAAC;AAE9D,IAAM,2BAA2B,IAAIC,YAE1C,CAAC,eAAe;AAChB,QAAM,qBAAqB,IAAIC,iBAE7B,oBAAI,IAAI,CAAC;AAEX,QAAM,UAAU,OAAO,aAAuB;AAC5C,QAAI,mBAAmB,MAAM,IAAI,QAAQ;AACvC,YAAM,IAAI,MAAM,aAAa,QAAQ,oBAAoB;AAC3D,UAAM,EAAE,WAAW,IAAI,cAAc,QAAQ;AAC7C,UAAM,YAAY,MAAM,yBAAyB,UAAU;AAE3D,UAAM,SAAS,IAAI,IAAI,mBAAmB,KAAK;AAC/C,WAAO,IAAI,UAAU,SAAS;AAC9B,uBAAmB,KAAK,MAAM;AAE9B,UAAM,mBAAmB,QAAQ;AAAA,EACnC;AAEA,QAAM,aAAa,CAAC,aAAuB;AACzC,QAAI,CAAC,mBAAmB,MAAM,IAAI,QAAQ;AACxC,YAAM,IAAI,MAAM,aAAa,QAAQ,mBAAmB;AAE1D,UAAM,SAAS,IAAI,IAAI,mBAAmB,KAAK;AAC/C,WAAO,OAAO,QAAQ;AACtB,uBAAmB,KAAK,MAAM;AAE9B,UAAM,sBAAsB,QAAQ;AAAA,EACtC;AAEA,QAAM,aAAaC,IAAG,GAAG,KAAK,KAAK,GAAI,EACpC;AAAA,IACC,SAAS,CAAC,SAAS,MAAM,IAAI,CAAC;AAAA,IAC9BC,KAAI,MAAM,sBAAsB,CAAC;AAAA,IACjCC,sBAAiC,OAAO;AAAA,EAC1C;AAEF,QAAM,eAAeC,eAAc,CAAC,YAAY,kBAAkB,CAAC,EAChE;AAAA,IACCF,KAAI,CAAC,CAAC,WAAW,iBAAiB,MAAM;AACtC,aAAO,UAAU,IAAI,CAAC,OAA+B;AACnD,cAAM,EAAE,WAAW,IAAI,cAAc,EAAE;AACvC,cAAM,YAAY,kBAAkB,IAAI,EAAE;AAC1C,cAAM,UAAU,oBAAoB,UAAU;AAE9C,eAAO;AAAA,UACL;AAAA,UACA,MAAM;AAAA,UACN,UAAU;AAAA,UACV,MAAM,SAAS,QAAQ;AAAA,UACvB,MAAM,SAAS,QAAQ;AAAA,UACvB,aAAa;AAAA,UACb;AAAA,UACA,aAAa,CAAC,CAAC;AAAA,UACf,SAAS,MAAM,QAAQ,EAAE;AAAA,UACzB,YAAY,MAAM,WAAW,EAAE;AAAA,QACjC;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH,EACC,UAAU,UAAU;AAEvB,SAAO,MAAM;AAEX,iBAAa,YAAY;AAAA,EAC3B;AACF,CAAC,EAAE;AAAA;AAAA,EAEDG,aAAY,EAAE,UAAU,MAAM,YAAY,EAAE,CAAC;AAC/C;AAEO,IAAM,sBAAsB,CAAC,WAA4B;AAC9D,SAAO,IAAIN,YAA6B,CAAC,eAAe;AACtD,UAAM,eAAeK,eAAc;AAAA,MACjC;AAAA,MACA,kBAAkB,MAAM,GAAG,KAAKF,KAAI,CAAC,MAAM,EAAE,QAAQ,CAAC;AAAA,IACxD,CAAC,EACE;AAAA,MACCA;AAAA,QAAI,CAAC,CAAC,iBAAiB,YAAY,MACjC,eAAe,CAAC,GAAG,iBAAiB,YAAY,IAAI;AAAA,MACtD;AAAA,IACF,EACC,UAAU,UAAU;AAEvB,WAAO,MAAM;AACX,mBAAa,YAAY;AAAA,IAC3B;AAAA,EACF,CAAC,EAAE;AAAA;AAAA,IAEDG,aAAY,EAAE,UAAU,MAAM,YAAY,EAAE,CAAC;AAAA,EAC/C;AACF;;;ANxGA,IAAM,0BAA0B,MAAM,WAAW;AAAA,EAC/CC,KAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAAA,EAChC,KAAK,CAAC;AAAA,EACNC,aAAY,CAAC;AACf;AAEO,IAAM,cAAc,CAAC,WAA4B;AACtD,SAAO,IAAIC,YAAqB,CAAC,eAAe;AAC9C,UAAM,cAAc,OAAO,UAAU;AAAA,MACnC,CAAC,aAAa;AACZ,gBAAQ,UAAU;AAAA,UAChB,KAAK;AACH,mBAAO,oBAAoB,MAAM;AAAA,UACnC,KAAK;AACH,mBAAO,oBAAoB,MAAM;AAAA,QACrC;AAAA,MACF;AAAA,IACF;AAEA,UAAM,WAAW,YAAY,SACzBC,eAAc,WAAW,EAAE;AAAA,MACzBH,KAAI,CAAC,YAAY,QAAQ,KAAK,EAAE,KAAK,WAAW,CAAC;AAAA,IACnD,IACAI,IAAG,CAAC,CAAC;AAET,UAAM,mBAAmBD,eAAc,CAAC,UAAU,uBAAuB,CAAC,EACvE;AAAA,MACCE,QAAO,CAAC,CAAC,EAAE,SAAS,MAAM,OAAO,iBAAiB,CAAC,CAAC,WAAW,MAAM;AAAA,MACrEC;AAAA,QAAS,CAAC,CAAC,SAAS,SAAS,MAC3B,QAAQ,OAAO,CAAC,WAAW,WAAW,SAAS,OAAO,EAAE,CAAC;AAAA,MAC3D;AAAA,MACA,SAAS,CAAC,MAAM,EAAE,EAAE;AAAA,IACtB,EACC,UAAU,OAAO,WAAW;AAC3B,UAAI,OAAO,aAAa;AACtB,gBAAQ,KAAK,+BAA+B,OAAO,EAAE;AACrD;AAAA,MACF;AAEA,UAAI;AACF,cAAM,OAAO,QAAQ;AAAA,MACvB,SAAS,KAAK;AACZ,gBAAQ,MAAM,iCAAiC,OAAO,IAAI,EAAE,IAAI,CAAC;AAAA,MACnE;AAAA,IACF,CAAC;AAEH,UAAM,aAAa,SAAS,UAAU,UAAU;AAEhD,WAAO,MAAM;AACX,uBAAiB,YAAY;AAC7B,iBAAW,YAAY;AAAA,IACzB;AAAA,EACF,CAAC,EAAE,KAAKL,aAAY,EAAE,UAAU,MAAM,YAAY,EAAE,CAAC,CAAC;AACxD;;;AdlDO,IAAM,gBAAgB,CAAC,WAAsC;AAClE,QAAM,KAAK,cAAc,MAAM;AAE/B,UAAQ,MAAM,sBAAsB,EAAE;AAEtC,SAAO,IAAIM,YAA2B,CAAC,eAAe;AACpD,UAAM,WAAW,YAAY,EAAE;AAE/B,UAAM,eAAeC,eAAc;AAAA,MACjC,SAAS;AAAA,MACT,UAAU,aAAa,IAAI,QAAQ;AAAA,IACrC,CAAC,EACE,KAAKC,KAAI,CAAC,EAAE,SAAS,SAAS,OAAO,EAAE,QAAQ,IAAI,SAAS,SAAS,EAAE,CAAC,EACxE,UAAU,UAAU;AAEvB,WAAO,MAAM;AACX,mBAAa,YAAY;AAAA,IAC3B;AAAA,EACF,CAAC,EAAE;AAAA,IACD,aAAa,IAAI,QAAW,EAAE,SAAS,MAAM,UAAU,KAAK,CAAC;AAAA,IAC7D,cAAc,cAAc,EAAE,SAAS,GAAG,OAAO,YAAY,KAAK,CAAC;AAAA,IACnEC,aAAY,EAAE,YAAY,GAAG,UAAU,KAAK,CAAC;AAAA,EAC/C;AACF;","names":["Observable","combineLatest","map","shareReplay","Observable","combineLatest","map","of","shareReplay","map","Observable","combineLatest","distinctUntilChanged","map","of","shareReplay","switchMap","getInjectedWalletAccounts$","address","getAppKitAccounts$","isSameAccountsList","Observable","map","w","combineLatest","of","shareReplay","Observable","combineLatest","filter","map","mergeMap","of","shareReplay","createStore","BehaviorSubject","Observable","combineLatest","map","shareReplay","BehaviorSubject","Observable","combineLatest","distinctUntilChanged","map","of","shareReplay","Observable","store","createStore","providerDetails","shareReplay","BehaviorSubject","combineLatest","map","BehaviorSubject","Observable","combineLatest","distinctUntilChanged","map","of","shareReplay","Observable","BehaviorSubject","of","map","distinctUntilChanged","combineLatest","shareReplay","map","shareReplay","Observable","combineLatest","of","filter","mergeMap","Observable","combineLatest","map","shareReplay"]}
|
|
1
|
+
{"version":3,"sources":["../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":["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":["combineLatest","map","Observable","shareReplay","combineLatest","map","Observable","of","shareReplay","map","map","combineLatest","distinctUntilChanged","map","Observable","of","shareReplay","switchMap","getInjectedWalletAccounts$","of","Observable","address","getAppKitAccounts$","map","switchMap","combineLatest","distinctUntilChanged","isSameAccountsList","shareReplay","Observable","map","w","combineLatest","of","shareReplay","combineLatest","filter","map","Observable","of","shareReplay","createStore","BehaviorSubject","combineLatest","map","Observable","shareReplay","BehaviorSubject","combineLatest","distinctUntilChanged","map","Observable","of","shareReplay","of","Observable","BehaviorSubject","map","distinctUntilChanged","combineLatest","shareReplay","Observable","store","createStore","providerDetails","shareReplay","BehaviorSubject","combineLatest","map","BehaviorSubject","combineLatest","distinctUntilChanged","map","Observable","shareReplay","Observable","distinctUntilChanged","shareReplay","BehaviorSubject","combineLatest","map","map","shareReplay","Observable","combineLatest","of","filter","Observable","combineLatest","map","shareReplay"]}
|
package/package.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kheopskit/core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.22",
|
|
4
4
|
"description": "",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
8
|
"private": false,
|
|
9
|
+
"files": [
|
|
10
|
+
"dist"
|
|
11
|
+
],
|
|
9
12
|
"main": "dist/index.cjs",
|
|
10
13
|
"module": "dist/index.mjs",
|
|
11
14
|
"types": "dist/index.d.ts",
|
|
@@ -24,7 +27,7 @@
|
|
|
24
27
|
},
|
|
25
28
|
"license": "ISC",
|
|
26
29
|
"peerDependencies": {
|
|
27
|
-
"polkadot-api": ">=1.
|
|
30
|
+
"polkadot-api": ">=1.21.0",
|
|
28
31
|
"rxjs": ">=7.0.0"
|
|
29
32
|
},
|
|
30
33
|
"dependencies": {
|
|
@@ -59,6 +62,7 @@
|
|
|
59
62
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
60
63
|
"dev": "tsup --watch",
|
|
61
64
|
"build": "tsup",
|
|
62
|
-
"clean": "rm -rf ./dist && rm -rf ./node_modules"
|
|
65
|
+
"clean": "rm -rf ./dist && rm -rf ./node_modules",
|
|
66
|
+
"typecheck": "tsc --noEmit"
|
|
63
67
|
}
|
|
64
68
|
}
|
package/CHANGELOG.md
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
# @kheopskit/core
|
|
2
|
-
|
|
3
|
-
## 0.0.21
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- [`b3d5f98`](https://github.com/kheopskit/kheopskit/commit/b3d5f989a33f9c13f56833f71494df5091c4930c) Thanks [@0xKheops](https://github.com/0xKheops)! - feat: theme variables
|
|
8
|
-
|
|
9
|
-
- [`cd73eb1`](https://github.com/kheopskit/kheopskit/commit/cd73eb18840a69b49238629051450eca26b9e275) Thanks [@0xKheops](https://github.com/0xKheops)! - fix: hide all wallets
|
|
10
|
-
|
|
11
|
-
## 0.0.20
|
|
12
|
-
|
|
13
|
-
### Patch Changes
|
|
14
|
-
|
|
15
|
-
- [`87bbfb0`](https://github.com/kheopskit/kheopskit/commit/87bbfb016b15bd0378a62943ccbe1403a6e5d07e) Thanks [@0xKheops](https://github.com/0xKheops)! - test: changeset2
|
|
16
|
-
|
|
17
|
-
## 0.0.19
|
|
18
|
-
|
|
19
|
-
### Patch Changes
|
|
20
|
-
|
|
21
|
-
- [`e68aaa5`](https://github.com/kheopskit/kheopskit/commit/e68aaa5019630b03660d1cb5e95a9188cf972ebf) Thanks [@0xKheops](https://github.com/0xKheops)! - test: changeset
|
|
22
|
-
|
|
23
|
-
## 0.0.18
|
|
24
|
-
|
|
25
|
-
### Patch Changes
|
|
26
|
-
|
|
27
|
-
- [`2e04a98`](https://github.com/kheopskit/kheopskit/commit/2e04a9893795e6aa43c942dee61443b4700c3294) Thanks [@0xKheops](https://github.com/0xKheops)! - fix: sync changesets
|
|
28
|
-
|
|
29
|
-
## 0.0.15
|
|
30
|
-
|
|
31
|
-
### Patch Changes
|
|
32
|
-
|
|
33
|
-
- [`a540c06`](https://github.com/kheopskit/kheopskit/commit/a540c06e90816656a1a21df3d95d0328bff78455) Thanks [@0xKheops](https://github.com/0xKheops)! - test: one more changeset
|
|
34
|
-
|
|
35
|
-
## 0.0.14
|
|
36
|
-
|
|
37
|
-
### Patch Changes
|
|
38
|
-
|
|
39
|
-
- [`b8242ab`](https://github.com/kheopskit/kheopskit/commit/b8242abd31a6512b16399dd44ca5e5d82f6c70bf) Thanks [@0xKheops](https://github.com/0xKheops)! - test: changeset
|
|
40
|
-
|
|
41
|
-
## 0.0.13
|
|
42
|
-
|
|
43
|
-
### Patch Changes
|
|
44
|
-
|
|
45
|
-
- [`5e07091`](https://github.com/kheopskit/kheopskit/commit/5e070910229cb9202f5d2f1869bfb16c5180d273) Thanks [@0xKheops](https://github.com/0xKheops)! - test: changeset
|
|
46
|
-
|
|
47
|
-
## 0.0.12
|
|
48
|
-
|
|
49
|
-
### Patch Changes
|
|
50
|
-
|
|
51
|
-
- [`2f34f0c`](https://github.com/kheopskit/kheopskit/commit/2f34f0c16c7866a4187b4474a45f93e2ad07f5c7) Thanks [@0xKheops](https://github.com/0xKheops)! - test: changeset
|
|
52
|
-
|
|
53
|
-
## 0.0.11
|
|
54
|
-
|
|
55
|
-
### Patch Changes
|
|
56
|
-
|
|
57
|
-
- [`9d4f86e`](https://github.com/kheopskit/kheopskit/commit/9d4f86e7632843fad089ce930b209aee9b9e2b41) Thanks [@0xKheops](https://github.com/0xKheops)! - test changeset
|
|
58
|
-
|
|
59
|
-
## 0.0.10
|
|
60
|
-
|
|
61
|
-
### Patch Changes
|
|
62
|
-
|
|
63
|
-
- [`c7dea32`](https://github.com/kheopskit/kheopskit/commit/c7dea32e2921716cef82b53e1960c3cdb4c8e5ae) Thanks [@0xKheops](https://github.com/0xKheops)! - test changeset
|
|
64
|
-
|
|
65
|
-
## 0.0.9
|
|
66
|
-
|
|
67
|
-
### Patch Changes
|
|
68
|
-
|
|
69
|
-
- [`961f6a3`](https://github.com/kheopskit/kheopskit/commit/961f6a371c73d4065e9157c95ca4d996012098e7) Thanks [@0xKheops](https://github.com/0xKheops)! - test changeset
|
|
70
|
-
|
|
71
|
-
## 0.0.8
|
|
72
|
-
|
|
73
|
-
### Patch Changes
|
|
74
|
-
|
|
75
|
-
- [`b76185f`](https://github.com/kheopskit/kheopskit/commit/b76185f99a78c5a82a8b9aead65b0708f17b0bd5) Thanks [@0xKheops](https://github.com/0xKheops)! - test changeset
|
|
76
|
-
|
|
77
|
-
## 0.0.7
|
|
78
|
-
|
|
79
|
-
### Patch Changes
|
|
80
|
-
|
|
81
|
-
- [`07f8406`](https://github.com/kheopskit/kheopskit/commit/07f8406d3f176e6a8b3b06fe16396bf2b6b1db88) Thanks [@0xKheops](https://github.com/0xKheops)! - test changeset
|
|
82
|
-
|
|
83
|
-
## 0.0.6
|
|
84
|
-
|
|
85
|
-
### Patch Changes
|
|
86
|
-
|
|
87
|
-
- [`5319326`](https://github.com/kheopskit/kheopskit/commit/53193262e80fec9e242986f818d7f7b53f92357a) Thanks [@0xKheops](https://github.com/0xKheops)! - test changeset
|
|
88
|
-
|
|
89
|
-
## 0.0.5
|
|
90
|
-
|
|
91
|
-
### Patch Changes
|
|
92
|
-
|
|
93
|
-
- [`d865842`](https://github.com/kheopskit/kheopskit/commit/d86584236e51730e82baaa9068604fa7e703e9c2) Thanks [@0xKheops](https://github.com/0xKheops)! - test changeset
|
|
94
|
-
|
|
95
|
-
## 0.0.4
|
|
96
|
-
|
|
97
|
-
### Patch Changes
|
|
98
|
-
|
|
99
|
-
- [`4a61939`](https://github.com/kheopskit/kheopskit/commit/4a61939b9a5c4ea6fb119a0427704a5fc684343e) Thanks [@0xKheops](https://github.com/0xKheops)! - test changeset
|
|
100
|
-
|
|
101
|
-
## 0.0.3
|
|
102
|
-
|
|
103
|
-
### Patch Changes
|
|
104
|
-
|
|
105
|
-
- [`7a0ea89`](https://github.com/kheopskit/kheopskit/commit/7a0ea890982570ae89934fead69d319fff46dd98) Thanks [@0xKheops](https://github.com/0xKheops)! - test changeset
|
|
106
|
-
|
|
107
|
-
## 0.0.2
|
|
108
|
-
|
|
109
|
-
### Patch Changes
|
|
110
|
-
|
|
111
|
-
- [`806b8d3`](https://github.com/kheopskit/kheopskit/commit/806b8d394ba7c2576c76d9de72a15d7927bcff9e) - update peer deps
|
|
112
|
-
|
|
113
|
-
## 0.0.1
|
|
114
|
-
|
|
115
|
-
### Patch Changes
|
|
116
|
-
|
|
117
|
-
- [`e1cebed`](https://github.com/kheopskit/kheopskit/commit/e1cebed92d303f041070e0ae146ee34d9eb717bd) - refactor property names
|
|
118
|
-
|
|
119
|
-
- [`e1cebed`](https://github.com/kheopskit/kheopskit/commit/e1cebed92d303f041070e0ae146ee34d9eb717bd) - initial alpha release
|
|
120
|
-
|
|
121
|
-
## 0.0.1-alpha.1
|
|
122
|
-
|
|
123
|
-
### Patch Changes
|
|
124
|
-
|
|
125
|
-
- [`4f378f9`](https://github.com/0xKheops/kheopskit-alpha/commit/4f378f9b61e555b7b66ef3bfaf107ab8e6ac62b1) - refactor property names
|
|
126
|
-
|
|
127
|
-
## 0.0.1-alpha.0
|
|
128
|
-
|
|
129
|
-
### Patch Changes
|
|
130
|
-
|
|
131
|
-
- [`3216d3b`](https://github.com/0xKheops/kheopskit-alpha/commit/3216d3b4ca1f2fadbebe9a4275e7b864ac89d222) - initial alpha release
|
package/src/api/accounts.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { sortAccounts } from "@/utils/sortAccounts";
|
|
2
|
-
import { Observable, combineLatest, map, of, shareReplay } from "rxjs";
|
|
3
|
-
import { getEthereumAccounts$ } from "./ethereum/accounts";
|
|
4
|
-
import { getPolkadotAccounts$ } from "./polkadot/accounts";
|
|
5
|
-
import type { KheopskitConfig, Wallet, WalletAccount } from "./types";
|
|
6
|
-
|
|
7
|
-
export const getAccounts$ = (
|
|
8
|
-
config: KheopskitConfig,
|
|
9
|
-
wallets: Observable<Wallet[]>,
|
|
10
|
-
) => {
|
|
11
|
-
return new Observable<WalletAccount[]>((subscriber) => {
|
|
12
|
-
const sources = config.platforms.map<Observable<WalletAccount[]>>(
|
|
13
|
-
(platform) => {
|
|
14
|
-
switch (platform) {
|
|
15
|
-
case "polkadot":
|
|
16
|
-
return getPolkadotAccounts$(
|
|
17
|
-
wallets.pipe(
|
|
18
|
-
map((w) => w.filter((w) => w.platform === "polkadot")),
|
|
19
|
-
),
|
|
20
|
-
);
|
|
21
|
-
case "ethereum":
|
|
22
|
-
return getEthereumAccounts$(
|
|
23
|
-
wallets.pipe(
|
|
24
|
-
map((w) => w.filter((w) => w.platform === "ethereum")),
|
|
25
|
-
),
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
);
|
|
30
|
-
|
|
31
|
-
const accounts$ = sources.length
|
|
32
|
-
? combineLatest(sources).pipe(
|
|
33
|
-
map((accounts) => accounts.flat().sort(sortAccounts)),
|
|
34
|
-
)
|
|
35
|
-
: of([]);
|
|
36
|
-
|
|
37
|
-
const sub = accounts$.subscribe(subscriber);
|
|
38
|
-
|
|
39
|
-
return () => {
|
|
40
|
-
sub.unsubscribe();
|
|
41
|
-
};
|
|
42
|
-
}).pipe(shareReplay({ refCount: true, bufferSize: 1 }));
|
|
43
|
-
};
|