@ic-pay/icpay-widget 1.2.51 → 1.2.54
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/{chunk-YO43OKCJ.js → chunk-DADAOPWJ.js} +8 -8
- package/dist/{chunk-2FZ4TGDZ.js → chunk-GG23UD2W.js} +2 -2
- package/dist/chunk-GG23UD2W.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/react/index.js +1 -1
- package/dist/tailwind.css +1 -1
- package/dist/wallet-select-NQ7XPOZX.js +2 -0
- package/package.json +2 -2
- package/dist/chunk-2FZ4TGDZ.js.map +0 -1
- package/dist/wallet-select-YKQSWA6J.js +0 -2
- /package/dist/{chunk-YO43OKCJ.js.map → chunk-DADAOPWJ.js.map} +0 -0
- /package/dist/{wallet-select-YKQSWA6J.js.map → wallet-select-NQ7XPOZX.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/wallet-select/index.ts","../src/wallet-select/internal/PlugAdapter.ts","../src/wallet-select/internal/IIAdapter.ts","../src/wallet-select/internal/NfidAdapter.ts","../src/wallet-select/internal/OisyAdapter.ts","../src/wallet-select/internal/MetaMaskAdapter.ts","../src/wallet-select/img/ii.ts","../src/wallet-select/img/nfid.ts","../src/wallet-select/img/oisy.ts","../src/wallet-select/img/plug.ts","../src/wallet-select/img/metamask.ts","../src/wallet-select/img/coinbase.ts","../src/wallet-select/img/rainbow.ts","../src/wallet-select/img/ledger.ts","../src/wallet-select/img/okx.ts","../src/wallet-select/img/walletconnect.ts","../src/wallet-select/img/brave.ts","../src/wallet-select/img/phantom.ts","../src/wallet-select/img/rabby.ts","../src/wallet-select/img/icons.ts","../src/wallet-select/internal/WalletConnectAdapter.ts","../src/wallet-select/internal/CoinbaseAdapter.ts","../src/wallet-select/internal/BraveAdapter.ts","../src/wallet-select/internal/RainbowAdapter.ts","../src/wallet-select/internal/RabbyAdapter.ts","../src/wallet-select/internal/PhantomAdapter.ts","../src/wallet-select/internal/OkxAdapter.ts"],"sourcesContent":["import type { HttpAgentOptions } from '@dfinity/agent';\nimport { Actor, HttpAgent } from '@dfinity/agent';\n// Avoid importing IDL types to prevent cross-version type conflicts\n\nexport type WalletSelectConfig = {\n icHost?: string;\n derivationOrigin?: string;\n adapters?: Partial<Record<string, { adapter?: any; config?: any; enabled?: boolean; label?: string; icon?: string }>>;\n chainTypes?: Array<'ic' | 'evm'>; // optional: restrict which wallets to show\n};\n\nexport type GetActorOptions = {\n canisterId: string;\n idl: any;\n requiresSigning?: boolean;\n anon?: boolean;\n};\n\nexport type WalletAccount = {\n owner?: string | null;\n principal?: string | null;\n connected?: boolean;\n};\n\nexport type AdapterInterface = {\n id: string;\n label: string;\n icon?: string | null;\n isInstalled(): Promise<boolean>;\n isConnected(): Promise<boolean>;\n connect(): Promise<WalletAccount>;\n disconnect(): Promise<void>;\n getPrincipal(): Promise<string | null>;\n getActor<T>(options: GetActorOptions): any;\n};\n\nexport type AdapterConfig = {\n id: string;\n label: string;\n icon?: string | null;\n enabled?: boolean;\n adapter: new (args: { config: WalletSelectConfig }) => AdapterInterface;\n};\n\nfunction toStringPrincipal(value: unknown): string | null {\n if (!value) return null;\n if (typeof value === 'string') return value;\n try {\n const v: any = value as any;\n if (typeof v.toText === 'function') return v.toText();\n if (typeof v.toString === 'function') return v.toString();\n } catch {}\n return null;\n}\n\nfunction defaultHttpAgentOptions(host?: string): HttpAgentOptions {\n const opts: HttpAgentOptions = {};\n if (host) opts.host = host;\n return opts;\n}\n\nfunction defaultIcHost(userHost?: string): string {\n return userHost && typeof userHost === 'string' && userHost.trim() ? userHost : 'https://icp-api.io';\n}\n\n// Adapters (Bundler moduleResolution requires explicit .js extension in TS sources)\nimport { PlugAdapter } from './internal/PlugAdapter.js';\nimport { IIAdapter } from './internal/IIAdapter.js';\nimport { NfidAdapter } from './internal/NfidAdapter.js';\nimport { OisyAdapter } from './internal/OisyAdapter.js';\nimport { MetaMaskAdapter } from './internal/MetaMaskAdapter.js';\nimport { WalletConnectAdapter } from './internal/WalletConnectAdapter.js';\nimport { CoinbaseAdapter } from './internal/CoinbaseAdapter.js';\nimport { BraveAdapter } from './internal/BraveAdapter.js';\nimport { RainbowAdapter } from './internal/RainbowAdapter.js';\nimport { RabbyAdapter } from './internal/RabbyAdapter.js';\nimport { PhantomAdapter } from './internal/PhantomAdapter.js';\nimport { OkxAdapter } from './internal/OkxAdapter.js';\nimport { getIcon } from './img/icons.js';\n\n\nexport class WalletSelect {\n private _config: WalletSelectConfig;\n private _adapters: Record<string, AdapterConfig>;\n private _activeAdapter: AdapterInterface | null = null;\n private _account: WalletAccount | null = null;\n\n private isMobileBrowser(): boolean {\n try {\n const nav: any = (typeof navigator !== 'undefined' ? navigator : (globalThis as any)?.navigator);\n const ua = String(nav?.userAgent || '').toLowerCase();\n return /iphone|ipad|ipod|android|mobile|windows phone/.test(ua);\n } catch {\n return false;\n }\n }\n\n constructor(config?: WalletSelectConfig) {\n this._config = config || {};\n const baseAdapters: Record<string, AdapterConfig> = {};\n baseAdapters.metamask = { id: 'metamask', label: 'MetaMask', icon: null, enabled: true, adapter: MetaMaskAdapter };\n baseAdapters.coinbase = { id: 'coinbase', label: 'Coinbase Wallet', icon: null, enabled: true, adapter: CoinbaseAdapter };\n // WalletConnect is disabled by default; enable via config.adapters.walletconnect.enabled = true and provide projectId\n baseAdapters.walletconnect = { id: 'walletconnect', label: 'WalletConnect', icon: null, enabled: false, adapter: WalletConnectAdapter };\n baseAdapters.phantom = { id: 'phantom', label: 'Phantom', icon: null, enabled: true, adapter: PhantomAdapter };\n // Temporarily disable Rainbow due to provider interoperability issues\n baseAdapters.rainbow = { id: 'rainbow', label: 'Rainbow', icon: null, enabled: false, adapter: RainbowAdapter };\n baseAdapters.rabby = { id: 'rabby', label: 'Rabby', icon: null, enabled: true, adapter: RabbyAdapter };\n baseAdapters.brave = { id: 'brave', label: 'Brave Wallet', icon: null, enabled: true, adapter: BraveAdapter };\n baseAdapters.okx = { id: 'okx', label: 'OKX Wallet', icon: null, enabled: true, adapter: OkxAdapter };\n baseAdapters.oisy = { id: 'oisy', label: 'Oisy', icon: null, enabled: true, adapter: OisyAdapter };\n baseAdapters.nfid = { id: 'nfid', label: 'NFID', icon: null, enabled: false, adapter: NfidAdapter };\n baseAdapters.ii = { id: 'ii', label: 'Internet Identity', icon: null, enabled: false, adapter: IIAdapter };\n baseAdapters.plug = { id: 'plug', label: 'Plug', icon: null, enabled: true, adapter: PlugAdapter };\n // Initialize adapters config with sane defaults and allow overrides\n const cfgAdapters = (this._config.adapters = this._config.adapters || {});\n const host = defaultIcHost(this._config.icHost);\n // Ensure icHost is always set (used by Plug/agent); default to icp-api.io\n if (!this._config.icHost) this._config.icHost = host;\n // Default NFID signer config\n cfgAdapters.nfid = cfgAdapters.nfid || {};\n cfgAdapters.nfid.config = {\n signerUrl: cfgAdapters.nfid.config?.signerUrl || 'https://nfid.one/rpc',\n hostUrl: cfgAdapters.nfid.config?.hostUrl || host,\n transport: { ...(cfgAdapters.nfid.config?.transport || {}) }\n };\n // Default Oisy signer config\n cfgAdapters.oisy = cfgAdapters.oisy || {};\n cfgAdapters.oisy.config = {\n signerUrl: cfgAdapters.oisy.config?.signerUrl || 'https://oisy.com/sign',\n hostUrl: cfgAdapters.oisy.config?.hostUrl || host,\n transport: { ...(cfgAdapters.oisy.config?.transport || {}) }\n };\n // Default WalletConnect container for config (kept disabled unless explicitly enabled)\n cfgAdapters.walletconnect = cfgAdapters.walletconnect || {};\n cfgAdapters.walletconnect.config = {\n ...(cfgAdapters.walletconnect.config || {}),\n projectId: cfgAdapters.walletconnect.config?.projectId || '',\n chains: cfgAdapters.walletconnect.config?.chains || [8453, 84532]\n };\n // If WalletConnect is enabled but no projectId provided, hide it to prevent broken UX\n try {\n const wcEnabled = (cfgAdapters.walletconnect?.enabled !== false);\n const wcProjectId = String(cfgAdapters.walletconnect?.config?.projectId || '').trim();\n if (wcEnabled && !wcProjectId) {\n (baseAdapters as any).walletconnect.enabled = false;\n }\n } catch {}\n // Keep Plug/II entries present for symmetry\n cfgAdapters.plug = cfgAdapters.plug || {};\n cfgAdapters.ii = cfgAdapters.ii || {};\n\n // Apply runtime enable/disable from config (default is enabled)\n Object.keys(baseAdapters).forEach((key) => {\n const cfg = (cfgAdapters as any)[key];\n if (cfg && typeof cfg.enabled === 'boolean') {\n (baseAdapters as any)[key].enabled = !!cfg.enabled;\n }\n });\n\n this._adapters = baseAdapters;\n }\n\n get config(): WalletSelectConfig { return this._config; }\n get account(): WalletAccount | null { return this._account; }\n\n getEnabledWallets(): any[] {\n const allowedTypes = Array.isArray(this._config.chainTypes) ? this._config.chainTypes.map((t) => String(t).toLowerCase()) : null;\n const idToType: Record<string, 'ic' | 'evm'> = {\n oisy: 'ic', nfid: 'ic', ii: 'ic', plug: 'ic',\n metamask: 'evm', walletconnect: 'evm', coinbase: 'evm',\n brave: 'evm', rainbow: 'evm', rabby: 'evm', phantom: 'evm', okx: 'evm',\n };\n return Object.values(this._adapters)\n .filter((a) => {\n if (a.enabled === false) return false;\n // Additional synchronous availability gate for WalletConnect: require projectId\n if (a.id === 'walletconnect') {\n try {\n const wcProjectId = String((this._config as any)?.adapters?.walletconnect?.config?.projectId || '').trim();\n if (!wcProjectId) return false;\n } catch { return false; }\n }\n // Hide Rabby on mobile (not supported)\n if (a.id === 'rabby' && this.isMobileBrowser()) return false;\n return true;\n })\n .filter((a) => {\n if (!allowedTypes || allowedTypes.length === 0) return true;\n const t = idToType[a.id];\n return !!t && allowedTypes.includes(t);\n })\n .map((a) => ({\n id: a.id,\n label: a.label,\n icon: this.resolveIcon(a.id, a.icon),\n enabled: a.enabled,\n adapter: a.adapter,\n config: (this._config.adapters && (this._config.adapters as any)[a.id]?.config) || {}\n }));\n }\n\n private resolveIcon(id: string, fallback: string | null | undefined): string | null {\n return getIcon(id, fallback || null);\n }\n\n // Expose the active EVM provider (if adapter supports it). Falls back to window.ethereum.\n getEvmProvider(): any {\n try {\n const anyAdapter: any = this._activeAdapter as any;\n if (anyAdapter && typeof anyAdapter.getEvmProvider === 'function') {\n const prov = anyAdapter.getEvmProvider();\n if (prov) return prov;\n }\n } catch {}\n try { return (typeof window !== 'undefined' ? (window as any).ethereum : null) || null; } catch { return null; }\n }\n\n connect(walletId?: string): Promise<WalletAccount> {\n const id = (walletId || '').toLowerCase();\n const cfg = id ? this._adapters[id] : undefined;\n if (!cfg || cfg.enabled === false) throw new Error('No wallets available');\n const adapter = new cfg.adapter({ config: this._config });\n this._activeAdapter = adapter;\n return adapter.connect().then((acc) => {\n const principal = toStringPrincipal(acc?.principal || acc?.owner);\n this._account = { owner: principal, principal, connected: true };\n return this._account;\n });\n }\n\n async disconnect(): Promise<void> {\n try { await this._activeAdapter?.disconnect(); } catch {}\n this._activeAdapter = null;\n this._account = null;\n }\n\n getActor<T>(options: GetActorOptions): any {\n if (!this._activeAdapter) {\n const agent = new HttpAgent(defaultHttpAgentOptions(this._config.icHost));\n return Actor.createActor(options.idl, { agent, canisterId: options.canisterId });\n }\n return this._activeAdapter.getActor<T>(options);\n }\n}\n\nexport const createWalletSelect = (config?: WalletSelectConfig) => new WalletSelect(config);\n\n\n","import type { ActorSubclass } from '@dfinity/agent';\nimport { Actor } from '@dfinity/agent';\nimport type { IDL } from '@dfinity/candid';\nimport type { AdapterInterface, WalletSelectConfig, GetActorOptions, WalletAccount, AdapterConfig } from '../index';\n\ndeclare global {\n interface Window {\n ic?: any;\n }\n}\n\nexport class PlugAdapter implements AdapterInterface {\n readonly id = 'plug';\n readonly label = 'Plug';\n readonly icon: string | null = null;\n private _config: WalletSelectConfig;\n private _adapterCfg?: AdapterConfig;\n\n constructor(args: { config?: WalletSelectConfig; adapter?: AdapterConfig }) {\n this._config = args.config || {};\n this._adapterCfg = args.adapter;\n }\n\n async isInstalled(): Promise<boolean> {\n return !!(typeof window !== 'undefined' && window.ic && window.ic.plug);\n }\n\n async isConnected(): Promise<boolean> {\n try { return !!(await window.ic?.plug?.isConnected?.()); } catch { return false; }\n }\n\n async connect(): Promise<WalletAccount> {\n if (!(await this.isInstalled())) throw new Error('Plug is not installed');\n // Ensure connected\n const connected = await this.isConnected();\n if (!connected) {\n await window.ic!.plug!.requestConnect?.({ host: this._config.icHost });\n }\n const principal = await window.ic!.plug!.getPrincipal?.();\n const principalText = typeof principal?.toText === 'function' ? principal.toText() : (principal?.toString?.() || null);\n return { owner: principalText, principal: principalText, connected: true };\n }\n\n async disconnect(): Promise<void> {\n try { await window.ic?.plug?.disconnect?.(); } catch {}\n }\n\n async getPrincipal(): Promise<string | null> {\n try {\n const p = await window.ic!.plug!.getPrincipal?.();\n return typeof p?.toText === 'function' ? p.toText() : (p?.toString?.() || null);\n } catch { return null; }\n }\n\n getActor<T>(options: GetActorOptions): ActorSubclass<T> {\n // Use Plug's agent synchronously if available\n const agent = window.ic?.plug?.agent;\n if (!agent) {\n throw new Error('Plug agent not initialized');\n }\n return Actor.createActor<T>(options.idl as IDL.InterfaceFactory, { agent, canisterId: options.canisterId });\n }\n}\n\n\n","import type { ActorSubclass } from '@dfinity/agent';\nimport { Actor, HttpAgent } from '@dfinity/agent';\nimport { AuthClient } from '@dfinity/auth-client';\nimport type { AdapterInterface, WalletSelectConfig, GetActorOptions, WalletAccount } from '../index';\n\nexport class IIAdapter implements AdapterInterface {\n readonly id = 'ii';\n readonly label = 'Internet Identity';\n readonly icon: string | null = null;\n private _config: WalletSelectConfig;\n private _client: AuthClient | null = null;\n private _agent: HttpAgent | null = null;\n\n constructor(args: { config: WalletSelectConfig }) {\n this._config = args.config || {};\n }\n\n private async client(): Promise<AuthClient> {\n if (this._client) return this._client;\n this._client = await AuthClient.create();\n return this._client;\n }\n\n async isInstalled(): Promise<boolean> { return true; }\n\n async isConnected(): Promise<boolean> {\n const c = await this.client();\n return await c.isAuthenticated();\n }\n\n async connect(): Promise<WalletAccount> {\n const c = await this.client();\n const connected = await c.isAuthenticated();\n if (!connected) {\n await c.login({ identityProvider: this._config.derivationOrigin, maxTimeToLive: BigInt(7 * 24 * 60 * 60 * 1_000_000_000) });\n }\n const identity = c.getIdentity();\n this._agent = new HttpAgent({ host: this._config.icHost, identity });\n const principal = identity.getPrincipal().toText();\n return { owner: principal, principal, connected: true };\n }\n\n async disconnect(): Promise<void> {\n try { await (await this.client()).logout(); } catch {}\n this._agent = null;\n }\n\n async getPrincipal(): Promise<string | null> {\n try { return (await this.client()).getIdentity().getPrincipal().toText(); } catch { return null; }\n }\n\n getActor<T>(options: GetActorOptions): ActorSubclass<T> {\n if (!this._agent) throw new Error('II agent not initialized');\n return Actor.createActor<T>(options.idl, { agent: this._agent, canisterId: options.canisterId });\n }\n}\n\n\n","import { Actor, HttpAgent } from '@dfinity/agent';\n// Avoid importing IDL types to prevent cross-version type conflicts\nimport type { AdapterInterface, WalletSelectConfig, GetActorOptions, WalletAccount } from '../index';\nimport { PostMessageTransport } from '@slide-computer/signer-web';\nimport { Signer } from '@slide-computer/signer';\nimport { SignerAgent } from '@slide-computer/signer-agent';\n\nexport class NfidAdapter implements AdapterInterface {\n readonly id = 'nfid';\n readonly label = 'NFID';\n readonly icon: string | null = null;\n private _config: WalletSelectConfig;\n private _agent: any | null = null;\n private _principal: string | null = null;\n\n constructor(args: { config: WalletSelectConfig }) { this._config = args.config || {}; }\n\n async isInstalled(): Promise<boolean> { return true; }\n async isConnected(): Promise<boolean> { return !!this._agent; }\n async connect(): Promise<WalletAccount> {\n const adapters = (this._config as any)?.adapters || {};\n const nfidCfg = adapters.nfid?.config || {};\n const signerUrl: string | undefined = nfidCfg.signerUrl;\n const hostUrl: string | undefined = nfidCfg.hostUrl || this._config.icHost;\n if (!signerUrl) throw new Error('NFID signerUrl not configured');\n if (!hostUrl) throw new Error('IC host not configured');\n\n const baseAgent = new HttpAgent({ host: hostUrl });\n const transport = new PostMessageTransport({ url: signerUrl, ...(nfidCfg.transport || {}) });\n const signer = new Signer({ transport });\n // Establish channel immediately within click handler before any further awaits\n await signer.openChannel();\n const accounts = await signer.accounts();\n const account = accounts?.[0]?.owner;\n const signerAgent = await SignerAgent.create({ signer, agent: baseAgent, account });\n\n let principal: string | null = null;\n try { principal = (await signerAgent.getPrincipal())?.toText?.() || null; } catch {}\n\n this._agent = signerAgent;\n this._principal = principal;\n return { owner: principal, principal, connected: true };\n }\n async disconnect(): Promise<void> { this._agent = null; this._principal = null; }\n async getPrincipal(): Promise<string | null> { return this._principal; }\n getActor(options: GetActorOptions): any {\n if (!this._agent) throw new Error('NFID agent not initialized');\n return Actor.createActor(options.idl, { agent: this._agent, canisterId: options.canisterId });\n }\n}\n\n\n","import { Actor, HttpAgent } from '@dfinity/agent';\n// Avoid importing IDL types to prevent cross-version type conflicts\nimport type { AdapterInterface, WalletSelectConfig, GetActorOptions, WalletAccount } from '../index';\nimport { PostMessageTransport } from '@slide-computer/signer-web';\nimport { Signer } from '@slide-computer/signer';\nimport { SignerAgent } from '@slide-computer/signer-agent';\n\nexport class OisyAdapter implements AdapterInterface {\n readonly id = 'oisy';\n readonly label = 'Oisy';\n readonly icon: string | null = null;\n private _config: WalletSelectConfig;\n private _agent: any | null = null;\n private _principal: string | null = null;\n\n constructor(args: { config: WalletSelectConfig }) { this._config = args.config || {}; }\n\n async isInstalled(): Promise<boolean> { return true; }\n async isConnected(): Promise<boolean> { return !!this._agent; }\n async connect(): Promise<WalletAccount> {\n const adapters = (this._config as any)?.adapters || {};\n const oisyCfg = adapters.oisy?.config || {};\n const signerUrl: string | undefined = oisyCfg.signerUrl; // e.g., https://oisy.com/signer\n const hostUrl: string | undefined = oisyCfg.hostUrl || this._config.icHost;\n const transportOverrides = (oisyCfg.transport || {}) as Record<string, any>;\n if (!signerUrl) throw new Error('Oisy signerUrl not configured');\n if (!hostUrl) throw new Error('IC host not configured');\n\n const windowOpenerFeatures = transportOverrides.windowOpenerFeatures ?? '';\n\n const baseAgent = new HttpAgent({ host: hostUrl });\n const transport = new PostMessageTransport({\n url: signerUrl,\n windowOpenerFeatures,\n detectNonClickEstablishment: false,\n ...transportOverrides\n });\n const signer = new Signer({ transport });\n // Establish channel immediately within click handler before any further awaits\n await signer.openChannel();\n const accounts = await signer.accounts();\n const account = accounts?.[0]?.owner;\n const signerAgent = await SignerAgent.create({ signer, agent: baseAgent, account });\n\n let principal: string | null = null;\n try { principal = (await signerAgent.getPrincipal())?.toText?.() || null; } catch {}\n\n this._agent = signerAgent;\n this._principal = principal;\n return { owner: principal, principal, connected: true };\n }\n async disconnect(): Promise<void> { this._agent = null; this._principal = null; }\n async getPrincipal(): Promise<string | null> { return this._principal; }\n getActor(options: GetActorOptions): any {\n if (!this._agent) throw new Error('Oisy agent not initialized');\n // Create actor through the signer agent compatible path\n return Actor.createActor(options.idl, { agent: this._agent, canisterId: options.canisterId });\n }\n}\n\n\n","import type { AdapterInterface, GetActorOptions, WalletSelectConfig, WalletAccount } from '../index.js';\nimport { Actor, HttpAgent } from '@dfinity/agent';\n\ndeclare global {\n interface Window {\n ethereum?: any;\n }\n}\n\nexport class MetaMaskAdapter implements AdapterInterface {\n readonly id = 'metamask';\n readonly label = 'MetaMask';\n readonly icon?: string | null;\n private readonly config: WalletSelectConfig;\n\n constructor(args: { config: WalletSelectConfig }) {\n this.config = args.config || ({} as any);\n }\n\n private isMobileBrowser(): boolean {\n try {\n const nav: any = (typeof navigator !== 'undefined' ? navigator : (window as any)?.navigator);\n const ua = String(nav?.userAgent || '').toLowerCase();\n // Broad mobile check; avoids false positives on desktop\n return /iphone|ipad|ipod|android|mobile|windows phone/.test(ua);\n } catch {\n return false;\n }\n }\n\n private getProvider(): any {\n try {\n const anyWin: any = (typeof window !== 'undefined' ? window : {}) as any;\n const eth = anyWin.ethereum;\n if (eth && Array.isArray(eth.providers)) {\n const mm = eth.providers.find((p: any) => p && p.isMetaMask);\n if (mm) return mm;\n }\n if (eth && eth.isMetaMask) return eth;\n // On some mobile environments (in-app browsers), flags may be missing.\n // If we're on mobile and ethereum.request exists, optimistically use it.\n if (this.isMobileBrowser() && eth && typeof eth.request === 'function') return eth;\n } catch {}\n return null;\n }\n\n // Exposed for WalletSelect.getEvmProvider()\n getEvmProvider(): any {\n return this.getProvider();\n }\n\n async isInstalled(): Promise<boolean> {\n try {\n return !!this.getProvider();\n } catch {\n return false;\n }\n }\n\n async isConnected(): Promise<boolean> {\n try {\n const provider = this.getProvider();\n if (!provider) return false;\n const req = typeof provider.request === 'function' ? provider.request({ method: 'eth_accounts' }) : Promise.resolve([]);\n const accounts = await req;\n return Array.isArray(accounts) && accounts.length > 0;\n } catch {\n return false;\n }\n }\n\n async connect(): Promise<WalletAccount> {\n let provider = this.getProvider();\n // If provider is missing on mobile browsers, attempt MetaMask deep link into in-app browser\n if (!provider) {\n if (typeof window !== 'undefined' && this.isMobileBrowser()) {\n try {\n const href = String(window.location?.href || '');\n // Use MetaMask universal link to open the dapp URL inside MetaMask's in-app browser\n const sanitized = href.replace(/^https?:\\/\\//i, '');\n const deepLink = `https://metamask.app.link/dapp/${sanitized}`;\n try {\n // Emit an event so host apps can track the redirect attempt\n try { window.dispatchEvent(new CustomEvent('icpay-sdk-wallet-deeplink', { detail: { wallet: 'metamask', url: deepLink } })); } catch {}\n window.location.href = deepLink;\n } catch {\n // Fallback to window.open if assignment fails\n try { window.open(deepLink, '_self', 'noopener,noreferrer'); } catch {}\n }\n } catch {}\n throw new Error('Opening MetaMask… If nothing happens, install MetaMask and try again.');\n }\n throw new Error('MetaMask not available');\n }\n\n // Robust account request flow with retries and permissions fallback\n const delay = (ms: number) => new Promise((res) => setTimeout(res, ms));\n const getAccountsOnce = async (): Promise<string[]> => {\n try {\n const a1 = await provider.request?.({ method: 'eth_accounts' });\n if (Array.isArray(a1) && a1.length > 0) return a1;\n } catch {}\n try {\n const a2 = await provider.request?.({ method: 'eth_requestAccounts' });\n if (Array.isArray(a2) && a2.length > 0) return a2;\n } catch (err: any) {\n if (err && (err.code === 4001 || err.code === '4001')) {\n throw new Error('Connection request was rejected');\n }\n // continue to permissions fallback below\n }\n try {\n await provider.request?.({ method: 'wallet_requestPermissions', params: [{ eth_accounts: {} }] });\n const a3 = await provider.request?.({ method: 'eth_accounts' });\n if (Array.isArray(a3) && a3.length > 0) return a3;\n } catch {}\n return [];\n };\n\n // Try a few times to account for slow injection/UX on mobile\n let accounts: string[] = [];\n for (let i = 0; i < 3 && accounts.length === 0; i++) {\n // Refresh provider reference in case injection changed\n provider = this.getProvider() || provider;\n accounts = await getAccountsOnce();\n if (accounts.length === 0) await delay(300);\n }\n\n const addr = Array.isArray(accounts) ? (accounts[0] || '') : '';\n if (!addr) throw new Error('No account returned by MetaMask');\n return { owner: addr, principal: addr, connected: true };\n }\n\n async disconnect(): Promise<void> {\n try {\n const provider = this.getProvider() || (typeof window !== 'undefined' ? (window as any).ethereum : null);\n if (!provider) return;\n try {\n await provider.request?.({\n method: 'wallet_requestPermissions',\n params: [{ eth_accounts: {} }]\n });\n } catch {}\n try { provider.removeAllListeners?.('accountsChanged'); } catch {}\n try { provider.removeAllListeners?.('chainChanged'); } catch {}\n try { provider.removeAllListeners?.('disconnect'); } catch {}\n } catch {}\n }\n\n async getPrincipal(): Promise<string | null> {\n try {\n const provider = this.getProvider() || (typeof window !== 'undefined' ? (window as any).ethereum : null);\n if (!provider) return null;\n const accounts = await provider.request?.({ method: 'eth_accounts' });\n const addr = Array.isArray(accounts) ? (accounts[0] || '') : '';\n return addr || null;\n } catch {\n return null;\n }\n }\n\n getActor<T>(options: GetActorOptions): any {\n throw new Error('EVM wallets cannot provide IC actors. Use IC adapters for IC canister interactions.');\n }\n}\n\n\n","export default \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzNTguOCAxNzkuOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzU4LjggMTc5Ljg7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDp1cmwoI1NWR0lEXzFfKTt9Cgkuc3Qxe2ZpbGw6dXJsKCNTVkdJRF8yXyk7fQoJLnN0MntmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiMyOUFCRTI7fQo8L3N0eWxlPgo8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIyNC43ODUzIiB5MT0iMjU3Ljc1MzYiIHgyPSIzNDguMDY2MyIgeTI9IjEzMy40NTgxIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMjcyKSI+Cgk8c3RvcCAgb2Zmc2V0PSIwLjIxIiBzdHlsZT0ic3RvcC1jb2xvcjojRjE1QTI0Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjY4NDEiIHN0eWxlPSJzdG9wLWNvbG9yOiNGQkIwM0IiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTI3MS42LDBjLTIwLDAtNDEuOSwxMC45LTY1LDMyLjRjLTEwLjksMTAuMS0yMC41LDIxLjEtMjcuNSwyOS44YzAsMCwxMS4yLDEyLjksMjMuNSwyNi44CgljNi43LTguNCwxNi4yLTE5LjgsMjcuMy0zMC4xYzIwLjUtMTkuMiwzMy45LTIzLjEsNDEuNi0yMy4xYzI4LjgsMCw1Mi4yLDI0LjIsNTIuMiw1NC4xYzAsMjkuNi0yMy40LDUzLjgtNTIuMiw1NC4xCgljLTEuNCwwLTMtMC4yLTUtMC42YzguNCwzLjksMTcuNSw2LjcsMjYsNi43YzUyLjgsMCw2My4yLTM2LjUsNjMuOC0zOS4xYzEuNS02LjcsMi40LTEzLjcsMi40LTIwLjlDMzU4LjYsNDAuNCwzMTkuNiwwLDI3MS42LDB6Ii8+CjxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMl8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMTMzLjk0NjEiIHkxPSIxMDYuNDI2MiIgeDI9IjEwLjY2NTMiIHkyPSIyMzAuNzIxNSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDI3MikiPgoJPHN0b3AgIG9mZnNldD0iMC4yMSIgc3R5bGU9InN0b3AtY29sb3I6I0VEMUU3OSIvPgoJPHN0b3AgIG9mZnNldD0iMC44OTI5IiBzdHlsZT0ic3RvcC1jb2xvcjojNTIyNzg1Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik04Ny4xLDE3OS44YzIwLDAsNDEuOS0xMC45LDY1LTMyLjRjMTAuOS0xMC4xLDIwLjUtMjEuMSwyNy41LTI5LjhjMCwwLTExLjItMTIuOS0yMy41LTI2LjgKCWMtNi43LDguNC0xNi4yLDE5LjgtMjcuMywzMC4xYy0yMC41LDE5LTM0LDIzLjEtNDEuNiwyMy4xYy0yOC44LDAtNTIuMi0yNC4yLTUyLjItNTQuMWMwLTI5LjYsMjMuNC01My44LDUyLjItNTQuMQoJYzEuNCwwLDMsMC4yLDUsMC42Yy04LjQtMy45LTE3LjUtNi43LTI2LTYuN0MxMy40LDI5LjYsMyw2Ni4xLDIuNCw2OC44QzAuOSw3NS41LDAsODIuNSwwLDg5LjdDMCwxMzkuNCwzOSwxNzkuOCw4Ny4xLDE3OS44eiIvPgo8cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTI3LjMsNTkuN2MtNS44LTUuNi0zNC0yOC41LTYxLTI5LjNDMTguMSwyOS4yLDQsNjQuMiwyLjcsNjguN0MxMiwyOS41LDQ2LjQsMC4yLDg3LjIsMAoJYzMzLjMsMCw2NywzMi43LDkxLjksNjIuMmMwLDAsMC4xLTAuMSwwLjEtMC4xYzAsMCwxMS4yLDEyLjksMjMuNSwyNi44YzAsMCwxNCwxNi41LDI4LjgsMzFjNS44LDUuNiwzMy45LDI4LjIsNjAuOSwyOQoJYzQ5LjUsMS40LDYzLjItMzUuNiw2My45LTM4LjRjLTkuMSwzOS41LTQzLjYsNjguOS04NC42LDY5LjFjLTMzLjMsMC02Ny0zMi43LTkyLTYyLjJjMCwwLjEtMC4xLDAuMS0wLjEsMC4yCgljMCwwLTExLjItMTIuOS0yMy41LTI2LjhDMTU2LjIsOTAuOCwxNDIuMiw3NC4yLDEyNy4zLDU5Ljd6IE0yLjcsNjkuMWMwLTAuMSwwLTAuMiwwLjEtMC4zQzIuNyw2OC45LDIuNyw2OSwyLjcsNjkuMXoiLz4KPC9zdmc+Cg==\";\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIHZpZXdCb3g9IjAgMCA2NCA2NCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS45MDIyIDMuMTU2MjlDMTYuNzcxNCAzLjA2MzYzIDE3LjQwMDggMi4yODM5OCAxNy4zMDgxIDEuNDE0ODlDMTcuMjE1NSAwLjU0NTgwOSAxNi40MzU4IC0wLjA4MzYwOTkgMTUuNTY2NyAwLjAwOTA0OTQ2TDEyLjMzNDUgMC4zNTM2MzNDMTAuNjc4NiAwLjUzMDE2NSA5LjM1MDQ2IDAuNjcxNzUxIDguMjcxOCAwLjg2NzMwNkM3LjE2MDYgMS4wNjg3NiA2LjIwODI3IDEuMzQ0MTQgNS4zMjM3OCAxLjgzOTgxQzMuODg3NzMgMi42NDQ1NyAyLjY5NzE5IDMuODIzODUgMS44Nzk0NCA1LjI1MTk2QzEuMzc1NjggNi4xMzE3MyAxLjA5MjA0IDcuMDgxMTIgMC44ODExODUgOC4xODk2MUMwLjY3NjUzNSA5LjI2NTQ5IDAuNTIzODkzIDEwLjU5MSAwLjMzMzYyMSAxMi4yNDMyTDAuMzI1NDI0IDEyLjMxNDRMMC4wMDgwNjAwNiAxNS40NzA0Qy0wLjA3OTM4NzUgMTYuMzQgMC41NTQ3MjYgMTcuMTE1OSAxLjQyNDM5IDE3LjIwMzRDMi4yOTQwNiAxNy4yOTA4IDMuMDY5OTUgMTYuNjU2NyAzLjE1NzQgMTUuNzg3MUwzLjQ3MjQ4IDEyLjY1MzhDMy42NzA1NCAxMC45MzQgMy44MTA2NiA5LjcyNzMgMy45OTA2NiA4Ljc4MTAzQzQuMTY3MzEgNy44NTIzNSA0LjM2NDQ5IDcuMjgxODEgNC42MjYyNiA2LjgyNDY3QzUuMTU5MDEgNS44OTQyNyA1LjkzNDg3IDUuMTI1NTkgNi44NzEyMSA0LjYwMDg2QzcuMzMxNTEgNC4zNDI5MSA3LjkwNDg2IDQuMTUwNTEgOC44MzY0NiAzLjk4MTYxQzkuNzg3NjYgMy44MDkxNiAxMS4wMDA1IDMuNjc4ODggMTIuNzI5OSAzLjQ5NDVMMTUuOTAyMiAzLjE1NjI5Wk00Ni42OTE5IDEuNDE0ODlDNDYuNTk5MiAyLjI4Mzk4IDQ3LjIyODYgMy4wNjM2MyA0OC4wOTc4IDMuMTU2MjlMNTEuMjcwMSAzLjQ5NDVDNTIuOTk5NSAzLjY3ODg4IDU0LjIxMjMgMy44MDkxNiA1NS4xNjM1IDMuOTgxNjFDNTYuMDk1MSA0LjE1MDUxIDU2LjY2ODUgNC4zNDI5MSA1Ny4xMjg4IDQuNjAwODZDNTguMDY1MSA1LjEyNTU5IDU4Ljg0MSA1Ljg5NDI3IDU5LjM3MzcgNi44MjQ2N0M1OS42MzU1IDcuMjgxODEgNTkuODMyNyA3Ljg1MjM1IDYwLjAwOTMgOC43ODEwM0M2MC4xODkzIDkuNzI3MyA2MC4zMjk1IDEwLjkzNCA2MC41Mjc1IDEyLjY1MzhMNjAuODQyNiAxNS43ODcxQzYwLjkzIDE2LjY1NjcgNjEuNzA1OSAxNy4yOTA4IDYyLjU3NTYgMTcuMjAzNEM2My40NDUzIDE3LjExNTkgNjQuMDc5NCAxNi4zNCA2My45OTE5IDE1LjQ3MDRMNjMuNjc0NiAxMi4zMTQ0TDYzLjY2NjQgMTIuMjQzMkM2My40NzYxIDEwLjU5MSA2My4zMjM1IDkuMjY1NDkgNjMuMTE4OCA4LjE4OTYxQzYyLjkwOCA3LjA4MTEyIDYyLjYyNDMgNi4xMzE3MyA2Mi4xMjA2IDUuMjUxOTZDNjEuMzAyOCAzLjgyMzg1IDYwLjExMjMgMi42NDQ1NyA1OC42NzYyIDEuODM5ODFDNTcuNzkxNyAxLjM0NDE0IDU2LjgzOTQgMS4wNjg3NiA1NS43MjgyIDAuODY3MzA2QzU0LjY0OTUgMC42NzE3NTEgNTMuMzIxNCAwLjUzMDE2NSA1MS42NjU1IDAuMzUzNjMzTDQ4LjQzMzMgMC4wMDkwNDk0NkM0Ny41NjQyIC0wLjA4MzYwOTkgNDYuNzg0NSAwLjU0NTgwOSA0Ni42OTE5IDEuNDE0ODlaTTQ2LjY5MTkgNjIuNTg1MUM0Ni41OTkyIDYxLjcxNiA0Ny4yMjg2IDYwLjkzNjQgNDguMDk3OCA2MC44NDM3TDUxLjI3MDEgNjAuNTA1NUM1Mi45OTk1IDYwLjMyMTEgNTQuMjEyMyA2MC4xOTA4IDU1LjE2MzUgNjAuMDE4NEM1Ni4wOTUxIDU5Ljg0OTUgNTYuNjY4NSA1OS42NTcxIDU3LjEyODggNTkuMzk5MUM1OC4wNjUxIDU4Ljg3NDQgNTguODQxIDU4LjEwNTcgNTkuMzczNyA1Ny4xNzUzQzU5LjYzNTUgNTYuNzE4MiA1OS44MzI3IDU2LjE0NzYgNjAuMDA5MyA1NS4yMTlDNjAuMTg5MyA1NC4yNzI3IDYwLjMyOTUgNTMuMDY2IDYwLjUyNzUgNTEuMzQ2Mkw2MC44NDI2IDQ4LjIxMjlDNjAuOTMgNDcuMzQzMyA2MS43MDU5IDQ2LjcwOTIgNjIuNTc1NiA0Ni43OTY2QzYzLjQ0NTMgNDYuODg0MSA2NC4wNzk0IDQ3LjY2IDYzLjk5MTkgNDguNTI5Nkw2My42NzQ2IDUxLjY4NTZMNjMuNjY2NCA1MS43NTY4QzYzLjQ3NjEgNTMuNDA5IDYzLjMyMzUgNTQuNzM0NSA2My4xMTg4IDU1LjgxMDRDNjIuOTA4IDU2LjkxODkgNjIuNjI0MyA1Ny44NjgzIDYyLjEyMDYgNTguNzQ4QzYxLjMwMjggNjAuMTc2MiA2MC4xMTIzIDYxLjM1NTQgNTguNjc2MiA2Mi4xNjAyQzU3Ljc5MTcgNjIuNjU1OSA1Ni44Mzk0IDYyLjkzMTIgNTUuNzI4MiA2My4xMzI3QzU0LjY0OTYgNjMuMzI4MiA1My4zMjE2IDYzLjQ2OTggNTEuNjY1OCA2My42NDYzTDUxLjY2NTYgNjMuNjQ2M0w1MS42NjU1IDYzLjY0NjRMNTEuNjY1NSA2My42NDY0TDQ4LjQzMzMgNjMuOTkxQzQ3LjU2NDIgNjQuMDgzNiA0Ni43ODQ1IDYzLjQ1NDIgNDYuNjkxOSA2Mi41ODUxWk0xNy4zMDgxIDYyLjU4NTZDMTcuNDAwOCA2MS43MTY1IDE2Ljc3MTQgNjAuOTM2OSAxNS45MDIyIDYwLjg0NDJMMTIuNzI5OSA2MC41MDZDMTEuMDAwNSA2MC4zMjE2IDkuNzg3NjYgNjAuMTkxMyA4LjgzNjQ2IDYwLjAxODlDNy45MDQ4NiA1OS44NSA3LjMzMTUxIDU5LjY1NzYgNi44NzEyMSA1OS4zOTk2QzUuOTM0ODcgNTguODc0OSA1LjE1OTAxIDU4LjEwNjIgNC42MjYyNiA1Ny4xNzU4QzQuMzY0NDkgNTYuNzE4NyA0LjE2NzMxIDU2LjE0ODEgMy45OTA2NiA1NS4yMTk1QzMuODEwNjYgNTQuMjczMiAzLjY3MDU0IDUzLjA2NjUgMy40NzI0OCA1MS4zNDY3TDMuMTU3NCA0OC4yMTM0QzMuMDY5OTUgNDcuMzQzOCAyLjI5NDA2IDQ2LjcwOTcgMS40MjQzOSA0Ni43OTcxQzAuNTU0NzI2IDQ2Ljg4NDYgLTAuMDc5Mzg3NSA0Ny42NjA0IDAuMDA4MDYwMDYgNDguNTMwMUwwLjMyNTQyNCA1MS42ODYxTDAuMzMzNjIxIDUxLjc1NzNDMC41MjM4OTMgNTMuNDA5NSAwLjY3NjUzNSA1NC43MzUgMC44ODExODUgNTUuODEwOUMxLjA5MjA0IDU2LjkxOTQgMS4zNzU2OCA1Ny44Njg4IDEuODc5NDQgNTguNzQ4NUMyLjY5NzE5IDYwLjE3NjYgMy44ODc3MyA2MS4zNTU5IDUuMzIzNzggNjIuMTYwN0M2LjIwODI3IDYyLjY1NjMgNy4xNjA2IDYyLjkzMTcgOC4yNzE4IDYzLjEzMzJDOS4zNTA0NCA2My4zMjg3IDEwLjY3ODYgNjMuNDcwMyAxMi4zMzQ1IDYzLjY0NjhMMTIuMzM0NSA2My42NDY5TDE1LjU2NjcgNjMuOTkxNEMxNi40MzU4IDY0LjA4NDEgMTcuMjE1NSA2My40NTQ3IDE3LjMwODEgNjIuNTg1NlpNMTYuNDUxMiAxOS43OTU0QzE1LjY5NTUgMTkuNzk1NCAxNS4wODI4IDIwLjQwODEgMTUuMDgyOCAyMS4xNjM4VjQzLjI5NzJDMTUuMDgyOCA0NC4wNTMgMTUuNjk1NSA0NC42NjU2IDE2LjQ1MTIgNDQuNjY1NkgyMC43NDk0QzIxLjUwNTIgNDQuNjY1NiAyMi4xMTc4IDQ0LjA1MyAyMi4xMTc4IDQzLjI5NzJWMjEuMTYzOEMyMi4xMTc4IDIwLjQwODEgMjEuNTA1MiAxOS43OTU0IDIwLjc0OTQgMTkuNzk1NEgxNi40NTEyWk0yOC4xMDgyIDE5Ljc5NTRDMjcuMzUyNSAxOS43OTU0IDI2LjczOTggMjAuNDA4MSAyNi43Mzk4IDIxLjE2MzhWNDMuMjk3MkMyNi43Mzk4IDQ0LjA1MyAyNy4zNTI1IDQ0LjY2NTYgMjguMTA4MiA0NC42NjU2SDM4LjUwMDRDNDEuMjI0NCA0NC42NjU2IDQzLjY0MDUgNDQuMTU2NCA0NS43NDg3IDQzLjEzNzlDNDcuODU2OCA0Mi4xMTk0IDQ5LjQ5MTIgNDAuNjc0NiA1MC42NTE5IDM4LjgwMzRDNTEuODEyNSAzNi45MzIyIDUyLjM5MjkgMzQuNzQxMiA1Mi4zOTI5IDMyLjIzMDVDNTIuMzkyOSAyOS43MTk4IDUxLjgxMjUgMjcuNTI4OSA1MC42NTE5IDI1LjY1NzdDNDkuNDkxMiAyMy43ODY1IDQ3Ljg1NjggMjIuMzQxNyA0NS43NDg3IDIxLjMyMzJDNDMuNjQwNSAyMC4zMDQ3IDQxLjIyNDQgMTkuNzk1NCAzOC41MDA0IDE5Ljc5NTRIMjguMTA4MlpNNDMuMzMyNiAzNy4yNDAxQzQyLjA1MzUgMzguNDQ4MSA0MC4zNDggMzkuMDUyMSAzOC4yMTYyIDM5LjA1MjFIMzQuMTg1NEMzMy45NTg3IDM5LjA1MjEgMzMuNzc0OSAzOC44NjgzIDMzLjc3NDkgMzguNjQxNlYyNS44MTk1QzMzLjc3NDkgMjUuNTkyOCAzMy45NTg3IDI1LjQwOSAzNC4xODU0IDI1LjQwOUgzOC4yMTYyQzQwLjM0OCAyNS40MDkgNDIuMDUzNSAyNi4wMTMgNDMuMzMyNiAyNy4yMjFDNDQuNjM1NCAyOC40Mjg5IDQ1LjI4NjggMzAuMDk4OCA0NS4yODY4IDMyLjIzMDVDNDUuMjg2OCAzNC4zNjIzIDQ0LjYzNTQgMzYuMDMyMSA0My4zMzI2IDM3LjI0MDFaIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfODAzODBfNTQpIi8+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfODAzODBfNTQiIHgxPSIwLjc2NTgxMiIgeTE9Ii0yLjcwNDk2ZS0wNyIgeDI9IjYzLjU0MTciIHkyPSI2NC4yNzkzIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMwMEE2OTUiLz4KPHN0b3Agb2Zmc2V0PSIwLjUiIHN0b3AtY29sb3I9IiMwMTg0NzciLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDA2RjY0Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjwvZGVmcz4KPC9zdmc+Cg==\";\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDQiIGhlaWdodD0iNDQiIHZpZXdCb3g9IjAgMCA0NCA0NCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMjIiIGN5PSIyMiIgcj0iMjIiIGZpbGw9IiMwMDY2RkYiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNC40MTIgMzMuNDE5M0wyMy44ODI3IDM1Ljc2MDNDMjMuODAzNyAzNi4xMDk5IDIzLjQ2OTMgMzYuMzQwNSAyMy4xMTUyIDM2LjI4NThDMjIuMzA4IDM2LjE2MSAyMS40OSAzNi4wMTc3IDIwLjY2MzcgMzUuODU5NEMyMC4yODQyIDM1Ljc4NjcgMjAuMDQyMyAzNS40MTMzIDIwLjEyNzUgMzUuMDM2NUwyMC42MDY3IDMyLjkxN0MyMC4yNzExIDMyLjg1MTMgMTkuOTMzNCAzMi43ODAyIDE5LjU5NCAzMi43MDQyQzE5LjI4OCAzMi42MzQ0IDE4Ljk4NSAzMi41NjE1IDE4LjY4NTQgMzIuNDg1NUwxOC4yMDY0IDM0LjYwNDRDMTguMTIxMiAzNC45ODEgMTcuNzQyNiAzNS4yMTQgMTcuMzY4OSAzNS4xMTY4QzE2LjU1NDggMzQuOTA1IDE1Ljc1NDcgMzQuNjgzNiAxNC45NzIzIDM0LjQ1MDRDMTQuNjI4NCAzNC4zNDc5IDE0LjQyNTEgMzMuOTk1NSAxNC41MDQzIDMzLjY0NTVMMTUuMDMwOCAzMS4zMTY0QzkuODI2OTUgMjkuMjI5NyA2LjU0MTYxIDI1LjY4MyA3LjkzNjAzIDE5LjYyNjJMOC4yNzE1NiAxOC4xNDIxQzkuNjIwOTQgMTIuMDYyNiAxNC4xMTA5IDEwLjI4MTEgMTkuNzA1NiAxMC42MzkzTDIwLjIzMTggOC4zMTE3N0MyMC4zMTA5IDcuOTYxNzMgMjAuNjQ2IDcuNzMxMDUgMjEuMDAwNiA3Ljc4NjQ1QzIxLjgwNzIgNy45MTI0OSAyMi42MjQ3IDguMDU2ODMgMjMuNDUwNyA4LjIxNTkyQzIzLjgyOTkgOC4yODg5NSAyNC4wNzE0IDguNjYyMTMgMjMuOTg2MyA5LjAzODc1TDIzLjUwNzMgMTEuMTU3NUMyMy44MTA0IDExLjIxNzkgMjQuMTE1MyAxMS4yODI0IDI0LjQyMTUgMTEuMzUxMUMyNC43NjA5IDExLjQyNzggMjUuMDk2NSAxMS41MDgzIDI1LjQyNzcgMTEuNTkyN0wyNS45MDY1IDkuNDc1MUMyNS45OTE3IDkuMDk4MjYgMjYuMzcwNyA4Ljg2NTI4IDI2Ljc0NDUgOC45NjI4OUMyNy41NTg2IDkuMTc1NDQgMjguMzU4NiA5LjM5Nzg4IDI5LjE0MSA5LjYzMjQxQzI5LjQ4NDMgOS43MzUzNCAyOS42ODY5IDEwLjA4NzQgMjkuNjA3OSAxMC40MzdMMjkuMDgwMSAxMi43NzE3QzM0LjIxNjEgMTQuODU4IDM3LjQyNjEgMTguNDAyIDM2LjA2NDMgMjQuNDI1NkwzNS43Mjg4IDI1LjkwOTdDMzQuMzkwOSAzMS45Mzc2IDI5Ljk0OTIgMzMuNzQyMSAyNC40MTIgMzMuNDE5M1pNMzEuOTYyOSAyNC43MDM5TDMyLjE1MTcgMjMuODY4N0MzMy40ODE0IDE4LjM0MzQgMjkuMDYwMSAxNi4yNzk3IDIzLjYwOTQgMTQuOTY3NkMxOC4wOTg4IDEzLjgwMTUgMTMuMjE5NiAxMy43NjI2IDEyLjA0MzIgMTkuMzIyNkwxMS44NTQ0IDIwLjE1NzhDMTAuNTE4OSAyNS43MDg0IDE0Ljk0MDMgMjcuNzcyMSAyMC40MTY1IDI5LjA5QzI1LjkwMTYgMzAuMjUwMyAzMC43ODA3IDMwLjI4OTMgMzEuOTYyOSAyNC43MDM5WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==\";\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAF1GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4xLWMwMDMgNzkuOTY5MGE4N2ZjLCAyMDI1LzAzLzA2LTIwOjUwOjE2ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjYuMTEgKE1hY2ludG9zaCkiIHhtcDpDcmVhdGVEYXRlPSIyMDI1LTExLTE2VDAxOjA1OjMxKzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyNS0xMS0xNlQwMTowNzoxNSswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyNS0xMS0xNlQwMTowNzoxNSswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjM3ZmUzMDEtMjdjNC00ZWJlLTgxZGQtMWJhYjk2NGE5MzllIiB4bXBNTTpEb2N1bWVu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\";\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzUiIGhlaWdodD0iMzQiIHZpZXdCb3g9IjAgMCAzNSAzNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTMyLjcwNzcgMzIuNzUyMkwyNS4xNjg4IDMwLjUxNzRMMTkuNDgzMyAzMy45MDA4TDE1LjUxNjcgMzMuODk5MUw5LjgyNzkzIDMwLjUxNzRMMi4yOTIyNSAzMi43NTIyTDAgMjUuMDQ4OUwyLjI5MjI1IDE2LjQ5OTNMMCA5LjI3MDk0TDIuMjkyMjUgMC4zMTIyNTZMMTQuMDY3NCA3LjMxNTU0SDIwLjkzMjZMMzIuNzA3NyAwLjMxMjI1NkwzNSA5LjI3MDk0TDMyLjcwNzcgMTYuNDk5M0wzNSAyNS4wNDg5TDMyLjcwNzcgMzIuNzUyMloiIGZpbGw9IiNGRjVDMTYiLz4KPHBhdGggZD0iTTIuMjkzOTUgMC4zMTIyNTZMMTQuMDY5MSA3LjMyMDQ3TDEzLjYwMDggMTIuMTMwMUwyLjI5Mzk1IDAuMzEyMjU2WiIgZmlsbD0iI0ZGNUMxNiIvPgo8cGF0aCBkPSJNOS44Mjk1OSAyNS4wNTIyTDE1LjAxMDYgMjguOTgxMUw5LjgyOTU5IDMwLjUxNzVWMjUuMDUyMloiIGZpbGw9IiNGRjVDMTYiLz4KPHBhdGggZD0iTTE0LjU5NjYgMTguNTU2NUwxMy42MDA5IDEyLjEzMzNMNy4yMjY5MiAxNi41MDA5TDcuMjIzNjMgMTYuNDk5M1YxNi41MDI1TDcuMjQzMzUgMjAuOTk4M0w5LjgyODA5IDE4LjU1NjVIOS44Mjk3NEgxNC41OTY2WiIgZmlsbD0iI0ZGNUMxNiIvPgo8cGF0aCBkPSJNMzIuNzA3NyAwLjMxMjI1NkwyMC45MzI2IDcuMzIwNDdMMjEuMzk5MyAxMi4xMzAxTDMyLjcwNzcgMC4zMTIyNTZaIiBmaWxsPSIjRkY1QzE2Ii8+CjxwYXRoIGQ9Ik0yNS4xNzIyIDI1LjA1MjJMMTkuOTkxMiAyOC45ODExTDI1LjE3MjIgMzAuNTE3NVYyNS4wNTIyWiIgZmlsbD0iI0ZGNUMxNiIvPgo8cGF0aCBkPSJNMjcuNzc2NiAxNi41MDI1SDI3Ljc3ODNIMjcuNzc2NlYxNi40OTkzTDI3Ljc3NSAxNi41MDA5TDIxLjQwMSAxMi4xMzMzTDIwLjQwNTMgMTguNTU2NUgyNS4xNzIyTDI3Ljc1ODYgMjAuOTk4M0wyNy43NzY2IDE2LjUwMjVaIiBmaWxsPSIjRkY1QzE2Ii8+CjxwYXRoIGQ9Ik05LjgyNzkzIDMwLjUxNzVMMi4yOTIyNSAzMi43NTIyTDAgMjUuMDUyMkg5LjgyNzkzVjMwLjUxNzVaIiBmaWxsPSIjRTM0ODA3Ii8+CjxwYXRoIGQ9Ik0xNC41OTQ3IDE4LjU1NDlMMTYuMDM0MSAyNy44NDA2TDE0LjAzOTMgMjIuNjc3N0w3LjIzOTc1IDIwLjk5ODRMOS44MjYxMyAxOC41NTQ5SDE0LjU5M0gxNC41OTQ3WiIgZmlsbD0iI0UzNDgwNyIvPgo8cGF0aCBkPSJNMjUuMTcyMSAzMC41MTc1TDMyLjcwNzggMzIuNzUyMkwzNS4wMDAxIDI1LjA1MjJIMjUuMTcyMVYzMC41MTc1WiIgZmlsbD0iI0UzNDgwNyIvPgo8cGF0aCBkPSJNMjAuNDA1MyAxOC41NTQ5TDE4Ljk2NTggMjcuODQwNkwyMC45NjA3IDIyLjY3NzdMMjcuNzYwMiAyMC45OTg0TDI1LjE3MjIgMTguNTU0OUgyMC40MDUzWiIgZmlsbD0iI0UzNDgwNyIvPgo8cGF0aCBkPSJNMCAyNS4wNDg4TDIuMjkyMjUgMTYuNDk5M0g3LjIyMTgzTDcuMjM5OTEgMjAuOTk2N0wxNC4wMzk0IDIyLjY3NkwxNi4wMzQzIDI3LjgzODlMMTUuMDA4OSAyOC45NzZMOS44Mjc5MyAyNS4wNDcySDBWMjUuMDQ4OFoiIGZpbGw9IiNGRjhENUQiLz4KPHBhdGggZD0iTTM1LjAwMDEgMjUuMDQ4OEwzMi43MDc4IDE2LjQ5OTNIMjcuNzc4M0wyNy43NjAyIDIwLjk5NjdMMjAuOTYwNyAyMi42NzZMMTguOTY1OCAyNy44Mzg5TDE5Ljk5MTIgMjguOTc2TDI1LjE3MjIgMjUuMDQ3MkgzNS4wMDAxVjI1LjA0ODhaIiBmaWxsPSIjRkY4RDVEIi8+CjxwYXRoIGQ9Ik0yMC45MzI1IDcuMzE1NDNIMTcuNDk5OUgxNC4wNjczTDEzLjYwMDYgMTIuMTI1MUwxNi4wMzQyIDI3LjgzNEgxOC45NjU2TDIxLjQwMDggMTIuMTI1MUwyMC45MzI1IDcuMzE1NDNaIiBmaWxsPSIjRkY4RDVEIi8+CjxwYXRoIGQ9Ik0yLjI5MjI1IDAuMzEyMjU2TDAgOS4yNzA5NEwyLjI5MjI1IDE2LjQ5OTNINy4yMjE4M0wxMy41OTkxIDEyLjEzMDFMMi4yOTIyNSAwLjMxMjI1NloiIGZpbGw9IiM2NjE4MDAiLz4KPHBhdGggZD0iTTEzLjE3IDIwLjQxOTlIMTAuOTM2OUw5LjcyMDk1IDIxLjYwNjJMMTQuMDQwOSAyMi42NzI3TDEzLjE3IDIwLjQxODJWMjAuNDE5OVoiIGZpbGw9IiM2NjE4MDAiLz4KPHBhdGggZD0iTTMyLjcwNzcgMC4zMTIyNTZMMzQuOTk5OSA5LjI3MDk0TDMyLjcwNzcgMTYuNDk5M0gyNy43NzgxTDIxLjQwMDkgMTIuMTMwMUwzMi43MDc3IDAuMzEyMjU2WiIgZmlsbD0iIzY2MTgwMCIvPgo8cGF0aCBkPSJNMjEuODMzIDIwLjQxOTlIMjQuMDY5NEwyNS4yODUzIDIxLjYwNzlMMjAuOTYwNCAyMi42NzZMMjEuODMzIDIwLjQxODJWMjAuNDE5OVoiIGZpbGw9IiM2NjE4MDAiLz4KPHBhdGggZD0iTTE5LjQ4MTcgMzAuODM2MkwxOS45OTExIDI4Ljk3OTRMMTguOTY1OCAyNy44NDIzSDE2LjAzMjdMMTUuMDA3MyAyOC45Nzk0TDE1LjUxNjcgMzAuODM2MiIgZmlsbD0iIzY2MTgwMCIvPgo8cGF0aCBkPSJNMTkuNDgxNiAzMC44MzU5VjMzLjkwMjFIMTUuNTE2NlYzMC44MzU5SDE5LjQ4MTZaIiBmaWxsPSIjQzBDNENEIi8+CjxwYXRoIGQ9Ik05LjgyOTU5IDMwLjUxNDJMMTUuNTIgMzMuOTAwOFYzMC44MzQ2TDE1LjAxMDYgMjguOTc3OEw5LjgyOTU5IDMwLjUxNDJaIiBmaWxsPSIjRTdFQkY2Ii8+CjxwYXRoIGQ9Ik0yNS4xNzIxIDMwLjUxNDJMMTkuNDgxNyAzMy45MDA4VjMwLjgzNDZMMTkuOTkxMSAyOC45Nzc4TDI1LjE3MjEgMzAuNTE0MloiIGZpbGw9IiNFN0VCRjYiLz4KPC9zdmc+Cg==\";\n\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTI4IDU2YzE1LjQ2NCAwIDI4LTEyLjUzNiAyOC0yOFM0My40NjQgMCAyOCAwIDAgMTIuNTM2IDAgMjhzMTIuNTM2IDI4IDI4IDI4WiIgZmlsbD0iIzFCNTNFNCIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNyAyOGMwIDExLjU5OCA5LjQwMiAyMSAyMSAyMXMyMS05LjQwMiAyMS0yMVMzOS41OTggNyAyOCA3IDcgMTYuNDAyIDcgMjhabTE3LjIzNC02Ljc2NmEzIDMgMCAwIDAtMyAzdjcuNTMzYTMgMyAwIDAgMCAzIDNoNy41MzNhMyAzIDAgMCAwIDMtM3YtNy41MzNhMyAzIDAgMCAwLTMtM2gtNy41MzNaIiBmaWxsPSIjZmZmIi8+PC9zdmc+\";\n\n","const image =\n \"data:image/webp;base64,UklGRngEAABXRUJQVlA4IGwEAABwGgCdASqAAIAAPm00lkakIyIhLZJo4IANiWIGepzpzWVWfAfkz7VNZfrX4XyZfpY5Ve135hP6ydPjxWfVv9GH999QD/D/47rUPQA8tr9qvh98odpITg6KC6MdEPqtq8njJn8YQd8fRyCBjuASoE7gh976be39QP7ZH1EaOy2byZB4+6S1n4J1we4tNWPChOPxxBzZfuYsStcWv/tZNqcra7FT/gy1QnCQAkdw+gUNhMn35RFANgSXPFVHZFoSr9YdNxlhwS/DtBxpj4Yf0Qnyn1ZNu6NIDryzzumAAP71vcpK//N3uTN6/gf/cz+Z/IGl2OP82F2AtGYx70dIV3TDkNq9sgAhCr9IZ0HUhT+7KUeLtkqR+dPCxztN0qMTy/gT7xoQBHTf3pua3S29wTkDmy3Fsy7Lv8PTVtL4d5DjJ3QgT6S/r/RoLpXt5ckfNBuBZ5cD7q6/rSBKVrfLYRlMs8/PW5KR4PMrlV9BNfv/g3x2mjvrkNijQUMjZBeGWL8cm5JtS7/EOF5P9ze4qe1yV5zVSVFt5e+//WL+UiuNvKd6qedKWsisJogbBMgFYrymDXtX7rwy5qpOIKODEdjYEY7CDAkYcvhN9cLylaFJnB822+x+hXMltuGJXS6vpf+DkoddD4V8niiWXvf82VYQvu2agUc4/+HDH9o+hv59V9FWrvk5fNJfTvIgUkH5vCcCwDwre/O/6ftorAm9en57f1mnje373z/a1W3UpDbn5rBQsFfxl2oiKvtNeyc7bILmYZ0iKT2BTOvUMn7M6ICDBaoJqcgXpIDC5rsq6F4u2TteFi4n6sLLvkP/xXiOM3lY5srmZ5aRj/SRoHWQrdrmc+rvWyTUo7cqAq8S3QsPW3gcF09Cnxop1LydqPo8SIb8zKgJqFj+KuMY/BYxfntOPlxAD7Ehx/4fZ/cJtjDj8ZqAeuK4Ps7U3zMMVMXw9cIZE47iuLzaTpJl3avReDg2QmWLRYq3AOdhgvdD5H1IpkqcQMOWiDXt46xdgLbVT2Ae1AcmlYrb6xUGrmGgk2lIehc/Df+MRJdAHc+BmnyfR8P7gx7IJg6R0let/R14Na6KeMthUP59RT9SSo5n3YPARM1Z9nLfjDfDy16iRq10Y+2eaNT9Q1xbOf5+PULDFrojM5ABxLaZHFIu+UTUDacGy/DG/N1tqlJ7ePfOaI4pDt/QZhAb6PIVCPIJIXWgbQ/e0VK+9d2AS18H+V/KcyKz5VciEYdk+H1uB3uzeGMdIhKpR5J2JV+e1urFlNpACGuluMWUwzj6n2L72/fz5uXqrfjel5EhkCXHn77cHXY6Kfl9v28YvKSj5f3vzY+wbv8YHop9bGvu/rhBK18Ooq5RW2Kb7s3/xi+57dh2WcBpctxH2kG+9RoszJAlD07LaWub1vw6EYYsSHALEv0cUo8x53lVOWtxIr+fwYX5Jtnv8LYqeN7cAlkl/gWNhn5kus3rg0Wm7rKPongcsUaxaHrkLbdxjqEA9mX4C/AA\";\n\nexport default image;\n","export default \"data:image/webp;base64,UklGRmAEAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSD0BAAABCsi1battvlSCxmaGWrTUgLGQaLkNe8wBlRGrDNM8zGBm32ly/V9ETAC3DRcb/cnL9FS/iK4XwmqPRtxxu/7g4fNkfWrxO64T31my2hxOEbJZTu7Esq8/pyjfaVvbBWp3Z6SUwBZmypui9cTc5Jy/neLt09xA/ClinVoX8KaYPVll1aaoxVph38O651LyeoqbomhU3oF90lCJ5hR5U9MZQRvpkDvF7hY74Lp1H5z0h+A4uQd3//IBjud////7/w/wLwRHuQd3r4fg2PDBSakLjiEXnKucEbSRZrwJrZmgUfkE9k5DMXkNjKJI2vew7qmWrRossVYw4IHyhGtTfUh+iuvNvAakaW7As3hwPDG5eaB2B4USUFtb9vU7jE/altplstwaQRjqalLtOuG4XX/w8HmyPrX4nQsnYahNAQBWUDgg/AIAAHATAJ0BKoAAgAA+bTaWSCQjIiEhC7iADYlpAFVGVG5/99J5/Vd7/Zvx6/Eb47upeLfNQVn40OWGsvf/EZp1SJZ4eeKUwr+TUZu0yuMNAk4PBKF5fmL0eOz2sxlyF1k2PpU79Yw+1dd/VfsguNjNAOpujooZUvLoJkwr++tWg4MOdSMpiVVcFud3oFbBaC+w1q6Y0ih8Jyiu2FT5yd3off/EZxcAAP78rRBq1TvyDPGTtpZl6fMUoKvlLHGrtAC3XuckCfwRJnfG/aY5v+afCIPyjeFKANrccw0/eZYXfyOOymElPpcIFyn/DX0LVVChdzZGcPAMC2XCLLJfqNQLnrwVdrtp///aDQbauP7F7v0uv8UtFmP/5l0k7TnND9heE+aE4DSlRH+y/9Cx9KXkLzIJstm70HeMP4clZ1v4/6vCpX5CsJ70IuNXVGjSxs3OP9lrbuLhlcIIEc2SIGJ3qavevq/mkLkXudZ4SRo+SJpXOQuWqBRjAwTujM6fmPbC5/CYn3kwPLAFn7i92UJ9pgQN+JbG6TPsfKot9pwn+KP/VTLVvyv8aLGVn/+GmRt23RauLb8p5lk6WrB7qM1Ar9LD/ie+T2ZqIpT8ywwuSBWG37bH+0ZZqSmzKe5Q9PgQRVf9RHW7en1+w1M7OwvPKFtskA+SLeKXSb5NMYci6OzrZ/MkSWBl1XYD8Y0YE1CxlutKWGPQV7Paf1P7XQ1xLFTC8eZXqWX2oAV9TghLJj01pQgFxuvmoZGpQ9alHKf21/J4Vx74do7nSRTFJyl/L9VGrasy+tv0vcW9lbWL7j+MCdKyGh2xNTRV1oXhLA2Edu22lDIaFKT5GojhFjKc8QWDJ+bUo3km/xVNDGq0sE7TH4JM+gfqVuDsg/LZUtzFGL6SMLPJk71nRAKmzpRbTYWXl3XlTvOwzAZARyMhUDEcRGotZal/M7BwujgUYCgRQ8H3b+uRhEn6EueNF+Czzl1sG+Pe7IWuEd0aHVwiixyaqR3UWnWqQuAAAAAA\";\n\n","export default \"data:image/webp;base64,UklGRtYCAABXRUJQVlA4IMoCAABQEgCdASqAAIAAPm02lUikIyIhIRgMIIANiWkcARAAF+tSv5/99J/RB9XsAGlSc78bIl6kh58aA3sp9hIcACdBu3D9g2hv6/+Cj+HX4bF4aHqZf6VdIWSW9bl353sa70S/qFAc892uoH8pqfPiakYAgEZCSd8aEmbltGbSPYfC4wvqZ9ezQiQYdXY3/Sg5wnSqEY6FToW0wM8QAAD+/PhAW398P+Y/Ufmdv1vCJ/v/ohtwIURd/2rR9z/+gzKn28ut3UaV0u/kc/8pninuF1e9YbAaSDHUeqAZqiAKIZmaGvWme8/luxhnX1Y5rtZk3eBL47mNGYRACwVMKHRl2LA/XhZbW1Q//lM1/6ic4D/8P5eWBMjc9tvr/1w65Tf+2YqPRUfatOAWlwt+JOQ7A40WTXjruFER/7NrZ3tjVzpksA2ujmryseHaiwyiei2mbF0GTnfMG+gl4/pLxq49MTM3bfXPCtft0z77211u4sTilNvJqdSH+3Qc5KfDH6gV4GWTwPSPR/7Krf/1FykCW2n/ReCjVJEy4jLXHwRFmqnHVsOyAdxpYIW4NBe7rv+kr9D8C5N5wiRt4L0AfG/CdI29CS9gLKmX0+uFXlCWpWGI69szzq5FWPBnjpMCeYssg4Hi5PZPL2bcVsOvTE6gCi1ykg26ZH7WE/KN8u9Wagu4TcAvU5nsMn9jc1NGwCZJ1vbQI8CyIWA2LNfuDo697Mov9ngaDmN701InhXXuZFANxq3en+JToh5LyqWp6Wg1UaAbKuM4iPHX41ht3YeOvwpXKTqngULJZvmnw4BeJc387ivRN9/yK//jm2x0r2tfpbafdYlNCsxcgG8lC2z5Vz2a0LuZIotzREDZkWc2Y9BzOaysg2ZacmnelGfW5UbxjADryUb+70mYMBLvUPN/rBiQE2XcSOtSRC91yn75qvUC6XhK/lbDAAAAAAA=\";\n\n","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAiIGhlaWdodD0iODAiIHZpZXdCb3g9IjAgMCA4MCA4MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiByeD0iMTIiIGZpbGw9IiMxQzdERkMiLz4KPHJlY3Qgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiByeD0iMTIiIGZpbGw9InVybCgjcGFpbnQwX3JhZGlhbF8xXzQ2KSIvPgo8cGF0aCBkPSJNMjYuNDIyNyAzMS40NzMxQzMzLjkxNzEgMjQuMTc1NiA0Ni4wODI5IDI0LjE3NTYgNTMuNTc3MyAzMS40NzMxTDU0LjQ3OTYgMzIuMzU4QzU0Ljg1OCAzMi43MjA3IDU0Ljg1OCAzMy4zMTU1IDU0LjQ3OTYgMzMuNjc4Mkw1MS4zOTQ1IDM2LjY4MTNDNTEuMjA1MyAzNi44Njk5IDUwLjg5OTcgMzYuODY5OSA1MC43MTA1IDM2LjY4MTNMNDkuNDczNiAzNS40NzcyQzQ0LjIzNDcgMzAuMzg1IDM1Ljc2NTMgMzAuMzg1IDMwLjUyNjQgMzUuNDc3MkwyOS4yMDIxIDM2Ljc2ODRDMjkuMDEzIDM2Ljk1NyAyOC43MDc0IDM2Ljk1NyAyOC41MTgyIDM2Ljc2ODRMMjUuNDMzMSAzMy43NjUzQzI1LjA1NDcgMzMuNDAyNiAyNS4wNTQ3IDMyLjgwNzggMjUuNDMzMSAzMi40NDUxTDI2LjQyMjcgMzEuNDczMVpNNTkuOTY1OCAzNy42ODI0TDYyLjcxNjIgNDAuMzUxOEM2My4wOTQ2IDQwLjcxNDUgNjMuMDk0NiA0MS4zMDkzIDYyLjcxNjIgNDEuNjcyTDUwLjMzMjIgNTMuNzI4QzQ5Ljk1MzggNTQuMDkwNyA0OS4zNDI2IDU0LjA5MDcgNDguOTc4OCA1My43MjhMNDAuMTg5MiA0NS4xNjg0QzQwLjEwMTkgNDUuMDgxMyAzOS45NDE4IDQ1LjA4MTMgMzkuODU0NSA0NS4xNjg0TDMxLjA2NDkgNTMuNzI4QzMwLjY4NjUgNTQuMDkwNyAzMC4wNzUzIDU0LjA5MDcgMjkuNzExNSA1My43MjhMMTcuMjgzOCA0MS42NzJDMTYuOTA1NCA0MS4zMDkzIDE2LjkwNTQgNDAuNzE0NSAxNy4yODM4IDQwLjM1MThMMjAuMDM0MiAzNy42ODI0QzIwLjQxMjUgMzcuMzE5NyAyMS4wMjM3IDM3LjMxOTcgMjEuMzg3NSAzNy42ODI0TDMwLjE3NzIgNDYuMjQyQzMwLjI2NDUgNDYuMzI5IDMwLjQyNDUgNDYuMzI5IDMwLjUxMTkgNDYuMjQyTDM5LjMwMTUgMzcuNjgyNEMzOS42Nzk5IDM3LjMxOTcgNDAuMjkxIDM3LjMxOTcgNDAuNjU0OSAzNy42ODI0TDQ5LjQ0NDUgNDYuMjQyQzQ5LjUzMTggNDYuMzI5IDQ5LjY5MTkgNDYuMzI5IDQ5Ljc3OTIgNDYuMjQyTDU4LjU2ODggMzcuNjgyNEM1OC45NzYzIDM3LjMxOTcgNTkuNTg3NSAzNy4zMTk3IDU5Ljk2NTggMzcuNjgyNFoiIGZpbGw9IndoaXRlIi8+CjxkZWZzPgo8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50MF9yYWRpYWxfMV80NiIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwMDI0Nzk1NSA0MC4wMDEyKSBzY2FsZSg4MCkiPgo8c3RvcCBzdG9wLWNvbG9yPSIjNUQ5REY2Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAwNkZGRiIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPgo=\";\n\n","const image =\n \"data:image/webp;base64,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\";\n\nexport default image;\n","const image =\n \"data:image/webp;base64,UklGRioHAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSDEDAAABkIT///k23za81Jpt27Zt72pvx5rbybZt2/YylQe3T/5p8g//+g3FP3nyeXZcREwAedHQYMCs1RsOXX7w9ltuYamFd7gFUVaYtxVFkQXB7eAtpYW5394+uHhgw6rpfeoayNfDWg2ctjh++9HLD96YsvNLOCvv9AiiJCs+oUiSKHicvJUryc82vXlw6ciW2EWTB7QI8p1aveaknv1oVpg/lcren0qY0T3aF3SNxm/+xPy0+HrjqHoaLwXWmHpFYv7cdWpMRIA3DH1PS8zfu/Z30alnWFHCEOYtCFQr5piHYXRsDVKn2XOZoRRu1FCj3TeZ4ZRe1ates28KQyo9r1GdmOcywyreCKqa4ZjM0AqbNFUxrHAzvPY5usoC+5YwxJntK6txmmHeFlaRfpoEih8WUEGjywz1vloVjBdhWYb8VXMTwx0bSkS9PgK7356I5ijArGOJQlMZ8vVGan0W2p76NPAjtHtdaboZWvYow2IFmn1uwwSGfc2A7eBSZh8Dt331ZXBHNzwAd/HgG3B3LpnAPX+QDe7923xwpu8l4DJzOXB5BVZw+aU8uGKLE1wZ7wFndgjgOJcIzipI4GyijE5WwPEKPIbeDs/x/0+K8o9nh8fLMjpBAmfD5xLBWR0COI73gDNbnODKSnlwxQVWcPm5HLi87yXgMt/mgzM9zAb39pIJ3NODb8Dd3vAA3PlVl8Adnn4Y3JY+W8Al1o0Ft8KwSIJmm0VTyqBljqAB76Hd60otTkHbUYeCE6Ct1hHNEIFxI4mo22tgN1oTUfRGYOuDiIhGuWAV96e/652CtSWmAs0YFyhuAFUcvg9Uekgl1CUP0sfmVLluoQOQZYK2CqTZJsBxxWuoykE3RDDuE1qqZo2XIhTPrSCqdr0XIhD3rXBSscYNAYbrRBCpGrSJB1EeryWVNXN+Qvg4XkOq69pvs/s9Lr2ZhrwZNny/xa8VbRkQQl4OqDUk9r7VT5mvr+8fQ74Y2mHc+j33cux+xZZ1b/vqUa2DyGeN9buOmrcmZfvRi3eevTNl5eUXl5m5cpuN5+0Ob9t53mYr58xlxfl5maa3T29fOLwlaeXsEV1r60ldAFZQOCDSAwAA0BYAnQEqgACAAD5tMJBGJCMhoS+YyXCADYlCKACJ0MnWae68gXx18R5T3gP1znAeJ90gPMB50voa/1W+O+gB0o2Apvq7aoW88cqYqKPT49Cs9UX+h6jEN//Xa9mY/nyg1Fd5a6RYcgEUYe6IfrO7S+k5UjFnCzGqA5Eobp91qDbTZXLpibgeO/AaBU8wTTPFY9BVKDjcy0dZvjlmcV/WH1Dmv0mdQaWh52i+PHUJWQkIgdskt3Qq0siK+JaZMAAAzP//1ZP/9Vif/9b1n9JWKOmQ3u5ZrjR9B9WpMYB/ROgZyDpMrzxf3jXwpAd/nxrtcrwGkjnAeAKK8pR79JEzLudXBYWwC+6Sj3rKVJQP1v/17S/b3C1eYG19TByODQv5Wf0K0W5MTb5TZkM+mDv0Y3xRusexICgmxPXQzLObpP10zfPIfTUnGP9+XMXOOOYcM2uNjZzzFBtFmBEYh6crAfF9zaxSohZKsNUN22eQPUiWE48tN2QzZuvIIigAtfeAGI5gGUP9s95nIui3rL7T7jPzROrkVqEOpS3xdifJdMruI6ihc7O4Q6tmSVZvgk+V/nh9R8kC4t5ZYNGM3ERxFX67LrThOSpI+tTcBdP2nZ1PnjObN3Tz+sFjSxJYsR/dGez0+M83tQAA848rebJPusqnZScSAXPO5S173JXXKAtQqg3nmro6XrGQ+H3zSKsxBqKWZdeIsqTFT2zUcGj1dc9By0pE8/aRxFx0z8mTexQP/1TAY1xzlr5iDLrbruIpu4W2dfRyVAhKxiuiIel7cgBre+44eAUfrSxE9jy9QemCp5Kgk58L9jU/b2nZehkF0KgDgcktsZwGJR6in+xDLjil8Zai0YtzT0gp3kFo/8kWYhfidoZTX/zFlDhUN8hfHv+gQcrl12jAseqB4g8hz8x+XVmE1kqDmKRGGUYsDw2QbEdJhG5AN360qSJyOXhA+44qXWugIu1f3QGZJ/aBaeTLF4juI+utGJY0/J7x49yo/sMJljFgMwsSE3FpymrPZdEoJ8YqiQGSeMSE5zH/q4cJrKf4/5/r2iSU/0J1sIWc3Ad0Qo3GE1qth2TO2SLCiEgCrzWChnekrSfoKHSF/r+WRBI04UtzuSQCN0Q5bZFjabWDdaPcGXIZXUHWVVG28JHGa1Agb+K+Mqg0H+ZCZ/8ulLgrCQOOrlP2bRFJ8xOiZAvDSUzWD1SHX4vz9wakiJTt24z7F8U1h6AAJ4JogTIpADGoCPfj3af3OLmkfpP5a/JZ+rd11+/6QP3dlPHIhM6f2cxucW0Tg47OKSpIgAAA\";\n\nexport default image;\n","const image =\n \"data:image/webp;base64,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\";\n\nexport default image;\n","// Centralized wallet icons as data URLs\n// Note: keep these lightweight and self-contained to avoid external deps\n\n// Import per-wallet icon modules (default export is a data URL)\nimport iiIcon from './ii.js';\nimport nfidIcon from './nfid.js';\nimport oisyIcon from './oisy.js';\nimport plugIcon from './plug.js';\n\nimport metamaskIcon from './metamask.js';\nimport coinbaseIcon from './coinbase.js';\nimport rainbowIcon from './rainbow.js';\nimport ledgerIcon from './ledger.js';\nimport okxIcon from './okx.js';\nimport walletconnectIcon from './walletconnect.js'; // Disabled\nimport braveIcon from './brave.js';\nimport phantomIcon from './phantom.js';\nimport rabbyIcon from './rabby.js';\n\nconst ICONS: Record<string, string> = {\n ii: iiIcon,\n nfid: nfidIcon,\n oisy: oisyIcon,\n plug: plugIcon,\n // EVM / popular wallets\n metamask: metamaskIcon,\n coinbase: coinbaseIcon,\n rainbow: rainbowIcon,\n brave: braveIcon,\n phantom: phantomIcon,\n rabby: rabbyIcon,\n ledger: ledgerIcon,\n okx: okxIcon,\n walletconnect: walletconnectIcon\n};\n\nexport function getIcon(id: string, fallback?: string | null): string | null {\n const key = (id || '').toLowerCase();\n return ICONS[key] || fallback || null;\n}\n\n\n","import type { AdapterInterface, GetActorOptions, WalletSelectConfig, WalletAccount } from '../index.js';\nimport { getIcon } from '../img/icons.js';\nimport walletconnectIconUrl from '../img/walletconnect.js';\n\nlet wcProviderScriptLoaded = false;\nlet qrLibScriptLoaded = false;\n\n// Default WalletConnect chains authorized during pairing.\n// Include Ethereum mainnet for better compatibility with mobile wallets.\nconst DEFAULT_WC_CHAINS: number[] = [1, 8453, 84532]; // Ethereum, Base, Base Sepolia\n// Some wallets (e.g., Coinbase/Phantom) are more permissive when Ethereum mainnet (1) is allowed optionally.\nconst DEFAULT_WC_OPTIONAL_CHAINS: number[] = [1, 8453, 84532];\n\nasync function loadScriptOnce(src: string): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n const d: any = (typeof document !== 'undefined' ? document : null);\n if (!d) return resolve();\n const scripts = Array.from(d.getElementsByTagName('script')) as HTMLScriptElement[];\n const existing = scripts.find((s: HTMLScriptElement) => s && s.src === src) as HTMLScriptElement | undefined;\n if (existing) {\n // If existing script is type=\"module\", it won't expose a UMD global; inject a non-module script\n const t = String((existing as HTMLScriptElement).type || '').toLowerCase();\n if (t !== 'module') {\n return resolve();\n }\n }\n const el = d.createElement('script');\n el.src = src;\n el.async = true;\n el.onload = () => resolve();\n el.onerror = () => reject(new Error('Failed to load script: ' + src));\n d.head.appendChild(el);\n } catch {\n resolve();\n }\n });\n}\n\nasync function loadAnyScript(urls: string[]): Promise<boolean> {\n for (const url of urls) {\n try {\n await loadScriptOnce(url);\n return true;\n } catch {}\n }\n return false;\n}\n\nfunction getWcV2Ctor(g: any, cfg?: any): any | null {\n const custom = (cfg && typeof cfg.globalVar === 'string' && cfg.globalVar.trim()) ? cfg.globalVar.trim() : null;\n const cands = [\n custom ? g?.[custom]?.default : null,\n custom ? g?.[custom] : null,\n g?.['@walletconnect/ethereum-provider']?.default,\n g?.['@walletconnect/ethereum-provider'],\n g?.WalletConnect?.EthereumProvider?.default,\n g?.WalletConnect?.EthereumProvider,\n g?.EthereumProvider?.default,\n g?.EthereumProvider,\n g?.WalletConnectEthereumProvider?.default,\n g?.WalletConnectEthereumProvider,\n g?.WalletConnectProvider?.default, // v1-style global fallback\n g?.WalletConnectProvider,\n ].filter(Boolean);\n for (const c of cands) if (typeof c === 'function' || (c && typeof c.init === 'function')) return c;\n return null;\n}\n\nasync function waitFor(predicate: () => any, timeoutMs = 1500, intervalMs = 50): Promise<any> {\n const start = Date.now();\n return new Promise((resolve, reject) => {\n const tick = () => {\n try {\n const val = predicate();\n if (val) return resolve(val);\n } catch {}\n if (Date.now() - start >= timeoutMs) return resolve(null);\n setTimeout(tick, intervalMs);\n };\n tick();\n });\n}\n\n// No-op to avoid bundling heavy WC provider into widget; rely on global UMD via CDN or host-provided script\nasync function tryDynamicImportV2(): Promise<void> { return; }\n\nfunction isMobileBrowserGlobal(): boolean {\n try {\n const nav: any = (typeof navigator !== 'undefined' ? navigator : (window as any)?.navigator);\n const ua = String(nav?.userAgent || '').toLowerCase();\n return /iphone|ipad|ipod|android|mobile|windows phone/.test(ua);\n } catch {\n return false;\n }\n}\n\nfunction isAndroid(): boolean {\n try {\n const ua = String((typeof navigator !== 'undefined' ? navigator.userAgent : '') || '').toLowerCase();\n return ua.includes('android');\n } catch { return false; }\n}\n\nfunction isMetaMaskMobileUA(): boolean {\n try {\n const ua = String((typeof navigator !== 'undefined' ? navigator.userAgent : '') || '').toLowerCase();\n return ua.includes('metamask');\n } catch { return false; }\n}\n\nfunction isCoinbaseMobileUA(): boolean {\n try {\n const ua = String((typeof navigator !== 'undefined' ? navigator.userAgent : '') || '').toLowerCase();\n return ua.includes('coinbasewallet') || ua.includes('coinbase');\n } catch { return false; }\n}\n\nfunction isRainbowMobileUA(): boolean {\n try {\n const ua = String((typeof navigator !== 'undefined' ? navigator.userAgent : '') || '').toLowerCase();\n return ua.includes('rainbow');\n } catch { return false; }\n}\n\nfunction isTrustMobileUA(): boolean {\n try {\n const ua = String((typeof navigator !== 'undefined' ? navigator.userAgent : '') || '').toLowerCase();\n return ua.includes('trust') || ua.includes('trustwallet');\n } catch { return false; }\n}\n\nfunction isOkxMobileUA(): boolean {\n try {\n const ua = String((typeof navigator !== 'undefined' ? navigator.userAgent : '') || '').toLowerCase();\n return ua.includes('okx');\n } catch { return false; }\n}\n\nfunction isPhantomMobileUA(): boolean {\n try {\n const ua = String((typeof navigator !== 'undefined' ? navigator.userAgent : '') || '').toLowerCase();\n return ua.includes('phantom');\n } catch { return false; }\n}\n\nasync function ensureQrLib(): Promise<void> {\n const g: any = (typeof window !== 'undefined' ? window : {}) as any;\n if (g?.QRCode && typeof g.QRCode?.toCanvas === 'function') return;\n // Try dynamic import first (avoids CSP/CDN issues if bundled)\n try {\n const mod: any = await import(/* @vite-ignore */ 'qrcode');\n const QR = (mod && (mod.default || mod)) || null;\n if (QR && typeof QR.toCanvas === 'function') {\n (g as any).QRCode = QR;\n return;\n }\n } catch {}\n if (!qrLibScriptLoaded) {\n const ok = await loadAnyScript([\n 'https://cdn.jsdelivr.net/npm/qrcode@1.5.3/build/qrcode.min.js',\n 'https://unpkg.com/qrcode@1.5.3/build/qrcode.min.js'\n ]);\n qrLibScriptLoaded = ok;\n }\n await waitFor(() => {\n const w: any = (typeof window !== 'undefined' ? window : {}) as any;\n return w?.QRCode && typeof w.QRCode?.toCanvas === 'function';\n }, 2000, 50);\n}\n\nasync function showQrOverlay(uri: string): Promise<void> {\n try {\n const d: any = (typeof document !== 'undefined' ? document : null);\n if (!d) return;\n const openUrl = (url: string) => {\n try { window.location.href = url; } catch { try { window.open(url, '_self', 'noopener,noreferrer'); } catch {} }\n };\n // Keep track of any scheduled deep-link attempts and cancel once the user leaves the page\n const scheduled: any[] = [];\n const scheduleIfVisible = (fn: () => void, delayMs: number) => {\n try {\n const id = setTimeout(() => {\n try {\n const doc: any = (typeof document !== 'undefined' ? document : null);\n if (doc && doc.visibilityState === 'hidden') return; // user already switched to wallet\n fn();\n } catch {}\n }, delayMs) as any;\n scheduled.push(id);\n } catch {}\n };\n const clearScheduled = () => {\n try { scheduled.forEach((id) => { try { clearTimeout(id as any); } catch {} }); } catch {}\n scheduled.length = 0;\n };\n const onVisChange = () => {\n try {\n const doc: any = (typeof document !== 'undefined' ? document : null);\n if (doc && doc.visibilityState === 'hidden') {\n clearScheduled();\n }\n } catch {}\n };\n try { document.addEventListener('visibilitychange', onVisChange); } catch {}\n const openCoinbase = (wcUri: string) => {\n // Safer sequence: try universal first; if the page is still visible shortly after, try one native scheme.\n // Avoid Android intents and extra native variants to prevent bad URL pages.\n const single = encodeURIComponent(wcUri);\n // Do NOT append cb_url; Coinbase sometimes treats it as dapp-open instead of WC pairing\n const universal = `https://go.cb-w.com/wc?uri=${single}`;\n const native = `coinbasewallet://wc?uri=${single}`;\n openUrl(universal);\n // If wallet didn't open (page still visible), try native after a short delay\n scheduleIfVisible(() => openUrl(native), 600);\n // Cleanup any pending attempts after a reasonable time window\n scheduleIfVisible(() => { clearScheduled(); try { document.removeEventListener('visibilitychange', onVisChange); } catch {} }, 4000);\n };\n const createBtn = (label: string, iconKey: string | null, onClick: () => void) => {\n const btn = d.createElement('button') as HTMLButtonElement;\n btn.style.display = 'flex';\n btn.style.alignItems = 'center';\n btn.style.gap = '8px';\n btn.style.padding = '8px 12px';\n btn.style.borderRadius = '10px';\n btn.style.border = '1px solid #444';\n btn.style.background = '#2a2a2a';\n btn.style.color = '#fff';\n btn.style.cursor = 'pointer';\n btn.style.width = '100%';\n btn.style.justifyContent = 'center';\n const img = d.createElement('img') as HTMLImageElement;\n const iconUrl = iconKey ? getIcon(iconKey) : null;\n if (iconUrl) {\n img.src = iconUrl;\n img.alt = iconKey || 'wallet';\n img.style.width = '18px';\n img.style.height = '18px';\n img.style.display = 'block';\n btn.appendChild(img);\n }\n const span = d.createElement('span') as HTMLSpanElement;\n span.textContent = label;\n span.style.fontSize = '13px';\n btn.appendChild(span);\n btn.onclick = (e) => { try { e.preventDefault(); } catch {} try { onClick(); } catch {} };\n return btn;\n };\n let overlay = d.getElementById('icpay-wc-overlay') as HTMLElement | null;\n if (!overlay) {\n const ov = d.createElement('div') as HTMLElement;\n ov.id = 'icpay-wc-overlay';\n ov.style.position = 'fixed';\n ov.style.inset = '0';\n ov.style.background = 'rgba(0,0,0,0.55)';\n ov.style.display = 'flex';\n ov.style.alignItems = 'center';\n ov.style.justifyContent = 'center';\n ov.style.zIndex = '999999';\n const box = d.createElement('div');\n box.style.background = '#1a1a1a';\n box.style.border = '1px solid #333';\n box.style.borderRadius = '16px';\n box.style.padding = '16px';\n box.style.width = '320px';\n box.style.boxShadow = '0 10px 30px rgba(0,0,0,0.4)';\n box.style.display = 'flex';\n box.style.flexDirection = 'column';\n box.style.alignItems = 'center';\n const title = d.createElement('div');\n title.textContent = 'Connect with your wallet';\n title.style.color = '#fff';\n title.style.fontSize = '16px';\n title.style.marginBottom = '12px';\n const canvas = d.createElement('canvas');\n canvas.id = 'icpay-wc-qr-canvas';\n canvas.style.width = '260px';\n canvas.style.height = '260px';\n canvas.style.background = '#fff';\n canvas.style.borderRadius = '8px';\n const isMobile = isMobileBrowserGlobal();\n if (isMobile) {\n const linksWrap = d.createElement('div');\n linksWrap.style.display = 'flex';\n linksWrap.style.flexDirection = 'column';\n linksWrap.style.alignItems = 'stretch';\n linksWrap.style.gap = '8px';\n linksWrap.style.width = '100%';\n const setWaitingState = () => {\n try {\n title.textContent = 'Waiting for approval in your wallet...';\n linksWrap.style.pointerEvents = 'none';\n linksWrap.style.opacity = '0.7';\n } catch {}\n };\n // Explicit wallet universal links (no raw wc:, no walletconnect.com chooser)\n linksWrap.appendChild(createBtn('MetaMask with WalletConnect', 'metamask', () => {\n setWaitingState();\n openUrl(`https://metamask.app.link/wc?uri=${encodeURIComponent(uri)}`);\n }));\n linksWrap.appendChild(createBtn('OKX Wallet with WalletConnect', 'okx', () => {\n setWaitingState();\n openUrl(`okx://wallet/wc?uri=${encodeURIComponent(uri)}`);\n }));\n box.appendChild(linksWrap);\n }\n const close = d.createElement('button');\n close.textContent = 'Close';\n close.style.marginTop = '12px';\n close.style.background = '#2a2a2a';\n close.style.color = '#fff';\n close.style.border = '1px solid #444';\n close.style.padding = '6px 10px';\n close.style.borderRadius = '8px';\n close.onclick = () => { try { const cur = d.getElementById('icpay-wc-overlay'); if (cur && cur.parentNode) cur.parentNode.removeChild(cur); } catch {} };\n box.appendChild(title);\n if (!isMobile) {\n box.appendChild(canvas);\n }\n box.appendChild(close);\n ov.appendChild(box);\n d.body.appendChild(ov);\n overlay = ov;\n }\n const canvas = d.getElementById('icpay-wc-qr-canvas') as HTMLCanvasElement | null;\n // On desktop we draw QR; on mobile we rely on wallet buttons and skip QR\n const isMobile = isMobileBrowserGlobal();\n if (!isMobile) {\n await ensureQrLib();\n const w: any = (typeof window !== 'undefined' ? window : {}) as any;\n if (canvas && w?.QRCode?.toCanvas) {\n try { w.QRCode.toCanvas(canvas, uri, { width: 260, margin: 2 }); } catch {}\n }\n }\n } catch {}\n}\n\nfunction hideQrOverlay(): void {\n try {\n const d: any = (typeof document !== 'undefined' ? document : null);\n const overlay = d?.getElementById('icpay-wc-overlay');\n if (overlay && overlay.parentNode) overlay.parentNode.removeChild(overlay);\n } catch {}\n}\n\nexport class WalletConnectAdapter implements AdapterInterface {\n readonly id = 'walletconnect';\n readonly label = 'WalletConnect';\n readonly icon?: string | null;\n private readonly config: WalletSelectConfig;\n private wcProvider: any | null = null;\n private wcProviderProxy: any | null = null;\n private wcRedirect: { native?: string; universal?: string } | null = null;\n private lastDisplayUri: string | null = null;\n private autoOpenedWcDeepLink = false;\n private autoOpenedPhantom = false;\n\n constructor(args: { config: WalletSelectConfig }) {\n this.config = args.config || {};\n }\n\n private getAdapterConfig(): any {\n try {\n return (this.config as any)?.adapters?.walletconnect?.config || {};\n } catch {\n return {};\n }\n }\n\n private getInjectedWcProvider(): any | null {\n try {\n const anyWin: any = (typeof window !== 'undefined' ? window : {}) as any;\n const eth = anyWin.ethereum;\n if (Array.isArray(eth?.providers)) {\n const p = eth.providers.find((p: any) => p && (p.isWalletConnect || p?.provider?.isWalletConnect));\n if (p) return p;\n }\n if (eth && (eth.isWalletConnect || eth?.provider?.isWalletConnect)) return eth;\n } catch {}\n return null;\n }\n\n getEvmProvider(): any {\n if (this.wcProviderProxy) return this.wcProviderProxy;\n if (this.wcProvider) return this.wcProvider;\n return this.getInjectedWcProvider();\n }\n\n async isInstalled(): Promise<boolean> {\n try {\n if (this.getInjectedWcProvider()) return true;\n const g: any = (typeof window !== 'undefined' ? window : {}) as any;\n const hasV2 = !!getWcV2Ctor(g);\n const cfg = this.getAdapterConfig();\n const hasProjectId = !!(cfg.projectId || cfg.projectID);\n // Only consider WC available if a projectId is configured (unless injected WC provider exists)\n if (hasV2 && hasProjectId) return true;\n return false;\n } catch {\n return false;\n }\n }\n\n async isConnected(): Promise<boolean> {\n try {\n const provider = this.getEvmProvider();\n if (!provider) return false;\n const accounts = await provider.request?.({ method: 'eth_accounts' });\n return Array.isArray(accounts) && accounts.length > 0;\n } catch {\n return false;\n }\n }\n\n private async ensureV2Globals(cfg: any): Promise<void> {\n const g: any = (typeof window !== 'undefined' ? window : {}) as any;\n await tryDynamicImportV2();\n if (!getWcV2Ctor(g, cfg)) {\n // Load self-hosted (or custom) UMD scripts only.\n if (!wcProviderScriptLoaded) {\n const custom = (cfg && (cfg.umdUrls || cfg.umdUrl)) || null;\n // Try self-hosted relative to current script first\n const selfUrls: string[] = [];\n try {\n const d: any = (typeof document !== 'undefined' ? document : null);\n if (d) {\n const scripts = Array.from(d.getElementsByTagName('script')) as HTMLScriptElement[];\n const isRelevant = (u: string) => {\n const v = u.toLowerCase();\n return v.includes('icpay-embed') || v.includes('widget.icpay') || v.includes('icpay-widget');\n };\n scripts.forEach((s: HTMLScriptElement) => {\n try {\n const src = String(s?.src || '');\n if (!src || !isRelevant(src)) return;\n const idx = src.lastIndexOf('/');\n if (idx > 0) {\n const base = src.slice(0, idx);\n selfUrls.push(`${base}/wc/index.umd.js`, `${base}/index.umd.js`);\n }\n } catch {}\n });\n }\n } catch {}\n // WordPress plugin well-known locations (same-origin)\n const origin = (typeof window !== 'undefined' && (window as any).location && (window as any).location.origin)\n ? (window as any).location.origin\n : '';\n const wpUrls: string[] = origin\n ? [\n `${origin}/wp-content/plugins/icpay-payments/assets/js/wc/index.umd.js`,\n `${origin}/wp-content/plugins/instant-crypto-payments-for-woocommerce/assets/js/wc/index.umd.js`,\n ]\n : [];\n const urls: string[] = [\n ...(Array.isArray(custom)\n ? custom.filter(Boolean)\n : (typeof custom === 'string' && custom.trim() ? [custom.trim()] : [])),\n ...selfUrls,\n ...wpUrls,\n ];\n const ok = await loadAnyScript(urls);\n wcProviderScriptLoaded = ok;\n }\n await waitFor(() => getWcV2Ctor((typeof window !== 'undefined' ? window : {}) as any, cfg), 2000, 100);\n }\n }\n\n private isMobileBrowser(): boolean {\n try {\n const nav: any = (typeof navigator !== 'undefined' ? navigator : (window as any)?.navigator);\n const ua = String(nav?.userAgent || '').toLowerCase();\n return /iphone|ipad|ipod|android|mobile|windows phone/.test(ua);\n } catch {\n return false;\n }\n }\n\n private openWalletAppIfPossible(): void {\n if (!this.isMobileBrowser()) return;\n try {\n const redirect = this.wcRedirect || {};\n const url = redirect.native || redirect.universal || '';\n if (!url) return;\n try { window.location.href = url; } catch { try { window.open(url, '_self', 'noopener,noreferrer'); } catch {} }\n } catch {}\n }\n\n private wrapProviderForMobileWake(provider: any): any {\n if (!provider || typeof provider.request !== 'function') return provider;\n const shouldWake = (method?: string) => {\n if (!this.isMobileBrowser()) return false;\n if (!method) return false;\n const m = method.toLowerCase();\n // Methods that will require user approval in wallet app\n return (\n m === 'eth_sendtransaction' ||\n m === 'eth_signtransaction' ||\n m === 'eth_sign' ||\n m === 'personal_sign' ||\n m === 'eth_signtypeddata' ||\n m === 'eth_signtypeddata_v3' ||\n m === 'eth_signtypeddata_v4' ||\n m === 'wallet_switchethereumchain' ||\n m === 'wallet_addethereumchain' ||\n m === 'wallet_requestpermissions'\n );\n };\n const self = this;\n const proxy = new Proxy(provider, {\n get(target: any, prop: PropertyKey, receiver: any) {\n if (prop === 'request') {\n return async function (args: any) {\n try {\n const method = (args && (args.method || (typeof args === 'object' && args?.method))) as string | undefined;\n if (shouldWake(method)) {\n // Attempt to foreground the wallet app before sending the request\n self.openWalletAppIfPossible();\n // brief delay to allow OS to start the app switch\n try { await new Promise((r) => setTimeout(r, 50)); } catch {}\n }\n } catch {}\n return target.request.apply(target, arguments as any);\n };\n }\n return Reflect.get(target, prop, receiver);\n }\n });\n return proxy;\n }\n\n private async initGlobalProvider(): Promise<any | null> {\n try {\n const g: any = (typeof window !== 'undefined' ? window : {}) as any;\n const cfg = this.getAdapterConfig();\n\n const hasProjectId = !!(cfg.projectId || cfg.projectID);\n if (!hasProjectId) return null;\n\n await this.ensureV2Globals(cfg);\n let EthereumProviderCtor: any = getWcV2Ctor(g, cfg);\n if (!EthereumProviderCtor) {\n EthereumProviderCtor = await waitFor(() => getWcV2Ctor((typeof window !== 'undefined' ? window : {}) as any, cfg), 4000, 100);\n }\n if (!EthereumProviderCtor) return null; // not available\n try {\n if ((this.config as any)?.debug) {\n console.debug('[ICPay WC] Using ctor', {\n isFn: typeof EthereumProviderCtor === 'function',\n hasInit: !!(EthereumProviderCtor && typeof EthereumProviderCtor.init === 'function'),\n name: (EthereumProviderCtor && (EthereumProviderCtor.name || EthereumProviderCtor.constructor?.name)) || 'unknown'\n });\n }\n } catch {}\n const projectId = String(cfg.projectId || cfg.projectID);\n // Do not allow site config to pick chains; the widget controls networks.\n const chains: number[] = DEFAULT_WC_CHAINS.slice();\n const optionalChains: number[] = DEFAULT_WC_OPTIONAL_CHAINS.slice();\n // Be explicit about methods/events to match wallet expectations (Coinbase, etc.)\n const methods: string[] = [\n 'eth_requestAccounts',\n 'eth_accounts',\n 'eth_chainId',\n 'personal_sign',\n 'eth_sign',\n 'eth_signTypedData',\n 'eth_signTypedData_v3',\n 'eth_signTypedData_v4',\n 'eth_sendTransaction',\n 'wallet_switchEthereumChain',\n 'wallet_addEthereumChain'\n ];\n const events: string[] = [\n 'accountsChanged',\n 'chainChanged',\n 'connect',\n 'disconnect',\n 'message'\n ];\n // Build robust dapp metadata; wallets like Coinbase/Phantom require non-empty values and HTTPS icons\n const siteOrigin = (() => {\n try {\n const o = String(g?.location?.origin || '').trim();\n return (o && /^https?:\\/\\//.test(o)) ? o : 'https://widget.icpay.org';\n } catch { return 'https://widget.icpay.org'; }\n })();\n const metaName = (() => {\n try {\n const n = String((cfg?.metadata?.name || g?.document?.title || 'ICPay Widget')).trim();\n return n || 'ICPay Widget';\n } catch { return 'ICPay Widget'; }\n })();\n const metaDesc = (() => {\n try {\n const d = String((cfg?.metadata?.description || 'ICPay mobile connect')).trim();\n return d || 'ICPay mobile connect';\n } catch { return 'ICPay mobile connect'; }\n })();\n const metaUrl = (() => {\n try {\n const u = String((cfg?.metadata?.url || siteOrigin)).trim();\n return u || siteOrigin;\n } catch { return siteOrigin; }\n })();\n const metaIcons = (() => {\n try {\n const fromCfg = (Array.isArray(cfg?.metadata?.icons) ? cfg?.metadata?.icons : (Array.isArray(cfg?.icons) ? cfg?.icons : null)) || null;\n const candidates = (fromCfg && fromCfg.length > 0)\n ? fromCfg\n : [siteOrigin + '/favicon.ico', siteOrigin + '/apple-touch-icon.png'];\n const httpsOnly = (candidates as any[]).filter((i: any) => typeof i === 'string' && /^https?:\\/\\//.test(i as string)) as string[];\n return httpsOnly.length > 0 ? httpsOnly : [siteOrigin + '/favicon.ico'];\n } catch {\n return [siteOrigin + '/favicon.ico'];\n }\n })();\n const metadata = { name: metaName, description: metaDesc, url: metaUrl, icons: metaIcons };\n // Force showQrModal false to use our custom overlay\n const provider = typeof EthereumProviderCtor.init === 'function'\n ? await EthereumProviderCtor.init({\n projectId,\n chains,\n optionalChains,\n showQrModal: false,\n metadata,\n relayUrl: 'wss://relay.walletconnect.com',\n methods,\n optionalMethods: methods,\n events,\n optionalEvents: events\n })\n : new EthereumProviderCtor({\n projectId,\n chains,\n optionalChains,\n showQrModal: false,\n metadata,\n relayUrl: 'wss://relay.walletconnect.com',\n methods,\n optionalMethods: methods,\n events,\n optionalEvents: events\n });\n\n // Listen for display_uri to render our QR (and mobile deep-link choices)\n try {\n await ensureQrLib();\n provider.on?.( 'display_uri', (uri: string) => {\n try { this.lastDisplayUri = uri; } catch {}\n try { showQrOverlay(uri); } catch {}\n } );\n provider.on?.('disconnect', () => { try { hideQrOverlay(); } catch {} });\n } catch {}\n\n // Do not call enable() here; connect flow is triggered explicitly in connect()\n return provider;\n } catch {\n return null;\n }\n }\n\n async connect(): Promise<WalletAccount> {\n // Proactively clear stale WalletConnect v1/v2 residues that can block mobile approval screens\n try {\n const keysToNuke: string[] = [];\n for (let i = 0; i < localStorage.length; i++) {\n const k = localStorage.key(i) as string;\n if (!k) continue;\n if (\n k === 'walletconnect' ||\n k.startsWith('wc@') ||\n k.startsWith('@walletconnect/') ||\n k.toLowerCase().includes('walletconnect')\n ) {\n keysToNuke.push(k);\n }\n }\n keysToNuke.forEach((k) => { try { localStorage.removeItem(k); } catch {} });\n } catch {}\n const injected = this.getInjectedWcProvider();\n if (injected) {\n this.wcProvider = injected;\n this.wcProviderProxy = this.wrapProviderForMobileWake(this.wcProvider);\n const accounts = await this.wcProviderProxy.request({ method: 'eth_requestAccounts' });\n const addr = Array.isArray(accounts) ? (accounts[0] || '') : '';\n if (!addr) throw new Error('No account returned by WalletConnect');\n return { owner: addr, principal: addr, connected: true };\n }\n\n const provider = await this.initGlobalProvider();\n if (provider) {\n this.wcProvider = provider;\n try {\n // Capture redirect metadata if available to foreground wallet app on mobile\n const redirect = (provider?.session?.peer?.metadata?.redirect) || (provider?.session?.peer?.metadata?.redirects) || null;\n if (redirect && (redirect.native || redirect.universal)) {\n this.wcRedirect = { native: redirect.native, universal: redirect.universal };\n }\n } catch {}\n // Ensure clean session state before starting a fresh connect\n try { await this.wcProvider.disconnect?.(); } catch {}\n this.wcProviderProxy = this.wrapProviderForMobileWake(this.wcProvider);\n // Explicitly trigger WC connect to emit display_uri and wait for pairing\n try { await this.wcProviderProxy.connect?.({ chains: DEFAULT_WC_CHAINS.slice(), optionalChains: DEFAULT_WC_OPTIONAL_CHAINS.slice() }); } catch {}\n // Proactively request accounts (some wallets, e.g. Coinbase, require this after pairing)\n try { await this.wcProviderProxy.request?.({ method: 'eth_requestAccounts' }); } catch {}\n // Some providers expose enable(); try it as an additional nudge\n try { await this.wcProviderProxy.enable?.(); } catch {}\n // Listen for connect and try fetching accounts when it fires\n try {\n this.wcProviderProxy.on?.('connect', async () => {\n try {\n const a = await this.wcProviderProxy.request?.({ method: 'eth_accounts' });\n if (Array.isArray(a) && a.length > 0) { try { hideQrOverlay(); } catch {} }\n } catch {}\n });\n } catch {}\n // Wait for accounts to be available (poll + event fallback)\n const waitForAccounts = async (timeoutMs = 60000): Promise<string[]> => {\n const start = Date.now();\n return new Promise<string[]>(async (resolve, reject) => {\n let done = false;\n const finish = (accts: string[] | null, err?: any) => {\n if (done) return;\n done = true;\n try { hideQrOverlay(); } catch {}\n if (accts && accts.length > 0) resolve(accts);\n else reject(err || new Error('No account returned by WalletConnect'));\n };\n try {\n const onAccounts = (accts: any) => {\n const a = Array.isArray(accts) ? accts : [];\n if (a.length > 0) finish(a);\n };\n const onVisibility = async () => {\n try {\n const doc: any = (typeof document !== 'undefined' ? document : null);\n if (doc && doc.visibilityState === 'visible') {\n try { await this.wcProviderProxy.request?.({ method: 'eth_requestAccounts' }); } catch {}\n // As a last resort, try to re-connect the provider to prompt wallet again\n try { await this.wcProviderProxy.connect?.(); } catch {}\n // If still no accounts and we have a pending WC URI, avoid auto-redirects; user can tap a wallet again\n try {\n const aNow = await this.wcProviderProxy.request?.({ method: 'eth_accounts' });\n const noAcc = !(Array.isArray(aNow) && aNow.length > 0);\n // no auto navigation here\n } catch {}\n }\n } catch {}\n };\n this.wcProviderProxy.on?.('accountsChanged', onAccounts);\n try { document.addEventListener('visibilitychange', onVisibility); } catch {}\n // Poll as a fallback in case events don't fire\n while (!done && Date.now() - start < timeoutMs) {\n try {\n const a1 = await this.wcProviderProxy.request?.({ method: 'eth_accounts' });\n if (Array.isArray(a1) && a1.length > 0) {\n this.wcProviderProxy.removeListener?.('accountsChanged', onAccounts);\n try { document.removeEventListener('visibilitychange', onVisibility); } catch {}\n return finish(a1);\n }\n } catch {}\n await new Promise(r => setTimeout(r, 500));\n }\n this.wcProviderProxy.removeListener?.('accountsChanged', onAccounts);\n try { document.removeEventListener('visibilitychange', onVisibility); } catch {}\n finish(null, new Error('Timed out waiting for WalletConnect approval'));\n } catch (e) {\n finish(null, e);\n }\n });\n };\n const accounts = await waitForAccounts();\n const addr = Array.isArray(accounts) ? (accounts[0] || '') : '';\n if (!addr) throw new Error('No account returned by WalletConnect');\n return { owner: addr, principal: addr, connected: true };\n }\n\n const cfg = this.getAdapterConfig();\n const hasProjectId = !!(cfg?.projectId || cfg?.projectID);\n if (!hasProjectId) {\n throw new Error('WalletConnect projectId is not configured. Set plugNPlay.adapters.walletconnect.config.projectId to enable WalletConnect.');\n }\n throw new Error('WalletConnect provider not available. Ensure the self-hosted EthereumProvider UMD is available (dist/wc/index.umd.js) or provide plugNPlay.adapters.walletconnect.config.umdUrls.');\n }\n\n async disconnect(): Promise<void> {\n try {\n const provider = this.getEvmProvider();\n try { await provider?.disconnect?.(); } catch {}\n try { await provider?.disconnectSession?.(); } catch {}\n try { hideQrOverlay(); } catch {}\n try {\n const keysToNuke: string[] = [];\n for (let i = 0; i < localStorage.length; i++) {\n const k = localStorage.key(i) as string;\n if (!k) continue;\n if (k === 'walletconnect' || k.startsWith('wc@') || k.startsWith('@walletconnect/') || k.includes('WALLETCONNECT')) {\n keysToNuke.push(k);\n }\n }\n keysToNuke.forEach((k) => { try { localStorage.removeItem(k); } catch {} });\n } catch {}\n try { provider?.removeAllListeners?.('accountsChanged'); } catch {}\n try { provider?.removeAllListeners?.('chainChanged'); } catch {}\n try { provider?.removeAllListeners?.('disconnect'); } catch {}\n this.wcProvider = null;\n } catch {}\n }\n\n async getPrincipal(): Promise<string | null> {\n try {\n const provider = this.getEvmProvider();\n if (!provider) return null;\n const accounts = await provider.request?.({ method: 'eth_accounts' });\n const addr = Array.isArray(accounts) ? (accounts[0] || '') : '';\n return addr || null;\n } catch {\n return null;\n }\n }\n\n getActor<T>(options: GetActorOptions): any {\n throw new Error('EVM wallets cannot provide IC actors. Use IC adapters for IC canister interactions.');\n }\n}\n\n\n","import type { AdapterInterface, GetActorOptions, WalletSelectConfig, WalletAccount } from '../index.js';\nimport { Actor, HttpAgent } from '@dfinity/agent';\n\ndeclare global {\n\tinterface Window {\n\t\tcoinbaseWalletExtension?: any;\n\t\tethereum?: any;\n\t}\n}\n\nfunction isMobileBrowser(): boolean {\n\ttry {\n\t\tconst nav: any = (typeof navigator !== 'undefined' ? navigator : (window as any)?.navigator);\n\t\tconst ua = String(nav?.userAgent || '').toLowerCase();\n\t\treturn /iphone|ipad|ipod|android|mobile|windows phone/.test(ua);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction getCoinbaseProvider(): any | null {\n\ttry {\n\t\tconst anyWin: any = (typeof window !== 'undefined' ? window : {}) as any;\n\t\t// Prefer dedicated extension handle if available\n\t\tif (anyWin.coinbaseWalletExtension) return anyWin.coinbaseWalletExtension;\n\t\t// Fallback to injected ethereum with coinbase flag\n\t\tconst eth = anyWin.ethereum;\n\t\tif (eth && Array.isArray(eth.providers)) {\n\t\t\tconst cb = eth.providers.find((p: any) => p && (p.isCoinbaseWallet || p?.provider?.isCoinbaseWallet));\n\t\t\tif (cb) return cb;\n\t\t}\n\t\tif (eth && (eth.isCoinbaseWallet || eth?.provider?.isCoinbaseWallet)) return eth;\n\t\t// Mobile in-app browsers sometimes miss flags; accept generic provider on mobile\n\t\tif (isMobileBrowser() && eth && typeof eth.request === 'function') return eth;\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport class CoinbaseAdapter implements AdapterInterface {\n readonly id = 'coinbase';\n readonly label = 'Coinbase Wallet';\n readonly icon?: string | null;\n private readonly config: WalletSelectConfig;\n getEvmProvider(): any { return getCoinbaseProvider(); }\n\n constructor(args: { config: WalletSelectConfig }) {\n this.config = args.config || {};\n }\n\n async isInstalled(): Promise<boolean> {\n\t\ttry {\n\t\t\treturn !!getCoinbaseProvider();\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n async isConnected(): Promise<boolean> {\n\t\ttry {\n\t\t\tconst provider = getCoinbaseProvider();\n\t\t\tif (!provider) return false;\n\t\t\tconst accounts = await provider.request({ method: 'eth_accounts' });\n\t\t\treturn Array.isArray(accounts) && accounts.length > 0;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n async connect(): Promise<WalletAccount> {\n\t\tlet provider = getCoinbaseProvider();\n\t\tif (!provider) {\n\t\t\t// Deep link to Coinbase Wallet in-app browser on mobile\n\t\t\tif (typeof window !== 'undefined' && isMobileBrowser()) {\n\t\t\t\ttry {\n\t\t\t\t\tconst href = String(window.location?.href || '');\n\t\t\t\t\tconst deepLink = `https://go.cb-w.com/dapp?cb_url=${encodeURIComponent(href)}`;\n\t\t\t\t\ttry { window.dispatchEvent(new CustomEvent('icpay-sdk-wallet-deeplink', { detail: { wallet: 'coinbase', url: deepLink } })); } catch {}\n\t\t\t\t\ttry { window.location.href = deepLink; } catch { try { window.open(deepLink, '_self', 'noopener,noreferrer'); } catch {} }\n\t\t\t\t} catch {}\n\t\t\t\tthrow new Error('Opening Coinbase Wallet… If nothing happens, install Coinbase Wallet and try again.');\n\t\t\t}\n\t\t\tthrow new Error('Coinbase Wallet not available');\n\t\t}\n\t\t// Robust request with retries and permissions fallback\n\t\tconst delay = (ms: number) => new Promise((res) => setTimeout(res, ms));\n\t\tconst getAccountsOnce = async (): Promise<string[]> => {\n\t\t\ttry {\n\t\t\t\tconst a1 = await provider.request?.({ method: 'eth_accounts' });\n\t\t\t\tif (Array.isArray(a1) && a1.length > 0) return a1;\n\t\t\t} catch {}\n\t\t\ttry {\n\t\t\t\tconst a2 = await provider.request?.({ method: 'eth_requestAccounts' });\n\t\t\t\tif (Array.isArray(a2) && a2.length > 0) return a2;\n\t\t\t} catch (err: any) {\n\t\t\t\tif (err && (err.code === 4001 || err.code === '4001')) {\n\t\t\t\t\tthrow new Error('Connection request was rejected');\n\t\t\t\t}\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait provider.request?.({ method: 'wallet_requestPermissions', params: [{ eth_accounts: {} }] });\n\t\t\t\tconst a3 = await provider.request?.({ method: 'eth_accounts' });\n\t\t\t\tif (Array.isArray(a3) && a3.length > 0) return a3;\n\t\t\t} catch {}\n\t\t\treturn [];\n\t\t};\n\t\tlet accounts: string[] = [];\n\t\tfor (let i = 0; i < 3 && accounts.length === 0; i++) {\n\t\t\tprovider = getCoinbaseProvider() || provider;\n\t\t\taccounts = await getAccountsOnce();\n\t\t\tif (accounts.length === 0) await delay(300);\n\t\t}\n\t\tconst addr = Array.isArray(accounts) ? (accounts[0] || '') : '';\n\t\tif (!addr) throw new Error('No account returned by Coinbase Wallet');\n\t\treturn { owner: addr, principal: addr, connected: true };\n\t}\n\n async disconnect(): Promise<void> {\n try {\n const provider = getCoinbaseProvider();\n if (!provider) return;\n try { await provider.request?.({ method: 'wallet_requestPermissions', params: [{ eth_accounts: {} }] }); } catch {}\n try { provider.removeAllListeners?.('accountsChanged'); } catch {}\n try { provider.removeAllListeners?.('chainChanged'); } catch {}\n try { provider.removeAllListeners?.('disconnect'); } catch {}\n } catch {}\n }\n // Attempt to trigger Coinbase extension account change UI if available\n // Coinbase extension doesn't provide a standard disconnect; we simply clear dapp state\n // and rely on a fresh connect to prompt the user.\n\n async getPrincipal(): Promise<string | null> {\n try {\n const provider = getCoinbaseProvider();\n if (!provider) return null;\n const accounts = await provider.request({ method: 'eth_accounts' });\n const addr = Array.isArray(accounts) ? (accounts[0] || '') : '';\n return addr || null;\n } catch {\n return null;\n }\n }\n\n getActor<T>(options: GetActorOptions): any {\n throw new Error('EVM wallets cannot provide IC actors. Use IC adapters for IC canister interactions.');\n }\n}\n\n\n","import type { AdapterInterface, GetActorOptions, WalletSelectConfig, WalletAccount } from '../index.js';\n\ndeclare global {\n\tinterface Window {\n\t\tethereum?: any;\n\t\tbrave?: any;\n\t\tnavigator?: any;\n\t}\n}\n\nfunction isBraveBrowser(): boolean {\n\ttry {\n\t\tconst nav: any = (typeof navigator !== 'undefined' ? navigator : (window as any)?.navigator);\n\t\treturn !!(nav && (nav.brave || String(nav.userAgent || '').toLowerCase().includes('brave')));\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction getBraveProviderInternal(allowFallback: boolean): any | null {\n\ttry {\n\t\tconst anyWin: any = (typeof window !== 'undefined' ? window : {}) as any;\n\t\t// Some builds expose a dedicated handle\n\t\tif (anyWin.brave?.ethereum) return anyWin.brave.ethereum;\n\t\tconst eth = anyWin.ethereum;\n\t\tif (!eth) return null;\n\t\t// Prefer explicit Brave provider if multiple are present\n\t\tif (Array.isArray(eth.providers) && eth.providers.length) {\n\t\t\tconst byFlag = eth.providers.find((p: any) => p && (p.isBraveWallet || (p?.walletMeta?.name && String(p.walletMeta.name).toLowerCase().includes('brave'))));\n\t\t\tif (byFlag) return byFlag;\n\t\t\t// If running in Brave and fallback explicitly allowed, allow a cautious fallback to a non-branded provider\n\t\t\tif (allowFallback && isBraveBrowser()) {\n\t\t\t\tconst candidate = eth.providers.find(\n\t\t\t\t\t(p: any) => p && typeof p.request === 'function' && !p.isMetaMask && !p.isCoinbaseWallet && !p.isRabby && !p.isOkxWallet && !p.isOKExWallet && !p.isPhantom\n\t\t\t\t);\n\t\t\t\tif (candidate) return candidate;\n\t\t\t\t// As a last resort (explicitly opted-in), return the first provider\n\t\t\t\treturn eth.providers[0] || null;\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t\t// Single provider case\n\t\tif (eth.isBraveWallet) return eth;\n\t\tconst name = eth?.walletMeta?.name ? String(eth.walletMeta.name).toLowerCase() : '';\n\t\tif (name.includes('brave')) return eth;\n\t\t// If in Brave, fallback explicitly allowed, and it isn't obviously another brand, allow fallback\n\t\tif (allowFallback && isBraveBrowser() && typeof eth.request === 'function' && !eth.isMetaMask && !eth.isCoinbaseWallet && !eth.isRabby && !eth.isOkxWallet && !eth.isOKExWallet && !eth.isPhantom) {\n\t\t\treturn eth;\n\t\t}\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport class BraveAdapter implements AdapterInterface {\n\treadonly id = 'brave';\n\treadonly label = 'Brave Wallet';\n\treadonly icon?: string | null;\n\tprivate readonly config: WalletSelectConfig;\n\n\tconstructor(args: { config: WalletSelectConfig }) {\n\t\tthis.config = args.config || {};\n\t}\n\n\tprivate getProvider(): any | null {\n\t\t// Always enable fallback logic when in Brave\n\t\treturn getBraveProviderInternal(true);\n\t}\n\n\tgetEvmProvider(): any { return this.getProvider(); }\n\n\tasync isInstalled(): Promise<boolean> {\n\t\ttry {\n\t\t\treturn !!this.getProvider();\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync isConnected(): Promise<boolean> {\n\t\ttry {\n\t\t\tconst provider = this.getProvider();\n\t\t\tif (!provider) return false;\n\t\t\tconst accounts = await provider.request?.({ method: 'eth_accounts' });\n\t\t\tif (Array.isArray(accounts) && accounts.length > 0 && typeof accounts[0] === 'string' && accounts[0]) return true;\n\t\t\tconst sel = provider?.selectedAddress || (Array.isArray(provider?.accounts) && provider.accounts[0]);\n\t\t\treturn !!sel;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync connect(): Promise<WalletAccount> {\n\t\tconst provider = this.getProvider();\n\t\tif (!provider) throw new Error('Brave Wallet not available');\n\t\tconst accounts = await provider.request?.({ method: 'eth_requestAccounts' });\n\t\tconst addr = Array.isArray(accounts) ? (accounts[0] || '') : '';\n\t\tif (!addr) throw new Error('No account returned by Brave Wallet');\n\t\treturn { owner: addr, principal: addr, connected: true };\n\t}\n\n\tasync disconnect(): Promise<void> {\n\t\ttry {\n\t\t\tconst provider = this.getProvider();\n\t\t\tif (!provider) return;\n\t\t\ttry {\n\t\t\t\tawait provider.request?.({ method: 'wallet_requestPermissions', params: [{ eth_accounts: {} }] });\n\t\t\t} catch {}\n\t\t\ttry { provider.removeAllListeners?.('accountsChanged'); } catch {}\n\t\t\ttry { provider.removeAllListeners?.('chainChanged'); } catch {}\n\t\t\ttry { provider.removeAllListeners?.('disconnect'); } catch {}\n\t\t} catch {}\n\t}\n\n\tasync getPrincipal(): Promise<string | null> {\n\t\ttry {\n\t\t\tconst provider = this.getProvider();\n\t\t\tif (!provider) return null;\n\t\t\tconst accounts = await provider.request?.({ method: 'eth_accounts' });\n\t\t\tif (Array.isArray(accounts) && accounts.length > 0 && typeof accounts[0] === 'string' && accounts[0]) return accounts[0];\n\t\t\tconst sel = provider?.selectedAddress || (Array.isArray(provider?.accounts) && provider.accounts[0]);\n\t\t\treturn (typeof sel === 'string' && sel) ? sel : null;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tgetActor<T>(options: GetActorOptions): any {\n\t\tthrow new Error('EVM wallets cannot provide IC actors. Use IC adapters for IC canister interactions.');\n\t}\n}\n\n\n\n","import type { AdapterInterface, GetActorOptions, WalletSelectConfig, WalletAccount } from '../index.js';\n\ndeclare global {\n\tinterface Window {\n\t\tethereum?: any;\n\t}\n}\n\nfunction isMobileBrowser(): boolean {\n\ttry {\n\t\tconst nav: any = (typeof navigator !== 'undefined' ? navigator : (window as any)?.navigator);\n\t\tconst ua = String(nav?.userAgent || '').toLowerCase();\n\t\treturn /iphone|ipad|ipod|android|mobile|windows phone/.test(ua);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction getRainbowProvider(): any | null {\n\ttry {\n\t\tconst anyWin: any = (typeof window !== 'undefined' ? window : {}) as any;\n\t\tlet eth = anyWin.ethereum;\n\t\tif (eth && Array.isArray(eth.providers)) {\n\t\t\tconst rainbow = eth.providers.find((p: any) => p && p.isRainbow);\n\t\t\tif (rainbow) return rainbow;\n\t\t}\n\t\tif (eth && eth.isRainbow) return eth;\n\t\t// Mobile in-app browsers sometimes miss flags; accept generic provider on mobile\n\t\tif (isMobileBrowser() && eth && typeof eth.request === 'function') return eth;\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport class RainbowAdapter implements AdapterInterface {\n\treadonly id = 'rainbow';\n\treadonly label = 'Rainbow';\n\treadonly icon?: string | null;\n\tprivate readonly config: WalletSelectConfig;\n\tgetEvmProvider(): any { return getRainbowProvider(); }\n\n\tconstructor(args: { config: WalletSelectConfig }) {\n\t\tthis.config = args.config || {};\n\t}\n\n\tasync isInstalled(): Promise<boolean> {\n\t\ttry {\n\t\t\treturn !!getRainbowProvider();\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync isConnected(): Promise<boolean> {\n\t\ttry {\n\t\t\tconst provider = getRainbowProvider();\n\t\t\tif (!provider) return false;\n\t\t\tconst accounts = await provider.request({ method: 'eth_accounts' });\n\t\t\treturn Array.isArray(accounts) && accounts.length > 0;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync connect(): Promise<WalletAccount> {\n\t\tlet provider = getRainbowProvider();\n\t\tif (!provider) {\n\t\t\tif (typeof window !== 'undefined' && isMobileBrowser()) {\n\t\t\t\ttry {\n\t\t\t\t\tconst href = String(window.location?.href || '');\n\t\t\t\t\tconst deepLink = `https://rnbwapp.com/browse/${encodeURIComponent(href)}`;\n\t\t\t\t\ttry { window.dispatchEvent(new CustomEvent('icpay-sdk-wallet-deeplink', { detail: { wallet: 'rainbow', url: deepLink } })); } catch {}\n\t\t\t\t\ttry { window.location.href = deepLink; } catch { try { window.open(deepLink, '_self', 'noopener,noreferrer'); } catch {} }\n\t\t\t\t} catch {}\n\t\t\t\tthrow new Error('Opening Rainbow… If nothing happens, install Rainbow and try again.');\n\t\t\t}\n\t\t\tthrow new Error('Rainbow not available');\n\t\t}\n\t\tconst delay = (ms: number) => new Promise((res) => setTimeout(res, ms));\n\t\tconst getAccountsOnce = async (): Promise<string[]> => {\n\t\t\ttry {\n\t\t\t\tconst a1 = await provider.request?.({ method: 'eth_accounts' });\n\t\t\t\tif (Array.isArray(a1) && a1.length > 0) return a1;\n\t\t\t} catch {}\n\t\t\ttry {\n\t\t\t\tconst a2 = await provider.request?.({ method: 'eth_requestAccounts' });\n\t\t\t\tif (Array.isArray(a2) && a2.length > 0) return a2;\n\t\t\t} catch (err: any) {\n\t\t\t\tif (err && (err.code === 4001 || err.code === '4001')) throw new Error('Connection request was rejected');\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait provider.request?.({ method: 'wallet_requestPermissions', params: [{ eth_accounts: {} }] });\n\t\t\t\tconst a3 = await provider.request?.({ method: 'eth_accounts' });\n\t\t\t\tif (Array.isArray(a3) && a3.length > 0) return a3;\n\t\t\t} catch {}\n\t\t\treturn [];\n\t\t};\n\t\tlet accounts: string[] = [];\n\t\tfor (let i = 0; i < 3 && accounts.length === 0; i++) {\n\t\t\tprovider = getRainbowProvider() || provider;\n\t\t\taccounts = await getAccountsOnce();\n\t\t\tif (accounts.length === 0) await delay(300);\n\t\t}\n\t\tconst addr = Array.isArray(accounts) ? (accounts[0] || '') : '';\n\t\tif (!addr) throw new Error('No account returned by Rainbow');\n\t\treturn { owner: addr, principal: addr, connected: true };\n\t}\n\n\tasync disconnect(): Promise<void> {\n\t\ttry {\n\t\t\tconst provider = getRainbowProvider();\n\t\t\tif (!provider) return;\n\t\t\ttry {\n\t\t\t\tawait provider.request?.({ method: 'wallet_requestPermissions', params: [{ eth_accounts: {} }] });\n\t\t\t} catch {}\n\t\t\ttry { provider.removeAllListeners?.('accountsChanged'); } catch {}\n\t\t\ttry { provider.removeAllListeners?.('chainChanged'); } catch {}\n\t\t\ttry { provider.removeAllListeners?.('disconnect'); } catch {}\n\t\t} catch {}\n\t}\n\n\tasync getPrincipal(): Promise<string | null> {\n\t\ttry {\n\t\t\tconst provider = getRainbowProvider();\n\t\t\tif (!provider) return null;\n\t\t\tconst accounts = await provider.request({ method: 'eth_accounts' });\n\t\t\tconst addr = Array.isArray(accounts) ? (accounts[0] || '') : '';\n\t\t\treturn addr || null;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tgetActor<T>(options: GetActorOptions): any {\n\t\tthrow new Error('EVM wallets cannot provide IC actors. Use IC adapters for IC canister interactions.');\n\t}\n}\n\n\n\n","import type { AdapterInterface, GetActorOptions, WalletSelectConfig, WalletAccount } from '../index.js';\n\ndeclare global {\n\tinterface Window {\n\t\tethereum?: any;\n\t}\n}\n\nfunction isMobileBrowser(): boolean {\n\ttry {\n\t\tconst nav: any = (typeof navigator !== 'undefined' ? navigator : (window as any)?.navigator);\n\t\tconst ua = String(nav?.userAgent || '').toLowerCase();\n\t\treturn /iphone|ipad|ipod|android|mobile|windows phone/.test(ua);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction getRabbyProvider(): any | null {\n\ttry {\n\t\tconst anyWin: any = (typeof window !== 'undefined' ? window : {}) as any;\n\t\tlet eth = anyWin.ethereum;\n\t\tif (eth && Array.isArray(eth.providers)) {\n\t\t\tconst rabby = eth.providers.find((p: any) => p && p.isRabby);\n\t\t\tif (rabby) return rabby;\n\t\t}\n\t\tif (eth && eth.isRabby) return eth;\n\t\t// Mobile in-app browsers sometimes miss flags; accept generic provider on mobile\n\t\tif (isMobileBrowser() && eth && typeof eth.request === 'function') return eth;\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport class RabbyAdapter implements AdapterInterface {\n\treadonly id = 'rabby';\n\treadonly label = 'Rabby';\n\treadonly icon?: string | null;\n\tprivate readonly config: WalletSelectConfig;\n\tgetEvmProvider(): any { return getRabbyProvider(); }\n\n\tconstructor(args: { config: WalletSelectConfig }) {\n\t\tthis.config = args.config || {};\n\t}\n\n\tasync isInstalled(): Promise<boolean> {\n\t\ttry {\n\t\t\treturn !!getRabbyProvider();\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync isConnected(): Promise<boolean> {\n\t\ttry {\n\t\t\tconst provider = getRabbyProvider();\n\t\t\tif (!provider) return false;\n\t\t\tconst accounts = await provider.request({ method: 'eth_accounts' });\n\t\t\treturn Array.isArray(accounts) && accounts.length > 0;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync connect(): Promise<WalletAccount> {\n\t\tlet provider = getRabbyProvider();\n\t\tif (!provider) {\n\t\t\tif (typeof window !== 'undefined' && isMobileBrowser()) {\n\t\t\t\ttry {\n\t\t\t\t\tconst href = String(window.location?.href || '');\n\t\t\t\t\t// Rabby mobile deep link (best effort). Fallback opens site.\n\t\t\t\t\tconst deepLink = `rabby://browser?url=${encodeURIComponent(href)}`;\n\t\t\t\t\ttry { window.dispatchEvent(new CustomEvent('icpay-sdk-wallet-deeplink', { detail: { wallet: 'rabby', url: deepLink } })); } catch {}\n\t\t\t\t\ttry { window.location.href = deepLink; } catch { try { window.open(deepLink, '_self', 'noopener,noreferrer'); } catch {} }\n\t\t\t\t} catch {}\n\t\t\t\tthrow new Error('Opening Rabby… If nothing happens, install Rabby and try again.');\n\t\t\t}\n\t\t\tthrow new Error('Rabby not available');\n\t\t}\n\t\tconst delay = (ms: number) => new Promise((res) => setTimeout(res, ms));\n\t\tconst getAccountsOnce = async (): Promise<string[]> => {\n\t\t\ttry {\n\t\t\t\tconst a1 = await provider.request?.({ method: 'eth_accounts' });\n\t\t\t\tif (Array.isArray(a1) && a1.length > 0) return a1;\n\t\t\t} catch {}\n\t\t\ttry {\n\t\t\t\tconst a2 = await provider.request?.({ method: 'eth_requestAccounts' });\n\t\t\t\tif (Array.isArray(a2) && a2.length > 0) return a2;\n\t\t\t} catch (err: any) {\n\t\t\t\tif (err && (err.code === 4001 || err.code === '4001')) throw new Error('Connection request was rejected');\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait provider.request?.({ method: 'wallet_requestPermissions', params: [{ eth_accounts: {} }] });\n\t\t\t\tconst a3 = await provider.request?.({ method: 'eth_accounts' });\n\t\t\t\tif (Array.isArray(a3) && a3.length > 0) return a3;\n\t\t\t} catch {}\n\t\t\treturn [];\n\t\t};\n\t\tlet accounts: string[] = [];\n\t\tfor (let i = 0; i < 3 && accounts.length === 0; i++) {\n\t\t\tprovider = getRabbyProvider() || provider;\n\t\t\taccounts = await getAccountsOnce();\n\t\t\tif (accounts.length === 0) await delay(300);\n\t\t}\n\t\tconst addr = Array.isArray(accounts) ? (accounts[0] || '') : '';\n\t\tif (!addr) throw new Error('No account returned by Rabby');\n\t\treturn { owner: addr, principal: addr, connected: true };\n\t}\n\n\tasync disconnect(): Promise<void> {\n\t\ttry {\n\t\t\tconst provider = getRabbyProvider();\n\t\t\tif (!provider) return;\n\t\t\ttry {\n\t\t\t\tawait provider.request?.({ method: 'wallet_requestPermissions', params: [{ eth_accounts: {} }] });\n\t\t\t} catch {}\n\t\t\ttry { provider.removeAllListeners?.('accountsChanged'); } catch {}\n\t\t\ttry { provider.removeAllListeners?.('chainChanged'); } catch {}\n\t\t\ttry { provider.removeAllListeners?.('disconnect'); } catch {}\n\t\t} catch {}\n\t}\n\n\tasync getPrincipal(): Promise<string | null> {\n\t\ttry {\n\t\t\tconst provider = getRabbyProvider();\n\t\t\tif (!provider) return null;\n\t\t\tconst accounts = await provider.request({ method: 'eth_accounts' });\n\t\t\tconst addr = Array.isArray(accounts) ? (accounts[0] || '') : '';\n\t\t\treturn addr || null;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tgetActor<T>(options: GetActorOptions): any {\n\t\tthrow new Error('EVM wallets cannot provide IC actors. Use IC adapters for IC canister interactions.');\n\t}\n}\n\n\n\n","import type { AdapterInterface, GetActorOptions, WalletSelectConfig, WalletAccount } from '../index.js';\nimport { WalletConnectAdapter } from './WalletConnectAdapter.js';\n\ndeclare global {\n\tinterface Window {\n\t\tethereum?: any;\n\t\tphantom?: { ethereum?: any; solana?: any } | undefined;\n\t}\n}\n\nfunction isMobileBrowser(): boolean {\n\ttry {\n\t\tconst nav: any = (typeof navigator !== 'undefined' ? navigator : (window as any)?.navigator);\n\t\tconst ua = String(nav?.userAgent || '').toLowerCase();\n\t\treturn /iphone|ipad|ipod|android|mobile|windows phone/.test(ua);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction getPhantomEvmProvider(): any | null {\n\ttry {\n\t\tconst anyWin: any = (typeof window !== 'undefined' ? window : {}) as any;\n\t\t// Prefer the dedicated Phantom EVM provider if present\n\t\tif (anyWin.phantom && anyWin.phantom.ethereum) return anyWin.phantom.ethereum;\n\t\t// Fallback to injected ethereum with isPhantom flag\n\t\tlet eth = anyWin.ethereum;\n\t\tif (eth && Array.isArray(eth.providers)) {\n\t\t\tconst phantom = eth.providers.find((p: any) => p && (p.isPhantom || p.isPhantomEthereum));\n\t\t\tif (phantom) return phantom;\n\t\t}\n\t\tif (eth && (eth.isPhantom || eth.isPhantomEthereum)) return eth;\n\t\t// Mobile in-app browsers sometimes miss flags; accept generic provider on mobile\n\t\tif (isMobileBrowser() && eth && typeof eth.request === 'function') return eth;\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport class PhantomAdapter implements AdapterInterface {\n\treadonly id = 'phantom';\n\treadonly label = 'Phantom';\n\treadonly icon?: string | null;\n\tprivate readonly config: WalletSelectConfig;\n\tgetEvmProvider(): any { return getPhantomEvmProvider(); }\n\n\tconstructor(args: { config: WalletSelectConfig }) {\n\t\tthis.config = args.config || {};\n\t}\n\n\tasync isInstalled(): Promise<boolean> {\n\t\ttry {\n\t\t\treturn !!getPhantomEvmProvider();\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync isConnected(): Promise<boolean> {\n\t\ttry {\n\t\t\tconst provider = getPhantomEvmProvider();\n\t\t\tif (!provider) return false;\n\t\t\tconst accounts = await provider.request({ method: 'eth_accounts' });\n\t\t\treturn Array.isArray(accounts) && accounts.length > 0;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync connect(): Promise<WalletAccount> {\n\t\tlet provider = getPhantomEvmProvider();\n\t\tif (!provider) {\n\t\t\tif (typeof window !== 'undefined' && isMobileBrowser()) {\n\t\t\t\t// Open current page inside Phantom's in-app browser; Phantom injects EVM provider there\n\t\t\t\treturn await this.connectPhantomDeepLink();\n\t\t\t}\n\t\t\tthrow new Error('Phantom (EVM) not available');\n\t\t}\n\t\tconst delay = (ms: number) => new Promise((res) => setTimeout(res, ms));\n\t\tconst getAccountsOnce = async (): Promise<string[]> => {\n\t\t\ttry {\n\t\t\t\tconst a1 = await provider.request?.({ method: 'eth_accounts' });\n\t\t\t\tif (Array.isArray(a1) && a1.length > 0) return a1;\n\t\t\t} catch {}\n\t\t\ttry {\n\t\t\t\tconst a2 = await provider.request?.({ method: 'eth_requestAccounts' });\n\t\t\t\tif (Array.isArray(a2) && a2.length > 0) return a2;\n\t\t\t} catch (err: any) {\n\t\t\t\tif (err && (err.code === 4001 || err.code === '4001')) throw new Error('Connection request was rejected');\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait provider.request?.({ method: 'wallet_requestPermissions', params: [{ eth_accounts: {} }] });\n\t\t\t\tconst a3 = await provider.request?.({ method: 'eth_accounts' });\n\t\t\t\tif (Array.isArray(a3) && a3.length > 0) return a3;\n\t\t\t} catch {}\n\t\t\treturn [];\n\t\t};\n\t\tlet accounts: string[] = [];\n\t\tfor (let i = 0; i < 3 && accounts.length === 0; i++) {\n\t\t\tprovider = getPhantomEvmProvider() || provider;\n\t\t\taccounts = await getAccountsOnce();\n\t\t\tif (accounts.length === 0) await delay(300);\n\t\t}\n\t\tconst addr = Array.isArray(accounts) ? (accounts[0] || '') : '';\n\t\tif (!addr) throw new Error('No account returned by Phantom');\n\t\treturn { owner: addr, principal: addr, connected: true };\n\t}\n\n\tprivate async connectPhantomDeepLink(): Promise<WalletAccount> {\n\t\ttry {\n\t\t\tconst g: any = (typeof window !== 'undefined' ? window : {}) as any;\n\t\t\tconst href = String(g?.location?.href || '');\n\t\t\tconst deepLink = `https://phantom.app/ul/browse/${encodeURIComponent(href)}`;\n\t\t\ttry { g.dispatchEvent(new CustomEvent('icpay-sdk-wallet-deeplink', { detail: { wallet: 'phantom', url: deepLink } })); } catch {}\n\t\t\ttry { g.location.href = deepLink; } catch { try { g.open(deepLink, '_self', 'noopener,noreferrer'); } catch {} }\n\t\t\tthrow new Error('Opening Phantom… If nothing happens, install Phantom and try again.');\n\t\t} catch (e: any) {\n\t\t\tthrow new Error(e?.message || 'Phantom connection failed');\n\t\t}\n\t}\n\n\tasync disconnect(): Promise<void> {\n\t\ttry {\n\t\t\tconst provider = getPhantomEvmProvider();\n\t\t\tif (!provider) return;\n\t\t\ttry {\n\t\t\t\tawait provider.request?.({ method: 'wallet_requestPermissions', params: [{ eth_accounts: {} }] });\n\t\t\t} catch {}\n\t\t\ttry { provider.removeAllListeners?.('accountsChanged'); } catch {}\n\t\t\ttry { provider.removeAllListeners?.('chainChanged'); } catch {}\n\t\t\ttry { provider.removeAllListeners?.('disconnect'); } catch {}\n\t\t} catch {}\n\t}\n\n\tasync getPrincipal(): Promise<string | null> {\n\t\ttry {\n\t\t\tconst provider = getPhantomEvmProvider();\n\t\t\tif (!provider) return null;\n\t\t\tconst accounts = await provider.request({ method: 'eth_accounts' });\n\t\t\tconst addr = Array.isArray(accounts) ? (accounts[0] || '') : '';\n\t\t\treturn addr || null;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tgetActor<T>(options: GetActorOptions): any {\n\t\tthrow new Error('EVM wallets cannot provide IC actors. Use IC adapters for IC canister interactions.');\n\t}\n}\n\n\n\n","import type { AdapterInterface, GetActorOptions, WalletSelectConfig, WalletAccount } from '../index.js';\n\ndeclare global {\n\tinterface Window {\n\t\tethereum?: any;\n\t\tokxwallet?: any;\n\t}\n}\n\nfunction isMobileBrowser(): boolean {\n\ttry {\n\t\tconst nav: any = (typeof navigator !== 'undefined' ? navigator : (window as any)?.navigator);\n\t\tconst ua = String(nav?.userAgent || '').toLowerCase();\n\t\treturn /iphone|ipad|ipod|android|mobile|windows phone/.test(ua);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction getOkxProvider(): any | null {\n\ttry {\n\t\tconst anyWin: any = (typeof window !== 'undefined' ? window : {}) as any;\n\t\t// Dedicated OKX handle if present\n\t\tconst okx = anyWin.okxwallet;\n\t\tif (okx && (okx.isOkxWallet || okx.ethereum)) return okx.ethereum || okx;\n\t\t// Check injected ethereum flags\n\t\tconst eth = anyWin.ethereum;\n\t\tif (eth && Array.isArray(eth.providers)) {\n\t\t\tconst p = eth.providers.find((p: any) => p && (p.isOkxWallet || p?.provider?.isOkxWallet));\n\t\t\tif (p) return p;\n\t\t}\n\t\tif (eth && (eth.isOkxWallet || eth?.provider?.isOkxWallet)) return eth;\n\t\t// Mobile in-app browsers sometimes miss flags; accept generic provider on mobile\n\t\tif (isMobileBrowser() && eth && typeof eth.request === 'function') return eth;\n\t\treturn null;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport class OkxAdapter implements AdapterInterface {\n\treadonly id = 'okx';\n\treadonly label = 'OKX Wallet';\n\treadonly icon?: string | null;\n\tprivate readonly config: WalletSelectConfig;\n\n\tconstructor(args: { config: WalletSelectConfig }) {\n\t\tthis.config = args.config || {};\n\t}\n\n\tgetEvmProvider(): any { return getOkxProvider(); }\n\n\tasync isInstalled(): Promise<boolean> {\n\t\ttry {\n\t\t\treturn !!getOkxProvider();\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync isConnected(): Promise<boolean> {\n\t\ttry {\n\t\t\tconst provider = getOkxProvider();\n\t\t\tif (!provider) return false;\n\t\t\tconst accounts = await provider.request({ method: 'eth_accounts' });\n\t\t\treturn Array.isArray(accounts) && accounts.length > 0;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync connect(): Promise<WalletAccount> {\n\t\tlet provider = getOkxProvider();\n\t\tif (!provider) {\n\t\t\tif (typeof window !== 'undefined' && isMobileBrowser()) {\n\t\t\t\ttry {\n\t\t\t\t\tconst href = String(window.location?.href || '');\n\t\t\t\t\t// Try OKX scheme; some platforms require scheme. Provide a fallback to download page.\n\t\t\t\t\tconst scheme = `okx://wallet/dapp/url?url=${encodeURIComponent(href)}`;\n\t\t\t\t\ttry { window.dispatchEvent(new CustomEvent('icpay-sdk-wallet-deeplink', { detail: { wallet: 'okx', url: scheme } })); } catch {}\n\t\t\t\t\ttry { window.location.href = scheme; } catch { try { window.open(scheme, '_self', 'noopener,noreferrer'); } catch {} }\n\t\t\t\t} catch {}\n\t\t\t\tthrow new Error('Opening OKX Wallet… If nothing happens, install OKX Wallet and try again.');\n\t\t\t}\n\t\t\tthrow new Error('OKX Wallet not available');\n\t\t}\n\t\tconst delay = (ms: number) => new Promise((res) => setTimeout(res, ms));\n\t\tconst getAccountsOnce = async (): Promise<string[]> => {\n\t\t\ttry {\n\t\t\t\tconst a1 = await provider.request?.({ method: 'eth_accounts' });\n\t\t\t\tif (Array.isArray(a1) && a1.length > 0) return a1;\n\t\t\t} catch {}\n\t\t\ttry {\n\t\t\t\tconst a2 = await provider.request?.({ method: 'eth_requestAccounts' });\n\t\t\t\tif (Array.isArray(a2) && a2.length > 0) return a2;\n\t\t\t} catch (err: any) {\n\t\t\t\tif (err && (err.code === 4001 || err.code === '4001')) throw new Error('Connection request was rejected');\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait provider.request?.({ method: 'wallet_requestPermissions', params: [{ eth_accounts: {} }] });\n\t\t\t\tconst a3 = await provider.request?.({ method: 'eth_accounts' });\n\t\t\t\tif (Array.isArray(a3) && a3.length > 0) return a3;\n\t\t\t} catch {}\n\t\t\treturn [];\n\t\t};\n\t\tlet accounts: string[] = [];\n\t\tfor (let i = 0; i < 3 && accounts.length === 0; i++) {\n\t\t\tprovider = getOkxProvider() || provider;\n\t\t\taccounts = await getAccountsOnce();\n\t\t\tif (accounts.length === 0) await delay(300);\n\t\t}\n\t\tconst addr = Array.isArray(accounts) ? (accounts[0] || '') : '';\n\t\tif (!addr) throw new Error('No account returned by OKX Wallet');\n\t\treturn { owner: addr, principal: addr, connected: true };\n\t}\n\n\tasync disconnect(): Promise<void> {\n\t\ttry {\n\t\t\tconst provider = getOkxProvider();\n\t\t\tif (!provider) return;\n\t\t\ttry { await provider.request?.({ method: 'wallet_requestPermissions', params: [{ eth_accounts: {} }] }); } catch {}\n\t\t\ttry { provider.removeAllListeners?.('accountsChanged'); } catch {}\n\t\t\ttry { provider.removeAllListeners?.('chainChanged'); } catch {}\n\t\t\ttry { provider.removeAllListeners?.('disconnect'); } catch {}\n\t\t} catch {}\n\t}\n\n\tasync getPrincipal(): Promise<string | null> {\n\t\ttry {\n\t\t\tconst provider = getOkxProvider();\n\t\t\tif (!provider) return null;\n\t\t\tconst accounts = await provider.request({ method: 'eth_accounts' });\n\t\t\tconst addr = Array.isArray(accounts) ? (accounts[0] || '') : '';\n\t\t\treturn addr || null;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tgetActor<T>(options: GetActorOptions): any {\n\t\tthrow new Error('EVM wallets cannot provide IC actors. Use IC adapters for IC canister interactions.');\n\t}\n}\n\n\n\n"],"mappings":"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","names":["Actor","HttpAgent","Actor","PlugAdapter","args","principal","principalText","p","options","agent","Actor","HttpAgent","AuthClient","IIAdapter","args","c","identity","principal","options","Actor","HttpAgent","PostMessageTransport","Signer","SignerAgent","NfidAdapter","args","nfidCfg","signerUrl","hostUrl","baseAgent","transport","signer","account","signerAgent","principal","options","Actor","HttpAgent","PostMessageTransport","Signer","SignerAgent","OisyAdapter","args","oisyCfg","signerUrl","hostUrl","transportOverrides","windowOpenerFeatures","baseAgent","transport","signer","account","signerAgent","principal","options","MetaMaskAdapter","args","nav","ua","eth","mm","p","provider","accounts","deepLink","delay","ms","res","getAccountsOnce","a1","a2","err","a3","i","addr","options","ii_default","nfid_default","oisy_default","plug_default","metamask_default","coinbase_default","image","rainbow_default","ledger_default","okx_default","walletconnect_default","image","brave_default","image","phantom_default","image","rabby_default","ICONS","ii_default","nfid_default","oisy_default","plug_default","metamask_default","coinbase_default","rainbow_default","brave_default","phantom_default","rabby_default","ledger_default","okx_default","walletconnect_default","getIcon","id","fallback","key","wcProviderScriptLoaded","qrLibScriptLoaded","DEFAULT_WC_CHAINS","DEFAULT_WC_OPTIONAL_CHAINS","loadScriptOnce","src","resolve","reject","d","existing","s","el","loadAnyScript","urls","url","getWcV2Ctor","g","cfg","custom","cands","c","waitFor","predicate","timeoutMs","intervalMs","start","tick","val","tryDynamicImportV2","isMobileBrowserGlobal","nav","ua","ensureQrLib","g","mod","QR","qrLibScriptLoaded","loadAnyScript","waitFor","w","showQrOverlay","uri","d","openUrl","url","scheduled","scheduleIfVisible","fn","delayMs","id","doc","clearScheduled","onVisChange","openCoinbase","wcUri","single","universal","native","createBtn","label","iconKey","onClick","btn","img","iconUrl","getIcon","span","e","overlay","ov","box","title","canvas","isMobile","isMobileBrowserGlobal","linksWrap","setWaitingState","close","cur","hideQrOverlay","WalletConnectAdapter","args","eth","p","hasV2","getWcV2Ctor","cfg","hasProjectId","provider","accounts","tryDynamicImportV2","wcProviderScriptLoaded","custom","selfUrls","scripts","isRelevant","u","v","s","src","idx","base","origin","wpUrls","urls","nav","ua","redirect","shouldWake","method","m","self","target","prop","receiver","r","EthereumProviderCtor","projectId","chains","DEFAULT_WC_CHAINS","optionalChains","DEFAULT_WC_OPTIONAL_CHAINS","methods","events","siteOrigin","o","metaName","metaDesc","metaUrl","metaIcons","fromCfg","httpsOnly","i","metadata","keysToNuke","k","injected","addr","a","timeoutMs","start","resolve","reject","done","finish","accts","err","onAccounts","onVisibility","aNow","noAcc","a1","options","isMobileBrowser","nav","ua","getCoinbaseProvider","anyWin","eth","cb","p","CoinbaseAdapter","args","provider","accounts","href","deepLink","delay","ms","res","getAccountsOnce","a1","a2","err","a3","i","addr","options","isBraveBrowser","nav","getBraveProviderInternal","allowFallback","anyWin","eth","byFlag","p","candidate","BraveAdapter","args","provider","accounts","addr","sel","options","isMobileBrowser","nav","ua","getRainbowProvider","eth","rainbow","p","RainbowAdapter","args","provider","accounts","href","deepLink","delay","ms","res","getAccountsOnce","a1","a2","err","a3","i","addr","options","isMobileBrowser","nav","ua","getRabbyProvider","eth","rabby","p","RabbyAdapter","args","provider","accounts","href","deepLink","delay","ms","res","getAccountsOnce","a1","a2","err","a3","i","addr","options","isMobileBrowser","nav","ua","getPhantomEvmProvider","anyWin","eth","phantom","p","PhantomAdapter","args","provider","accounts","delay","ms","res","getAccountsOnce","a1","a2","err","a3","i","addr","g","href","deepLink","e","options","isMobileBrowser","nav","ua","getOkxProvider","anyWin","okx","eth","p","OkxAdapter","args","provider","accounts","href","scheme","delay","ms","res","getAccountsOnce","a1","a2","err","a3","i","addr","options","toStringPrincipal","value","v","defaultHttpAgentOptions","host","opts","defaultIcHost","userHost","WalletSelect","config","baseAdapters","MetaMaskAdapter","CoinbaseAdapter","WalletConnectAdapter","PhantomAdapter","RainbowAdapter","RabbyAdapter","BraveAdapter","OkxAdapter","OisyAdapter","NfidAdapter","IIAdapter","PlugAdapter","cfgAdapters","wcEnabled","wcProjectId","key","cfg","nav","ua","allowedTypes","t","idToType","a","id","fallback","getIcon","anyAdapter","prov","walletId","adapter","acc","principal","options","agent","HttpAgent","Actor","createWalletSelect"]}
|
|
File without changes
|
|
File without changes
|