{"version":3,"file":"index-CTwq3WDk.mjs","sources":["../.rollup-tmp/platform.js","../.rollup-tmp/auth/providers/offchain-auth-provider.js","../.rollup-tmp/auth/issuer-logout-bounce.js","../.rollup-tmp/auth/stored-auth-method.js","../.rollup-tmp/auth/session-provider.js","../.rollup-tmp/auth/solana-rpc.js","../node_modules/@wallet-standard/app/lib/esm/wallets.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/index.js","../node_modules/safe-buffer/index.js","../node_modules/base-x/src/index.js","../node_modules/bs58/src/esm/index.js","../.rollup-tmp/auth/providers/solana-mobile-registration.js","../.rollup-tmp/auth/bounded-widget-modal.js","../.rollup-tmp/auth/turnkey-wallet-widget.js","../.rollup-tmp/auth/turnkey-signer-frame.js","../.rollup-tmp/auth/turnkey-signing-capability.js","../.rollup-tmp/auth/turnkey-signer-bridge.js","../.rollup-tmp/auth/oidc-auth.js","../.rollup-tmp/auth/index.js","../.rollup-tmp/global.js","../.rollup-tmp/auth/bounded-widget-ownership.js","../node_modules/@solana/wallet-standard-features/lib/esm/signAndSendTransaction.js","../node_modules/@solana/wallet-standard-features/lib/esm/signMessage.js","../node_modules/@solana/wallet-standard-features/lib/esm/signTransaction.js","../node_modules/@wallet-standard/features/lib/esm/connect.js","../node_modules/@wallet-standard/features/lib/esm/disconnect.js","../.rollup-tmp/auth/providers/wallet-standard-discovery.js","../.rollup-tmp/auth/wallet-lane.js","../.rollup-tmp/auth/turnkey-auth.js","../.rollup-tmp/auth/bounded-login-widget.js","../.rollup-tmp/auth/hooks/useAuth.js","../.rollup-tmp/hooks/useQuery.js","../.rollup-tmp/builds/client.js","../.rollup-tmp/builds/types.js","../.rollup-tmp/builds/watch.js","../.rollup-tmp/hooks/useBuildRun.js","../.rollup-tmp/builds/index.js","../.rollup-tmp/builds/apps.js","../.rollup-tmp/utils.js","../.rollup-tmp/onramp.js","../.rollup-tmp/auth/providers/transaction-utils.js","../.rollup-tmp/auth/providers/privy-expo-provider.js","../.rollup-tmp/auth/providers/injected-wallet-types.js","../.rollup-tmp/auth/providers/injected-evm-wallet-types.js"],"sourcesContent":["/**\n * Platform abstraction layer for React Native compatibility.\n *\n * This module provides interfaces and default (web) implementations for\n * browser-specific APIs that are unavailable in React Native:\n *   - Storage        (localStorage / sessionStorage)\n *   - TextEncoder\n *   - Base-64        (btoa / atob)\n *   - SubtleCrypto   (crypto.subtle.digest)\n *   - DOM helpers    (document.*, requestAnimationFrame)\n *   - Location       (window.location.origin)\n *   - UserAgent      (navigator.userAgent)\n *\n * React Native consumers call `setPlatform(adapter)` once at startup to\n * supply their own implementations (e.g. AsyncStorage-backed storage,\n * expo-crypto, react-native-get-random-values, etc.).\n *\n * Web consumers don't need to do anything — the defaults use the browser APIs.\n */\nvar _a;\n/**\n * DS3-0416: brand for the volatile in-memory fallback so callers whose\n * correctness depends on durability (idempotency keys that must survive a reload\n * / RN restart) can detect that no durable store is present and fail closed\n * instead of silently persisting to memory that vanishes on restart.\n */\nconst VOLATILE_STORAGE = Symbol.for('bounded.volatileStorage');\n/** In-memory fallback when neither browser storage nor a custom adapter exist. */\nclass MemoryStorage {\n    constructor() {\n        this[_a] = true;\n        this.store = new Map();\n    }\n    getItem(key) { var _b; return (_b = this.store.get(key)) !== null && _b !== void 0 ? _b : null; }\n    setItem(key, value) { this.store.set(key, value); }\n    removeItem(key) { this.store.delete(key); }\n}\n_a = VOLATILE_STORAGE;\n/**\n * DS3-0416: true when the adapter is the volatile in-memory fallback (no durable\n * browser storage and no custom platform adapter). A branded value rather than\n * an `instanceof` so it survives bundling and works for any future volatile\n * fallback that opts in.\n */\nexport function isVolatileStorage(store) {\n    return !!(store === null || store === void 0 ? void 0 : store[VOLATILE_STORAGE]);\n}\n// ---------------------------------------------------------------------------\n// Default web implementation\n// ---------------------------------------------------------------------------\nfunction createWebPlatform() {\n    const hasWindow = typeof window !== 'undefined';\n    const hasDoc = typeof document !== 'undefined';\n    return {\n        storage: hasWindow && typeof localStorage !== 'undefined'\n            ? localStorage\n            : new MemoryStorage(),\n        sessionStorage: hasWindow && typeof sessionStorage !== 'undefined'\n            ? sessionStorage\n            : new MemoryStorage(),\n        textEncode(input) {\n            return new TextEncoder().encode(input);\n        },\n        atob(input) {\n            if (hasWindow)\n                return window.atob(input);\n            // Node / SSR fallback\n            return Buffer.from(input, 'base64').toString('binary');\n        },\n        btoa(input) {\n            if (hasWindow)\n                return window.btoa(input);\n            return Buffer.from(input, 'binary').toString('base64');\n        },\n        async sha256(data) {\n            if (typeof crypto !== 'undefined' && crypto.subtle) {\n                return crypto.subtle.digest('SHA-256', data);\n            }\n            // Node / SSR fallback. Keep the specifier indirect so browser\n            // bundlers do not externalize or preload a Node-only module in the\n            // email/guest graph; this branch is unreachable when WebCrypto is\n            // available (all supported browsers and current Node releases).\n            const nodeCryptoSpecifier = 'node:crypto';\n            const { createHash } = await import(/* @vite-ignore */ nodeCryptoSpecifier);\n            const hash = createHash('sha256').update(data).digest();\n            return hash.buffer.slice(hash.byteOffset, hash.byteOffset + hash.byteLength);\n        },\n        getRandomBytes(length) {\n            const out = new Uint8Array(length);\n            const g = typeof globalThis !== 'undefined' ? globalThis : undefined;\n            if (g && g.crypto && typeof g.crypto.getRandomValues === 'function') {\n                g.crypto.getRandomValues(out);\n                return out;\n            }\n            throw new Error('No secure random source available for PKCE. On React Native, either import ' +\n                \"'react-native-get-random-values' once at your app entry, or pass getRandomBytes \" +\n                'via setPlatform({ getRandomBytes }) (e.g. expo-crypto getRandomBytes).');\n        },\n        getUserAgent() {\n            if (hasWindow && typeof navigator !== 'undefined')\n                return navigator.userAgent;\n            return '';\n        },\n        getLocationOrigin() {\n            if (hasWindow && window.location)\n                return window.location.origin;\n            return undefined;\n        },\n        hasDOM: hasDoc,\n    };\n}\n// ---------------------------------------------------------------------------\n// Singleton & public API\n// ---------------------------------------------------------------------------\nlet _platform = createWebPlatform();\nlet _platformConfigured = false;\n/**\n * Override the platform adapter (call once at app startup in React Native).\n *\n * Must be called **before** `init()`. Can only be called once — subsequent\n * calls throw to prevent accidental mid-session storage swaps.\n *\n * ```ts\n * import { setPlatform } from '@bounded-sh/client';\n * import AsyncStorage from '@react-native-async-storage/async-storage';\n *\n * // Create a synchronous wrapper around AsyncStorage for the adapter\n * // (see docs for a full example).\n * setPlatform({ storage: myStorage, ... });\n * ```\n */\nexport function setPlatform(adapter) {\n    if (_platformConfigured) {\n        throw new Error('setPlatform() has already been called. It can only be invoked once at startup.');\n    }\n    _platformConfigured = true;\n    _platform = Object.assign(Object.assign({}, _platform), adapter);\n}\n/** Get the current platform adapter. */\nexport function getPlatform() {\n    return _platform;\n}\n// ---------------------------------------------------------------------------\n// Mobile / Android detection helpers\n// ---------------------------------------------------------------------------\n/**\n * Detect mobile device even when Chrome \"Request Desktop Site\" is active.\n *\n * Desktop mode on Android strips \"Android\" and \"Mobile\" from the UA, leaving\n * something like \"Linux x86_64 …\". The fallback detects this by looking for\n * touch capability + small viewport + a UA that doesn't belong to a known\n * desktop OS (ChromeOS, Windows, macOS).\n */\nexport function detectMobile() {\n    const ua = _platform.getUserAgent();\n    if (/Android|iPhone|iPad|iPod/i.test(ua))\n        return true;\n    if (typeof navigator !== 'undefined' && typeof window !== 'undefined') {\n        const hasTouch = navigator.maxTouchPoints > 0;\n        // Macs don't have touch screens, so \"Macintosh\" + touch = iOS desktop mode\n        // (also catches iPadOS 13+ which always reports as Macintosh)\n        if (/Macintosh/i.test(ua) && hasTouch)\n            return true;\n        // Android desktop mode: Linux UA + touch + small viewport, excluding\n        // known desktop OSes (ChromeOS, Windows, macOS)\n        const isSmallViewport = window.innerWidth <= 1024;\n        const isDesktopOS = /CrOS|Windows|Macintosh/i.test(ua);\n        if (hasTouch && isSmallViewport && !isDesktopOS)\n            return true;\n    }\n    return false;\n}\n/**\n * Detect Android, including desktop-mode Chrome and Seeker/Saga in-app browsers.\n */\nexport function detectAndroid() {\n    const ua = _platform.getUserAgent();\n    if (/Android/i.test(ua))\n        return true;\n    if (/SolanaWallet|SeedVault/i.test(ua))\n        return true;\n    // Desktop-mode fallback: detected as mobile + Linux UA + not another OS\n    if (detectMobile() && /Linux/i.test(ua) && !/CrOS|Macintosh|iPhone|iPad/i.test(ua))\n        return true;\n    return false;\n}\n/**\n * Reset the platform to web defaults and clear the configured flag.\n * **For testing only** — not exported from the public API.\n * @internal\n */\nexport function _resetPlatformForTesting() {\n    _platform = createWebPlatform();\n    _platformConfigured = false;\n}\n","import { getPlatform } from \"../../platform\";\n/**\n * OffchainAuthProvider wraps a real auth provider (e.g., Phantom) for the poofnet environment.\n *\n * signMessage shows a custom confirmation modal and then delegates to the wrapped\n * provider for a real detached signature over the exact offchain transaction message.\n */\nexport class OffchainAuthProvider {\n    constructor(wrappedProvider, config = {}) {\n        this.wrappedProvider = wrappedProvider;\n        this.config = config;\n    }\n    // ============ Delegated Methods ============\n    async login() {\n        const user = await this.wrappedProvider.login();\n        if (user) {\n            return Object.assign(Object.assign({}, user), { provider: this });\n        }\n        return null;\n    }\n    // Forward per-call login overrides (theme/title/subtitle and the `method`\n    // directive) to the wrapped provider. Without this, the top-level login()\n    // forwarder (which duck-types `setLoginOverrides` on the active provider)\n    // skips the wrapper and the override — including `method` — is dropped on\n    // offchain/Poofnet builds.\n    setLoginOverrides(opts) {\n        var _a, _b;\n        (_b = (_a = this.wrappedProvider).setLoginOverrides) === null || _b === void 0 ? void 0 : _b.call(_a, opts);\n    }\n    async logout() {\n        await this.wrappedProvider.logout();\n    }\n    async restoreSession() {\n        const user = await this.wrappedProvider.restoreSession();\n        if (user) {\n            return Object.assign(Object.assign({}, user), { provider: this });\n        }\n        return null;\n    }\n    async signTransaction(tx) {\n        if (getPlatform().hasDOM) {\n            await this.showUnsupportedTransactionModal();\n        }\n        throw new Error('Poofnet does not support real Solana transactions. Deploy your project to mainnet to use this feature.');\n    }\n    /**\n     * Sign and submit transaction - not supported in poofnet environment.\n     * See the real providers (PhantomWalletProvider, SolanaKeypairProvider)\n     * for the full implementation with blockhash handling and feePayer support.\n     */\n    async signAndSubmitTransaction(_transaction, _feePayer) {\n        if (getPlatform().hasDOM) {\n            await this.showUnsupportedTransactionModal();\n        }\n        throw new Error('Poofnet does not support real Solana transactions. Deploy your project to mainnet to use this feature.');\n    }\n    async getNativeMethods() {\n        return this.wrappedProvider.getNativeMethods();\n    }\n    // Forward wallet export to the wrapped provider (only Privy embedded wallets\n    // implement it). Duck-typed so wrappers around non-embedded providers throw\n    // a clear error rather than a \"not a function\" crash.\n    async exportWallet(address) {\n        if (typeof this.wrappedProvider.exportWallet !== 'function') {\n            throw new Error('Wallet export is not available for this wallet.');\n        }\n        await this.wrappedProvider.exportWallet(address);\n    }\n    // ============ signMessage delegates to wrapped provider ============\n    async signMessage(message) {\n        var _a, _b, _c, _d, _e, _f;\n        (_b = (_a = this.config).onSigningStart) === null || _b === void 0 ? void 0 : _b.call(_a);\n        try {\n            // On RN (no DOM), auto-confirm — there's no modal to show.\n            // On web, show the confirmation modal.\n            if (getPlatform().hasDOM) {\n                const confirmed = await this.showTransactionModal(message);\n                if (!confirmed) {\n                    throw new Error(\"Transaction rejected by user\");\n                }\n            }\n            const signature = await this.wrappedProvider.signMessage(message);\n            // Callback: signing complete\n            (_d = (_c = this.config).onSigningComplete) === null || _d === void 0 ? void 0 : _d.call(_c, signature);\n            return signature;\n        }\n        catch (error) {\n            (_f = (_e = this.config).onSigningError) === null || _f === void 0 ? void 0 : _f.call(_e, error);\n            throw error;\n        }\n    }\n    // ============ Modal Implementation ============\n    async showUnsupportedTransactionModal() {\n        return new Promise((resolve) => {\n            // Create modal container. Captured in this closure so every teardown\n            // path acts on exactly this prompt, never on a newer one that may have\n            // replaced a shared field.\n            const container = document.createElement(\"div\");\n            container.id = \"poofnet-unsupported-modal\";\n            container.appendChild(this.buildUnsupportedModalContent());\n            document.body.appendChild(container);\n            // Add styles\n            const style = document.createElement(\"style\");\n            style.textContent = this.getModalStyles();\n            container.appendChild(style);\n            // Mark all OTHER body children as inert, recording only the ones this\n            // modal changed (skipping any already-inert) so cleanup restores exactly\n            // what we set and never re-enables app-owned inert regions.\n            const selfInerted = [];\n            document.body.childNodes.forEach((child) => {\n                if (child !== container &&\n                    child instanceof HTMLElement &&\n                    !child.hasAttribute(\"inert\")) {\n                    child.setAttribute(\"inert\", \"\");\n                    selfInerted.push(child);\n                }\n            });\n            // Animate in\n            requestAnimationFrame(() => {\n                const overlay = container.querySelector(\".poofnet-modal-overlay\");\n                const content = container.querySelector(\".poofnet-modal-content\");\n                if (overlay)\n                    overlay.style.opacity = \"1\";\n                if (content) {\n                    content.style.opacity = \"1\";\n                    content.style.transform = \"translateY(0)\";\n                }\n            });\n            // Single idempotent teardown for every settlement path: removes the key\n            // handler, restores only self-added inert, and removes exactly this\n            // captured container after the exit animation.\n            let settled = false;\n            const escHandler = (e) => {\n                if (e.key === \"Escape\")\n                    dismiss();\n            };\n            const cleanup = () => {\n                if (settled)\n                    return;\n                settled = true;\n                document.removeEventListener(\"keydown\", escHandler);\n                for (const el of selfInerted)\n                    el.removeAttribute(\"inert\");\n                const overlay = container.querySelector(\".poofnet-modal-overlay\");\n                const content = container.querySelector(\".poofnet-modal-content\");\n                if (overlay)\n                    overlay.style.opacity = \"0\";\n                if (content) {\n                    content.style.opacity = \"0\";\n                    content.style.transform = \"translateY(20px)\";\n                }\n                setTimeout(() => container.remove(), 200);\n            };\n            const dismiss = () => {\n                cleanup();\n                resolve();\n            };\n            // Handle close button\n            const closeBtn = container.querySelector(\"#poofnet-close-btn\");\n            closeBtn === null || closeBtn === void 0 ? void 0 : closeBtn.addEventListener(\"click\", dismiss);\n            // Handle cancel button\n            const cancelBtn = container.querySelector(\"#poofnet-cancel-btn\");\n            cancelBtn === null || cancelBtn === void 0 ? void 0 : cancelBtn.addEventListener(\"click\", dismiss);\n            // Handle overlay click\n            const overlay = container.querySelector(\".poofnet-modal-overlay\");\n            overlay === null || overlay === void 0 ? void 0 : overlay.addEventListener(\"click\", (e) => {\n                if (e.target === overlay)\n                    dismiss();\n            });\n            // Handle escape key\n            document.addEventListener(\"keydown\", escHandler);\n        });\n    }\n    async showTransactionModal(message) {\n        return new Promise((resolve) => {\n            // Parse the transaction message for display\n            let parsed = {};\n            try {\n                parsed = JSON.parse(message);\n            }\n            catch (_a) {\n                // If not JSON, just show raw message\n            }\n            // Create modal container. Captured in this closure so every teardown\n            // path acts on exactly this prompt, never on a newer one that may have\n            // replaced a shared field.\n            const container = document.createElement(\"div\");\n            container.id = \"poofnet-tx-modal\";\n            container.appendChild(this.buildTransactionModalContent(parsed, message));\n            document.body.appendChild(container);\n            // Add styles\n            const style = document.createElement(\"style\");\n            style.textContent = this.getModalStyles();\n            container.appendChild(style);\n            // Mark all OTHER body children as inert to disable focus traps from\n            // other modals, recording only the ones this modal changed (skipping\n            // any already-inert) so cleanup restores exactly what we set and never\n            // re-enables app-owned inert regions.\n            const selfInerted = [];\n            document.body.childNodes.forEach((child) => {\n                if (child !== container &&\n                    child instanceof HTMLElement &&\n                    !child.hasAttribute(\"inert\")) {\n                    child.setAttribute(\"inert\", \"\");\n                    selfInerted.push(child);\n                }\n            });\n            // Animate in\n            requestAnimationFrame(() => {\n                const overlay = container.querySelector(\".poofnet-modal-overlay\");\n                const content = container.querySelector(\".poofnet-modal-content\");\n                if (overlay)\n                    overlay.style.opacity = \"1\";\n                if (content) {\n                    content.style.opacity = \"1\";\n                    content.style.transform = \"translateY(0)\";\n                }\n            });\n            // Single idempotent teardown for every settlement path: removes the key\n            // handler, restores only self-added inert, and removes exactly this\n            // captured container after the exit animation.\n            let settled = false;\n            const escHandler = (e) => {\n                if (e.key === \"Escape\")\n                    settle(false);\n            };\n            const cleanup = () => {\n                if (settled)\n                    return;\n                settled = true;\n                document.removeEventListener(\"keydown\", escHandler);\n                for (const el of selfInerted)\n                    el.removeAttribute(\"inert\");\n                const overlay = container.querySelector(\".poofnet-modal-overlay\");\n                const content = container.querySelector(\".poofnet-modal-content\");\n                if (overlay)\n                    overlay.style.opacity = \"0\";\n                if (content) {\n                    content.style.opacity = \"0\";\n                    content.style.transform = \"translateY(20px)\";\n                }\n                setTimeout(() => container.remove(), 200);\n            };\n            const settle = (confirmed) => {\n                cleanup();\n                resolve(confirmed);\n            };\n            // Handle confirm\n            const confirmBtn = container.querySelector(\"#poofnet-confirm-btn\");\n            confirmBtn === null || confirmBtn === void 0 ? void 0 : confirmBtn.addEventListener(\"click\", () => settle(true));\n            // Handle cancel\n            const cancelBtn = container.querySelector(\"#poofnet-cancel-btn\");\n            cancelBtn === null || cancelBtn === void 0 ? void 0 : cancelBtn.addEventListener(\"click\", () => settle(false));\n            // Handle close button\n            const closeBtn = container.querySelector(\"#poofnet-close-btn\");\n            closeBtn === null || closeBtn === void 0 ? void 0 : closeBtn.addEventListener(\"click\", () => settle(false));\n            // Handle overlay click\n            const overlay = container.querySelector(\".poofnet-modal-overlay\");\n            overlay === null || overlay === void 0 ? void 0 : overlay.addEventListener(\"click\", (e) => {\n                if (e.target === overlay)\n                    settle(false);\n            });\n            // Handle escape key\n            document.addEventListener(\"keydown\", escHandler);\n        });\n    }\n    createElement(tag, className, text) {\n        const el = document.createElement(tag);\n        if (className)\n            el.className = className;\n        if (text !== undefined)\n            el.textContent = text;\n        return el;\n    }\n    appendTextElement(parent, tag, className, text) {\n        const el = this.createElement(tag, className, text);\n        parent.appendChild(el);\n        return el;\n    }\n    buildModalShell(icon, title) {\n        const overlay = this.createElement(\"div\", \"poofnet-modal-overlay\");\n        const content = this.createElement(\"div\", \"poofnet-modal-content\");\n        overlay.appendChild(content);\n        const close = this.createElement(\"button\", \"poofnet-close-btn\", \"×\");\n        close.id = \"poofnet-close-btn\";\n        close.setAttribute(\"aria-label\", \"Close\");\n        close.type = \"button\";\n        content.appendChild(close);\n        const header = this.createElement(\"div\", \"poofnet-modal-header\");\n        this.appendTextElement(header, \"div\", \"poofnet-modal-icon\", icon);\n        this.appendTextElement(header, \"h2\", \"poofnet-modal-title\", title);\n        this.appendTextElement(header, \"p\", \"poofnet-modal-subtitle\", \"Poofnet Simulated Blockchain\");\n        content.appendChild(header);\n        const body = this.createElement(\"div\", \"poofnet-modal-body\");\n        content.appendChild(body);\n        const footer = this.createElement(\"div\", \"poofnet-modal-footer\");\n        content.appendChild(footer);\n        return { overlay, body, footer };\n    }\n    buildInfoBox(text, warning = false) {\n        const info = this.createElement(\"div\", \"poofnet-info-box\");\n        if (warning)\n            info.style.background = \"#fef3c7\";\n        this.appendTextElement(info, \"span\", \"poofnet-info-icon\", \"ℹ️\");\n        const infoText = this.createElement(\"span\", \"poofnet-info-text\", text);\n        if (warning)\n            infoText.style.color = \"#92400e\";\n        info.appendChild(infoText);\n        return info;\n    }\n    buildUnsupportedModalContent() {\n        const { overlay, body, footer } = this.buildModalShell(\"⚠️\", \"Transaction Not Supported\");\n        body.appendChild(this.buildInfoBox(\"Poofnet is a simulated blockchain and does not support real Solana transactions. Deploy your project to mainnet to test real transactions.\", true));\n        const close = this.createElement(\"button\", \"poofnet-btn poofnet-btn-cancel\", \"Close\");\n        close.id = \"poofnet-cancel-btn\";\n        close.type = \"button\";\n        close.style.flex = \"1\";\n        footer.appendChild(close);\n        return overlay;\n    }\n    formatPath(path) {\n        const parts = path.split(\"/\").filter(Boolean);\n        if (parts.length >= 2) {\n            return {\n                collection: parts[0],\n                documentId: parts[parts.length - 1],\n            };\n        }\n        return { collection: parts[0] || path, documentId: null };\n    }\n    formatFieldValue(value) {\n        if (value === null || value === undefined)\n            return \"null\";\n        if (typeof value === \"string\") {\n            return value.length > 30\n                ? `\"${value.slice(0, 30)}...\"`\n                : `\"${value}\"`;\n        }\n        if (typeof value === \"number\" || typeof value === \"boolean\")\n            return String(value);\n        if (Array.isArray(value))\n            return `[${value.length} items]`;\n        if (typeof value === \"object\")\n            return `{${Object.keys(value).length} fields}`;\n        return String(value);\n    }\n    getActionDescription(type, collection, isNew) {\n        if (type === \"delete\")\n            return `Delete from ${collection}`;\n        return isNew ? `Create in ${collection}` : `Update ${collection}`;\n    }\n    buildTransactionModalContent(parsed, rawMessage) {\n        const instructions = parsed.instructions || [];\n        // Group instructions by type for summary\n        const sets = instructions.filter((i) => i.type === \"set\");\n        const deletes = instructions.filter((i) => i.type === \"delete\");\n        // Create summary text\n        let summaryText = \"\";\n        if (sets.length > 0 && deletes.length > 0) {\n            summaryText = `${sets.length} update${sets.length > 1 ? \"s\" : \"\"}, ${deletes.length} delete${deletes.length > 1 ? \"s\" : \"\"}`;\n        }\n        else if (sets.length > 0) {\n            summaryText = `${sets.length} update${sets.length > 1 ? \"s\" : \"\"}`;\n        }\n        else if (deletes.length > 0) {\n            summaryText = `${deletes.length} delete${deletes.length > 1 ? \"s\" : \"\"}`;\n        }\n        const { overlay, body, footer } = this.buildModalShell(\"🔐\", \"Confirm Transaction\");\n        if (instructions.length > 0) {\n            if (summaryText) {\n                this.appendTextElement(body, \"div\", \"poofnet-summary\", summaryText);\n            }\n            const list = this.createElement(\"div\", \"poofnet-instructions-list\");\n            for (const inst of instructions) {\n                list.appendChild(this.buildInstructionElement(inst));\n            }\n            body.appendChild(list);\n        }\n        else {\n            const section = this.createElement(\"div\", \"poofnet-section\");\n            this.appendTextElement(section, \"h3\", \"poofnet-section-title\", \"Message\");\n            const raw = this.createElement(\"pre\", \"poofnet-raw-message\", rawMessage.slice(0, 200) + (rawMessage.length > 200 ? \"...\" : \"\"));\n            section.appendChild(raw);\n            body.appendChild(section);\n        }\n        body.appendChild(this.buildInfoBox(\"This is a simulated transaction. No real fees will be charged.\"));\n        const cancel = this.createElement(\"button\", \"poofnet-btn poofnet-btn-cancel\", \"Cancel\");\n        cancel.id = \"poofnet-cancel-btn\";\n        cancel.type = \"button\";\n        footer.appendChild(cancel);\n        const confirm = this.createElement(\"button\", \"poofnet-btn poofnet-btn-confirm\", \"Confirm\");\n        confirm.id = \"poofnet-confirm-btn\";\n        confirm.type = \"button\";\n        footer.appendChild(confirm);\n        return overlay;\n    }\n    buildInstructionElement(inst) {\n        const { collection, documentId } = this.formatPath(inst.path);\n        const isDelete = inst.type === \"delete\";\n        const card = this.createElement(\"div\", `poofnet-instruction ${isDelete ? \"poofnet-action-delete\" : \"poofnet-action-set\"}`);\n        const header = this.createElement(\"div\", \"poofnet-instruction-header\");\n        this.appendTextElement(header, \"span\", \"poofnet-instruction-icon\", isDelete ? \"🗑️\" : \"✏️\");\n        this.appendTextElement(header, \"span\", \"poofnet-instruction-action\", isDelete ? \"Delete\" : \"Save\");\n        this.appendTextElement(header, \"span\", \"poofnet-instruction-collection\", collection);\n        card.appendChild(header);\n        if (documentId) {\n            this.appendTextElement(card, \"div\", \"poofnet-instruction-id\", `ID: ${documentId}`);\n        }\n        if (inst.data && !isDelete) {\n            const fieldKeys = Object.keys(inst.data).filter((key) => !key.startsWith(\"_\"));\n            const visibleFields = fieldKeys.slice(0, 4);\n            if (visibleFields.length > 0) {\n                const fields = this.createElement(\"div\", \"poofnet-fields\");\n                for (const key of visibleFields) {\n                    const row = this.createElement(\"div\", \"poofnet-field\");\n                    this.appendTextElement(row, \"span\", \"poofnet-field-key\", `${key}:`);\n                    this.appendTextElement(row, \"span\", \"poofnet-field-value\", this.formatFieldValue(inst.data[key]));\n                    fields.appendChild(row);\n                }\n                if (fieldKeys.length > 4) {\n                    this.appendTextElement(fields, \"div\", \"poofnet-field-more\", `+${fieldKeys.length - 4} more fields`);\n                }\n                card.appendChild(fields);\n            }\n        }\n        return card;\n    }\n    getModalStyles() {\n        return `\n      /* Ensure inert elements remain visible while being non-interactive */\n      [inert] {\n        visibility: visible !important;\n        opacity: 1 !important;\n        display: unset !important;\n      }\n\n      .poofnet-modal-overlay {\n        position: fixed;\n        top: 0;\n        left: 0;\n        right: 0;\n        bottom: 0;\n        background: rgba(0, 0, 0, 0.5);\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        z-index: 999999;\n        opacity: 0;\n        transition: opacity 0.2s ease;\n        font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n      }\n\n      .poofnet-modal-content {\n        background: white;\n        border-radius: 16px;\n        width: 90%;\n        max-width: 420px;\n        box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\n        opacity: 0;\n        transform: translateY(20px);\n        transition: all 0.2s ease;\n        max-height: 90vh;\n        overflow: hidden;\n        display: flex;\n        flex-direction: column;\n        position: relative;\n      }\n\n      .poofnet-close-btn {\n        position: absolute;\n        top: 12px;\n        right: 12px;\n        width: 28px;\n        height: 28px;\n        border: none;\n        background: #f3f4f6;\n        border-radius: 8px;\n        cursor: pointer;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        color: #6b7280;\n        transition: all 0.15s ease;\n        z-index: 1;\n      }\n\n      .poofnet-close-btn:hover {\n        background: #e5e7eb;\n        color: #374151;\n      }\n\n      .poofnet-modal-header {\n        padding: 24px 24px 16px;\n        text-align: center;\n        border-bottom: 1px solid #f0f0f0;\n        flex-shrink: 0;\n      }\n\n      .poofnet-modal-icon {\n        font-size: 40px;\n        margin-bottom: 8px;\n      }\n\n      .poofnet-modal-title {\n        margin: 0;\n        font-size: 18px;\n        font-weight: 600;\n        color: #1a1a1a;\n      }\n\n      .poofnet-modal-subtitle {\n        margin: 4px 0 0;\n        font-size: 13px;\n        color: #8b5cf6;\n        font-weight: 500;\n      }\n\n      .poofnet-modal-body {\n        padding: 16px 20px;\n        overflow-y: auto;\n        flex: 1;\n      }\n\n      .poofnet-summary {\n        font-size: 13px;\n        color: #6b7280;\n        margin-bottom: 12px;\n        text-align: center;\n      }\n\n      .poofnet-section {\n        margin-bottom: 16px;\n      }\n\n      .poofnet-section-title {\n        font-size: 12px;\n        font-weight: 600;\n        color: #666;\n        text-transform: uppercase;\n        letter-spacing: 0.5px;\n        margin: 0 0 8px;\n      }\n\n      .poofnet-instructions-list {\n        display: flex;\n        flex-direction: column;\n        gap: 10px;\n      }\n\n      .poofnet-instruction {\n        background: #f9fafb;\n        border-radius: 10px;\n        padding: 12px;\n        border-left: 3px solid #8b5cf6;\n      }\n\n      .poofnet-instruction.poofnet-action-delete {\n        border-left-color: #ef4444;\n      }\n\n      .poofnet-instruction-header {\n        display: flex;\n        align-items: center;\n        gap: 8px;\n        margin-bottom: 4px;\n      }\n\n      .poofnet-instruction-icon {\n        font-size: 16px;\n        flex-shrink: 0;\n      }\n\n      .poofnet-instruction-action {\n        font-size: 13px;\n        font-weight: 600;\n        color: #8b5cf6;\n      }\n\n      .poofnet-action-delete .poofnet-instruction-action {\n        color: #ef4444;\n      }\n\n      .poofnet-instruction-collection {\n        font-size: 13px;\n        font-weight: 500;\n        color: #374151;\n      }\n\n      .poofnet-instruction-id {\n        font-size: 11px;\n        color: #9ca3af;\n        font-family: monospace;\n        margin-bottom: 8px;\n        word-break: break-all;\n      }\n\n      .poofnet-fields {\n        background: white;\n        border-radius: 6px;\n        padding: 8px 10px;\n        margin-top: 8px;\n      }\n\n      .poofnet-field {\n        display: flex;\n        gap: 8px;\n        padding: 4px 0;\n        font-size: 12px;\n        border-bottom: 1px solid #f3f4f6;\n      }\n\n      .poofnet-field:last-child {\n        border-bottom: none;\n      }\n\n      .poofnet-field-key {\n        color: #6b7280;\n        font-weight: 500;\n        flex-shrink: 0;\n      }\n\n      .poofnet-field-value {\n        color: #374151;\n        word-break: break-all;\n      }\n\n      .poofnet-field-more {\n        font-size: 11px;\n        color: #9ca3af;\n        padding-top: 4px;\n        font-style: italic;\n      }\n\n      .poofnet-raw-message {\n        background: #f9fafb;\n        border-radius: 8px;\n        padding: 12px;\n        font-size: 11px;\n        font-family: monospace;\n        color: #4b5563;\n        white-space: pre-wrap;\n        word-break: break-all;\n        margin: 0;\n        max-height: 120px;\n        overflow-y: auto;\n      }\n\n      .poofnet-info-box {\n        display: flex;\n        align-items: center;\n        gap: 8px;\n        background: #faf5ff;\n        border-radius: 8px;\n        padding: 10px 12px;\n        margin-top: 12px;\n      }\n\n      .poofnet-info-icon {\n        font-size: 14px;\n        flex-shrink: 0;\n      }\n\n      .poofnet-info-text {\n        font-size: 11px;\n        color: #7c3aed;\n        line-height: 1.4;\n      }\n\n      .poofnet-modal-footer {\n        padding: 16px 20px 20px;\n        display: flex;\n        gap: 12px;\n        flex-shrink: 0;\n        border-top: 1px solid #f0f0f0;\n      }\n\n      .poofnet-btn {\n        flex: 1;\n        padding: 12px 16px;\n        border-radius: 10px;\n        font-size: 14px;\n        font-weight: 600;\n        cursor: pointer;\n        transition: all 0.15s ease;\n        border: none;\n      }\n\n      .poofnet-btn-cancel {\n        background: #f3f4f6;\n        color: #4b5563;\n      }\n\n      .poofnet-btn-cancel:hover {\n        background: #e5e7eb;\n      }\n\n      .poofnet-btn-confirm {\n        background: #8b5cf6;\n        color: white;\n      }\n\n      .poofnet-btn-confirm:hover {\n        background: #7c3aed;\n      }\n    `;\n    }\n}\n","// issuer-logout-bounce.ts - commit the top-level navigation that ends the hosted\n// issuer's browser session (the Better Auth cookie on auth.bounded.sh).\n//\n// The issuer cookie is SameSite=Lax, so only a TOP-LEVEL navigation carries it:\n// a credentialed fetch or a hidden iframe cannot end that session. Assigning\n// `window.location.href` only QUEUES that navigation, though. logout() used to\n// resolve immediately after the assignment, so a caller that navigated again\n// right away - `await logout(); location.reload()` is the dashboard's exact\n// sign-out handler - replaced the still-pending bounce: the issuer cookie\n// survived and the next social login silently signed the \"signed-out\" account\n// straight back in.\n//\n// The fix is simply to NOT resolve while the navigation is in flight. A\n// successful navigation destroys this document, so the caller never resumes and\n// can never cancel the bounce; the timer exists only so a navigation that never\n// commits (e.g. a user declining a `beforeunload` dialog) cannot hang the caller\n// forever. Local session state is already cleared before this runs, so resuming\n// on that fallback still leaves the app fully logged out.\n//\n// Verified in a real browser: with an immediate resolve the tab stays on the\n// caller's page (bounce lost); holding until the document is destroyed lands on\n// the issuer.\n/** Navigate to the issuer /logout bounce. The returned promise stays pending\n *  while the navigation is in flight - a successful navigation tears down this\n *  document instead of resolving it - and settles only via `capMs` if the\n *  navigation never commits. */\nexport function commitIssuerLogoutBounce(bounce, capMs = 15000) {\n    return new Promise((resolve) => {\n        setTimeout(resolve, capMs);\n        window.location.href = bounce;\n    });\n}\n","// Single source of truth for the two localStorage markers that record WHICH auth\n// method minted the active session, and whether that session owns a hosted\n// issuer browser cookie. Every writer must go through setStoredAuthMethod():\n// a provider that writes the method key directly leaves a stale\n// `bounded_issuer_session_kind` behind, which is what taught logout() to bounce\n// a wallet reader at an issuer that has no /logout route.\nimport { getPlatform } from '../platform';\nexport const STORED_AUTH_METHOD_KEY = 'bounded_last_auth_method';\nexport const ISSUER_SESSION_KIND_KEY = 'bounded_issuer_session_kind';\nexport function getStoredAuthMethod() {\n    try {\n        return getPlatform().storage.getItem(STORED_AUTH_METHOD_KEY);\n    }\n    catch (_a) {\n        return null;\n    }\n}\nexport function setStoredAuthMethod(method) {\n    try {\n        if (method) {\n            getPlatform().storage.setItem(STORED_AUTH_METHOD_KEY, method);\n        }\n        else {\n            getPlatform().storage.removeItem(STORED_AUTH_METHOD_KEY);\n        }\n        // Non-email providers cannot own a Better Auth browser session. Clear\n        // any prior hosted/inline classification when the active provider is\n        // replaced or the session is removed.\n        if (method !== 'email') {\n            getPlatform().storage.removeItem(ISSUER_SESSION_KIND_KEY);\n        }\n    }\n    catch (_a) {\n        // storage might not be available\n    }\n}\nexport function getIssuerSessionKind() {\n    try {\n        return getPlatform().storage.getItem(ISSUER_SESSION_KIND_KEY);\n    }\n    catch (_a) {\n        return null;\n    }\n}\n","import { getConfig } from '@bounded-sh/core';\nimport { setAuthProviderInstance, setCurrentUser } from '../global';\nimport { setStoredAuthMethod } from './stored-auth-method';\nlet registrySync = null;\nexport function registerAuthRegistrySync(fn) {\n    registrySync = fn;\n}\n/**\n * Atomically commit `provider` as the owner of the active session. The single await\n * happens BEFORE any state is touched; every write below it runs in one synchronous\n * block, so no listener or concurrent caller can ever observe a mixed identity\n * (e.g. the new provider with the old user, or the new user on the old signer).\n *\n * Pass `user` to publish the session's user inside the same block (listeners fire\n * after every pointer already agrees). Omit it when the caller manages the user\n * separately (e.g. a path that publishes the user only after further checks).\n */\nexport async function adoptSessionProvider(opts) {\n    const coreConfig = await getConfig();\n    coreConfig.authProvider = opts.provider;\n    coreConfig.authMethod = opts.method;\n    setAuthProviderInstance(opts.provider);\n    registrySync === null || registrySync === void 0 ? void 0 : registrySync(opts.provider, opts.method, opts.configKey);\n    setStoredAuthMethod(opts.method);\n    if (opts.user !== undefined)\n        setCurrentUser(opts.user);\n}\n/**\n * REPAIR, not establishment: rebuild the provider pointers from the init config\n * after a prior logout nulled them, so `login()` / `logout()` can dispatch again.\n *\n * Deliberately does NOT write the stored auth-method marker, and that omission is\n * load-bearing rather than an oversight: logout()'s self-heal runs BEFORE it reads\n * `getIssuerSessionKind()`, and setStoredAuthMethod clears that kind marker for any\n * non-email method - so stamping a marker here would erase the evidence that the\n * session being logged out was hosted and silently skip the issuer-cookie bounce.\n * No session is being established here; the marker already describes the live one.\n */\nexport async function adoptRebuiltProvider(provider, method) {\n    const coreConfig = await getConfig();\n    coreConfig.authProvider = provider;\n    coreConfig.authMethod = method;\n    setAuthProviderInstance(provider);\n    // The module registry (and its config key) is already correct here: the caller\n    // rebuilt the provider through getAuthProvider(), which assigns both.\n}\n/**\n * The logout-side mirror: clear every pointer a session adoption sets, so a later\n * login cannot inherit a dead signer. Deliberately LEAVES the global\n * authProviderInstance in place - global.ts's login()/logout() wrappers treat a null\n * instance as \"not initialized\" and would throw at the user after a legitimate\n * logout; auth/index.ts's own self-heal branches rebuild the registry from\n * initConfig on the next call either way.\n */\nexport async function clearSessionProviderForLogout() {\n    const coreConfig = await getConfig();\n    coreConfig.authProvider = null;\n    // 'none' is the config default meaning \"no auth configured\" - the closest\n    // honest value for \"no session owns the signer any more\".\n    coreConfig.authMethod = 'none';\n    registrySync === null || registrySync === void 0 ? void 0 : registrySync(null, null, null);\n    setStoredAuthMethod(null);\n}\n","export const SOLANA_DEVNET_RPC_URL = \"https://idelle-8nxsep-fast-devnet.helius-rpc.com\";\nexport const SOLANA_MAINNET_RPC_URL = \"https://celestia-cegncv-fast-mainnet.helius-rpc.com\";\nconst SUPPORTED_SOLANA_NETWORKS = new Set([\n    \"solana_devnet\",\n    \"solana_mainnet\",\n]);\nexport function normalizeSolanaRpcUrl(rpcUrl) {\n    if (typeof rpcUrl !== \"string\")\n        return null;\n    const trimmed = rpcUrl.trim();\n    return trimmed.length > 0 ? trimmed : null;\n}\nexport function isSupportedSolanaRpcNetwork(network) {\n    return typeof network === \"string\" && SUPPORTED_SOLANA_NETWORKS.has(network);\n}\nexport function resolveSolanaWalletStandardChain(network, context) {\n    switch (network) {\n        case \"solana_devnet\":\n            return \"solana:devnet\";\n        case \"solana_mainnet\":\n            return \"solana:mainnet\";\n        case undefined:\n        case null:\n        case \"\":\n            throw new Error(`${context} requires an explicit Solana network. ` +\n                `Provide one of: solana_devnet, solana_mainnet.`);\n        default:\n            throw new Error(`${context} does not support Solana network \"${network}\". ` +\n                `Expected one of: solana_devnet, solana_mainnet.`);\n    }\n}\nexport function resolveSolanaRpcUrl(explicitRpcUrl, network, context) {\n    if (network != null && network !== \"\" && !isSupportedSolanaRpcNetwork(network)) {\n        throw new Error(`${context} does not support Solana network \"${network}\". ` +\n            `Expected one of: solana_devnet, solana_mainnet.`);\n    }\n    const rpcUrl = normalizeSolanaRpcUrl(explicitRpcUrl);\n    if (rpcUrl)\n        return rpcUrl;\n    throw new Error(`${context} requires an explicit Solana RPC URL. Pass config.rpcUrl before signing or submitting onchain transactions.`);\n}\n","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _AppReadyEvent_detail;\nlet wallets = undefined;\nconst registeredWalletsSet = new Set();\nfunction addRegisteredWallet(wallet) {\n    cachedWalletsArray = undefined;\n    registeredWalletsSet.add(wallet);\n}\nfunction removeRegisteredWallet(wallet) {\n    cachedWalletsArray = undefined;\n    registeredWalletsSet.delete(wallet);\n}\nconst listeners = {};\n/**\n * Get an API for {@link Wallets.get | getting}, {@link Wallets.on | listening for}, and\n * {@link Wallets.register | registering} {@link \"@wallet-standard/base\".Wallet | Wallets}.\n *\n * When called for the first time --\n *\n * This dispatches a {@link \"@wallet-standard/base\".WindowAppReadyEvent} to notify each Wallet that the app is ready\n * to register it.\n *\n * This also adds a listener for {@link \"@wallet-standard/base\".WindowRegisterWalletEvent} to listen for a notification\n * from each Wallet that the Wallet is ready to be registered by the app.\n *\n * This combination of event dispatch and listener guarantees that each Wallet will be registered synchronously as soon\n * as the app is ready whether the app loads before or after each Wallet.\n *\n * @return API for getting, listening for, and registering Wallets.\n *\n * @group App\n */\nexport function getWallets() {\n    if (wallets)\n        return wallets;\n    wallets = Object.freeze({ register, get, on });\n    if (typeof window === 'undefined')\n        return wallets;\n    const api = Object.freeze({ register });\n    try {\n        window.addEventListener('wallet-standard:register-wallet', ({ detail: callback }) => callback(api));\n    }\n    catch (error) {\n        console.error('wallet-standard:register-wallet event listener could not be added\\n', error);\n    }\n    try {\n        window.dispatchEvent(new AppReadyEvent(api));\n    }\n    catch (error) {\n        console.error('wallet-standard:app-ready event could not be dispatched\\n', error);\n    }\n    return wallets;\n}\nfunction register(...wallets) {\n    // Filter out wallets that have already been registered.\n    // This prevents the same wallet from being registered twice, but it also prevents wallets from being\n    // unregistered by reusing a reference to the wallet to obtain the unregister function for it.\n    wallets = wallets.filter((wallet) => !registeredWalletsSet.has(wallet));\n    // If there are no new wallets to register, just return a no-op unregister function.\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\n    if (!wallets.length)\n        return () => { };\n    wallets.forEach((wallet) => addRegisteredWallet(wallet));\n    listeners['register']?.forEach((listener) => guard(() => listener(...wallets)));\n    // Return a function that unregisters the registered wallets.\n    return function unregister() {\n        wallets.forEach((wallet) => removeRegisteredWallet(wallet));\n        listeners['unregister']?.forEach((listener) => guard(() => listener(...wallets)));\n    };\n}\nlet cachedWalletsArray;\nfunction get() {\n    if (!cachedWalletsArray) {\n        cachedWalletsArray = [...registeredWalletsSet];\n    }\n    return cachedWalletsArray;\n}\nfunction on(event, listener) {\n    listeners[event]?.push(listener) || (listeners[event] = [listener]);\n    // Return a function that removes the event listener.\n    return function off() {\n        listeners[event] = listeners[event]?.filter((existingListener) => listener !== existingListener);\n    };\n}\nfunction guard(callback) {\n    try {\n        callback();\n    }\n    catch (error) {\n        console.error(error);\n    }\n}\nclass AppReadyEvent extends Event {\n    get detail() {\n        return __classPrivateFieldGet(this, _AppReadyEvent_detail, \"f\");\n    }\n    get type() {\n        return 'wallet-standard:app-ready';\n    }\n    constructor(api) {\n        super('wallet-standard:app-ready', {\n            bubbles: false,\n            cancelable: false,\n            composed: false,\n        });\n        _AppReadyEvent_detail.set(this, void 0);\n        __classPrivateFieldSet(this, _AppReadyEvent_detail, api, \"f\");\n    }\n    /** @deprecated */\n    preventDefault() {\n        throw new Error('preventDefault cannot be called');\n    }\n    /** @deprecated */\n    stopImmediatePropagation() {\n        throw new Error('stopImmediatePropagation cannot be called');\n    }\n    /** @deprecated */\n    stopPropagation() {\n        throw new Error('stopPropagation cannot be called');\n    }\n}\n_AppReadyEvent_detail = new WeakMap();\n/**\n * @deprecated Use {@link getWallets} instead.\n *\n * @group Deprecated\n */\nexport function DEPRECATED_getWallets() {\n    if (wallets)\n        return wallets;\n    wallets = getWallets();\n    if (typeof window === 'undefined')\n        return wallets;\n    const callbacks = window.navigator.wallets || [];\n    if (!Array.isArray(callbacks)) {\n        console.error('window.navigator.wallets is not an array');\n        return wallets;\n    }\n    const { register } = wallets;\n    const push = (...callbacks) => callbacks.forEach((callback) => guard(() => callback({ register })));\n    try {\n        Object.defineProperty(window.navigator, 'wallets', {\n            value: Object.freeze({ push }),\n        });\n    }\n    catch (error) {\n        console.error('window.navigator.wallets could not be set');\n        return wallets;\n    }\n    push(...callbacks);\n    return wallets;\n}\n//# sourceMappingURL=wallets.js.map","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n  (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n    ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n    : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n *               implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n    typeof console.error === 'function') {\n  console.error(\n    'This browser lacks typed array (Uint8Array) support which is required by ' +\n    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n  )\n}\n\nfunction typedArraySupport () {\n  // Can typed array instances can be augmented?\n  try {\n    const arr = new Uint8Array(1)\n    const proto = { foo: function () { return 42 } }\n    Object.setPrototypeOf(proto, Uint8Array.prototype)\n    Object.setPrototypeOf(arr, proto)\n    return arr.foo() === 42\n  } catch (e) {\n    return false\n  }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.buffer\n  }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.byteOffset\n  }\n})\n\nfunction createBuffer (length) {\n  if (length > K_MAX_LENGTH) {\n    throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n  }\n  // Return an augmented `Uint8Array` instance\n  const buf = new Uint8Array(length)\n  Object.setPrototypeOf(buf, Buffer.prototype)\n  return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new TypeError(\n        'The \"string\" argument must be of type string. Received type number'\n      )\n    }\n    return allocUnsafe(arg)\n  }\n  return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset)\n  }\n\n  if (ArrayBuffer.isView(value)) {\n    return fromArrayView(value)\n  }\n\n  if (value == null) {\n    throw new TypeError(\n      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n      'or Array-like Object. Received type ' + (typeof value)\n    )\n  }\n\n  if (isInstance(value, ArrayBuffer) ||\n      (value && isInstance(value.buffer, ArrayBuffer))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof SharedArrayBuffer !== 'undefined' &&\n      (isInstance(value, SharedArrayBuffer) ||\n      (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'number') {\n    throw new TypeError(\n      'The \"value\" argument must not be of type number. Received type number'\n    )\n  }\n\n  const valueOf = value.valueOf && value.valueOf()\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length)\n  }\n\n  const b = fromObject(value)\n  if (b) return b\n\n  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n      typeof value[Symbol.toPrimitive] === 'function') {\n    return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n  }\n\n  throw new TypeError(\n    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n    'or Array-like Object. Received type ' + (typeof value)\n  )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be of type number')\n  } else if (size < 0) {\n    throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n  }\n}\n\nfunction alloc (size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpreted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(size).fill(fill, encoding)\n      : createBuffer(size).fill(fill)\n  }\n  return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n  assertSize(size)\n  return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('Unknown encoding: ' + encoding)\n  }\n\n  const length = byteLength(string, encoding) | 0\n  let buf = createBuffer(length)\n\n  const actual = buf.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    buf = buf.slice(0, actual)\n  }\n\n  return buf\n}\n\nfunction fromArrayLike (array) {\n  const length = array.length < 0 ? 0 : checked(array.length) | 0\n  const buf = createBuffer(length)\n  for (let i = 0; i < length; i += 1) {\n    buf[i] = array[i] & 255\n  }\n  return buf\n}\n\nfunction fromArrayView (arrayView) {\n  if (isInstance(arrayView, Uint8Array)) {\n    const copy = new Uint8Array(arrayView)\n    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n  }\n  return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\"offset\" is outside of buffer bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\"length\" is outside of buffer bounds')\n  }\n\n  let buf\n  if (byteOffset === undefined && length === undefined) {\n    buf = new Uint8Array(array)\n  } else if (length === undefined) {\n    buf = new Uint8Array(array, byteOffset)\n  } else {\n    buf = new Uint8Array(array, byteOffset, length)\n  }\n\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(buf, Buffer.prototype)\n\n  return buf\n}\n\nfunction fromObject (obj) {\n  if (Buffer.isBuffer(obj)) {\n    const len = checked(obj.length) | 0\n    const buf = createBuffer(len)\n\n    if (buf.length === 0) {\n      return buf\n    }\n\n    obj.copy(buf, 0, 0, len)\n    return buf\n  }\n\n  if (obj.length !== undefined) {\n    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n      return createBuffer(0)\n    }\n    return fromArrayLike(obj)\n  }\n\n  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n    return fromArrayLike(obj.data)\n  }\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= K_MAX_LENGTH) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return b != null && b._isBuffer === true &&\n    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError(\n      'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n    )\n  }\n\n  if (a === b) return 0\n\n  let x = a.length\n  let y = b.length\n\n  for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!Array.isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  let i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  const buffer = Buffer.allocUnsafe(length)\n  let pos = 0\n  for (i = 0; i < list.length; ++i) {\n    let buf = list[i]\n    if (isInstance(buf, Uint8Array)) {\n      if (pos + buf.length > buffer.length) {\n        if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n        buf.copy(buffer, pos)\n      } else {\n        Uint8Array.prototype.set.call(\n          buffer,\n          buf,\n          pos\n        )\n      }\n    } else if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    } else {\n      buf.copy(buffer, pos)\n    }\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    throw new TypeError(\n      'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n      'Received type ' + typeof string\n    )\n  }\n\n  const len = string.length\n  const mustMatch = (arguments.length > 2 && arguments[2] === true)\n  if (!mustMatch && len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  let loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) {\n          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n        }\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  let loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  const i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  const len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (let i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  const len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (let i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  const len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (let i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  const length = this.length\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  let str = ''\n  const max = exports.INSPECT_MAX_BYTES\n  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n  if (this.length > max) str += ' ... '\n  return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (isInstance(target, Uint8Array)) {\n    target = Buffer.from(target, target.offset, target.byteLength)\n  }\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError(\n      'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n      'Received type ' + (typeof target)\n    )\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  let x = thisEnd - thisStart\n  let y = end - start\n  const len = Math.min(x, y)\n\n  const thisCopy = this.slice(thisStart, thisEnd)\n  const targetCopy = target.slice(start, end)\n\n  for (let i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset // Coerce to Number.\n  if (numberIsNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  let indexSize = 1\n  let arrLength = arr.length\n  let valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  let i\n  if (dir) {\n    let foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      let found = true\n      for (let j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  const remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  const strLen = string.length\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  let i\n  for (i = 0; i < length; ++i) {\n    const parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (numberIsNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset >>> 0\n    if (isFinite(length)) {\n      length = length >>> 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  const remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  let loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return asciiWrite(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  const res = []\n\n  let i = start\n  while (i < end) {\n    const firstByte = buf[i]\n    let codePoint = null\n    let bytesPerSequence = (firstByte > 0xEF)\n      ? 4\n      : (firstByte > 0xDF)\n          ? 3\n          : (firstByte > 0xBF)\n              ? 2\n              : 1\n\n    if (i + bytesPerSequence <= end) {\n      let secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  const len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  let res = ''\n  let i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  let ret = ''\n  end = Math.min(buf.length, end)\n\n  for (let i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  let ret = ''\n  end = Math.min(buf.length, end)\n\n  for (let i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  const len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  let out = ''\n  for (let i = start; i < end; ++i) {\n    out += hexSliceLookupTable[buf[i]]\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  const bytes = buf.slice(start, end)\n  let res = ''\n  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n  for (let i = 0; i < bytes.length - 1; i += 2) {\n    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  const len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  const newBuf = this.subarray(start, end)\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let val = this[offset]\n  let mul = 1\n  let i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  let val = this[offset + --byteLength]\n  let mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const lo = first +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 24\n\n  const hi = this[++offset] +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    last * 2 ** 24\n\n  return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const hi = first * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    this[++offset]\n\n  const lo = this[++offset] * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    last\n\n  return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let val = this[offset]\n  let mul = 1\n  let i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  let i = byteLength\n  let mul = 1\n  let val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  const val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  const val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const val = this[offset + 4] +\n    this[offset + 5] * 2 ** 8 +\n    this[offset + 6] * 2 ** 16 +\n    (last << 24) // Overflow\n\n  return (BigInt(val) << BigInt(32)) +\n    BigInt(first +\n    this[++offset] * 2 ** 8 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n  offset = offset >>> 0\n  validateNumber(offset, 'offset')\n  const first = this[offset]\n  const last = this[offset + 7]\n  if (first === undefined || last === undefined) {\n    boundsError(offset, this.length - 8)\n  }\n\n  const val = (first << 24) + // Overflow\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    this[++offset]\n\n  return (BigInt(val) << BigInt(32)) +\n    BigInt(this[++offset] * 2 ** 24 +\n    this[++offset] * 2 ** 16 +\n    this[++offset] * 2 ** 8 +\n    last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    const maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  let mul = 1\n  let i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    const maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  let i = byteLength - 1\n  let mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset + 3] = (value >>> 24)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 1] = (value >>> 8)\n  this[offset] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7)\n\n  let lo = Number(value & BigInt(0xffffffff))\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  lo = lo >> 8\n  buf[offset++] = lo\n  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  hi = hi >> 8\n  buf[offset++] = hi\n  return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n  checkIntBI(value, min, max, buf, offset, 7)\n\n  let lo = Number(value & BigInt(0xffffffff))\n  buf[offset + 7] = lo\n  lo = lo >> 8\n  buf[offset + 6] = lo\n  lo = lo >> 8\n  buf[offset + 5] = lo\n  lo = lo >> 8\n  buf[offset + 4] = lo\n  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n  buf[offset + 3] = hi\n  hi = hi >> 8\n  buf[offset + 2] = hi\n  hi = hi >> 8\n  buf[offset + 1] = hi\n  hi = hi >> 8\n  buf[offset] = hi\n  return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n  return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n  return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    const limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  let i = 0\n  let mul = 1\n  let sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    const limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  let i = byteLength - 1\n  let mul = 1\n  let sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 3] = (value >>> 24)\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n  return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n  return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  const len = end - start\n\n  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n    // Use built-in when available, missing from IE11\n    this.copyWithin(targetStart, start, end)\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, end),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n    if (val.length === 1) {\n      const code = val.charCodeAt(0)\n      if ((encoding === 'utf8' && code < 128) ||\n          encoding === 'latin1') {\n        // Fast path: If `val` fits into a single byte, use that numeric value.\n        val = code\n      }\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  } else if (typeof val === 'boolean') {\n    val = Number(val)\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  let i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    const bytes = Buffer.isBuffer(val)\n      ? val\n      : Buffer.from(val, encoding)\n    const len = bytes.length\n    if (len === 0) {\n      throw new TypeError('The value \"' + val +\n        '\" is invalid for argument \"value\"')\n    }\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n  errors[sym] = class NodeError extends Base {\n    constructor () {\n      super()\n\n      Object.defineProperty(this, 'message', {\n        value: getMessage.apply(this, arguments),\n        writable: true,\n        configurable: true\n      })\n\n      // Add the error code to the name to include it in the stack trace.\n      this.name = `${this.name} [${sym}]`\n      // Access the stack to generate the error message including the error code\n      // from the name.\n      this.stack // eslint-disable-line no-unused-expressions\n      // Reset the name to the actual name.\n      delete this.name\n    }\n\n    get code () {\n      return sym\n    }\n\n    set code (value) {\n      Object.defineProperty(this, 'code', {\n        configurable: true,\n        enumerable: true,\n        value,\n        writable: true\n      })\n    }\n\n    toString () {\n      return `${this.name} [${sym}]: ${this.message}`\n    }\n  }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n  function (name) {\n    if (name) {\n      return `${name} is outside of buffer bounds`\n    }\n\n    return 'Attempt to access memory outside buffer bounds'\n  }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n  function (name, actual) {\n    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n  }, TypeError)\nE('ERR_OUT_OF_RANGE',\n  function (str, range, input) {\n    let msg = `The value of \"${str}\" is out of range.`\n    let received = input\n    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n      received = addNumericalSeparator(String(input))\n    } else if (typeof input === 'bigint') {\n      received = String(input)\n      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n        received = addNumericalSeparator(received)\n      }\n      received += 'n'\n    }\n    msg += ` It must be ${range}. Received ${received}`\n    return msg\n  }, RangeError)\n\nfunction addNumericalSeparator (val) {\n  let res = ''\n  let i = val.length\n  const start = val[0] === '-' ? 1 : 0\n  for (; i >= start + 4; i -= 3) {\n    res = `_${val.slice(i - 3, i)}${res}`\n  }\n  return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n  validateNumber(offset, 'offset')\n  if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n    boundsError(offset, buf.length - (byteLength + 1))\n  }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n  if (value > max || value < min) {\n    const n = typeof min === 'bigint' ? 'n' : ''\n    let range\n    if (byteLength > 3) {\n      if (min === 0 || min === BigInt(0)) {\n        range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n      } else {\n        range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n                `${(byteLength + 1) * 8 - 1}${n}`\n      }\n    } else {\n      range = `>= ${min}${n} and <= ${max}${n}`\n    }\n    throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n  }\n  checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n  if (typeof value !== 'number') {\n    throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n  }\n}\n\nfunction boundsError (value, length, type) {\n  if (Math.floor(value) !== value) {\n    validateNumber(value, type)\n    throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n  }\n\n  if (length < 0) {\n    throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n  }\n\n  throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n                                    `>= ${type ? 1 : 0} and <= ${length}`,\n                                    value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node takes equal signs as end of the Base64 encoding\n  str = str.split('=')[0]\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = str.trim().replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  let codePoint\n  const length = string.length\n  let leadSurrogate = null\n  const bytes = []\n\n  for (let i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  const byteArray = []\n  for (let i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  let c, hi, lo\n  const byteArray = []\n  for (let i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  let i\n  for (i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n  return obj instanceof type ||\n    (obj != null && obj.constructor != null && obj.constructor.name != null &&\n      obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n  // For IE11 support\n  return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n  const alphabet = '0123456789abcdef'\n  const table = new Array(256)\n  for (let i = 0; i < 16; ++i) {\n    const i16 = i * 16\n    for (let j = 0; j < 16; ++j) {\n      table[i16 + j] = alphabet[i] + alphabet[j]\n    }\n  }\n  return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n  return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n  throw new Error('BigInt not supported')\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n  if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n  var BASE_MAP = new Uint8Array(256)\n  for (var j = 0; j < BASE_MAP.length; j++) {\n    BASE_MAP[j] = 255\n  }\n  for (var i = 0; i < ALPHABET.length; i++) {\n    var x = ALPHABET.charAt(i)\n    var xc = x.charCodeAt(0)\n    if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n    BASE_MAP[xc] = i\n  }\n  var BASE = ALPHABET.length\n  var LEADER = ALPHABET.charAt(0)\n  var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n  var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n  function encode (source) {\n    if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n    if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n    if (source.length === 0) { return '' }\n        // Skip & count leading zeroes.\n    var zeroes = 0\n    var length = 0\n    var pbegin = 0\n    var pend = source.length\n    while (pbegin !== pend && source[pbegin] === 0) {\n      pbegin++\n      zeroes++\n    }\n        // Allocate enough space in big-endian base58 representation.\n    var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n    var b58 = new Uint8Array(size)\n        // Process the bytes.\n    while (pbegin !== pend) {\n      var carry = source[pbegin]\n            // Apply \"b58 = b58 * 256 + ch\".\n      var i = 0\n      for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n        carry += (256 * b58[it1]) >>> 0\n        b58[it1] = (carry % BASE) >>> 0\n        carry = (carry / BASE) >>> 0\n      }\n      if (carry !== 0) { throw new Error('Non-zero carry') }\n      length = i\n      pbegin++\n    }\n        // Skip leading zeroes in base58 result.\n    var it2 = size - length\n    while (it2 !== size && b58[it2] === 0) {\n      it2++\n    }\n        // Translate the result into a string.\n    var str = LEADER.repeat(zeroes)\n    for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n    return str\n  }\n  function decodeUnsafe (source) {\n    if (typeof source !== 'string') { throw new TypeError('Expected String') }\n    if (source.length === 0) { return _Buffer.alloc(0) }\n    var psz = 0\n        // Skip and count leading '1's.\n    var zeroes = 0\n    var length = 0\n    while (source[psz] === LEADER) {\n      zeroes++\n      psz++\n    }\n        // Allocate enough space in big-endian base256 representation.\n    var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n    var b256 = new Uint8Array(size)\n        // Process the characters.\n    while (psz < source.length) {\n            // Find code of next character\n      var charCode = source.charCodeAt(psz)\n            // Base map can not be indexed using char code\n      if (charCode > 255) { return }\n            // Decode character\n      var carry = BASE_MAP[charCode]\n            // Invalid character\n      if (carry === 255) { return }\n      var i = 0\n      for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n        carry += (BASE * b256[it3]) >>> 0\n        b256[it3] = (carry % 256) >>> 0\n        carry = (carry / 256) >>> 0\n      }\n      if (carry !== 0) { throw new Error('Non-zero carry') }\n      length = i\n      psz++\n    }\n        // Skip leading zeroes in b256.\n    var it4 = size - length\n    while (it4 !== size && b256[it4] === 0) {\n      it4++\n    }\n    var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n    vch.fill(0x00, 0, zeroes)\n    var j = zeroes\n    while (it4 !== size) {\n      vch[j++] = b256[it4++]\n    }\n    return vch\n  }\n  function decode (string) {\n    var buffer = decodeUnsafe(string)\n    if (buffer) { return buffer }\n    throw new Error('Non-base' + BASE + ' character')\n  }\n  return {\n    encode: encode,\n    decodeUnsafe: decodeUnsafe,\n    decode: decode\n  }\n}\nmodule.exports = base\n","import basex from 'base-x';\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\nexport default basex(ALPHABET);\n","import { getWallets } from '@wallet-standard/app';\nimport bs58 from 'bs58';\nimport { getPlatform } from '../../platform';\n// The MWA authorization is CLUSTER-SCOPED, and transactions are signed on the\n// app's configured network (resolveSolanaWalletStandardChain). Registering on a\n// different chain than the app signs on produces a wallet that authorizes for\n// one cluster and is asked to sign for another, so the two must agree - and the\n// only chains that can agree are the ones the signing path supports.\nconst CLUSTER_CHAINS = {\n    'mainnet-beta': 'solana:mainnet',\n    devnet: 'solana:devnet',\n};\n/**\n * The app's own configuration is wrong (a network we cannot map, a cluster that\n * contradicts it, a page already registered for another chain). Distinct from an\n * availability failure because it degrades differently: a wallet that simply is\n * not there leaves the lane working for every other wallet, while this is a\n * developer bug that must stay loud instead of quietly removing the lane.\n */\nexport class WalletConfigError extends Error {\n    constructor(message) {\n        super(message);\n        this.name = 'WalletConfigError';\n    }\n}\n/** Wallet Standard chain id the MWA wallet is registered for.\n *\n *  `network` is the caller's already-resolved authoritative Solana network\n *  (getConfiguredSolanaNetwork: the wallet-lane override, else config.chain) -\n *  the SAME value the provider signs and submits on. It is passed in rather\n *  than re-derived here so registration can never disagree with signing, and so\n *  this module stays out of the auth barrel's import cycle.\n *  `mobileWalletConfig.cluster` may name the chain explicitly (the only way a\n *  chainless, login-only app can authorize off mainnet) but may never\n *  contradict it. A chainless app with no cluster defaults to mainnet. Throws on\n *  a contradiction or an unsupported cluster: that is the app developer's bug,\n *  and a silent mismatch would only surface as a wallet rejection at signing\n *  time. */\nfunction mwaChain(config, network) {\n    var _a;\n    const fromNetwork = network === 'solana_mainnet'\n        ? 'solana:mainnet'\n        : network === 'solana_devnet'\n            ? 'solana:devnet'\n            : null;\n    // A network the mapping above does not recognise must NEVER fall through to\n    // the chainless default: registering mainnet for an app configured with,\n    // say, solana_testnet authorizes a cluster it will never transact on. Only\n    // the genuine absence of a network takes the default.\n    if (network != null && network !== '' && fromNetwork === null) {\n        throw new WalletConfigError(`Bounded: the Solana Mobile wallet cannot be registered for network \"${network}\". ` +\n            `Expected one of: solana_devnet, solana_mainnet.`);\n    }\n    const cluster = (_a = config.mobileWalletConfig) === null || _a === void 0 ? void 0 : _a.cluster;\n    if (cluster == null)\n        return fromNetwork !== null && fromNetwork !== void 0 ? fromNetwork : 'solana:mainnet';\n    const fromCluster = CLUSTER_CHAINS[cluster];\n    if (!fromCluster) {\n        throw new WalletConfigError(`Bounded: mobileWalletConfig.cluster \"${cluster}\" is not supported. ` +\n            `Use \"mainnet-beta\" or \"devnet\".`);\n    }\n    if (fromNetwork && fromNetwork !== fromCluster) {\n        throw new WalletConfigError(`Bounded: mobileWalletConfig.cluster \"${cluster}\" contradicts the app's Solana network ` +\n            `\"${network}\". The mobile wallet authorizes per cluster and signs on that network, so ` +\n            `they must match - drop the cluster override, or set the network you actually mean.`);\n    }\n    return fromCluster;\n}\n/** Per the MWA spec `appIdentity.icon` is a path the wallet resolves RELATIVE to\n *  `appIdentity.uri`. Resolve whatever the app configured (usually\n *  config.logoUrl) and hand back a path that round-trips: stripping the leading\n *  slash is only correct when `uri` is a bare origin, and silently pointed at\n *  `<uri-dir>/icon.svg` for any `uri` carrying a path. A cross-origin icon\n *  cannot be expressed as a relative path at all and is dropped. */\nfunction relativeAppIcon(icon, uri) {\n    if (!icon)\n        return undefined;\n    try {\n        const base = new URL(uri);\n        const resolved = new URL(icon, base);\n        if (resolved.origin !== base.origin)\n            return undefined;\n        // Walk from the uri's DIRECTORY (a uri with no trailing slash resolves\n        // relative to its parent, exactly as the wallet will) to the icon.\n        const from = base.pathname.replace(/[^/]*$/, '').split('/').filter(Boolean);\n        const to = resolved.pathname.split('/').filter(Boolean);\n        let shared = 0;\n        while (shared < from.length && shared < to.length && from[shared] === to[shared])\n            shared += 1;\n        const up = '../'.repeat(from.length - shared);\n        return up + to.slice(shared).join('/') + resolved.search;\n    }\n    catch (_a) {\n        return undefined;\n    }\n}\n/**\n * The transaction features a wallet's OWN reported capabilities allow.\n *\n * Strictly, on POSITIVE evidence only. The library exposes both transaction\n * features optimistically at the wallet level - including a fallback that offers\n * sign-and-send to a wallet reporting neither - but that exposure is not the\n * executable contract: both transports re-read the live capabilities inside\n * signAndSendTransaction and throw before touching the wallet unless\n * `supports_sign_and_send_transactions` is true. Mirroring the optimistic\n * exposure would therefore only route a doomed call down the native branch\n * instead of Bounded's sign-then-submit fallback.\n */\nfunction walletAllowedTxFeatures(capabilities) {\n    return {\n        signAndSend: (capabilities === null || capabilities === void 0 ? void 0 : capabilities.supports_sign_and_send_transactions) === true,\n        sign: Array.isArray(capabilities === null || capabilities === void 0 ? void 0 : capabilities.features)\n            ? capabilities.features.includes('solana:signTransactions')\n            : false,\n    };\n}\n/**\n * A persisted MWA authorization, scoped to the chain (and app identity) it was\n * granted for.\n *\n * The library's own cache keeps ONE record under one localStorage key and hands\n * it back without comparing chains, so a mainnet authorization cached earlier\n * is reused by a devnet-configured page later: the wallet then advertises\n * devnet while holding a mainnet authorization, and its native send follows the\n * authorization rather than the app. localStorage survives a reload, so\n * \"reload the page\" cannot clear it either. Keying the record by chain and app\n * identity makes that mismatch unrepresentable instead of silently signing on\n * the wrong cluster.\n */\nfunction chainScopedAuthorizationCache(chain, identityUri) {\n    const key = `bounded:mwa-authorization:${identityUri}:${chain}`;\n    const storage = () => {\n        try {\n            return window.localStorage;\n        }\n        catch (_a) {\n            return null;\n        }\n    };\n    return {\n        async get() {\n            var _a;\n            try {\n                const raw = (_a = storage()) === null || _a === void 0 ? void 0 : _a.getItem(key);\n                if (!raw)\n                    return undefined;\n                const parsed = JSON.parse(raw);\n                // Belt and braces: refuse a record that does not name our chain,\n                // however it came to be stored under this key.\n                if ((parsed === null || parsed === void 0 ? void 0 : parsed.chain) !== chain)\n                    return undefined;\n                if (!Array.isArray(parsed.accounts))\n                    return parsed;\n                // REVIVE the account keys. JSON has no Uint8Array, so a plain\n                // round trip hands the wallet a `{0:..,1:..}` object and the\n                // address it derives from it comes out empty. This mirrors the\n                // upstream cache's revival exactly - only the key and the chain\n                // check are ours.\n                // RECONCILE the account capabilities against what the wallet\n                // itself reported, which this record also carries. An\n                // authorization that named no per-account features was stored\n                // with the library's optimistic defaults - and those include\n                // sign-and-send. The library narrows its wallet-level features\n                // from the cached capabilities on its SILENT path only; an\n                // interactive connect that hits this cache (a returning user on\n                // a fresh page) leaves them at the constructor's optimistic\n                // pair. The account would then be the only thing standing\n                // between a sign-only wallet and the native-send branch - and it\n                // would wave it through, so the wallet rejects the call instead\n                // of Bounded falling back to sign-then-submit.\n                // A record with accounts but no capabilities cannot be judged at\n                // all, and guessing is what this exists to stop. Drop it: the\n                // library then re-authorizes once and stores a complete record,\n                // so it self-heals instead of overstating the wallet forever.\n                if (!parsed.capabilities)\n                    return undefined;\n                const allowed = walletAllowedTxFeatures(parsed.capabilities);\n                const permitted = (feature) => (feature === 'solana:signAndSendTransaction' ? allowed.signAndSend\n                    : feature === 'solana:signTransaction' ? allowed.sign\n                        : true);\n                return Object.assign(Object.assign({}, parsed), { accounts: parsed.accounts.map((account) => (Object.assign(Object.assign(Object.assign({}, account), { publicKey: 'publicKey' in account\n                            ? new Uint8Array(Object.values(account.publicKey))\n                            : bs58.decode(account.address) }), (Array.isArray(account.features)\n                        ? { features: account.features.filter(permitted) }\n                        : {})))) });\n            }\n            catch (_b) {\n                return undefined;\n            }\n        },\n        async set(authorization) {\n            var _a;\n            try {\n                if ((authorization === null || authorization === void 0 ? void 0 : authorization.chain) !== chain)\n                    return;\n                (_a = storage()) === null || _a === void 0 ? void 0 : _a.setItem(key, JSON.stringify(authorization));\n            }\n            catch ( /* private mode / quota: an uncached authorization just re-prompts */_b) { /* private mode / quota: an uncached authorization just re-prompts */ }\n        },\n        async clear() {\n            var _a;\n            try {\n                (_a = storage()) === null || _a === void 0 ? void 0 : _a.removeItem(key);\n            }\n            catch ( /* nothing to clear */_b) { /* nothing to clear */ }\n        },\n    };\n}\n// One attempt per distinct registration input. A no-op attempt (an ordinary\n// desktop browser registers nothing) is memoized only for the input that\n// produced it, so later adding a remoteHostAuthority - which enables the remote\n// QR wallet - gets a real second attempt instead of the first one's silence.\nconst attempts = new Map();\n// The chain of the wallet that ACTUALLY registered, and of an attempt still in\n// flight. Both block a conflicting chain: once a wallet exists it cannot be\n// moved, and while one is being created the outcome is already decided.\nlet registeredChain = null;\nlet pendingChain = null;\n// The material configuration of an attempt still in flight. Chain alone is not\n// enough: two concurrent same-chain calls with different reflectors would both\n// pass a chain-only check and register two adapters that can never be withdrawn.\nlet pendingConfig = null;\n// The exact effective configuration a registration SUCCEEDED with. A wallet in\n// the registry cannot be withdrawn, so once this is set any material change is\n// refused rather than quietly registering a second, unreachable adapter beside\n// the first (discovery would keep serving the original).\nlet registeredConfig = null;\n// The wallet OBJECTS registerMwa() actually put in the registry. Identity, not\n// name: a display name is a label anyone can reuse (another SDK on the page can\n// register its own \"Mobile Wallet Adapter\"), and mistaking someone else's wallet\n// for ours - or failing to recognise our own - decides whether a fresh gesture\n// is collected. Weak so a wallet that goes away is not retained here.\nconst mobileWallets = new WeakSet();\n// The NAMES the MWA package registers under, captured from its own exports.\n// Identity answers \"is this the wallet we registered\"; this answers a different\n// question - \"is this an MWA-transport wallet at all\", including one another SDK\n// registered. A label is exactly what a lookalike copies, so it is the only\n// signal available there, and being wrong only costs a duplicate chooser entry\n// rather than hiding a wallet the user has installed.\n// The names the Mobile Wallet Adapter package registers under. They are the\n// library's own exported constants, restated here because the answer is needed\n// BEFORE (and without) loading that chunk - a page that never opts into wallet\n// login must still be able to tell that a wallet another SDK registered speaks\n// this transport. Registration re-adds whatever the installed library actually\n// exports, so an upstream rename degrades to \"we also know the new name\" rather\n// than to a wrong answer.\nconst LOCAL_MOBILE_WALLET_NAME = 'Mobile Wallet Adapter';\nconst mobileWalletNames = new Set([\n    LOCAL_MOBILE_WALLET_NAME,\n    'Remote Mobile Wallet Adapter',\n]);\n/**\n * Whether a discovered wallet is the Solana Mobile one this module registered.\n *\n * Callers need it because that wallet is the only one that LEAVES THE PAGE to\n * sign - it needs a fresh user gesture per operation (see\n * InjectedWalletConfig.confirmWalletAction). False before registration, for\n * every injected wallet, and for a lookalike another SDK registered.\n */\nexport function isSolanaMobileWallet(wallet) {\n    return !!wallet && mobileWallets.has(wallet);\n}\n/**\n * Whether a registered wallet reaches its signer through the Mobile Wallet\n * Adapter transport - ours OR a lookalike another SDK registered. Used to decide\n * whether the registry already covers the IN-PAGE wallets, which is a question\n * about transport, not ownership.\n */\nexport function looksLikeSolanaMobileWallet(name) {\n    return mobileWalletNames.has(name);\n}\n/**\n * Whether reaching this wallet LEAVES THE PAGE, which is what makes a fresh\n * user gesture necessary. True for the local (on-device) transport, which\n * dispatches an Android intent per operation. NOT true for the remote QR\n * transport: it keeps its websocket session and drives an in-page modal, so an\n * extra \"one more tap\" screen there would be friction for nothing.\n */\nexport function solanaMobileWalletLeavesPage(name) {\n    return name === LOCAL_MOBILE_WALLET_NAME;\n}\n/**\n * Register Solana Mobile's MWA wallet with the Wallet Standard registry so\n * wallet discovery surfaces it. Idempotent - the first wallet-lane activation\n * (init with a wallet authMethod, loginWithWallet, or the login widget) wins\n * for the page's lifetime.\n *\n * Rejects on a contradictory/unsupported config, and on a later activation that\n * needs a DIFFERENT chain than the one already registered: the MWA\n * authorization is cluster-scoped and `registerMwa` hands back no unregister\n * handle, so the wallet in the registry cannot be moved. Failing loudly beats\n * leaving a wallet that authorizes on one cluster and is asked to sign on\n * another - and the app's own fix (reload before switching networks) is one the\n * error can state. A registration or environment failure resolves after\n * warning: it degrades to \"MWA not listed\" rather than breaking the injected\n * wallets sharing the lane.\n */\nexport async function ensureSolanaMobileWalletRegistered(config, network) {\n    var _a, _b, _c, _d, _e;\n    // React Native exposes a partial `window` but has no DOM; wallet-standard\n    // registration is meaningless there (RN uses the MWA protocol directly via\n    // its own providers). registerMwa also requires window, but gate here so\n    // the chunk is never even fetched off-web.\n    // Off-web there is nothing to register and nothing to wait for.\n    if (typeof window === 'undefined' || !getPlatform().hasDOM)\n        return 'not-applicable';\n    // Resolve the chain BEFORE the memo so a contradictory config rejects to the\n    // caller. Config errors are the app developer's bug and must be loud; only\n    // the environment/registration failures inside the memo degrade to a warning.\n    const chain = mwaChain(config, network);\n    const identity = (_b = (_a = config.mobileWalletConfig) === null || _a === void 0 ? void 0 : _a.appIdentity) !== null && _b !== void 0 ? _b : {};\n    const uri = (_c = identity.uri) !== null && _c !== void 0 ? _c : window.location.origin;\n    // What a registered wallet CANNOT change. The chain scopes its authorization;\n    // the reflector authority decides whether registerMwa creates the local or\n    // the remote (QR) wallet, so a different one means a different wallet object\n    // - and since the registration cannot be withdrawn, registering it anyway\n    // would leave a second adapter that discovery never serves. The app identity\n    // is deliberately NOT here: it is what the wallet displays, so a page that\n    // re-inits with a new name keeps the first label rather than losing login\n    // over a cosmetic difference.\n    const effective = JSON.stringify({\n        chain,\n        remoteHostAuthority: (_e = (_d = config.mobileWalletConfig) === null || _d === void 0 ? void 0 : _d.remoteHostAuthority) !== null && _e !== void 0 ? _e : null,\n    });\n    // A wallet already in (or entering) the registry cannot be withdrawn, so\n    // anything material that differs means this page is asking for a wallet it\n    // cannot have. Check the chain first: it is the common case and deserves the\n    // specific message.\n    const committedChain = registeredChain !== null && registeredChain !== void 0 ? registeredChain : pendingChain;\n    if (committedChain && committedChain !== chain) {\n        throw new WalletConfigError(`Bounded: the Solana Mobile wallet is already registered for ${committedChain} and ` +\n            `cannot be moved to ${chain} on a live page (its authorization is cluster-scoped and ` +\n            `the Wallet Standard registration cannot be withdrawn). Reload the page after ` +\n            `changing the app's Solana network.`);\n    }\n    const committed = registeredConfig !== null && registeredConfig !== void 0 ? registeredConfig : pendingConfig;\n    if (committed && committed !== effective) {\n        throw new WalletConfigError(`Bounded: the Solana Mobile wallet is already registered for this page ` +\n            `(${committedChain !== null && committedChain !== void 0 ? committedChain : chain}) and its registration cannot be withdrawn, so its ` +\n            `network and reflector are fixed for the page's lifetime. Reload after changing ` +\n            `the app's Solana network or mobileWalletConfig.remoteHostAuthority.`);\n    }\n    const attemptKey = effective;\n    const inFlight = attempts.get(attemptKey);\n    if (!inFlight) {\n        pendingChain = chain;\n        pendingConfig = effective;\n        const run = (async () => {\n            var _a, _b, _c, _d;\n            // Optional peer dependency, loaded only on the one path that needs a\n            // mobile wallet. Keeping it OFF the hard dependency list keeps\n            // react-native (and the whole metro toolchain underneath it) out of\n            // every web consumer's install; a missing module here is a config\n            // problem in the consuming app, not a runtime fault, so name it as\n            // one instead of surfacing a bare MODULE_NOT_FOUND.\n            let mwa;\n            try {\n                mwa = await import('@solana-mobile/wallet-standard-mobile');\n            }\n            catch (_e) {\n                throw new WalletConfigError(`Bounded: Solana Mobile wallet support needs the optional peer dependency ` +\n                    `'@solana-mobile/wallet-standard-mobile', which is not installed. Install it ` +\n                    `in your app to enable the mobile wallet, or leave the Solana Mobile wallet ` +\n                    `out of this app's wallet configuration.`);\n            }\n            const { registerMwa, createDefaultChainSelector, SolanaMobileWalletAdapterWalletName, SolanaMobileWalletAdapterRemoteWalletName, } = mwa;\n            const before = new Set(getWallets().get());\n            registerMwa({\n                appIdentity: {\n                    uri,\n                    name: (_b = (_a = identity.name) !== null && _a !== void 0 ? _a : config.name) !== null && _b !== void 0 ? _b : (document.title || 'Bounded App'),\n                    icon: relativeAppIcon((_c = identity.icon) !== null && _c !== void 0 ? _c : config.logoUrl, uri),\n                },\n                authorizationCache: chainScopedAuthorizationCache(chain, uri),\n                chains: [chain],\n                chainSelector: createDefaultChainSelector(),\n                remoteHostAuthority: (_d = config.mobileWalletConfig) === null || _d === void 0 ? void 0 : _d.remoteHostAuthority,\n                // Suppress the library's \"we can't find a wallet\" modal: it is\n                // misleading when ERROR_WALLET_NOT_FOUND fires during Seeker's\n                // first-time Local-Network-Access consent race (the wallet IS\n                // installed), and Bounded's own login surface already shows the\n                // failure inline in its UI.\n                onWalletNotFound: async () => { },\n            });\n            // registerMwa decides per environment and REGISTERS NOTHING on an\n            // ordinary desktop browser (no Android, no remote authority).\n            // Claim only the wallet OBJECTS this call added, and only when they\n            // carry a name the library itself exports: someone else's wallet\n            // sharing that label is not ours, and adopting it would record a\n            // chain we never registered.\n            const mwaNames = new Set([\n                SolanaMobileWalletAdapterWalletName,\n                SolanaMobileWalletAdapterRemoteWalletName,\n            ]);\n            for (const name of mwaNames)\n                mobileWalletNames.add(name);\n            let added = false;\n            for (const wallet of getWallets().get()) {\n                if (before.has(wallet) || !mwaNames.has(wallet.name))\n                    continue;\n                mobileWallets.add(wallet);\n                added = true;\n            }\n            // No wallet materialized (the ordinary desktop path): claim no\n            // chain, so a later network change is not rejected as though an\n            // immovable wallet existed.\n            if (!added)\n                return 'not-applicable';\n            registeredChain = chain;\n            registeredConfig = effective;\n            return 'registered';\n        })().catch((error) => {\n            console.warn('[Bounded] Solana Mobile wallet registration failed:', error);\n            // A thrown failure (chunk load, wallet-standard hiccup) may be\n            // transient, so drop this attempt and let a later activation retry.\n            attempts.delete(attemptKey);\n            return 'failed';\n        }).finally(() => {\n            pendingChain = null;\n            pendingConfig = null;\n        });\n        attempts.set(attemptKey, run);\n        return run;\n    }\n    return inFlight;\n}\n","// bounded-widget-modal.ts - the shared in-app WIDGET shell for Bounded's login\n// and signing surfaces. One Shadow-DOM overlay + panel that matches the Bounded\n// widget (Seal) look and MOTION: a backdrop fade, a panel rise on desktop, a\n// bottom-sheet on mobile, a height tween as content swaps, and a clean close.\n//\n// It hosts EITHER:\n//   - NATIVE content (the login card the SDK renders itself), or\n//   - an IFRAME (the Bounded-owned signer page, which must run on the single\n//     signer origin because the wallet's 24h signing session lives in that\n//     origin's storage, out of every app's reach).\n//\n// The modal is a warm singleton: it stays mounted (hidden) between uses so a\n// second open - or a signature right after login - is instant and, when it is\n// already open, a clean in-place view swap rather than a reopen.\nfunction hasDOM() {\n    return typeof window !== \"undefined\" && typeof document !== \"undefined\";\n}\nconst OVERLAY_CSS = `\n:host{all:initial}\n*{box-sizing:border-box}\n.bw-ov{position:fixed;inset:0;z-index:2147483647;display:none;\n  font-family:\"Schibsted Grotesk\",\"Helvetica Neue\",Arial,sans-serif}\n.bw-ov.mounted{display:block}\n.bw-back{position:fixed;inset:0;background:rgba(4,4,5,.62);opacity:0;\n  transition:opacity .24s ease;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}\n.bw-wrap{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:20px}\n.bw-panel{position:relative;width:420px;max-width:calc(100vw - 28px);height:280px;\n  border-radius:14px;overflow:hidden;background:#0e0f11;border:1px solid rgba(232,230,222,.08);\n  box-shadow:0 1px 0 rgba(232,230,222,.03) inset,0 40px 90px -45px rgba(0,0,0,.85);\n  opacity:0;transform:translateY(14px) scale(.98);will-change:transform,opacity,height;\n  transition:opacity .28s cubic-bezier(.2,.8,.2,1),transform .28s cubic-bezier(.2,.8,.2,1),\n    height .3s cubic-bezier(.2,.8,.2,1)}\n.bw-ov.show .bw-back{opacity:1}\n.bw-ov.show .bw-panel{opacity:1;transform:none}\n.bw-ov.closing .bw-back{opacity:0}\n.bw-ov.closing .bw-panel{opacity:0;transform:translateY(12px) scale(.99)}\n.bw-content{position:absolute;inset:0;overflow:hidden}\n.bw-frame{display:block;width:100%;height:100%;border:0;background:transparent;color-scheme:dark}\n/* editorial corner crop-marks, matching the reference frame */\n.bw-mk{position:absolute;width:13px;height:13px;pointer-events:none;z-index:2;\n  border-color:rgba(232,230,222,.22);border-style:solid;border-width:0}\n.bw-mk.tl{top:11px;left:11px;border-top-width:1px;border-left-width:1px}\n.bw-mk.tr{top:11px;right:11px;border-top-width:1px;border-right-width:1px}\n.bw-mk.bl{bottom:11px;left:11px;border-bottom-width:1px;border-left-width:1px}\n.bw-mk.br{bottom:11px;right:11px;border-bottom-width:1px;border-right-width:1px}\n@media(max-width:560px){\n  .bw-wrap{align-items:flex-end;padding:0}\n  .bw-panel{width:100%;max-width:100%;border-radius:18px 18px 0 0;border-bottom:0}\n  .bw-content{overflow-y:auto}\n  .bw-ov.show .bw-panel{transform:none}\n  .bw-ov:not(.show) .bw-panel,.bw-ov.closing .bw-panel{transform:translateY(18%)}\n}\n@media(prefers-reduced-motion:reduce){.bw-back,.bw-panel{transition:opacity .12s linear!important}}\n`;\nlet modal = null;\nexport function getModal() {\n    if (modal)\n        return modal;\n    const root = document.createElement(\"div\");\n    root.setAttribute(\"data-bounded-widget\", \"\");\n    const shadow = root.attachShadow({ mode: \"open\" });\n    const style = document.createElement(\"style\");\n    style.textContent = OVERLAY_CSS;\n    shadow.appendChild(style);\n    const overlay = document.createElement(\"div\");\n    overlay.className = \"bw-ov\";\n    const back = document.createElement(\"div\");\n    back.className = \"bw-back\";\n    const wrap = document.createElement(\"div\");\n    wrap.className = \"bw-wrap\";\n    const panel = document.createElement(\"div\");\n    panel.className = \"bw-panel\";\n    const content = document.createElement(\"div\");\n    content.className = \"bw-content\";\n    panel.appendChild(content);\n    for (const corner of [\"tl\", \"tr\", \"bl\", \"br\"]) {\n        const mk = document.createElement(\"span\");\n        mk.className = \"bw-mk \" + corner;\n        panel.appendChild(mk);\n    }\n    wrap.appendChild(panel);\n    overlay.appendChild(back);\n    overlay.appendChild(wrap);\n    shadow.appendChild(overlay);\n    (document.body || document.documentElement).appendChild(root);\n    const m = {\n        root,\n        overlay,\n        panel,\n        content,\n        iframe: null,\n        iframeOrigin: \"\",\n        iframeReady: false,\n        onBackdrop: null,\n        onIframeMessage: null,\n        chain: Promise.resolve(),\n        fitObserver: null,\n        generation: 0,\n        onSupersede: null,\n    };\n    // The dismiss handler lives on `.bw-wrap`: it is the full-viewport flex layer\n    // that sits ABOVE `.bw-back`, so it (not the backdrop element) receives clicks\n    // outside the panel. Fire only when the click lands on the wrap itself, never\n    // when it bubbles up from the panel or its content.\n    wrap.addEventListener(\"click\", (event) => {\n        if (event.target === wrap && m.onBackdrop)\n            m.onBackdrop();\n    });\n    window.addEventListener(\"message\", (event) => {\n        if (!m.iframe)\n            return;\n        if (event.origin !== m.iframeOrigin)\n            return;\n        if (event.source !== m.iframe.contentWindow)\n            return;\n        const d = event.data;\n        if (!d || typeof d !== \"object\")\n            return;\n        if (m.onIframeMessage)\n            m.onIframeMessage(d);\n    });\n    modal = m;\n    return m;\n}\nexport function modalIsMounted() {\n    return !!modal && modal.overlay.classList.contains(\"mounted\");\n}\nexport function showModal(m) {\n    m.overlay.classList.remove(\"closing\");\n    m.overlay.classList.add(\"mounted\");\n    // Force a reflow so the .show transition runs from the hidden state every open.\n    void m.panel.offsetWidth;\n    m.overlay.classList.add(\"show\");\n}\nexport function hideModal(m, after) {\n    m.overlay.classList.remove(\"show\");\n    m.overlay.classList.add(\"closing\");\n    // Capture the generation at hide time. If a newer open re-shows the modal within\n    // the close tween, this stale timer must NOT strip `.mounted`/`.closing` off the\n    // freshly reopened widget - only tear down when we are still the same open.\n    const gen = m.generation;\n    window.setTimeout(() => {\n        if (m.generation === gen)\n            m.overlay.classList.remove(\"mounted\", \"closing\");\n        if (after)\n            after();\n    }, 260);\n}\nexport function setPanelHeight(m, px) {\n    const h = Math.max(140, Math.min(680, Math.round(px)));\n    m.panel.style.height = h + \"px\";\n}\n// True outer height of the mounted card: the max of its padding-box scroll height\n// (catches overflowing descendants) and its border-box height plus own vertical\n// margins (catches border + margins, which scrollHeight omits). Ceiled so a\n// sub-pixel row is never clipped under `overflow:hidden`.\nfunction measureOuterHeight(target) {\n    var _a;\n    const cs = (_a = target.ownerDocument.defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(target);\n    const marginY = cs ? parseFloat(cs.marginTop) + parseFloat(cs.marginBottom) : 0;\n    const borderBox = target.offsetHeight + (Number.isFinite(marginY) ? marginY : 0);\n    const rect = target.getBoundingClientRect().height;\n    return Math.ceil(Math.max(target.scrollHeight, borderBox, rect));\n}\n/**\n * Measure the currently mounted native content and tween the panel to fit it.\n * Re-fits automatically when the card's intrinsic height changes - notably after\n * the Newsreader/Schibsted web fonts swap in (which grows line boxes a few px\n * after first paint) and on inline view swaps (email -> OTP code -> success).\n */\nexport function fitPanelToContent(m) {\n    var _a, _b;\n    const first = m.content.firstElementChild;\n    const target = first || m.content;\n    const apply = () => {\n        // Only fit while this exact node is still the mounted card.\n        if (m.content.firstElementChild !== first && first)\n            return;\n        const h = measureOuterHeight(target);\n        if (h > 0)\n            setPanelHeight(m, h);\n    };\n    apply();\n    const view = target.ownerDocument.defaultView;\n    // Re-fit after fonts load (one-shot) and once the ResizeObserver-less browsers\n    // have painted, so the height never lags a late reflow.\n    (_a = view === null || view === void 0 ? void 0 : view.requestAnimationFrame) === null || _a === void 0 ? void 0 : _a.call(view, apply);\n    const fonts = target.ownerDocument.fonts;\n    if (fonts === null || fonts === void 0 ? void 0 : fonts.ready)\n        fonts.ready.then(apply).catch(() => { });\n    (_b = m.fitObserver) === null || _b === void 0 ? void 0 : _b.disconnect();\n    m.fitObserver = null;\n    if (first && typeof (view === null || view === void 0 ? void 0 : view.ResizeObserver) === \"function\") {\n        const ro = new view.ResizeObserver(() => apply());\n        ro.observe(first);\n        m.fitObserver = ro;\n    }\n}\n/** Switch the modal into NATIVE-content mode: detach any iframe, mount `node`. */\nexport function mountContent(m, node) {\n    var _a;\n    detachIframe(m);\n    (_a = m.fitObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n    m.fitObserver = null;\n    m.content.replaceChildren(node);\n    m.content.style.display = \"block\";\n}\n/** Get (or lazily create) the warm iframe for signer/hosted-page mode. */\nexport function ensureIframe(m, url, origin) {\n    var _a;\n    if (m.iframe && m.iframeOrigin === origin && m.iframe.src === url)\n        return m.iframe;\n    detachIframe(m);\n    (_a = m.fitObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n    m.fitObserver = null;\n    m.content.style.display = \"none\";\n    const iframe = document.createElement(\"iframe\");\n    iframe.className = \"bw-frame\";\n    iframe.setAttribute(\"title\", \"Bounded\");\n    iframe.setAttribute(\"allow\", \"clipboard-write\");\n    iframe.src = url;\n    m.iframeOrigin = origin;\n    m.iframeReady = false;\n    m.panel.appendChild(iframe);\n    m.iframe = iframe;\n    return iframe;\n}\n/**\n * Destroy the warm signer iframe if one is currently mounted for `origin`, and report\n * whether there was one. Logout needs this: a signing session can live in that document's\n * MEMORY (the signer keeps an in-memory mirror when the browser blocks its storage), and a\n * throwaway iframe opened by the sweep can only ever clear the shared store, never another\n * document's memory. Removing the iframe discards its browsing context, which takes the\n * mirror with it.\n *\n * Deliberately does NOT call getModal(): that would BUILD a modal just to tear it down, on\n * every logout of every app, most of which never mounted one.\n */\nexport function detachWarmSignerIframe(origin) {\n    if (!modal || !modal.iframe || modal.iframeOrigin !== origin)\n        return false;\n    detachIframe(modal);\n    return true;\n}\nexport function detachIframe(m) {\n    if (m.iframe) {\n        try {\n            m.iframe.remove();\n        }\n        catch (_a) {\n            /* ignore */\n        }\n    }\n    m.iframe = null;\n    m.iframeReady = false;\n    m.iframeOrigin = \"\";\n    m.onIframeMessage = null;\n}\n// Load the Bounded editorial typefaces (Newsreader display + Schibsted Grotesk body +\n// JetBrains Mono) once at the document level so they apply inside the shadow root. A\n// no-op if already present or off-DOM. Fonts loaded here match the hosted auth page.\nconst FONTS_HREF = \"https://fonts.googleapis.com/css2?family=Newsreader:opsz,wght@6..72,400;6..72,500&family=Schibsted+Grotesk:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap\";\nexport function ensureFonts() {\n    if (!hasDOM())\n        return;\n    if (document.querySelector('link[data-bounded-fonts=\"1\"]'))\n        return;\n    const pre1 = document.createElement(\"link\");\n    pre1.rel = \"preconnect\";\n    pre1.href = \"https://fonts.googleapis.com\";\n    const pre2 = document.createElement(\"link\");\n    pre2.rel = \"preconnect\";\n    pre2.href = \"https://fonts.gstatic.com\";\n    pre2.crossOrigin = \"anonymous\";\n    const link = document.createElement(\"link\");\n    link.rel = \"stylesheet\";\n    link.href = FONTS_HREF;\n    link.setAttribute(\"data-bounded-fonts\", \"1\");\n    document.head.append(pre1, pre2, link);\n}\nexport { hasDOM };\n","// turnkey-wallet-widget.ts - runs one Turnkey signer exchange inside the shared\n// in-app WIDGET (bounded-widget-modal.ts). The Bounded-owned signer page is loaded\n// in a warm iframe behind the modal so signing feels native: an in-app approve\n// card (with inline code entry when the 24h signing session must first be\n// established), never a jarring popup.\n//\n// WHY AN IFRAME: the wallet's signing session lives in the single Bounded signer\n// origin's storage, out of every app's reach, so signing MUST run on that origin;\n// the iframe brings it in-app.\n//\n// Restricted embedders: if the frame never loads, the SAME request reruns through\n// `popupFallback` (a real window). Callers pass a popup implementation and never\n// see the difference.\nimport { getModal, showModal, hideModal, ensureIframe, setPanelHeight, hasDOM, } from \"./bounded-widget-modal\";\n/**\n * Run one signer exchange through the in-app widget. Resolves when `onResult`\n * accepts a result; falls back to `popupFallback` if the frame cannot be mounted\n * or never loads.\n */\nexport async function runWidget(url, signerOrigin, ex, popupFallback) {\n    if (!hasDOM())\n        return popupFallback();\n    const m = getModal();\n    const requestId = String(ex.request.requestId);\n    // Serialize: the approve card is modal, and one warm frame handles one request at a time.\n    const run = m.chain.then(() => new Promise((resolve, reject) => {\n        let settled = false;\n        let usedFallback = false;\n        const iframe = ensureIframe(m, url, signerOrigin);\n        const send = () => {\n            if (!iframe.contentWindow)\n                return;\n            try {\n                iframe.contentWindow.postMessage(ex.request, signerOrigin);\n            }\n            catch (_a) {\n                /* frame gone */\n            }\n        };\n        let loadTimer = 0;\n        let ceilingTimer = 0;\n        const finish = (fn) => {\n            if (settled)\n                return;\n            settled = true;\n            m.onIframeMessage = null;\n            m.onBackdrop = null;\n            window.clearTimeout(loadTimer);\n            window.clearTimeout(ceilingTimer);\n            fn();\n        };\n        const goFallback = () => {\n            if (usedFallback || settled)\n                return;\n            usedFallback = true;\n            hideModal(m);\n            finish(() => popupFallback().then(resolve, reject));\n        };\n        m.onBackdrop = () => {\n            hideModal(m);\n            finish(() => reject(new Error(\"cancelled\")));\n        };\n        m.onIframeMessage = (d) => {\n            if (d.type === \"bounded:turnkey:ready\") {\n                m.iframeReady = true;\n                send();\n                return;\n            }\n            if (d.type === \"bounded:turnkey:resize\" && typeof d.height === \"number\") {\n                setPanelHeight(m, d.height);\n                return;\n            }\n            if (d.type === \"bounded:turnkey:result\" && d.requestId === requestId) {\n                const outcome = ex.onResult(d);\n                if (\"error\" in outcome) {\n                    hideModal(m);\n                    finish(() => reject(new Error(outcome.error)));\n                    return;\n                }\n                if (outcome.done) {\n                    hideModal(m);\n                    finish(() => resolve(outcome.value));\n                }\n            }\n        };\n        showModal(m);\n        if (m.iframeReady)\n            send();\n        // If the frame never loads, degrade to the popup (best-effort - a post-load\n        // popup may be blocked without a gesture, in which case the fallback rejects).\n        loadTimer = window.setTimeout(() => {\n            if (!m.iframeReady && !settled)\n                goFallback();\n        }, 8000);\n        // Absolute ceiling so a stuck flow cannot hang forever.\n        ceilingTimer = window.setTimeout(() => {\n            if (!settled) {\n                hideModal(m);\n                finish(() => reject(new Error(\"Wallet approval timed out.\")));\n            }\n        }, 5 * 60 * 1000);\n    }));\n    m.chain = run.then(() => undefined, () => undefined);\n    return run;\n}\n","// turnkey-signer-frame.ts - a HIDDEN, offscreen iframe of the Bounded signer page\n// for UI-less signer exchanges: sealing a login code (bounded:turnkey:encryptOtp),\n// establishing the 24h signing session right after login\n// (bounded:turnkey:establishSigningSession), and destroying it on logout\n// (bounded:turnkey:clearSigningSession).\n//\n// One handle = one live frame. The frame is kept across requests so multi-step\n// exchanges (seal a code, then establish the session with the keypair the SEAL\n// left in that exact page instance) talk to the same page. Origin + source +\n// requestId are all pinned; dispose() tears everything down.\nimport { getConfig } from '@bounded-sh/core';\nfunction hasDOM() {\n    return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nasync function signerPage() {\n    const cfg = await getConfig();\n    const base = (cfg.humanAuthApiUrl || 'https://auth.bounded.sh').replace(/\\/$/, '');\n    return { url: `${base}/wallet/turnkey/signer`, origin: new URL(base).origin };\n}\n/** Mount the hidden signer frame. Callers MUST dispose() when done. */\nexport async function openHiddenSignerFrame() {\n    if (!hasDOM())\n        throw new Error('The Bounded signer frame is only available in the browser.');\n    const { url, origin } = await signerPage();\n    const frame = document.createElement('iframe');\n    frame.setAttribute('aria-hidden', 'true');\n    frame.style.cssText =\n        'position:fixed;width:1px;height:1px;left:-9999px;top:-9999px;border:0;opacity:0;pointer-events:none';\n    let disposed = false;\n    let readyResolve = null;\n    const ready = new Promise((resolve) => { readyResolve = resolve; });\n    const pending = new Map();\n    const onMsg = (event) => {\n        if (event.origin !== origin || event.source !== frame.contentWindow)\n            return;\n        const d = event.data;\n        if (!d || typeof d !== 'object')\n            return;\n        if (d.type === 'bounded:turnkey:ready') {\n            readyResolve === null || readyResolve === void 0 ? void 0 : readyResolve();\n            return;\n        }\n        if (d.type === 'bounded:turnkey:result' && typeof d.requestId === 'string') {\n            const settle = pending.get(d.requestId);\n            if (settle) {\n                pending.delete(d.requestId);\n                settle(d);\n            }\n        }\n    };\n    window.addEventListener('message', onMsg);\n    frame.src = url;\n    document.body.appendChild(frame);\n    const dispose = () => {\n        if (disposed)\n            return;\n        disposed = true;\n        window.removeEventListener('message', onMsg);\n        pending.clear();\n        try {\n            frame.remove();\n        }\n        catch ( /* already gone */_a) { /* already gone */ }\n    };\n    return {\n        dispose,\n        request(message, timeoutMs) {\n            const requestId = String(message.requestId || '');\n            if (!requestId)\n                return Promise.reject(new Error('signer frame request needs a requestId'));\n            if (disposed)\n                return Promise.reject(new Error('signer frame disposed'));\n            return new Promise((resolve, reject) => {\n                let timer;\n                pending.set(requestId, (d) => {\n                    if (timer)\n                        clearTimeout(timer);\n                    resolve(d);\n                });\n                timer = setTimeout(() => {\n                    pending.delete(requestId);\n                    reject(new Error('The Bounded signer did not respond in time.'));\n                }, timeoutMs);\n                ready.then(() => {\n                    var _a;\n                    if (disposed || !pending.has(requestId))\n                        return;\n                    try {\n                        (_a = frame.contentWindow) === null || _a === void 0 ? void 0 : _a.postMessage(message, origin);\n                    }\n                    catch ( /* frame gone; timeout rejects */_b) { /* frame gone; timeout rejects */ }\n                });\n            });\n        },\n    };\n}\n","// turnkey-signing-capability.ts - the pure AS-02 (DS2-0112) signing-capability logic,\n// kept import-free (no DOM, no session, no @bounded-sh/core) so it is unit-testable.\n//\n// The hosted Turnkey signer refuses to sign unless the request carries an issuer-signed\n// SIGNING CAPABILITY bound to the app id, the requesting origin, and the EXACT payload\n// hash. `requestTurnkeySigningCapability` mints one for the given bytes and\n// `buildTurnkeySignRequest` assembles the signer request that carries it. The bridge\n// (turnkey-signer-bridge.ts) supplies the base url + id token and routes through both,\n// so a regression here (a dropped capability, a wrong route, a swallowed error) is\n// caught without a browser.\n// POST the Bounded id token + payload hash to the issuer's capability mint route and\n// return the issuer-signed capability for exactly these bytes. Credential-free: identity\n// is proven with the id token in the body (not an ambient cookie the cross-origin fetch\n// would not carry). Throws with the same stable messages the bridge relied on inline.\nexport async function requestTurnkeySigningCapability(opts) {\n    const base = opts.baseUrl.replace(/\\/$/, '');\n    let res;\n    try {\n        res = await opts.fetchImpl(`${base}/wallet/turnkey/capability`, {\n            method: 'POST',\n            headers: { 'content-type': 'application/json' },\n            body: JSON.stringify({ idToken: opts.idToken, messageHex: opts.messageHex }),\n        });\n    }\n    catch (_a) {\n        throw new Error('Could not reach the Bounded signer to authorize this signature.');\n    }\n    if (!res.ok) {\n        let error = 'signing_capability_denied';\n        try {\n            const d = (await res.json());\n            if (d && typeof d.error === 'string')\n                error = d.error;\n        }\n        catch (_b) {\n            /* keep the default marker */\n        }\n        throw new Error(`Turnkey signing was not authorized (${error}).`);\n    }\n    const d = (await res.json());\n    if (!d || typeof d.capability !== 'string' || !d.capability) {\n        throw new Error('Turnkey signing capability was malformed.');\n    }\n    return d.capability;\n}\n// Assemble the `bounded:turnkey:sign` postMessage request, carrying the issuer-signed\n// capability for the same bytes. Without the capability the hosted signer refuses\n// (capability_required), so it is a required field of every sign request.\n// `authorization` is the issuer-signed createWallet action authorization: inline\n// (authMode:\"turnkey\") sessions plant no Better Auth cookie on the issuer, so the\n// signer page's same-origin status/create fetches resolve the session from this\n// bearer proof instead. The sign approval itself stays capability-gated.\nexport function buildTurnkeySignRequest(opts) {\n    return {\n        type: 'bounded:turnkey:sign',\n        requestId: opts.requestId,\n        messageHex: opts.messageHex,\n        capability: opts.capability,\n        authorization: opts.authorization,\n    };\n}\n// Mint the authorization required for wallet metadata reads and get-or-create. This uses the\n// same credential-free posture as signing capabilities: the Bounded id token proves the user\n// and app, while the issuer binds the authorization to the registered requesting origin and\n// exact action. A wallet address is intentionally not required for createWallet because this\n// request is what provisions the first wallet.\nexport async function requestTurnkeyActionAuthorization(opts) {\n    const base = opts.baseUrl.replace(/\\/$/, '');\n    let res;\n    try {\n        res = await opts.fetchImpl(`${base}/wallet/turnkey/action-authorization`, {\n            method: 'POST',\n            headers: { 'content-type': 'application/json' },\n            body: JSON.stringify({ idToken: opts.idToken, action: opts.action }),\n        });\n    }\n    catch (_a) {\n        throw new Error('Could not reach the Bounded signer to authorize this wallet action.');\n    }\n    if (!res.ok) {\n        let error = 'action_authorization_denied';\n        try {\n            const d = (await res.json());\n            if (d && typeof d.error === 'string')\n                error = d.error;\n        }\n        catch (_b) {\n            /* keep the default marker */\n        }\n        throw new Error(`Turnkey wallet action was not authorized (${error}).`);\n    }\n    const d = (await res.json());\n    if (!d || typeof d.authorization !== 'string' || !d.authorization) {\n        throw new Error('Turnkey wallet action authorization was malformed.');\n    }\n    return d.authorization;\n}\n// Assemble the exact signer request covered by the action authorization. Keep this mapping\n// centralized so a future caller cannot mint one action and accidentally post another.\nexport function buildTurnkeyActionRequest(opts) {\n    if (opts.action !== 'getAddress' && opts.action !== 'createWallet') {\n        throw new Error('Unsupported Turnkey wallet action.');\n    }\n    return {\n        type: `bounded:turnkey:${opts.action}`,\n        requestId: opts.requestId,\n        authorization: opts.authorization,\n    };\n}\n","// turnkey-signer-bridge.ts - routes NON-CUSTODIAL Turnkey embedded-wallet signing\n// through the Bounded-owned signer page (auth.bounded.sh/wallet/turnkey/signer).\n//\n// TRANSPORT: by default the signer runs inside the in-app WIDGET (turnkey-wallet-\n// widget.ts) - an iframe behind a Shadow-DOM modal that matches the Bounded widget\n// look + motion, so signing feels native. Environments where the frame cannot\n// mount fall back to a real popup window; both transports speak the same\n// postMessage protocol.\n//\n// Turnkey wallets produce raw detached signatures. The signer runs the Turnkey\n// browser SDK on the single Bounded origin and stamps an ed25519 signRawPayload\n// with the wallet's 24-hour email-established signing session (an emailed one-time\n// code is the sole signing authority; within a live session every signature is one\n// approval click). The app retains the transaction itself.\n//\n// ONE ORIGIN, ONE SESSION: the signing session lives in the signer origin's own\n// storage, out of every app's reach, so ALL Bounded apps (any subdomain / custom\n// domain) sign through this one origin - giving every user one wallet that roams\n// across every app.\nimport { getActiveSessionManager, getConfig } from '@bounded-sh/core';\nimport bs58 from 'bs58';\nimport { Buffer } from 'buffer';\nimport { getPlatform } from '../platform';\nimport { runWidget } from './turnkey-wallet-widget';\nimport { openHiddenSignerFrame } from './turnkey-signer-frame';\nimport { requestTurnkeySigningCapability, buildTurnkeySignRequest, requestTurnkeyActionAuthorization, buildTurnkeyActionRequest, } from './turnkey-signing-capability';\nfunction hasDOM() {\n    return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n// Dispatch one signer exchange through the in-app WIDGET, degrading to the POPUP\n// when we cannot embed (no DOM, or the frame never mounts/loads). Nothing in the\n// email-session flow needs a popup by preference: the code entry and the approval\n// click both run fine inside a cross-origin iframe on every engine (the old\n// Safari popup preference existed only for in-iframe WebAuthn CREATE).\nasync function deliver(url, origin, ex) {\n    const popup = () => runPopup(url, origin, ex);\n    return runWidget(url, origin, { request: ex.request, onResult: ex.onResult }, popup);\n}\nasync function turnkeySignerPage() {\n    const cfg = await getConfig();\n    const base = (cfg.humanAuthApiUrl || 'https://auth.bounded.sh').replace(/\\/$/, '');\n    return { url: `${base}/wallet/turnkey/signer`, origin: new URL(base).origin };\n}\nfunction toHex(bytes) {\n    let h = '';\n    for (const b of bytes)\n        h += b.toString(16).padStart(2, '0');\n    return h;\n}\nfunction fromHex(hex) {\n    const clean = hex.startsWith('0x') ? hex.slice(2) : hex;\n    const out = new Uint8Array(clean.length / 2);\n    for (let i = 0; i < out.length; i++)\n        out[i] = parseInt(clean.substr(i * 2, 2), 16);\n    return out;\n}\nfunction decodeJwt(token) {\n    try {\n        let value = token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/');\n        const padding = value.length % 4;\n        if (padding === 2)\n            value += '==';\n        else if (padding === 3)\n            value += '=';\n        return JSON.parse(getPlatform().atob(value));\n    }\n    catch (_a) {\n        return {};\n    }\n}\nfunction activeTurnkeyAddress() {\n    let token = null;\n    try {\n        token = getActiveSessionManager().getIdToken();\n    }\n    catch (_a) {\n        token = null;\n    }\n    if (!token)\n        return null;\n    const claims = decodeJwt(token);\n    const address = claims['custom:walletAddress'];\n    const provider = claims['custom:walletProvider'];\n    return provider === 'turnkey' && typeof address === 'string' && address\n        ? address\n        : null;\n}\nlet requestSeq = 0;\n// Shared popup driver: open the signer page, do the ready/postMessage handshake, and\n// resolve when `onResult` accepts a result message. Origin + source are pinned.\nasync function runPopup(url, signerOrigin, ex) {\n    var _a, _b;\n    const w = (_a = ex.width) !== null && _a !== void 0 ? _a : 420, h = (_b = ex.height) !== null && _b !== void 0 ? _b : 620;\n    const left = window.screenX + Math.max(0, (window.outerWidth - w) / 2);\n    const top = window.screenY + Math.max(0, (window.outerHeight - h) / 2);\n    const popup = window.open(url, 'bounded-turnkey-signer', `width=${w},height=${h},left=${left},top=${top}`);\n    if (!popup) {\n        throw new Error('Popup blocked - call this from a user gesture (e.g. a click handler) so the wallet approval window can open.');\n    }\n    return await new Promise((resolve, reject) => {\n        let settled = false;\n        // DS3-0412: the signer's `bounded:turnkey:ready` is the authoritative readiness signal, NOT\n        // a bare `postMessage`. On a slow navigation the popup can still be at about:blank when the\n        // 1.2s fallback fires, so a post to `signerOrigin` is silently dropped (target-origin mismatch).\n        // We therefore never latch \"sent\" on a post that returned. We (re)send the request on every\n        // `ready`, keep the 1.2s kick only as a fallback for signer pages that omit `ready`, and stop\n        // resending once the signer acknowledges THIS requestId (the terminal `result` is that ack; a\n        // future signer may also emit `bounded:turnkey:ack`) or the exchange settles.\n        let readySeen = false;\n        let acked = false;\n        let closeTimer;\n        const cleanup = () => { settled = true; window.removeEventListener('message', onMsg); if (closeTimer)\n            clearInterval(closeTimer); };\n        const sendRequest = () => { if (settled || acked)\n            return; try {\n            popup.postMessage(ex.request, signerOrigin);\n        }\n        catch ( /* popup gone */_a) { /* popup gone */ } };\n        const onMsg = (event) => {\n            if (event.origin !== signerOrigin)\n                return;\n            if (event.source !== popup)\n                return;\n            const d = event.data;\n            if (!d || typeof d !== 'object')\n                return;\n            if (d.type === 'bounded:turnkey:ready') {\n                readySeen = true;\n                sendRequest();\n                return;\n            }\n            if (d.type === 'bounded:turnkey:ack' && d.requestId === ex.request.requestId) {\n                acked = true;\n                return;\n            }\n            if (d.type === 'bounded:turnkey:result' && d.requestId === ex.request.requestId) {\n                const outcome = ex.onResult(d);\n                if ('error' in outcome) {\n                    cleanup();\n                    try {\n                        popup.close();\n                    }\n                    catch ( /* ignore */_a) { /* ignore */ }\n                    reject(new Error(outcome.error));\n                    return;\n                }\n                if (outcome.done) {\n                    cleanup();\n                    try {\n                        popup.close();\n                    }\n                    catch ( /* ignore */_b) { /* ignore */ }\n                    resolve(outcome.value);\n                }\n            }\n        };\n        window.addEventListener('message', onMsg);\n        // Fallback only for signer pages that never emit `ready`; suppressed once `ready` (the reliable\n        // path) has driven a send or the signer has acked, so a slow-nav drop can no longer strand the op.\n        setTimeout(() => { if (!readySeen && !acked)\n            sendRequest(); }, 1200);\n        closeTimer = setInterval(() => {\n            if (popup.closed) {\n                clearInterval(closeTimer);\n                setTimeout(() => { if (!settled) {\n                    cleanup();\n                    reject(new Error('Wallet approval window was closed before it completed.'));\n                } }, 400);\n            }\n        }, 500);\n        setTimeout(() => { if (!settled) {\n            cleanup();\n            try {\n                popup.close();\n            }\n            catch ( /* ignore */_a) { /* ignore */ }\n            reject(new Error('Wallet approval timed out.'));\n        } }, 5 * 60 * 1000);\n    });\n}\n// AS-02: the hosted signer refuses to sign unless the request carries an issuer-signed\n// SIGNING CAPABILITY bound to the app id, this origin, and the EXACT bytes (a bare postMessage\n// from any peer can no longer consent-phish a signature). Fetch one from the human-auth issuer\n// for exactly these bytes before posting the sign request. Credential-free: the caller proves\n// identity with the Bounded id token WE minted (a body secret, RS256-verified server-side), not\n// an ambient cookie - the issuer's session cookie is SameSite-scoped to its own origin and is\n// not sent on this cross-origin fetch, so the token is what carries the session's wallet.\nasync function fetchSigningCapability(messageHex) {\n    const cfg = await getConfig();\n    const base = (cfg.humanAuthApiUrl || 'https://auth.bounded.sh').replace(/\\/$/, '');\n    let idToken = null;\n    try {\n        idToken = getActiveSessionManager().getIdToken();\n    }\n    catch (_a) {\n        idToken = null;\n    }\n    if (!idToken) {\n        throw new Error('This session has no Turnkey wallet. Sign in again to provision one.');\n    }\n    return requestTurnkeySigningCapability({\n        baseUrl: base,\n        idToken,\n        messageHex,\n        fetchImpl: (url, init) => fetch(url, init),\n    });\n}\n// DS3-0510: wallet reads and creation disclose a stable wallet identity, so the hosted signer\n// requires an issuer-signed authorization bound to this app origin and exact action. Fetch it\n// before posting to the signer. Walletless sessions are valid for createWallet because that is\n// the operation that provisions their first wallet.\nasync function fetchActionAuthorization(action) {\n    const cfg = await getConfig();\n    const base = (cfg.humanAuthApiUrl || 'https://auth.bounded.sh').replace(/\\/$/, '');\n    let idToken = null;\n    try {\n        idToken = getActiveSessionManager().getIdToken();\n    }\n    catch (_a) {\n        idToken = null;\n    }\n    if (!idToken) {\n        throw new Error('Sign in again to set up your Turnkey wallet.');\n    }\n    return requestTurnkeyActionAuthorization({\n        baseUrl: base,\n        idToken,\n        action,\n        fetchImpl: (url, init) => fetch(url, init),\n    });\n}\n/**\n * Destroy the 24h signing session held on the signer origin for this device.\n * Called by logout(): logout must END the signing session, never leave it to\n * expire (TURNKEY-EMAIL-SIGNING-PLAN.md). Best-effort by design - the session\n * lives in the signer origin's storage, so the only way to reach it is a hidden\n * signer iframe, and a blocked/offline frame must never block logout itself;\n * an unswept session is account-bound and unusable without a live authorization,\n * it just costs its owner nothing and a stranger nothing.\n */\nexport async function clearTurnkeySigningSession() {\n    if (!hasDOM())\n        return;\n    // The session can live in TWO places, and the sweep has to reach both:\n    //   1. the signer origin's store, shared by every signer frame in this app's partition -\n    //      cleared by posting into a throwaway frame below;\n    //   2. the WARM widget iframe's memory. The signer keeps an in-memory mirror when the\n    //      browser blocks its storage, and hideModal deliberately leaves that iframe mounted\n    //      between signatures, so the mirror outlives logout. A throwaway frame cannot see\n    //      another document's memory - the only way to take it is to destroy that document.\n    // Done first, and synchronously, so it lands even if the frame exchange below fails.\n    try {\n        const { origin } = await turnkeySignerPage();\n        (await import('./bounded-widget-modal')).detachWarmSignerIframe(origin);\n    }\n    catch (_a) {\n        /* no modal module / no warm frame: nothing to take */\n    }\n    let frame = null;\n    try {\n        frame = await openHiddenSignerFrame();\n        await frame.request({ type: 'bounded:turnkey:clearSigningSession', requestId: `tkclear_${Date.now()}_${++requestSeq}` }, 4000);\n    }\n    catch (_b) {\n        /* best-effort: never block or fail logout on the sweep */\n    }\n    finally {\n        frame === null || frame === void 0 ? void 0 : frame.dispose();\n    }\n}\nexport function hasTurnkeyWallet() {\n    return activeTurnkeyAddress() !== null;\n}\n/**\n * Get-or-create the user's non-custodial Turnkey wallet, resolving with its stable\n * Solana address. Creation never prompts: on first use the signer silently provisions\n * the email-rooted wallet (no code), and an existing wallet resolves immediately.\n * Call from a USER GESTURE (the transport may need to open a window).\n *\n * Use this to learn the fee-payer address BEFORE building a transaction to sign.\n */\nexport async function getOrCreateTurnkeyWallet() {\n    if (!hasDOM())\n        throw new Error('Turnkey embedded wallets are only available in the browser (popup-based).');\n    const { url, origin } = await turnkeySignerPage();\n    const requestId = `tkcreate_${Date.now()}_${++requestSeq}`;\n    const authorization = await fetchActionAuthorization('createWallet');\n    return await deliver(url, origin, {\n        request: buildTurnkeyActionRequest({ requestId, action: 'createWallet', authorization }),\n        onResult: (d) => {\n            if (d.ok && typeof d.address === 'string')\n                return { done: true, value: { address: d.address, subOrgId: String(d.subOrgId || '') } };\n            return { error: String(d.error || 'Wallet setup failed') };\n        },\n    });\n}\n/**\n * Open the hosted PRIVATE-KEY EXPORT page for the session's Turnkey wallet in a\n * new tab. Works for BOTH session kinds: hosted (issuer-cookie) sessions open it\n * bare, and inline (authMode:\"turnkey\") sessions - which own no issuer cookie -\n * carry a short-lived, purpose-bound exportWallet authorization in the URL\n * FRAGMENT (never sent to any server; the page strips it from the address bar\n * immediately and uses it as its bearer session). MUST be called from a USER\n * GESTURE or the browser blocks the tab. The key itself is decrypted only in\n * that tab - it never transits Bounded.\n */\nexport async function openTurnkeyKeyExport() {\n    if (!hasDOM())\n        throw new Error('Turnkey key export is only available in the browser.');\n    if (!hasTurnkeyWallet())\n        throw new Error('This session has no Turnkey wallet to export.');\n    // Open the tab SYNCHRONOUSLY - before any await - so the click's transient user\n    // activation is not consumed by the mint below; a window.open issued after an\n    // awaited round trip is refused by strict popup blockers even from a click\n    // handler. Same hard-won pattern as onramp() and loginWithPopup. Note the\n    // features string must NOT contain `noopener`: per HTML, window.open returns\n    // null when noopener is set, so the handle needed to navigate the tab (and to\n    // tell \"blocked\" from \"opened\") would be unavailable. Severing the back-link\n    // with `handle.opener = null` gives the same protection and keeps the handle.\n    const handle = window.open('', '_blank');\n    if (!handle) {\n        throw new Error('Popup blocked - call openTurnkeyKeyExport() from a user gesture (e.g. a click handler).');\n    }\n    try {\n        handle.opener = null;\n    }\n    catch ( /* older engines: the tab still cannot read us cross-origin */_a) { /* older engines: the tab still cannot read us cross-origin */ }\n    try {\n        const cfg = await getConfig();\n        const base = (cfg.humanAuthApiUrl || 'https://auth.bounded.sh').replace(/\\/$/, '');\n        const authorization = await fetchActionAuthorization('exportWallet');\n        handle.location.href = `${base}/wallet/turnkey/export#authorization=${encodeURIComponent(authorization)}`;\n    }\n    catch (error) {\n        // Never strand a blank tab on a failed mint.\n        try {\n            handle.close();\n        }\n        catch ( /* already gone */_b) { /* already gone */ }\n        throw error;\n    }\n}\n/**\n * Open the Bounded Turnkey signer popup and sign `message` (raw bytes) with the\n * user's non-custodial Turnkey wallet, resolving with the ed25519 signature +\n * the wallet address. MUST be called from a USER GESTURE (click/tap) or the\n * browser blocks the popup.\n *\n * The signer shows the decoded transaction on an approve card. With a live 24-hour\n * signing session (normally established by the login code itself) one click signs;\n * without one, the card collects a Turnkey-emailed one-time code inline, which\n * establishes the session, and the same click completes the signature.\n */\nexport async function signSolanaMessageViaTurnkey(message) {\n    if (!hasDOM()) {\n        throw new Error('Turnkey embedded-wallet signing is only available in the browser (popup-based).');\n    }\n    const { url, origin } = await turnkeySignerPage();\n    const requestId = `tksign_${Date.now()}_${++requestSeq}`;\n    const messageHex = toHex(message);\n    // AS-02: obtain the issuer-signed capability for THESE exact bytes first; the signer will\n    // refuse (capability_required) without it. Fetched per signature (each is single-payload).\n    const capability = await fetchSigningCapability(messageHex);\n    // Inline (authMode:\"turnkey\") sessions plant no Better Auth cookie on the issuer, so the\n    // signer's same-origin status/create fetches need a bearer session proof: attach the\n    // createWallet action authorization (it covers the sign flow's get-or-create too). Minted\n    // from the same id token as the capability, so a session that minted one can mint both.\n    const authorization = await fetchActionAuthorization('createWallet');\n    return await deliver(url, origin, {\n        request: buildTurnkeySignRequest({ requestId, messageHex, capability, authorization }),\n        onResult: (d) => {\n            if (d.ok && typeof d.signatureHex === 'string' && typeof d.address === 'string') {\n                return { done: true, value: { signature: fromHex(d.signatureHex), address: d.address, subOrgId: String(d.subOrgId || '') } };\n            }\n            return { error: String(d.error || 'Turnkey signing failed') };\n        },\n    });\n}\nfunction requireMatchingAddress(result) {\n    const expected = activeTurnkeyAddress();\n    if (!expected)\n        throw new Error('This session has no Turnkey wallet. Sign in again to provision one.');\n    if (result.address !== expected)\n        throw new Error('Turnkey signer returned a different wallet address than the active session.');\n    return expected;\n}\nexport async function signMessageWithTurnkey(message) {\n    const result = await signSolanaMessageViaTurnkey(getPlatform().textEncode(message));\n    requireMatchingAddress(result);\n    return bs58.encode(result.signature);\n}\nexport async function signTransactionWithTurnkey(transaction) {\n    const isLegacy = 'serializeMessage' in transaction;\n    const message = isLegacy\n        ? transaction.serializeMessage()\n        : transaction.message.serialize();\n    const result = await signSolanaMessageViaTurnkey(new Uint8Array(message));\n    const address = requireMatchingAddress(result);\n    const { PublicKey } = await import('@solana/web3.js');\n    if (isLegacy) {\n        transaction.addSignature(new PublicKey(address), Buffer.from(result.signature));\n    }\n    else {\n        transaction.addSignature(new PublicKey(address), result.signature);\n    }\n    return transaction;\n}\n// DS3-0414: does the transaction already carry a REAL signer signature? If so, its compiled\n// message (recentBlockhash included) must not be mutated - see signAndSubmitTransactionWithTurnkey.\n// Legacy signatures are `{ signature: Buffer | null }` entries; versioned signatures are 64-byte\n// arrays that stay all-zero placeholders until a signer fills them.\nfunction transactionHasSignature(transaction) {\n    if ('serializeMessage' in transaction) {\n        return transaction.signatures.some((s) => s.signature != null);\n    }\n    return transaction.signatures.some((sig) => sig.some((b) => b !== 0));\n}\nexport async function signAndSubmitTransactionWithTurnkey(transaction, feePayer) {\n    var _a;\n    const config = await getConfig();\n    const rpcUrl = (_a = config.rpcUrl) === null || _a === void 0 ? void 0 : _a.trim();\n    if (!rpcUrl)\n        throw new Error('Turnkey transaction submission requires init({ rpcUrl }).');\n    const { Connection, PublicKey } = await import('@solana/web3.js');\n    const connection = new Connection(rpcUrl, 'confirmed');\n    const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n    const isLegacy = 'serializeMessage' in transaction;\n    // DS3-0414: a Solana signature is computed over the compiled message, which INCLUDES\n    // recentBlockhash. Rewriting the blockhash after any signer (sponsor / multisig / co-signer)\n    // has signed silently invalidates their signature - signTransactionWithTurnkey only ADDS the\n    // Turnkey signature, it never re-signs the others. So only refresh the blockhash while the\n    // transaction is still unsigned; once a real signature is present, preserve the caller's message\n    // verbatim and confirm against the blockhash it already carries.\n    const hasSignature = transactionHasSignature(transaction);\n    let confirmBlockhash = blockhash;\n    if (!hasSignature) {\n        if (isLegacy) {\n            const legacy = transaction;\n            legacy.recentBlockhash = blockhash;\n            legacy.lastValidBlockHeight = lastValidBlockHeight;\n            if (!legacy.feePayer) {\n                const address = activeTurnkeyAddress();\n                if (!address)\n                    throw new Error('This session has no Turnkey wallet. Sign in again to provision one.');\n                legacy.feePayer = feePayer !== null && feePayer !== void 0 ? feePayer : new PublicKey(address);\n            }\n        }\n        else {\n            transaction.message.recentBlockhash = blockhash;\n        }\n    }\n    else {\n        confirmBlockhash = (isLegacy\n            ? transaction.recentBlockhash\n            : transaction.message.recentBlockhash) || blockhash;\n    }\n    const signed = await signTransactionWithTurnkey(transaction);\n    const signature = await connection.sendRawTransaction(signed.serialize(), {\n        skipPreflight: false,\n        maxRetries: 3,\n    });\n    const confirmation = await connection.confirmTransaction({ signature, blockhash: confirmBlockhash, lastValidBlockHeight }, 'confirmed');\n    if (confirmation.value.err) {\n        throw new Error(`Turnkey transaction failed: ${JSON.stringify(confirmation.value.err)}`);\n    }\n    return signature;\n}\n","import { getConfig, getActiveSessionManager } from '@bounded-sh/core';\nimport { setAuthLoading } from '../global';\nimport { adoptSessionProvider } from './session-provider';\nimport { getPlatform } from '../platform';\nimport { hasTurnkeyWallet, signAndSubmitTransactionWithTurnkey, signMessageWithTurnkey, signTransactionWithTurnkey, } from './turnkey-signer-bridge';\n// Same message the email provider uses when a hosted (OIDC) login has no\n// embedded wallet — enable `auth.wallets` in policy to get one.\nconst OIDC_NO_WALLET = 'This session has no Turnkey wallet. Sign in again to provision the default ' +\n    'embedded wallet, or check whether the app explicitly sets auth.wallets:false.';\n// PKCE material is stored PER ATTEMPT under a state-derived key\n// (`bounded.oidc.pkce.<state>`), never one fixed key. Two overlapping logins in the\n// same tab (redirect + popup, or two popups) each own a distinct record, so a second\n// attempt cannot clobber the first's verifier/state/redirectUri.\nconst PKCE_STORE_PREFIX = 'bounded.oidc.pkce';\nfunction pkceKey(state) {\n    return `${PKCE_STORE_PREFIX}.${state}`;\n}\nconst ISSUER_SESSION_KIND_KEY = 'bounded_issuer_session_kind';\n// Active session store (Web on web, RN on React Native) — selected by config,\n// not by `typeof window` (truthy on RN). OIDC redirect/popup is web-only, but the\n// session it mints is read back through this same selector everywhere.\nconst sessionManager = getActiveSessionManager;\nfunction hasDOM() {\n    return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction decodeJwt(token) {\n    try {\n        let b64 = token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/');\n        const pad = b64.length % 4;\n        if (pad === 2)\n            b64 += '==';\n        else if (pad === 3)\n            b64 += '=';\n        return JSON.parse(getPlatform().atob(b64));\n    }\n    catch (_a) {\n        return {};\n    }\n}\n// A minimal AuthProvider so getSession()/logout() work for OIDC sessions, mirroring email.\n// Turnkey supplies the default Solana wallet and supports raw message and transaction\n// signatures through the Bounded signer window.\nconst oidcProviderSingleton = {\n    async login() {\n        const idToken = sessionManager().getIdToken();\n        return idToken ? userFromIdToken(idToken) : null;\n    },\n    async getUser() {\n        const idToken = sessionManager().getIdToken();\n        return idToken ? userFromIdToken(idToken) : null;\n    },\n    async logout() { await sessionManager().clearSession(); },\n    async signMessage(message) {\n        if (!hasTurnkeyWallet())\n            throw new Error(OIDC_NO_WALLET);\n        return signMessageWithTurnkey(message);\n    },\n    async signTransaction(transaction) {\n        if (!hasTurnkeyWallet())\n            throw new Error(OIDC_NO_WALLET);\n        return signTransactionWithTurnkey(transaction);\n    },\n    async signAndSubmitTransaction(transaction, feePayer) {\n        if (!hasTurnkeyWallet())\n            throw new Error(OIDC_NO_WALLET);\n        return signAndSubmitTransactionWithTurnkey(transaction, feePayer);\n    },\n};\nfunction userFromIdToken(idToken) {\n    const c = decodeJwt(idToken);\n    const id = c['custom:userId'] || c.sub || c['custom:walletAddress'] || '';\n    return {\n        id,\n        address: (c['custom:walletProvider'] === 'turnkey' && c['custom:walletAddress'] || null),\n        evmAddress: null,\n        email: (c.email || null), provider: oidcProviderSingleton,\n    };\n}\nfunction tokenField(data, snake, camel) {\n    var _a;\n    const value = (_a = data === null || data === void 0 ? void 0 : data[snake]) !== null && _a !== void 0 ? _a : data === null || data === void 0 ? void 0 : data[camel];\n    return typeof value === 'string' ? value : '';\n}\nfunction boundedRefreshTokenField(data) {\n    for (const key of ['bounded_refresh_token', 'boundedRefreshToken', 'refreshToken']) {\n        const value = data === null || data === void 0 ? void 0 : data[key];\n        if (typeof value === 'string' && value.length > 0)\n            return value;\n    }\n    return '';\n}\nasync function issuerBase() {\n    const cfg = await getConfig();\n    return (cfg.humanAuthApiUrl || 'https://auth.bounded.sh').replace(/\\/$/, '');\n}\n// Base64url-encode raw bytes via the platform abstraction (web: window.btoa;\n// RN/Node: the polyfilled/Buffer btoa supplied by getPlatform()). On web this is\n// byte-identical to the previous direct `btoa(...)` call.\nfunction b64url(buf) {\n    let s = '';\n    const bytes = buf instanceof Uint8Array ? buf : new Uint8Array(buf);\n    for (let i = 0; i < bytes.length; i++)\n        s += String.fromCharCode(bytes[i]);\n    return getPlatform().btoa(s).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n// PKCE verifier + S256 challenge, fully platform-neutral: random bytes and the\n// SHA-256 digest both come from getPlatform() (web → WebCrypto, RN → polyfill/\n// expo-crypto). Web output is identical to the previous raw-crypto path.\nasync function makePkce() {\n    const rnd = getPlatform().getRandomBytes(32);\n    const verifier = b64url(rnd);\n    const digest = await getPlatform().sha256(getPlatform().textEncode(verifier));\n    return { verifier, challenge: b64url(digest) };\n}\nfunction randomState() {\n    return b64url(getPlatform().getRandomBytes(16));\n}\nfunction normalizeMethod(value) {\n    const normalized = String(value || '').trim().toLowerCase();\n    return /^[a-z0-9_-]{1,40}$/.test(normalized) ? normalized : null;\n}\n// The identifier-first hosted methods: the user types who they are and proves it,\n// so a prompt-less authorize may still deliberately SSO a live issuer session.\n// Every OTHER explicit provider jump is a social IdP button (\"Continue with\n// Google\"), where silent SSO is the logged-out-then-same-account-again trap.\nconst IDENTIFIER_METHODS = new Set(['email', 'text', 'phone']);\nfunction appendHostedLoginHints(params, opts) {\n    const methods = (opts.methods || [])\n        .map((method) => normalizeMethod(method))\n        .filter((method) => !!method);\n    if (methods.length > 0) {\n        params.set('bounded_methods', Array.from(new Set(methods)).join(','));\n    }\n    const provider = normalizeMethod(opts.provider);\n    if (provider)\n        params.set('bounded_provider', provider);\n    // login_hint: an identifier (usually an email) to prefill on the hosted page.\n    // Kept short and free of control chars; the hosted page validates before use.\n    const hint = String(opts.loginHint || '').trim();\n    if (hint && hint.length <= 320 && !/[\\s<>\"']/.test(hint))\n        params.set('login_hint', hint);\n    // Standard OIDC prompt (e.g. 'login' to force a fresh sign-in / account choice).\n    // An explicit social-provider jump defaults to 'select_account': the issuer\n    // treats it as a demand for a fresh interactive sign-in (it never silently\n    // SSOs a live issuer session under that prompt), and Google's leg always\n    // carries its own select_account - so the user gets the IdP's account chooser\n    // EVERY time, not just in a cookie-free browser. An explicit `prompt` always\n    // wins, and `prompt: ''` opts a jump back into silent SSO.\n    const prompt = opts.prompt === undefined\n        ? (provider && !IDENTIFIER_METHODS.has(provider) ? 'select_account' : null)\n        : normalizeMethod(opts.prompt);\n    if (prompt)\n        params.set('prompt', prompt);\n}\n// Build the authorize URL + the PKCE state that pairs with it. PURE: no storage,\n// no navigation — so it's shared verbatim by the web redirect/popup paths and the\n// native (expo-web-browser) path. The caller decides where the PkceState lives\n// (web → sessionStorage across the full-page redirect; native → in-memory across\n// the awaited browser session).\nasync function buildAuthorize(opts) {\n    const cfg = await getConfig();\n    if (!cfg.appId)\n        throw new Error('appId is not configured (init the SDK with your appId)');\n    // Web: default to the current page so callers don't have to pass redirectUri. Native has no\n    // window — it MUST pass an https universal link (the system auth session needs a real URL).\n    const redirectUri = opts.redirectUri || (hasDOM() ? window.location.origin + window.location.pathname : undefined);\n    if (!redirectUri)\n        throw new Error('redirectUri is required on React Native — pass the https universal link the app owner registered.');\n    const { verifier, challenge } = await makePkce();\n    const state = randomState();\n    const base = await issuerBase();\n    const params = new URLSearchParams({\n        client_id: cfg.appId, redirect_uri: redirectUri, response_type: 'code', scope: 'openid profile email',\n        code_challenge: challenge, code_challenge_method: 'S256', state,\n    });\n    appendHostedLoginHints(params, opts);\n    return { url: `${base}/api/auth/oauth2/authorize?${params.toString()}`, pkce: { verifier, state, redirectUri } };\n}\n// Are we on React Native (no DOM)? OIDC dispatch uses this to choose the native\n// expo-web-browser driver vs. the web full-page-redirect/popup driver.\nfunction isNative() {\n    return !getPlatform().hasDOM;\n}\n// ---------------------------------------------------------------------------\n// Native (React Native / Expo) redirect driver\n// ---------------------------------------------------------------------------\n// Lazily load expo-web-browser. It's an OPTIONAL peer dep — imported dynamically\n// so the web/Node bundle never requires it. Throws an actionable error if a native\n// app calls hosted login without installing it.\nasync function loadExpoWebBrowser() {\n    try {\n        // eslint-disable-next-line @typescript-eslint/no-var-requires\n        return await import('expo-web-browser');\n    }\n    catch (_a) {\n        throw new Error('React Native hosted login requires the optional peer dependency \"expo-web-browser\". ' +\n            'Install it with `npx expo install expo-web-browser` (and `expo-crypto`), then retry.');\n    }\n}\n// Parse code/state out of the universal-link callback URL. Hand-rolled (no `new URL()`)\n// because React Native's URL implementation is non-spec-compliant for query parsing.\nfunction parseCallbackParams(callbackUrl) {\n    var _a, _b;\n    const qIndex = callbackUrl.indexOf('?');\n    if (qIndex < 0)\n        return { code: null, state: null };\n    const query = callbackUrl.slice(qIndex + 1).split('#')[0];\n    const out = {};\n    for (const part of query.split('&')) {\n        if (!part)\n            continue;\n        const eq = part.indexOf('=');\n        const k = eq < 0 ? part : part.slice(0, eq);\n        const v = eq < 0 ? '' : part.slice(eq + 1);\n        try {\n            out[decodeURIComponent(k)] = decodeURIComponent(v.replace(/\\+/g, ' '));\n        }\n        catch (_c) {\n            out[k] = v;\n        }\n    }\n    return { code: (_a = out['code']) !== null && _a !== void 0 ? _a : null, state: (_b = out['state']) !== null && _b !== void 0 ? _b : null };\n}\n// Full native login: open the hosted page in the system auth session, await the\n// universal-link callback, verify state, and run the SAME PKCE code→token exchange\n// as web. Returns the signed-in User (native completes inline — there's no separate\n// completeLoginFromRedirect() round-trip the way the web full-page redirect needs).\nasync function runNativeLogin(opts) {\n    var _a, _b;\n    const { url, pkce } = await buildAuthorize(opts);\n    const WebBrowser = await loadExpoWebBrowser();\n    const openAuthSession = WebBrowser.openAuthSessionAsync || ((_a = WebBrowser.default) === null || _a === void 0 ? void 0 : _a.openAuthSessionAsync);\n    if (typeof openAuthSession !== 'function') {\n        throw new Error('expo-web-browser.openAuthSessionAsync is unavailable — update expo-web-browser.');\n    }\n    setAuthLoading(true);\n    try {\n        // openAuthSessionAsync keeps JS alive while the system browser is shown, then\n        // resolves with the callback URL once the universal link fires — so `pkce`\n        // stays in scope and never needs to be persisted.\n        const result = await openAuthSession(url, opts.redirectUri);\n        if (!result || result.type === 'cancel' || result.type === 'dismiss') {\n            throw new Error('Login cancelled');\n        }\n        if (result.type !== 'success' || typeof result.url !== 'string') {\n            throw new Error(`Hosted login did not complete (result: ${(_b = result === null || result === void 0 ? void 0 : result.type) !== null && _b !== void 0 ? _b : 'unknown'})`);\n        }\n        const { code, state: returnedState } = parseCallbackParams(result.url);\n        if (!code)\n            throw new Error('No authorization code in the callback URL');\n        if (!returnedState || returnedState !== pkce.state) {\n            throw new Error('OAuth state mismatch — possible CSRF; aborting');\n        }\n        return await exchangeCode(code, pkce.verifier, pkce.redirectUri);\n    }\n    finally {\n        setAuthLoading(false);\n    }\n}\n/** Start hosted login (Google / Apple / email / hosted phone). Works on WEB and REACT NATIVE.\n *\n *  WEB: navigates the whole page to the hosted Bounded login and resolves (void) as the page\n *  unloads; on return to `redirectUri?code=...` you call completeLoginFromRedirect().\n *\n *  REACT NATIVE: opens the hosted page via expo-web-browser, awaits the https universal-link\n *  callback, runs the PKCE exchange INLINE, and resolves with the signed-in User. No\n *  completeLoginFromRedirect() call is needed on native. Requires `redirectUri` to be an\n *  https UNIVERSAL LINK whose origin the app owner registered in the app's allowedOrigins\n *  (custom `myapp://` schemes are rejected by the issuer). Needs the optional peer deps\n *  expo-web-browser + (expo-crypto or react-native-get-random-values). */\nexport async function loginWithRedirect(opts) {\n    if (isNative())\n        return runNativeLogin(opts);\n    if (!hasDOM())\n        throw new Error('loginWithRedirect requires a browser or a configured React Native platform');\n    const { url, pkce } = await buildAuthorize(opts);\n    // Stash the verifier + state so the redirect_uri page can finish the exchange. sessionStorage\n    // is per-tab and cleared on close — appropriate for a short-lived auth handshake. Keyed by\n    // this attempt's own state so a second concurrent login cannot overwrite it.\n    sessionStorage.setItem(pkceKey(pkce.state), JSON.stringify(pkce));\n    setAuthLoading(true); // reflect \"signing in…\" right up to navigation; the return page's\n    window.location.href = url; // completeLoginFromRedirect() keeps it true until the user resolves.\n}\n/** Finish login on the redirect_uri page (WEB ONLY): exchange ?code= for a token (PKCE-verified),\n *  store the session, and return the User. Idempotent: returns null if there's no ?code= in the URL.\n *\n *  On REACT NATIVE this returns null and is a no-op: native login completes INLINE inside\n *  loginWithRedirect() (which resolves with the User), so there is no separate redirect\n *  page to finish from. Calling it on RN is harmless. */\nexport async function completeLoginFromRedirect() {\n    if (!hasDOM())\n        return null;\n    const url = new URL(window.location.href);\n    const code = url.searchParams.get('code');\n    const returnedState = url.searchParams.get('state');\n    if (!code)\n        return null;\n    // POPUP path: if we're the redirect_uri page running INSIDE the loginWithPopup() window,\n    // hand the code to the opener and close — no separate completeLoginInPopup() call needed.\n    // The opener is the same app/origin, so post to our own origin (the opener's message\n    // handler checks ev.origin === redirect_uri origin). One call now finishes BOTH flows.\n    if (window.opener && window.opener !== window) {\n        try {\n            window.opener.postMessage({ type: 'bounded-oidc-code', code, state: returnedState }, window.location.origin);\n        }\n        catch ( /* ignore */_a) { /* ignore */ }\n        try {\n            window.close();\n        }\n        catch ( /* ignore */_b) { /* ignore */ }\n        return null;\n    }\n    setAuthLoading(true);\n    try {\n        // Read back the exact record THIS attempt wrote, keyed by the state the issuer\n        // returned, so a concurrent login's record is never consumed by mistake.\n        const raw = returnedState ? sessionStorage.getItem(pkceKey(returnedState)) : null;\n        if (!raw)\n            throw new Error('Missing PKCE state — start login with loginWithRedirect()');\n        const pkce = JSON.parse(raw);\n        if (!returnedState || returnedState !== pkce.state)\n            throw new Error('OAuth state mismatch — possible CSRF; aborting');\n        const user = await exchangeCode(code, pkce.verifier, pkce.redirectUri);\n        sessionStorage.removeItem(pkceKey(returnedState));\n        // Strip code/state from the URL so a reload doesn't re-exchange (codes are single-use anyway).\n        url.searchParams.delete('code');\n        url.searchParams.delete('state');\n        window.history.replaceState({}, document.title, url.pathname + url.search + url.hash);\n        return user;\n    }\n    finally {\n        setAuthLoading(false);\n    }\n}\n/** Popup variant: open the hosted login in a popup; resolves with the User once the popup's\n *  redirect_uri page posts the code back. The redirect_uri page just calls the usual\n *  completeLoginFromRedirect() (which auto-detects the popup) — no separate call needed. */\nexport async function loginWithPopup(opts) {\n    if (!hasDOM())\n        throw new Error('loginWithPopup is web-only — on React Native use loginWithRedirect()');\n    // Open synchronously, before PKCE/config awaits consume the click's user-\n    // activation window. Opening only after buildAuthorize() intermittently\n    // left Chrome with a real named window stranded at about:blank (or blocked\n    // it entirely), while callers waited forever for an OAuth message.\n    const w = opts.width || 480, h = opts.height || 720;\n    const left = window.screenX + (window.outerWidth - w) / 2;\n    const top = window.screenY + (window.outerHeight - h) / 2;\n    // Per-attempt window name: a FIXED name made a second concurrent open() reuse and\n    // renavigate the first popup's browsing context. A fresh random name isolates each.\n    const popupName = `bounded-oidc-${randomState()}`;\n    const popup = window.open('', popupName, `width=${w},height=${h},left=${left},top=${top}`);\n    if (!popup)\n        throw new Error('Popup blocked — use loginWithRedirect() instead');\n    let authorization;\n    try {\n        authorization = await buildAuthorize(opts);\n    }\n    catch (error) {\n        try {\n            popup.close();\n        }\n        catch ( /* ignore */_a) { /* ignore */ }\n        throw error;\n    }\n    const { url, pkce } = authorization;\n    // Validate every remaining synchronous setup step before navigating. Both\n    // URL parsing and sessionStorage can throw (malformed caller input, blocked\n    // storage, quota/privacy mode); because the popup is already open to retain\n    // user activation, close it on either failure instead of orphaning a blank\n    // window with no listener or watchdog attached.\n    let expectedOrigin;\n    try {\n        expectedOrigin = new URL(pkce.redirectUri).origin;\n        sessionStorage.setItem(pkceKey(pkce.state), JSON.stringify(pkce));\n    }\n    catch (error) {\n        try {\n            popup.close();\n        }\n        catch ( /* ignore */_b) { /* ignore */ }\n        throw error;\n    }\n    try {\n        popup.location.replace(url);\n    }\n    catch (_c) {\n        try {\n            popup.location.href = url;\n        }\n        catch (_d) {\n            try {\n                popup.close();\n            }\n            catch ( /* ignore */_e) { /* ignore */ }\n            throw new Error('Popup failed to navigate — use loginWithRedirect() instead');\n        }\n    }\n    // expectedOrigin came from the RESOLVED redirect_uri (buildAuthorize defaulted it to the\n    // current page on web), not opts.redirectUri which may be undefined.\n    setAuthLoading(true); // reflect \"signing in…\" while the popup is open\n    try {\n        return await new Promise((resolve, reject) => {\n            let settled = false;\n            let timer;\n            let navigationTimer;\n            const cleanup = () => {\n                settled = true;\n                clearInterval(timer);\n                clearTimeout(navigationTimer);\n                window.removeEventListener('message', onMsg);\n            };\n            const onMsg = async (ev) => {\n                if (ev.origin !== expectedOrigin)\n                    return; // only trust the redirect_uri origin\n                const d = ev.data;\n                if (!d || d.type !== 'bounded-oidc-code' || typeof d.code !== 'string')\n                    return;\n                // Validate state BEFORE tearing down this listener, against the record THIS\n                // attempt captured in the closure (`pkce`), not a shared sessionStorage reread.\n                // A message from an OVERLAPPING attempt carries a different state: ignore it and\n                // stay registered for our own code, instead of cleaning up on another's message.\n                if (d.state !== pkce.state)\n                    return;\n                cleanup();\n                try {\n                    const user = await exchangeCode(d.code, pkce.verifier, pkce.redirectUri);\n                    sessionStorage.removeItem(pkceKey(pkce.state));\n                    try {\n                        popup.close();\n                    }\n                    catch ( /* ignore */_a) { /* ignore */ }\n                    resolve(user);\n                }\n                catch (e) {\n                    reject(e);\n                }\n            };\n            window.addEventListener('message', onMsg);\n            // Some browser/extension combinations can return a real popup handle but\n            // strand the window at about:blank instead of navigating to the hosted\n            // authorize URL. The old code then waited forever because the popup was\n            // open and no message could ever arrive. Once the popup becomes\n            // cross-origin, reading location throws — that is positive evidence that\n            // navigation succeeded, so only a still-readable about:blank is rejected.\n            navigationTimer = setTimeout(() => {\n                if (settled || popup.closed)\n                    return;\n                try {\n                    if (popup.location.href === 'about:blank') {\n                        cleanup();\n                        try {\n                            popup.close();\n                        }\n                        catch ( /* ignore */_a) { /* ignore */ }\n                        reject(new Error('Popup stalled at about:blank — use loginWithRedirect() instead'));\n                    }\n                }\n                catch ( /* cross-origin hosted auth loaded normally */_b) { /* cross-origin hosted auth loaded normally */ }\n            }, 4000);\n            // The popup posts its code and then closes ITSELF, so a naive \"popup.closed -> reject\"\n            // races the just-posted message and would report a spurious \"Login window closed\" on a\n            // SUCCESSFUL login. When we see it closed, wait a beat for that pending message to settle\n            // before declaring the window closed.\n            timer = setInterval(() => {\n                if (popup.closed) {\n                    clearInterval(timer);\n                    setTimeout(() => { if (!settled) {\n                        cleanup();\n                        reject(new Error('Login window closed'));\n                    } }, 500);\n                }\n            }, 500);\n        });\n    }\n    finally {\n        setAuthLoading(false);\n    }\n}\n/** Call this on the redirect_uri page when login was opened via loginWithPopup(): posts the\n *  code back to the opener and closes. (For the redirect variant use completeLoginFromRedirect.) */\nexport function completeLoginInPopup(openerOrigin) {\n    if (!hasDOM() || !window.opener)\n        return;\n    const url = new URL(window.location.href);\n    const code = url.searchParams.get('code');\n    const state = url.searchParams.get('state');\n    if (!code)\n        return;\n    try {\n        window.opener.postMessage({ type: 'bounded-oidc-code', code, state }, openerOrigin);\n    }\n    catch ( /* ignore */_a) { /* ignore */ }\n    try {\n        window.close();\n    }\n    catch ( /* ignore */_b) { /* ignore */ }\n}\n// Establish a Bounded session from a server-minted inline-session response (the same\n// { idToken, accessToken, refreshToken } shape as /session/refresh). Used by the\n// Turnkey-native login path (authMode:\"turnkey\"), which mints the session server-side\n// after Turnkey verifies the email OTP - there is no OIDC code to exchange. Wiring is\n// identical to exchangeCode's tail so the realtime worker cannot tell them apart.\nexport async function establishInlineSession(data) {\n    const base = await issuerBase();\n    const idToken = tokenField(data, 'id_token', 'idToken');\n    if (!idToken)\n        throw new Error('No id_token in the inline session response');\n    const accessToken = tokenField(data, 'access_token', 'accessToken') || idToken;\n    const refreshToken = boundedRefreshTokenField(data);\n    const user = userFromIdToken(idToken);\n    await sessionManager().storeSession(String(user.address || ''), accessToken, idToken, refreshToken, base);\n    // Adopt the OIDC provider on EVERY session surface - including core's signing\n    // pointer (getConfig().authProvider), which this path used to skip, leaving\n    // onchain writes routed through a previous (e.g. logged-out wallet) provider.\n    await adoptSessionProvider({ provider: oidcProviderSingleton, method: 'email', configKey: 'direct:oidc', user });\n    // Turnkey-native OTP mints an app session directly. It does not establish a\n    // Better Auth browser cookie on the issuer, so logout must not navigate\n    // through the issuer's cookie-clearing /logout endpoint. Stamped AFTER the\n    // adoption: setStoredAuthMethod clears the kind marker for non-email methods,\n    // and the adopt call is what records 'email'.\n    try {\n        getPlatform().storage.setItem(ISSUER_SESSION_KIND_KEY, 'inline');\n    }\n    catch ( /* storage unavailable */_a) { /* storage unavailable */ }\n    return user;\n}\n// Auth base + appId for the Turnkey-native inline OTP endpoints, resolved through the\n// same config the OIDC flow uses.\nexport async function inlineAuthEndpoint() {\n    const cfg = await getConfig();\n    return { base: await issuerBase(), appId: cfg.appId };\n}\nasync function exchangeCode(code, verifier, redirectUri) {\n    const cfg = await getConfig();\n    const base = await issuerBase();\n    // OIDC token endpoint: application/x-www-form-urlencoded (the standard). Public client (no\n    // secret) authenticated by PKCE. The code is single-use + short-TTL on the server.\n    const body = new URLSearchParams({\n        grant_type: 'authorization_code', code, redirect_uri: redirectUri,\n        client_id: cfg.appId, code_verifier: verifier,\n    });\n    let res;\n    try {\n        res = await fetch(`${base}/api/auth/oauth2/token`, {\n            method: 'POST', headers: { 'content-type': 'application/x-www-form-urlencoded' }, body: body.toString(),\n        });\n    }\n    catch (err) {\n        throw new Error(`Bounded token exchange failed: ${(err === null || err === void 0 ? void 0 : err.message) || err}`);\n    }\n    let data = null;\n    try {\n        data = await res.json();\n    }\n    catch ( /* non-JSON */_a) { /* non-JSON */ }\n    if (!res.ok)\n        throw new Error(String((data && (data.error_description || data.error || data.message)) || `token HTTP ${res.status}`));\n    const idToken = (data === null || data === void 0 ? void 0 : data.id_token) || (data === null || data === void 0 ? void 0 : data.idToken);\n    if (!idToken)\n        throw new Error('No id_token returned from the token endpoint');\n    const accessToken = tokenField(data, 'access_token', 'accessToken') || idToken;\n    const refreshToken = boundedRefreshTokenField(data);\n    const user = userFromIdToken(idToken);\n    await sessionManager().storeSession(String(user.address || ''), accessToken, idToken, refreshToken, base);\n    // Adopt on EVERY session surface (see establishInlineSession) - hosted\n    // popup/redirect completions all land here, so this closes their gap too.\n    await adoptSessionProvider({ provider: oidcProviderSingleton, method: 'email', configKey: 'direct:oidc', user });\n    // OIDC login does establish the issuer's Better Auth browser cookie. Record\n    // that fact separately from the provider name so logout clears the cookie\n    // and returns through the registered app origin. Stamped AFTER the adoption\n    // (setStoredAuthMethod clears the kind marker for non-email methods).\n    try {\n        getPlatform().storage.setItem(ISSUER_SESSION_KIND_KEY, 'hosted');\n    }\n    catch ( /* storage unavailable */_b) { /* storage unavailable */ }\n    return user;\n}\n","// NOTE: Provider class re-exports have been moved to index.ts (web) and\n// index.native.ts (RN) to avoid eager resolution of web-only dependencies\n// (react-dom) when this module is imported on RN.\nimport { getConfig, WebSessionManager, ReactNativeSessionManager, getActiveSessionManager, revokeSession } from \"@bounded-sh/core\";\nimport { OffchainAuthProvider } from \"./providers/offchain-auth-provider\";\nimport { getAuthProviderInstance, getCurrentUser, setAuthProviderInstance, setAuthLoading, setCurrentUser, } from \"../global\";\nimport { getPlatform } from \"../platform\";\nimport { commitIssuerLogoutBounce } from \"./issuer-logout-bounce\";\nimport { getStoredAuthMethod, setStoredAuthMethod, getIssuerSessionKind } from \"./stored-auth-method\";\nimport { adoptRebuiltProvider, adoptSessionProvider, clearSessionProviderForLogout, registerAuthRegistrySync } from \"./session-provider\";\nimport { isSupportedSolanaRpcNetwork, normalizeSolanaRpcUrl } from \"./solana-rpc\";\nimport { ensureSolanaMobileWalletRegistered, } from \"./providers/solana-mobile-registration\";\n// An app's own wallet configuration being contradictory is a developer bug, and\n// the SDK keeps it loud rather than quietly dropping the lane. Re-exported so an\n// app that catches it can tell it apart from a wallet simply not being there.\nexport { WalletConfigError } from \"./providers/solana-mobile-registration\";\nlet currentAuthProvider = null;\nlet currentAuthMethod = null;\nlet currentAuthProviderConfigKey = null;\nlet initConfig = null;\n// Keep this module's private registry inside session-provider.ts's atomic adopt/clear\n// blocks. Registered at load so the OIDC/inline paths (oidc-auth.ts), which cannot\n// import this module without a cycle, still update it through adoptSessionProvider.\nregisterAuthRegistrySync((provider, method, configKey) => {\n    currentAuthProvider = provider;\n    currentAuthMethod = method;\n    currentAuthProviderConfigKey = configKey;\n});\nconst objectIdentityKeys = new WeakMap();\nlet nextObjectIdentityKey = 1;\n// --- localStorage helpers: track which auth method created the active session ---\n// (implemented in ./stored-auth-method so the wallet providers share ONE writer)\nfunction getStoredIdToken() {\n    try {\n        return getActiveSessionManager().getIdToken();\n    }\n    catch (_a) {\n        return null;\n    }\n}\nfunction idTokenIsGuest(idToken, expectedAddress) {\n    var _a;\n    try {\n        if (!idToken)\n            return false;\n        let b64 = (_a = idToken.split('.')[1]) === null || _a === void 0 ? void 0 : _a.replace(/-/g, '+').replace(/_/g, '/');\n        if (!b64)\n            return false;\n        const pad = b64.length % 4;\n        if (pad === 2)\n            b64 += '==';\n        else if (pad === 3)\n            b64 += '=';\n        const claims = JSON.parse(getPlatform().atob(b64));\n        if ((claims === null || claims === void 0 ? void 0 : claims.is_anonymous) !== true)\n            return false;\n        if (expectedAddress && (claims === null || claims === void 0 ? void 0 : claims['custom:walletAddress']) !== expectedAddress)\n            return false;\n        return true;\n    }\n    catch (_b) {\n        return false;\n    }\n}\nfunction storedSessionIsGuest() {\n    return idTokenIsGuest(getStoredIdToken());\n}\n/**\n * Pick the provider used for an ordinary `init({ appId })` restore.\n *\n * Hosted email remains the default and explicit config always wins. The\n * implicit alternatives are sessions this SDK previously created on this\n * origin: a guest session, or a Solana WALLET session (the widget /\n * loginWithWallet record the 'phantom' marker). Restoring the wallet session\n * as 'email' is what used to WIPE it: the EmailAuthProvider restored the\n * bearer, then clearIncompatibleSession() saw stored 'phantom' !== current\n * 'email' and deleted the session on every reload (LF-005). A stored marker\n * still never OVERRIDES app configuration: explicit `authMethod` wins, and a\n * site-policy hard-off (`walletLogin: false` / `requireEmail: true`) keeps the\n * email restore path, whose incompatible-session clear is the designed outcome.\n */\nfunction authMethodForInit(config) {\n    if (config.authMethod != null)\n        return config.authMethod;\n    const stored = getStoredAuthMethod();\n    if (stored === 'guest') {\n        if (storedSessionIsGuest())\n            return 'guest';\n        // A marker is only a restore hint; the bearer is authoritative. Repair a\n        // stale marker (for example, a crash/failed switch while a human session\n        // was still active) instead of relabelling that human bearer as a guest.\n        const hasSession = !!getStoredIdToken();\n        setStoredAuthMethod(hasSession ? 'email' : null);\n        return 'email';\n    }\n    if (canonicalAuthMethodOrNull(stored) === 'phantom') {\n        if (isWalletLoginDisabled(config) || isEmailRequired(config))\n            return 'email';\n        if (getStoredIdToken())\n            return 'phantom';\n        // Wallet marker without a bearer: nothing to restore, repair the marker.\n        setStoredAuthMethod(null);\n        return 'email';\n    }\n    return 'email';\n}\n/**\n * Collapse the wallet-lane spellings onto ONE canonical auth method.\n *\n * 'wallet' and 'mobile-wallet-adapter' both select the same injected/registry\n * wallet path that `loginWithWallet()` and the login widget already record as\n * 'phantom' (INJECTED_AUTH_METHOD) - Solana Mobile is a wallet you pick inside\n * that lane, not a login method of its own, exactly like Solflare or Backpack.\n * Leaving the spellings distinct means the stored marker and `currentAuthMethod`\n * disagree after a widget login, and the next init()'s clearIncompatibleSession\n * would wipe a perfectly good session on every reload. One string, no drift.\n */\nfunction canonicalWalletAuthMethod(authMethod) {\n    return authMethod === 'wallet' || authMethod === 'mobile-wallet-adapter'\n        ? 'phantom'\n        : authMethod;\n}\n/** Null-tolerant `canonicalWalletAuthMethod`, for comparing a possibly-absent\n *  stored marker against a possibly-absent active method. */\nfunction canonicalAuthMethodOrNull(authMethod) {\n    return authMethod === null ? null : canonicalWalletAuthMethod(authMethod);\n}\nfunction objectIdentityKey(value) {\n    if (!value || (typeof value !== 'object' && typeof value !== 'function'))\n        return null;\n    const obj = value;\n    let id = objectIdentityKeys.get(obj);\n    if (!id) {\n        id = nextObjectIdentityKey++;\n        objectIdentityKeys.set(obj, id);\n    }\n    return `object:${id}`;\n}\nfunction stableConfigValue(value, seen = new WeakSet()) {\n    if (value === null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean')\n        return value;\n    if (typeof value === 'function')\n        return '[function]';\n    if (Array.isArray(value))\n        return value.map((item) => stableConfigValue(item, seen));\n    if (typeof value === 'object') {\n        if (seen.has(value))\n            return '[circular]';\n        seen.add(value);\n        const out = {};\n        for (const key of Object.keys(value).sort()) {\n            out[key] = stableConfigValue(value[key], seen);\n        }\n        seen.delete(value);\n        return out;\n    }\n    return String(value);\n}\nfunction authProviderConfigKey(config) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n    return JSON.stringify({\n        authMethod: (_a = config.authMethod) !== null && _a !== void 0 ? _a : null,\n        chain: (_b = config.chain) !== null && _b !== void 0 ? _b : null,\n        rpcUrl: normalizeSolanaRpcUrl(config.rpcUrl),\n        name: (_c = config.name) !== null && _c !== void 0 ? _c : null,\n        logoUrl: (_d = config.logoUrl) !== null && _d !== void 0 ? _d : null,\n        phantomConfig: stableConfigValue((_e = config.phantomConfig) !== null && _e !== void 0 ? _e : null),\n        walletLogin: stableConfigValue((_f = config.walletLogin) !== null && _f !== void 0 ? _f : null),\n        injectedWalletConfig: stableConfigValue((_g = config.injectedWalletConfig) !== null && _g !== void 0 ? _g : null),\n        // stableConfigValue flattens every function to \"[function]\", so a\n        // re-init that swaps ONLY a callback would key identically and keep the\n        // cached provider - still holding the previous page's closure, waiting\n        // on UI that no longer exists. Key the wallet gesture hook by identity.\n        confirmWalletAction: objectIdentityKey((_h = resolveInjectedWalletConfig(config).confirmWalletAction) !== null && _h !== void 0 ? _h : null),\n        evmWalletConfig: stableConfigValue((_j = config.evmWalletConfig) !== null && _j !== void 0 ? _j : null),\n        privyConfig: stableConfigValue((_k = config.privyConfig) !== null && _k !== void 0 ? _k : null),\n        mobileWalletConfig: stableConfigValue((_l = config.mobileWalletConfig) !== null && _l !== void 0 ? _l : null),\n        privyExpoProvider: objectIdentityKey((_m = config.privyExpoProvider) !== null && _m !== void 0 ? _m : null),\n    });\n}\n/**\n * Clears the session if it was created by a different auth method.\n * Returns true if the session was cleared, false if the session is compatible.\n *\n * Dispatches to the correct session manager based on the current auth method\n * so both web (WebSessionManager) and RN (ReactNativeSessionManager) sessions\n * are properly cleared.\n */\nexport async function clearIncompatibleSession() {\n    // Compare CANONICAL methods. A session minted by an older SDK can carry a\n    // legacy wallet spelling ('wallet' / 'mobile-wallet-adapter') while\n    // currentAuthMethod is always the canonical 'phantom' (getAuthProvider\n    // canonicalizes, and every marker writer stores 'phantom'). A raw string\n    // compare then reads that as another provider's session and deletes a\n    // perfectly good wallet session on every init - the exact wipe class\n    // canonicalWalletAuthMethod exists to close, on the stored side.\n    if (canonicalAuthMethodOrNull(getStoredAuthMethod()) === canonicalAuthMethodOrNull(currentAuthMethod)) {\n        return false;\n    }\n    // Clear both managers: on web the RN manager is a no-op (not configured),\n    // and on RN the web manager is a no-op (no localStorage).\n    //\n    // AWAITED. Session removal is serialized through a cross-tab lock now, so a\n    // fire-and-forget call would let init() reach setCurrentUser while the old\n    // credential was still readable — and a request issued in that gap would\n    // authenticate as the session we are in the middle of discarding.\n    await WebSessionManager.clearSession();\n    try {\n        await ReactNativeSessionManager.clearSession();\n    }\n    catch ( /* not configured on web */_a) { /* not configured on web */ }\n    setStoredAuthMethod(null);\n    return true;\n}\nfunction requireWebPrivyConfig(config) {\n    if (!config.privyConfig || typeof config.privyConfig.appId !== 'string' || config.privyConfig.appId.trim() === '') {\n        throw new Error('Privy auth requires config.privyConfig.appId; no default Privy app is used.');\n    }\n    if (!config.privyConfig.config || typeof config.privyConfig.config !== 'object') {\n        throw new Error('Privy auth requires config.privyConfig.config for the app-scoped Privy provider.');\n    }\n    return config.privyConfig;\n}\n/**\n * The ONE authoritative Solana network for the wallet lane.\n *\n * The wallet-lane override wins over the app-wide chain because that is what\n * actually signs: InjectedWalletProvider resolves `walletLogin.network` /\n * `injectedWalletConfig.network` ahead of the top-level chain for both RPC and\n * the Wallet-Standard chain id. Registration, wallet discovery and the provider\n * must all read this same value - the mobile wallet authorizes per cluster, so\n * two answers means authorizing on one and being asked to sign on the other.\n */\nexport function getConfiguredSolanaNetwork(config) {\n    const chain = typeof config.chain === 'string' ? config.chain.trim() : '';\n    const fromChain = chain === '' || chain === 'offchain' ? null : chain;\n    const raw = resolveInjectedWalletConfig(config).network;\n    const override = typeof raw === 'string' && raw.trim() !== '' ? raw.trim() : null;\n    if (!override)\n        return fromChain;\n    // An override that no Solana surface can resolve must fail HERE, at\n    // configuration time. Letting it through registers the mobile wallet on the\n    // mainnet default while every later transaction rejects the same value.\n    if (!isSupportedSolanaRpcNetwork(override)) {\n        throw new Error(`Bounded: wallet login network \"${override}\" is not supported. ` +\n            `Expected one of: solana_devnet, solana_mainnet.`);\n    }\n    // And it may NAME the app's chain, never contradict it: the wallet would\n    // authorize one cluster while the server-side write lane still uses\n    // config.chain for its transaction, RPC and reconciliation.\n    if (fromChain && fromChain !== override) {\n        throw new Error(`Bounded: wallet login network \"${override}\" contradicts chain \"${fromChain}\". ` +\n            `Both drive Solana signing, so they must match - drop the wallet-login network, ` +\n            `or set the chain you actually mean.`);\n    }\n    return override;\n}\n// Error thrown when an app tries wallet login WITHOUT opting in at init().\n// Wallet login is OFF by default — most apps never support wallets, so the\n// wallet choice is only usable when the developer explicitly asked for it.\nfunction walletLoginNotEnabledError(method) {\n    return new Error(`Bounded: Solana wallet login (authMethod:\"${method}\") is OFF by default and not enabled for this app. ` +\n        `Wallet login is opt-in — pass \\`walletLogin: true\\` (or a \\`walletLogin\\` / \\`injectedWalletConfig\\` object) ` +\n        `to init() to enable the \"connect wallet\" choice. Most apps don't need it; use hosted login ` +\n        `loginWithRedirect(...) for email/social, or signInAnonymously() for zero-friction guests.`);\n}\n/**\n * Whether the app opted into Solana WALLET LOGIN at init(). OPT-IN, default OFF:\n * enabled only when the developer explicitly passes `walletLogin: true` (or a\n * `walletLogin` / `injectedWalletConfig` object). This gate is what keeps wallet\n * login from being usable (or advertised) by the vast majority of apps that\n * never want it — existing apps that don't opt in see ZERO behavior change.\n */\nexport function isWalletLoginEnabled(config) {\n    const wl = config.walletLogin;\n    if (wl === true)\n        return true;\n    if (wl && typeof wl === 'object')\n        return true;\n    if (config.injectedWalletConfig && typeof config.injectedWalletConfig === 'object')\n        return true;\n    return false;\n}\n/**\n * Whether the app explicitly turned the \"connect wallet\" lane OFF at init()\n * (`walletLogin: false`). This is the hard opt-OUT the unified widget honors: it\n * hides the wallet option entirely even when an injected wallet is detected and\n * even if a per-call `openBoundedWidget({ wallet: true })` asked for it.\n */\nexport function isWalletLoginDisabled(config) {\n    return config.walletLogin === false;\n}\n/**\n * Site policy: the app requires an email on file for every user (`requireEmail:\n * true`). Native wallet login carries no email, so the unified widget suppresses\n * the wallet lane when this is set - email/social (which yields an email) remain.\n * This lets a policy deny wallet-only accounts without touching per-call options.\n */\nexport function isEmailRequired(config) {\n    return config.requireEmail === true;\n}\n/** The config passed to the last `init()`, or null before init. Read-only view\n *  for runtime surfaces (e.g. the unified login widget) that need wallet/rpc\n *  settings without re-plumbing them through every call. */\nexport function getInitConfig() {\n    return initConfig;\n}\n/**\n * Which LOGIN mode the app runs (default \"turnkey\"). Turnkey-native email OTP keeps\n * code entry inline in the unified widget (no OIDC popup), and Bounded mints the\n * session from Turnkey's verification. Apps can explicitly select \"bounded\" for the\n * legacy Better Auth email flow. A per-call openBoundedWidget option can override it.\n */\nexport function resolveAuthMode(config) {\n    return config.authMode === 'bounded' ? 'bounded' : 'turnkey';\n}\n/**\n * Resolve the injected-wallet-config the provider should use, merging the\n * `walletLogin` object form (if the app passed one) over `injectedWalletConfig`.\n * `walletLogin: true` (bare boolean) enables login with default provider\n * discovery (Phantom-first) and no RPC override.\n */\nfunction resolveInjectedWalletConfig(config) {\n    const base = (config.injectedWalletConfig && typeof config.injectedWalletConfig === 'object')\n        ? config.injectedWalletConfig\n        : {};\n    const wl = config.walletLogin;\n    if (wl && typeof wl === 'object')\n        return Object.assign(Object.assign({}, base), wl);\n    return base;\n}\nfunction optionalProviderError(method) {\n    return new Error(`Bounded authMethod \"${method}\" uses an optional wallet/provider SDK that is no longer ` +\n        `pulled into the default @bounded-sh/client entry. Use hosted login ` +\n        `loginWithRedirect(...) for Bounded Auth, signInAnonymously() for guests, ` +\n        `or install/import an explicit wallet-provider entry once your app opts into \"${method}\".`);\n}\nexport { SOLANA_DEVNET_RPC_URL, SOLANA_MAINNET_RPC_URL, } from \"./solana-rpc\";\nexport async function getAuthProvider(config) {\n    var _a;\n    const nextProviderConfigKey = config ? authProviderConfigKey(config) : null;\n    if (currentAuthProvider && (!config || currentAuthProviderConfigKey === nextProviderConfigKey)) {\n        return currentAuthProvider;\n    }\n    if (!config) {\n        throw new Error(\"Config is required to initialize auth provider\");\n    }\n    if (currentAuthProvider && currentAuthProviderConfigKey !== nextProviderConfigKey) {\n        currentAuthProvider = null;\n        currentAuthMethod = null;\n        currentAuthProviderConfigKey = null;\n    }\n    initConfig = config;\n    // Keep what the app actually wrote for error text; everything else runs on\n    // the canonical method so exactly one string reaches storage and the issuer.\n    const requestedAuthMethod = authMethodForInit(config);\n    const authMethod = canonicalWalletAuthMethod(requestedAuthMethod);\n    const rpcUrl = normalizeSolanaRpcUrl(config.rpcUrl);\n    const configuredNetwork = getConfiguredSolanaNetwork(config);\n    currentAuthMethod = authMethod;\n    // Clear, actionable error when the BROWSER build (`bounded-sh`) is loaded in a\n    // non-browser (Node) runtime. The wallet providers below need `window`; without\n    // it they throw a cryptic \"PhantomWalletProvider can only be instantiated in a\n    // browser environment\" deep in init(). The server build (`bounded-sh/server`)\n    // never resolves these methods (it signs with a keypair), so this can't fire for\n    // it — it only converts the cryptic browser-in-Node crash into a useful message.\n    // Canonical methods only - the wallet-lane spellings already normalized above.\n    const browserWalletMethods = ['phantom', 'evm-wallet', 'rainbowkit', 'coinbase-smart-wallet', 'onboard', 'privy'];\n    if (typeof window === 'undefined' && browserWalletMethods.includes(authMethod)) {\n        throw new Error(`bounded-sh: '${authMethod}' auth requires a browser, but no \\`window\\` was found ` +\n            `(you're likely running in Node). In server/Node code, import from 'bounded-sh/server' ` +\n            `instead of 'bounded-sh' — it signs with an explicit keypair passed to createWalletClient({ keypair }) ` +\n            `and needs no browser.`);\n    }\n    switch (authMethod) {\n        case \"email\":\n            // Hosted Bounded Auth sessions restore through the same session\n            // manager as legacy email sessions. Human login should be started\n            // with loginWithRedirect(); this provider is kept as the restore and\n            // logout surface for those sessions.\n            currentAuthProvider = new (await import(\"./providers/email-auth-provider\")).EmailAuthProvider();\n            break;\n        case \"phantom\": {\n            // First-class Solana WALLET LOGIN (the poof/TaroBase-style \"connect\n            // wallet\" choice), and the canonical method every wallet-lane\n            // spelling normalizes to. Slim path: rides the injected Solana\n            // provider a browser wallet exposes (Phantom's\n            // window.phantom.solana, or any Wallet-Standard window.solana). The\n            // user's REAL wallet becomes @user.address; login = SIWS; full local\n            // signing surface. No React and no heavy wallet-SDK peer dep.\n            // Solana Mobile's wallet needs no method of its own: it is\n            // registered below as a regular Wallet Standard wallet and then\n            // found by the same discovery as every other wallet.\n            //\n            // OPT-IN, DEFAULT OFF: only selectable by CONFIGURATION when the app\n            // explicitly enabled it at init() (walletLogin: true). Otherwise\n            // throw a clear, actionable error — most apps never support wallets,\n            // so we never construct the provider (or pay its lazy chunk) for\n            // them. A RESTORE of a stored wallet session (authMethodForInit) is\n            // not configuration: the widget's wallet lane can be enabled\n            // per-call or by wallet detection without the init() opt-in, and the\n            // session it minted must survive the next reload.\n            if (config.authMethod != null && !isWalletLoginEnabled(config)) {\n                throw walletLoginNotEnabledError(requestedAuthMethod);\n            }\n            // Surface the Solana Mobile wallet (Saga/Seeker) on capable devices\n            // BEFORE the provider exists, so a session restore followed by a\n            // signing call can resolve it from the registry. No-op off-Android.\n            // A failure is NOT fatal to init - an app whose users have injected\n            // wallets must still start - and is not cached, so the next attempt\n            // (login(), a widget open) retries instead of living with a page\n            // that permanently has no phone wallet.\n            // Registered on a marker RESTORE too, not just an opt-in: a session\n            // the widget's wallet lane minted (per-call `wallet: true`, no init\n            // opt-in) can belong to the phone wallet, and leaving it\n            // unregistered restores a session that then cannot sign - the\n            // registry is the only place an MWA wallet is ever found\n            // (injected-wallet-provider.resolveProvider). This cannot turn the\n            // widget's lane on: `detected` filters Solana Mobile out by name\n            // (bounded-login-widget.ts), so registration never counts as\n            // evidence the user has a wallet.\n            await ensureSolanaMobileWalletRegistered(config, configuredNetwork);\n            const { InjectedWalletProvider } = await import(\"./providers/injected-wallet-provider\");\n            currentAuthProvider = new InjectedWalletProvider(resolveInjectedWalletConfig(config), rpcUrl, configuredNetwork);\n            break;\n        }\n        case \"evm-wallet\": {\n            // First-class EVM WALLET LOGIN (BYO Ethereum wallet via SIWE). Slim\n            // path: rides the EIP-1193 injected provider a browser wallet exposes\n            // (MetaMask / Rabby / Coinbase Wallet / any window.ethereum), discovered\n            // via EIP-6963. The user's REAL EVM wallet becomes @user.evmAddress;\n            // login = SIWE (EIP-4361 personal_sign). No viem/ethers and no React.\n            // Selecting authMethod:'evm-wallet' IS the opt-in — pass evmWalletConfig\n            // to point at a specific wallet or set chainId/domain.\n            const evmWalletConfig = ((_a = config.evmWalletConfig) !== null && _a !== void 0 ? _a : {});\n            const { InjectedEvmWalletProvider } = await import(\"./providers/injected-evm-wallet-provider\");\n            currentAuthProvider = new InjectedEvmWalletProvider(evmWalletConfig);\n            break;\n        }\n        case \"rainbowkit\":\n            console.warn(\"Rainbow Kit auth is not yet supported.\");\n            break;\n        case \"privy\": {\n            throw optionalProviderError(\"privy\");\n        }\n        case \"privy-expo\":\n            // React Native Privy: @privy-io/expo is hook-based, so the host app must\n            // create a PrivyExpoProvider, bridge the Privy hooks via setPrivyMethods()\n            // from inside its <PrivyProvider> tree, and pass it as config.privyExpoProvider.\n            if (!config.privyExpoProvider) {\n                throw new Error('authMethod \"privy-expo\" requires a PrivyExpoProvider instance passed as config.privyExpoProvider. ' +\n                    'Create the provider, call setPrivyMethods() from your React Native component tree, then pass it to init().');\n            }\n            currentAuthProvider = config.privyExpoProvider;\n            break;\n        case \"onboard\":\n            console.warn(\"Onboard auth is not yet supported.\");\n            break;\n        case \"guest\":\n            // Anonymous auth: a device-local ed25519 keypair signs the challenge.\n            currentAuthProvider = new (await import(\"./providers/guest-auth-provider\")).GuestAuthProvider();\n            break;\n        default:\n            break;\n    }\n    if (!currentAuthProvider) {\n        throw new Error(\"No auth provider was selected. Does your app have a supported auth method or chain configured?\");\n    }\n    // Wrap with OffchainAuthProvider for offchain/poofnet chain\n    if (config.chain === \"offchain\") {\n        console.log(\"[Offchain] Wrapping auth provider for Poofnet transaction tracking\");\n        currentAuthProvider = new OffchainAuthProvider(currentAuthProvider);\n    }\n    currentAuthProviderConfigKey = nextProviderConfigKey;\n    return currentAuthProvider;\n}\n/**\n * Browser/React-Native-only auth flows (guest, email) persist their session via\n * WebSessionManager, which is gated to environments that have `window` /\n * `localStorage`. In Node those stores no-op, so the session is minted on the\n * server but never saved locally — the caller looks logged in yet every request\n * 403s. Fail fast with actionable guidance instead of that silent footgun.\n */\nfunction assertBrowserAuthEnv(method) {\n    if (typeof window === 'undefined') {\n        throw new Error(`bounded-sh: '${method}' is a browser/React-Native auth flow — it needs \\`window\\`/\\`localStorage\\` ` +\n            `to persist the session, which Node doesn't have (the session would be silently dropped, then every ` +\n            `request 403s). In Node/server code import from 'bounded-sh/server' and sign with a keypair ` +\n            `by using createWalletClient({ keypair }).`);\n    }\n}\n/**\n * Anonymous (\"guest\") sign-in: zero-friction auth backed by a device-local\n * ed25519 keypair (no email, no wallet, no popup). The keypair is generated +\n * persisted on the device; its public key becomes `@user.address`. Durable\n * across reloads. Upgrade later by linking an email; transfer accounts via the\n * ownership-as-data pattern. `init()` must have run first. Browser/RN only.\n */\nexport async function signInAnonymously() {\n    var _a;\n    assertBrowserAuthEnv('signInAnonymously');\n    // Resolve configuration before taking the transaction snapshot. Although\n    // getConfig is normally already resolved after init(), it is asynchronous;\n    // another login that finishes during that await must be part of the prior\n    // state we preserve, not accidentally split across old/new snapshots.\n    const coreConfig = await getConfig();\n    const previousAuthProvider = currentAuthProvider;\n    const previousAuthMethod = currentAuthMethod;\n    const previousProviderConfigKey = currentAuthProviderConfigKey;\n    const previousStoredAuthMethod = getStoredAuthMethod();\n    const previousGlobalProvider = getAuthProviderInstance();\n    const previousUser = getCurrentUser();\n    const previousCoreProvider = coreConfig.authProvider;\n    const previousCoreAuthMethod = coreConfig.authMethod;\n    const previousIdToken = getStoredIdToken();\n    // Lazy-load the guest provider so its ed25519/web3 dependencies stay out of\n    // the main bundle for data-only apps. Specifier is a static string literal\n    // so bundle-splitting can see it.\n    const provider = new (await import(\"./providers/guest-auth-provider\")).GuestAuthProvider();\n    setAuthLoading(true); // reflect \"signing in…\" while the guest keypair session is minted\n    // adoptSessionProvider awaits only getConfig() (already resolved here) and then\n    // runs every write - provider/method/config/marker/user - in one synchronous\n    // block, so listeners and concurrent imperative calls can never observe a\n    // mixed identity.\n    const commit = (user) => adoptSessionProvider({ provider, method: 'guest', configKey: 'direct:guest', user });\n    try {\n        // Mint/store first while every shared provider surface remains on the\n        // previous identity. The provider also withholds setCurrentUser here.\n        const user = await provider.loginForProviderSwitch();\n        if (!user)\n            return null;\n        // A human login may have completed after the guest request persisted but\n        // before its promise resumed here. Re-check the live bearer immediately\n        // before commit so a late guest result cannot overwrite that newer user.\n        if (!user.address || !idTokenIsGuest(getStoredIdToken(), user.address)) {\n            throw new Error('Anonymous sign-in was superseded by another session.');\n        }\n        await commit(user);\n        return user;\n    }\n    catch (error) {\n        const currentIdToken = getStoredIdToken();\n        if (currentIdToken !== previousIdToken && idTokenIsGuest(currentIdToken)) {\n            // Defensive applied-yet-error reconciliation: if storage contains a\n            // valid guest bearer/key despite the thrown write, commit that truth\n            // instead of restoring a human UI over a guest token.\n            let recovered = null;\n            try {\n                recovered = await provider.restoreSessionForProviderSwitch();\n            }\n            catch (_b) {\n                try {\n                    await getActiveSessionManager().clearSession();\n                }\n                catch ( /* fail closed below */_c) { /* fail closed below */ }\n            }\n            if (recovered) {\n                await commit(recovered);\n                return recovered;\n            }\n            // restoreSessionForProviderSwitch fails closed and clears a split\n            // bearer. Do not resurrect a user object that no longer has its token.\n            setCurrentUser(null);\n        }\n        else if (currentIdToken === previousIdToken) {\n            // The staged attempt never changed the bearer; every shared provider\n            // surface stayed untouched, so restore the exact prior user/marker.\n            currentAuthProvider = previousAuthProvider;\n            currentAuthMethod = previousAuthMethod;\n            currentAuthProviderConfigKey = previousProviderConfigKey;\n            coreConfig.authProvider = previousCoreProvider;\n            coreConfig.authMethod = previousCoreAuthMethod;\n            setAuthProviderInstance(previousGlobalProvider);\n            setStoredAuthMethod(previousStoredAuthMethod);\n            if (getCurrentUser() !== previousUser)\n                setCurrentUser(previousUser);\n        }\n        else {\n            // A different non-guest token won while this staged guest mint was in\n            // flight (another tab/popup/login). The guest attempt never mutated\n            // shared provider state, so preserve that winner exactly. Align only\n            // this module's private registry to the provider the winner installed;\n            // never overwrite its core/global provider, marker, or user snapshot.\n            const concurrentProvider = (_a = getAuthProviderInstance()) !== null && _a !== void 0 ? _a : coreConfig.authProvider;\n            if (concurrentProvider)\n                currentAuthProvider = concurrentProvider;\n            const concurrentStoredMethod = getStoredAuthMethod();\n            currentAuthMethod = concurrentStoredMethod && concurrentStoredMethod !== 'guest'\n                ? concurrentStoredMethod\n                : (previousAuthMethod && previousAuthMethod !== 'guest' ? previousAuthMethod : 'email');\n            currentAuthProviderConfigKey = previousProviderConfigKey;\n        }\n        throw error;\n    }\n    finally {\n        setAuthLoading(false);\n    }\n}\n/**\n * Log in with Privy as a co-equal route — selectable at runtime alongside\n * `login()` (email/wallet) and `signInAnonymously()`, without re-`init()`.\n *\n * On REACT NATIVE the host must have created a PrivyExpoProvider and bridged the\n * Privy hooks via setPrivyMethods() (pass it as `config.privyExpoProvider` to\n * init()) — RN can't construct it here because the Privy hooks live in the app's\n * component tree. Web Privy is no longer loaded through the default client entry;\n * opt into a dedicated provider entry when your app needs it.\n *\n * Either way the Privy Solana wallet signs the SIWS challenge, so the session is\n * minted via the same wallet path as Phantom and shares the unified session store\n * (web localStorage / RN storage) and identity model. `init()` must have run first.\n */\nexport async function loginWithPrivy(options) {\n    assertBrowserAuthEnv('loginWithPrivy');\n    const coreConfig = await getConfig();\n    let provider;\n    if (getPlatform().hasDOM) {\n        throw optionalProviderError(\"privy\");\n    }\n    if (!coreConfig.privyExpoProvider) {\n        throw new Error('loginWithPrivy() on React Native requires a PrivyExpoProvider bridged from your app: ' +\n            'create it, call setPrivyMethods() inside <PrivyProvider>, and pass it as config.privyExpoProvider to init().');\n    }\n    provider = coreConfig.privyExpoProvider;\n    const authMethod = 'privy-expo';\n    if (coreConfig.chain === 'offchain') {\n        provider = new OffchainAuthProvider(provider);\n    }\n    // Snapshot every provider-registry surface BEFORE touching any of them, then\n    // commit only on a real user - mirroring signInAnonymously(). A cancelled or\n    // failed Privy login (provider.login() returns null or throws) must never\n    // leave signing/logout/restore routed to Privy while the live bearer session\n    // still belongs to the previous provider. Staging nothing up front means the\n    // restore is a defensive no-op today and stays correct if login() ever\n    // mutates shared state.\n    const previousAuthProvider = currentAuthProvider;\n    const previousAuthMethod = currentAuthMethod;\n    const previousProviderConfigKey = currentAuthProviderConfigKey;\n    const previousStoredAuthMethod = getStoredAuthMethod();\n    const previousGlobalProvider = getAuthProviderInstance();\n    const previousCoreProvider = coreConfig.authProvider;\n    const previousCoreAuthMethod = coreConfig.authMethod;\n    const restorePreviousProvider = () => {\n        currentAuthProvider = previousAuthProvider;\n        currentAuthMethod = previousAuthMethod;\n        currentAuthProviderConfigKey = previousProviderConfigKey;\n        coreConfig.authProvider = previousCoreProvider;\n        coreConfig.authMethod = previousCoreAuthMethod;\n        setAuthProviderInstance(previousGlobalProvider);\n        setStoredAuthMethod(previousStoredAuthMethod);\n    };\n    if (typeof provider.setLoginOverrides === 'function') {\n        provider.setLoginOverrides(options !== null && options !== void 0 ? options : null);\n    }\n    let result;\n    try {\n        result = await provider.login();\n    }\n    catch (error) {\n        restorePreviousProvider();\n        throw error;\n    }\n    if (!result) {\n        restorePreviousProvider();\n        return null;\n    }\n    // Commit the Privy provider only now that login() returned a real user, so\n    // no observer can see a mixed provider/method/config/global/marker state.\n    await adoptSessionProvider({\n        provider,\n        method: authMethod,\n        configKey: authProviderConfigKey(Object.assign(Object.assign({}, coreConfig), { authMethod: authMethod })),\n    });\n    return Object.assign(Object.assign({}, result), { provider });\n}\n// The SHARED half of readiness: resolved config and the wallet-provider chunk.\n// Cached on success and forever - a loaded chunk does not unload - and dropped\n// on failure so it can be retried. Deliberately NOT keyed by config: neither\n// piece depends on which Solana network the app chose.\nlet sharedWalletReady = null;\n/**\n * Prepare the work EVERY wallet login needs, whichever wallet is used: resolved\n * configuration and the code-split wallet provider. Enough on its own when the\n * caller already knows which wallet it wants.\n *\n * Rejects if that work fails, which means there is no wallet login at all.\n */\nexport function ensureSharedWalletLoginReady() {\n    if (!sharedWalletReady) {\n        sharedWalletReady = (async () => {\n            await getConfig();\n            await import(\"./providers/injected-wallet-provider\");\n        })().catch((error) => {\n            sharedWalletReady = null;\n            throw error;\n        });\n    }\n    return sharedWalletReady;\n}\n/**\n * Prepare everything a wallet login needs, and resolve only when it is ready.\n *\n * `loginWithWallet` resolves config, code-splits the provider and registers the\n * mobile wallet. On a cold page that work would otherwise land between the\n * user's tap and the wallet handoff - the pre-connect delay that costs Chrome's\n * transient activation and makes the mobile wallet's intent navigation fail. So\n * call this when your wallet control becomes visible and AWAIT it before\n * enabling that control.\n *\n * Must be called after `init()`: the mobile wallet is registered for the app's\n * configured Solana network, and that registration cannot be withdrawn.\n *\n * REJECTS only when the SHARED work fails - there is then no wallet login at\n * all. A mobile-wallet failure instead resolves with `mobileWallet: 'failed'`,\n * because every injected wallet still works and a caller that offers those\n * should carry on without the phone wallet. The mobile half keeps its own\n * per-configuration memo, so a failure there stays retryable and a re-init for\n * another network is never served the previous registration.\n */\nexport async function ensureWalletLoginReady() {\n    const cfg = initConfig;\n    if (!cfg) {\n        throw new Error('Bounded: the wallet lane must be prepared after init() - the mobile wallet is ' +\n            'registered for the app\\'s configured Solana network, and that registration ' +\n            'cannot be changed afterwards.');\n    }\n    await ensureSharedWalletLoginReady();\n    const mobileWallet = await ensureSolanaMobileWalletRegistered(cfg, getConfiguredSolanaNetwork(cfg));\n    return { mobileWallet };\n}\n/** @deprecated Use {@link ensureWalletLoginReady}, which reports what is ready. */\nexport function preloadWalletLogin() {\n    return ensureWalletLoginReady();\n}\n/**\n * Log in with an injected Solana WALLET (Phantom / Solflare / Backpack / any\n * Wallet-Standard `window.solana`) as a co-equal RUNTIME route - selectable\n * alongside `login()` / hosted `loginWithPopup()` / `signInAnonymously()` WITHOUT\n * re-`init()`. This is the \"Continue with wallet\" choice the unified Bounded\n * login widget offers: it NEVER touches Better Auth - the user's real wallet\n * becomes `@user.address` and login is a SIWS signature.\n *\n * `getProvider` pins a specific discovered wallet (e.g. when the widget lists\n * several); omit it to use Phantom-first discovery. Must be called from a user\n * gesture so the wallet's connect prompt is allowed. `init()` must have run first.\n */\nexport async function loginWithWallet(options) {\n    var _a, _b;\n    assertBrowserAuthEnv('loginWithWallet');\n    const coreConfig = await getConfig();\n    const cfg = initConfig !== null && initConfig !== void 0 ? initConfig : {};\n    const base = resolveInjectedWalletConfig(cfg);\n    const confirmSignIn = options === null || options === void 0 ? void 0 : options.confirmSignIn;\n    const injectedConfig = Object.assign(Object.assign(Object.assign({}, base), ((options === null || options === void 0 ? void 0 : options.getProvider) ? { getProvider: options.getProvider } : {})), (confirmSignIn\n        ? {\n            confirmWalletAction: (action) => {\n                var _a, _b;\n                return (action === 'login'\n                    ? confirmSignIn()\n                    : (_b = (_a = base.confirmWalletAction) === null || _a === void 0 ? void 0 : _a.call(base, action)) !== null && _b !== void 0 ? _b : Promise.resolve());\n            },\n        }\n        : {}));\n    const rpcUrl = normalizeSolanaRpcUrl(cfg.rpcUrl);\n    const network = getConfiguredSolanaNetwork(cfg);\n    // Resolve the configured getter ONCE and log in with exactly what it\n    // returned. It is app code with no idempotence contract, so asking it twice\n    // - once to decide what to prepare, once to actually connect - lets the two\n    // answers disagree: a getter that yields a wallet and then nothing prepares\n    // for a pinned wallet and then logs in with whatever discovery finds, and\n    // one that yields nothing and then a wallet prepares the mobile registry\n    // after the tap for a wallet it never uses.\n    const pinnedProvider = (_b = (_a = injectedConfig.getProvider) === null || _a === void 0 ? void 0 : _a.call(injectedConfig)) !== null && _b !== void 0 ? _b : null;\n    const attemptConfig = Object.assign(Object.assign({}, injectedConfig), { \n        // Still a fallthrough when it resolved nothing, exactly as before - the\n        // difference is that the answer is now fixed for this attempt.\n        getProvider: () => pinnedProvider });\n    // Idempotent: a caller that prepared the lane (the widget, or an app that\n    // awaited ensureWalletLoginReady before enabling its button) has already\n    // paid for this, so nothing activation-sensitive happens after the tap. A\n    // caller that did not gets it here - late, but correct. A SHARED failure is\n    // fatal and propagates; there is no wallet login without it.\n    //\n    // \"Pinned\" is about the EFFECTIVE resolution, not whether a getter was\n    // passed: a configured walletLogin.getProvider pins just as much as a\n    // per-call one, and a getter that returns nothing falls through to discovery\n    // (and so to the mobile wallet). With a real wallet in hand only the shared\n    // half is needed - re-attempting a failed mobile registration would be\n    // exactly the work-after-the-tap this exists to avoid, for a wallet this\n    // login is not even using.\n    if (pinnedProvider)\n        await ensureSharedWalletLoginReady();\n    else\n        await ensureWalletLoginReady();\n    const { InjectedWalletProvider } = await import(\"./providers/injected-wallet-provider\");\n    // Keep the RAW wallet provider: the offchain wrapper forwards only a fixed\n    // set of methods, so cleanup below must speak to the provider that actually\n    // holds the config rather than to whatever is wrapping it.\n    const walletProvider = new InjectedWalletProvider(attemptConfig, rpcUrl, network);\n    let provider = walletProvider;\n    if (coreConfig.chain === 'offchain')\n        provider = new OffchainAuthProvider(provider);\n    // The provider stores the session + user + auth-method marker itself on success.\n    let user;\n    try {\n        user = await provider.login();\n    }\n    finally {\n        // The per-call gesture is a ONE-SHOT closure over this caller's UI (the\n        // widget's view, a button). This provider outlives the attempt once it\n        // is committed as the active one, so leaving the hook installed would\n        // make a LATER login wait on a dismissed modal or a detached button that\n        // can never resolve. Drop it on every exit and fall back to whatever\n        // init() configured.\n        if (confirmSignIn) {\n            walletProvider.setWalletConfig(Object.assign(Object.assign({}, attemptConfig), { confirmWalletAction: base.confirmWalletAction }));\n        }\n    }\n    if (!user)\n        return null;\n    await adoptSessionProvider({\n        provider,\n        method: 'phantom',\n        configKey: authProviderConfigKey(Object.assign(Object.assign({}, cfg), { authMethod: 'phantom' })),\n    });\n    return Object.assign(Object.assign({}, user), { provider });\n}\nexport async function login(options) {\n    // Re-initialize provider if it was cleared by logout\n    if (!currentAuthProvider && initConfig) {\n        currentAuthProvider = await getAuthProvider(initConfig);\n        await adoptRebuiltProvider(currentAuthProvider, currentAuthMethod);\n    }\n    if (!currentAuthProvider) {\n        throw new Error(\"Auth provider not initialized. Please call init() first.\");\n    }\n    // login() runs inside the app's click handler, so only ALREADY-PREPARED work\n    // is safe here: retrying the mobile registration would spend the activation\n    // the wallet handoff needs. The shared half is a no-op once prepared, and\n    // the honest failure for an unprepared page is the provider's own \"no wallet\n    // found\", which names ensureWalletLoginReady().\n    if (currentAuthMethod === 'phantom')\n        await ensureSharedWalletLoginReady();\n    // Forward per-call overrides to providers that support them (duck-typed to stay\n    // lazy-load safe — no direct import of PhantomWalletProvider here).\n    // Always call (even with null) so previous overrides are cleared when this\n    // login() is invoked without options — early-return paths inside the provider\n    // bypass the .finally() cleanup, so we reset here too.\n    if (typeof currentAuthProvider.setLoginOverrides === 'function') {\n        currentAuthProvider.setLoginOverrides(options !== null && options !== void 0 ? options : null);\n    }\n    const loginResult = await currentAuthProvider.login();\n    if (loginResult) {\n        // Store which auth method was used so we restore the right provider on reload\n        setStoredAuthMethod(currentAuthMethod);\n        // If this top-level tab was opened solely to perform the wallet connect for\n        // an embedded preview (?poofConnect — see openTopLevelForConnect in the\n        // phantom provider), close it now that the session is established. The\n        // session reflects back into the preview's iframe via same-origin storage.\n        try {\n            if (typeof window !== 'undefined'\n                && window.top === window.self\n                && new URLSearchParams(window.location.search).get('poofConnect') === '1') {\n                setTimeout(() => { try {\n                    window.close();\n                }\n                catch ( /* noop */_a) { /* noop */ } }, 400);\n            }\n        }\n        catch ( /* noop */_a) { /* noop */ }\n        return Object.assign(Object.assign({}, loginResult), { provider: currentAuthProvider });\n    }\n    return null;\n}\nexport function getCurrentAuthMethod() {\n    return currentAuthMethod;\n}\n// The hosted issuer keeps its OWN browser session (the Better Auth cookie on\n// auth.bounded.sh) — clearing the app-local session alone leaves it alive, so\n// the next loginWithRedirect() silently re-signs the user in as the SAME\n// account: \"sign out\" that never lets you re-choose. The issuer ships\n// GET /logout for exactly this — it expires the session cookies and bounces\n// back. #228 replaced the issuer's old hostname allowlist with a live-session\n// identity match + originAllowedForApp (which a mapped custom domain satisfies),\n// so the client no longer mirrors a host list: end the issuer session with a\n// top-level bounce on ANY https (or loopback) context and let the issuer decide\n// the return. A hostile origin still gets the user signed out and its return\n// refused there. Only genuinely un-bounceable contexts (no window, framed, or a\n// non-loopback http origin the issuer would reject anyway) stay local-only.\nfunction issuerLogoutBounceUrl(issuerBase, idTokenHint) {\n    if (typeof window === 'undefined' || typeof document === 'undefined')\n        return null; // RN/Node: no shared cookie jar to clear this way\n    try {\n        if (window.top !== window.self)\n            return null; // framed: SameSite=Lax cookies don't ride iframe navigations\n    }\n    catch (_a) {\n        return null;\n    }\n    try {\n        const here = new URL(window.location.href);\n        const host = here.hostname;\n        const isLocalhost = host === 'localhost' || host === '127.0.0.1' || host.endsWith('.localhost');\n        // HIGH-003: no hostname allowlist - it was a stale mirror of a server rule #228\n        // deleted (the suffix match was itself a vuln). Bounce on any top-level https (or\n        // loopback) origin, including mapped custom domains; the issuer's originAllowedForApp\n        // binding decides the return authoritatively on the next hop. Off-https non-loopback\n        // origins the issuer rejects anyway, so they stay local-only.\n        const trusted = here.protocol === 'https:' || isLocalhost;\n        if (!trusted)\n            return null;\n        const base = issuerBase.replace(/\\/$/, '');\n        // #228: send the id_token_hint so the issuer can bind the post-logout redirect to this\n        // session + app + registered origin. Without it the issuer safely falls back to its own\n        // origin (it no longer trusts a bare suffix match), so the return-to-app bounce is a no-op.\n        const hint = idTokenHint ? `&id_token_hint=${encodeURIComponent(idTokenHint)}` : '';\n        return `${base}/logout?redirect_uri=${encodeURIComponent(here.href)}${hint}`;\n    }\n    catch (_b) {\n        return null;\n    }\n}\n// #228 helper, deliberately OUTSIDE logout(): the logout body is source-guarded\n// against any `catch` so a revokeSession failure can never be swallowed, and a\n// missing id token is the one benign absence worth tolerating here.\nfunction idTokenHintOrNull(sm) {\n    try {\n        return sm.getIdToken();\n    }\n    catch (_a) {\n        return null; /* no id token to hint with */\n    }\n}\n// Also OUTSIDE logout() for the same source-guard reason: destroying the device's 24h\n// wallet signing session is best-effort BY CONTRACT (it needs a hidden signer iframe,\n// which can be blocked or offline), so its failures are the one thing logout may\n// tolerate - never revokeSession's. Lazy import per this module's rule (the signer\n// bridge is browser-only machinery). Never rejects.\nasync function sweepTurnkeySigningSession() {\n    try {\n        await (await import(\"./turnkey-signer-bridge\")).clearTurnkeySigningSession();\n    }\n    catch ( /* best-effort: never block or fail logout on the sweep */_a) { /* best-effort: never block or fail logout on the sweep */ }\n}\nexport async function logout(options) {\n    // Re-initialize the provider if it was cleared by a prior logout — the exact mirror\n    // of login()'s self-heal above. Every session-establishment path now adopts through\n    // session-provider.ts, so this is a REPAIR (the registry was cleared by a previous\n    // logout), not a missed establishment: without it, logging out a session established\n    // after that logout would throw \"not initialized\" at the user. Rebuilding from\n    // initConfig is idempotent and cheap (same config key), and deliberately does not\n    // touch the stored marker - see adoptRebuiltProvider.\n    if (!currentAuthProvider && initConfig) {\n        currentAuthProvider = await getAuthProvider(initConfig);\n        await adoptRebuiltProvider(currentAuthProvider, currentAuthMethod);\n    }\n    if (!currentAuthProvider) {\n        throw new Error(\"Auth provider not initialized. Please call init() first.\");\n    }\n    // Revoke the refresh-token family server-side BEFORE the provider clears the\n    // local session (so we still have the token + issuer to revoke). If revoke\n    // fails, surface the error and leave local state intact so callers do not\n    // mistake a local-only logout for server revocation.\n    const sm = getActiveSessionManager();\n    const refreshToken = sm.getRefreshToken();\n    const sessionIssuer = sm.getIssuer();\n    // #228: capture the id token NOW, before currentAuthProvider.logout() clears the session, so we\n    // can hand it to the issuer /logout as an id_token_hint (which binds the post-logout redirect).\n    const idTokenHint = idTokenHintOrNull(sm);\n    if (refreshToken)\n        await revokeSession(refreshToken, sessionIssuer !== null && sessionIssuer !== void 0 ? sessionIssuer : undefined);\n    // Logout must DESTROY the device's 24h wallet signing session, not leave it to\n    // expire (TURNKEY-EMAIL-SIGNING-PLAN.md). It lives on the signer origin, so the\n    // sweep is a hidden signer-iframe exchange; start it now (after revocation is\n    // committed - a failed logout leaves the still-logged-in user their session) and\n    // let it overlap the provider teardown. sweepTurnkeySigningSession never rejects.\n    const signingSessionSweep = sweepTurnkeySigningSession();\n    // Only OIDC-hosted sessions own an issuer browser cookie. Turnkey-native\n    // email OTP is also an email auth method, but it mints the app session\n    // inline and has no issuer cookie to clear. Use the explicit session-kind\n    // marker when present. The auth-method fallback preserves correct logout\n    // behavior for hosted sessions created by older SDK versions.\n    const issuerSessionKind = getIssuerSessionKind();\n    const wasHosted = issuerSessionKind === 'hosted'\n        || (issuerSessionKind === null\n            && (currentAuthMethod === 'email' || getStoredAuthMethod() === 'email'));\n    await currentAuthProvider.logout();\n    // Clear EVERY session-ownership pointer, including core's signing pointer\n    // (getConfig().authProvider). Leaving the core pointer on the dead provider is\n    // what wedged wallet -> email switches: the next inline email login only set the\n    // singleton, so onchain writes still signed through the logged-out wallet\n    // provider and its DS2-0369 account guard threw on every set().\n    await clearSessionProviderForLogout();\n    // Hold logout open until the signing-session sweep settles (it is bounded by its\n    // own short timeout), so a hosted bounce navigation cannot cancel it mid-flight.\n    await signingSessionSweep;\n    if (wasHosted && !(options === null || options === void 0 ? void 0 : options.keepIssuerSession)) {\n        // wasHosted is read from GLOBAL storage markers, but the bounce destination is\n        // THIS session's OWN issuer. A mixed login history (hosted email login, then a\n        // wallet login) leaves the markers saying \"hosted\" while the live session was\n        // minted by the WALLET issuer - which ships no /logout route, so the reader\n        // lands on a 404 instead of back in the app. Bounce only when the session's\n        // issuer IS the hosted one. A skipped bounce costs nothing: the refresh-token\n        // family is already revoked above, and a wallet session owns no issuer cookie.\n        const hostedIssuer = (await getConfig()).humanAuthApiUrl || 'https://auth.bounded.sh';\n        const trimSlash = (url) => url.replace(/\\/+$/, '');\n        if (sessionIssuer && trimSlash(sessionIssuer) !== trimSlash(hostedIssuer))\n            return;\n        const bounce = issuerLogoutBounceUrl(hostedIssuer, idTokenHint);\n        // Local state is already cleared, so even if the navigation is stopped\n        // (tab close, extension) the app-side logout has fully happened. Hold\n        // resolution until the bounce COMMITS: resolving right after queueing it\n        // let callers who navigate next (`await logout(); location.reload()`)\n        // cancel the pending bounce, leaving the issuer session alive to be\n        // silently SSO-ed back in on the next login.\n        if (bounce)\n            await commitIssuerLogoutBounce(bounce);\n    }\n}\n// OIDC Authorization Code + PKCE login (the secure multi-tenant redirect flow).\nexport { loginWithRedirect, completeLoginFromRedirect, loginWithPopup, completeLoginInPopup } from './oidc-auth';\n","import { reconnectWithNewAuth, getConfig, deriveUserIdentityFromIdToken, getActiveSessionManager, onSessionCleared } from '@bounded-sh/core';\nimport { getAuthProvider, login as authLogin, logout as authLogout, clearIncompatibleSession, getCurrentAuthMethod } from './auth';\nimport { init as configInit } from '@bounded-sh/core';\n/**\n * Subscribed once per process, not per init(): re-registering on every init would\n * stack duplicate handlers on repeated initialization.\n */\nlet sessionClearedBridgeRegistered = false;\nfunction registerSessionClearedBridge() {\n    if (sessionClearedBridgeRegistered)\n        return;\n    sessionClearedBridgeRegistered = true;\n    onSessionCleared(() => {\n        // Core fires this only when storage was ACTUALLY cleared, never on a\n        // transient refresh failure that preserved the session — so this cannot\n        // sign anyone out over a network blip.\n        setCurrentUser(null);\n    });\n}\n/**\n * Read the active session's idToken synchronously from whichever store is live\n * for this runtime (WebSessionManager on web, ReactNativeSessionManager on RN —\n * selected by getActiveSessionManager, the same selector the core request path\n * uses). Returns null when there's no session — the caller leaves the user as-is.\n */\nfunction getCurrentIdToken() {\n    try {\n        return getActiveSessionManager().getIdToken();\n    }\n    catch ( /* no session / store unavailable */_a) { /* no session / store unavailable */ }\n    return null;\n}\n/**\n * Enrich a freshly-produced User with the universal identity fields\n * ({ id, email }) derived from the active session's idToken. ADDITIVE +\n * backwards-compatible: `address` is left exactly as the provider set it, and\n * id/email are only populated when not already present. For wallet logins\n * id === address; for email-only (Bounded) logins address may be null and id\n * is the account identity. Mirrors the realtime-worker auth.ts resolution so\n * the client `user` matches what the backend authenticates as (@user.id / .email).\n */\nfunction withUserIdentity(user) {\n    var _a, _b, _c, _d;\n    if (!user)\n        return user;\n    const { id, email } = deriveUserIdentityFromIdToken(getCurrentIdToken());\n    return Object.assign(Object.assign({}, user), { \n        // Prefer an id the provider already set; otherwise fall back to the\n        // token-derived identity, then to the wallet address (wallet === id).\n        id: (_c = (_b = (_a = user.id) !== null && _a !== void 0 ? _a : id) !== null && _b !== void 0 ? _b : user.address) !== null && _c !== void 0 ? _c : undefined, \n        // Email comes only from email-login tokens; keep any provider-set value.\n        email: user.email !== undefined ? user.email : email, \n        // Guest/anonymous flag (Firebase `isAnonymous` parity): authoritative\n        // source is the active auth method, so it's correct on fresh login AND\n        // after a session restore (the stored method is rehydrated before the\n        // user is set). A provider may also set it explicitly; honor that first.\n        isAnonymous: (_d = user.isAnonymous) !== null && _d !== void 0 ? _d : (getCurrentAuthMethod() === 'guest') });\n}\nlet authProviderInstance = null;\nlet currentUser = null;\nlet authStateListeners = [];\nlet authLoadingListeners = [];\nlet initCompleted = false;\nlet isAuthLoading = false;\n// This file acts as a middleware for the global state of the SDK\n// This mostly involves setting up the AuthProvider and managing the current user\nexport async function init(newConfig) {\n    // Mark auth as loading for the ENTIRE init/restore window so consumers render\n    // a neutral/loading state instead of the signed-out UI while we rehydrate the\n    // session — otherwise getCurrentUser() is null + loading is false during the\n    // async restore, which paints \"logged out\" and then flips to \"logged in\" (an\n    // auth flash). The React useAuth hook seeds loading=true itself, but the\n    // imperative API (onAuthLoadingChanged/getAuthLoading) relies on this flag, so\n    // setting it here makes \"no flash\" the SDK's default behavior for every consumer.\n    setAuthLoading(true);\n    try {\n        // Bridge core's \"the stored session is gone\" signal into SDK auth state.\n        //\n        // Core cannot import this package, and a session can die deep inside a\n        // session manager (dead refresh token, rejected refresh, app-id mismatch).\n        // Before this, setCurrentUser(null) was only ever called by logout() and\n        // init(), so storage could be wiped while `currentUser` stayed populated —\n        // onAuthStateChanged never fired, and every consumer UI went on showing a\n        // connected wallet for a session the server no longer knew about.\n        registerSessionClearedBridge();\n        // Get auth provider first\n        authProviderInstance = await getAuthProvider(newConfig);\n        // Initialize config with auth provider\n        await configInit(Object.assign(Object.assign({}, newConfig), { authProvider: authProviderInstance }));\n        // Now that core is initialized, update the auth method on the config\n        const authMethod = getCurrentAuthMethod();\n        if (authMethod) {\n            const coreConfig = await getConfig();\n            coreConfig.authMethod = authMethod;\n        }\n        // Wait for restoreSession to complete\n        // The appId check is done in SessionManager.getSession which is called by restoreSession\n        // If there's an appId mismatch, the session will be cleared and restoreSession will return null\n        let user = await authProviderInstance.restoreSession();\n        // If a session exists but was created before auth method tracking (legacy session),\n        // clear it to avoid mismatches when the app switches auth methods (e.g. email → phantom)\n        //\n        // AWAITED: the clear is serialized through a cross-tab lock now, and an\n        // unawaited call would return a Promise (always truthy) — nulling the user\n        // unconditionally AND letting setCurrentUser run while the old credential\n        // was still in storage.\n        if (user && await clearIncompatibleSession()) {\n            user = null;\n        }\n        setCurrentUser(user);\n        // Mark init as completed\n        initCompleted = true;\n    }\n    finally {\n        // Resolve loading once the user is known (or restore failed) — listeners\n        // registered mid-init still get the correct final state via the immediate\n        // callback in onAuthLoadingChanged.\n        setAuthLoading(false);\n    }\n}\nexport function onAuthStateChanged(callback) {\n    authStateListeners.push(callback);\n    if (initCompleted || hasRunFirstTime) {\n        // Call the callback immediately with the current user.\n        // We check hasRunFirstTime in addition to initCompleted to handle the race\n        // where the Phantom auto-login effect calls setCurrentUser() before init()\n        // finishes. Without this, listeners registered between auto-login's\n        // setCurrentUser and init()'s initCompleted would never fire (init's\n        // setCurrentUser is a no-op for same-address and initCompleted is still false).\n        callback(currentUser);\n    }\n    return () => {\n        authStateListeners = authStateListeners.filter((listener) => listener !== callback);\n    };\n}\nexport function onAuthLoadingChanged(callback) {\n    authLoadingListeners.push(callback);\n    // Call immediately with current loading state\n    callback(isAuthLoading);\n    return () => {\n        authLoadingListeners = authLoadingListeners.filter((listener) => listener !== callback);\n    };\n}\nexport function setAuthLoading(loading) {\n    if (isAuthLoading !== loading) {\n        isAuthLoading = loading;\n        authLoadingListeners.forEach((callback) => callback(loading));\n    }\n}\nexport function getAuthLoading() {\n    return isAuthLoading;\n}\nexport async function login(options) {\n    if (!authProviderInstance) {\n        throw new Error('SDK not initialized. Please call init() first.');\n    }\n    const loggedInUser = await authLogin(options);\n    setCurrentUser(loggedInUser);\n    return currentUser;\n}\nexport async function logout(options) {\n    if (!authProviderInstance) {\n        throw new Error('SDK not initialized. Please call init() first.');\n    }\n    await authLogout(options);\n    setCurrentUser(null);\n}\nvar hasRunFirstTime = false;\nfunction userPrincipalKey(user) {\n    var _a, _b, _c;\n    if (!user)\n        return null;\n    return (_c = (_b = (_a = user.id) !== null && _a !== void 0 ? _a : user.address) !== null && _b !== void 0 ? _b : user.email) !== null && _c !== void 0 ? _c : null;\n}\n// Update the currentUser and notify listeners\nexport function setCurrentUser(user) {\n    // Enrich with the universal identity fields (id/email) derived from the\n    // active session's idToken — central chokepoint so every provider's user\n    // object gains { id, address, email } without each construction site\n    // having to set them.\n    user = withUserIdentity(user);\n    const lastUser = currentUser;\n    const wasInitializedBefore = hasRunFirstTime;\n    const lastPrincipal = userPrincipalKey(currentUser);\n    const nextPrincipal = userPrincipalKey(user);\n    const shouldRunListeners = !hasRunFirstTime || lastPrincipal !== nextPrincipal;\n    hasRunFirstTime = true;\n    currentUser = user;\n    if (shouldRunListeners) {\n        // Isolate each listener: a consumer callback that throws (during logout in\n        // particular) must not abort the notification loop OR skip the socket reopen\n        // below. Before this, a single throwing listener propagated out of\n        // setCurrentUser, so the realtime socket kept streaming as the signed-out\n        // user and the other listeners were never told the principal changed.\n        authStateListeners.forEach((callback) => {\n            try {\n                callback(user);\n            }\n            catch (error) {\n                console.error('Error in onAuthStateChanged listener:', error);\n            }\n        });\n        // Reconnect WebSocket connections with new auth when user changes.\n        // Skip on the first setCurrentUser call during init() — there are no\n        // existing connections to reconnect at that point.\n        if (wasInitializedBefore && userPrincipalKey(lastUser) !== nextPrincipal) {\n            reconnectWithNewAuth().catch((error) => {\n                console.error('Error reconnecting WebSocket after auth change:', error);\n            });\n        }\n    }\n}\nexport function getCurrentUser() {\n    return currentUser;\n}\n/** @internal Snapshot/restore surface for transactional auth-provider switches. */\nexport function getAuthProviderInstance() {\n    return authProviderInstance;\n}\nexport function setAuthProviderInstance(provider) {\n    authProviderInstance = provider;\n}\n","// bounded-widget-ownership.ts - per-open ownership generation for the singleton\n// login/signing modal (bounded-widget-modal.ts).\n//\n// That modal is a MODULE-LEVEL singleton: one mutable `content` node and one\n// mutable `onBackdrop` callback, reused between opens so a second open is instant.\n// The hazard is concurrency: two overlapping openBoundedWidget() calls in the same\n// tab (rapid clicks, or two components) would otherwise share - and corrupt - one\n// surface. The second open overwrites the first's backdrop handler and remounts the\n// card while the first promise is never settled, so it hangs forever; and a late\n// success from the FIRST open's in-flight popup/OTP would hide or de-wire the\n// SECOND card.\n//\n// The fix is a per-open ownership generation. Each open claims a monotonically\n// increasing token stored on the modal. All of an open's callbacks (backdrop\n// dismiss, success, cancel, and every async .then/.catch that mutates the shared\n// modal) run only while they still hold the CURRENT generation; a superseded open\n// no-ops instead of stomping the newer one. Claiming also proactively rejects the\n// prior owner's promise so an earlier caller is never stranded.\n/**\n * Claim the singleton modal for a fresh open. Any earlier open that never settled\n * is superseded: the generation is bumped first (so the prior open's `owns()`\n * turns false and its late callbacks can no longer touch the modal we now own),\n * then its supersede hook is invoked so its promise rejects.\n *\n * @param onSuperseded rejects THIS open's promise when a later open supersedes it.\n */\nexport function claimModalOpen(m, onSuperseded) {\n    const prevSupersede = m.onSupersede;\n    const token = ++m.generation;\n    let settled = false;\n    const owns = () => token === m.generation;\n    const settleOwned = (action) => {\n        if (settled || !owns())\n            return false;\n        settled = true;\n        m.onBackdrop = null;\n        m.onSupersede = null;\n        action();\n        return true;\n    };\n    // Superseded by a newer open: reject this promise WITHOUT touching the modal\n    // (the newer open now owns its DOM). Never settle twice.\n    m.onSupersede = () => {\n        if (settled)\n            return;\n        settled = true;\n        onSuperseded();\n    };\n    // Now that we hold the newer generation, reject the prior owner (if any).\n    prevSupersede === null || prevSupersede === void 0 ? void 0 : prevSupersede();\n    return { owns, settleOwned };\n}\n","/** Name of the feature. */\nexport const SolanaSignAndSendTransaction = 'solana:signAndSendTransaction';\n//# sourceMappingURL=signAndSendTransaction.js.map","/** Name of the feature. */\nexport const SolanaSignMessage = 'solana:signMessage';\n//# sourceMappingURL=signMessage.js.map","/** Name of the feature. */\nexport const SolanaSignTransaction = 'solana:signTransaction';\n//# sourceMappingURL=signTransaction.js.map","/** Name of the feature. */\nexport const StandardConnect = 'standard:connect';\n/**\n * @deprecated Use {@link StandardConnect} instead.\n *\n * @group Deprecated\n */\nexport const Connect = StandardConnect;\n//# sourceMappingURL=connect.js.map","/** Name of the feature. */\nexport const StandardDisconnect = 'standard:disconnect';\n/**\n * @deprecated Use {@link StandardDisconnect} instead.\n *\n * @group Deprecated\n */\nexport const Disconnect = StandardDisconnect;\n//# sourceMappingURL=disconnect.js.map","// wallet-standard-discovery.ts - PROPER native-wallet enumeration for the unified\n// login widget. We do NOT hand-maintain a list of wallet names (Phantom / Solflare\n// / Backpack / ...); instead we read the Solana Wallet Standard registry\n// (`@wallet-standard/app` getWallets(), fed by each wallet's\n// `wallet-standard:register-wallet` event) and surface every wallet that advertises\n// the Solana features we need. New wallets appear automatically, with their real\n// name + icon, and nothing is hardcoded.\n//\n// Each discovered wallet is adapted to the SDK's tiny `InjectedSolanaProvider`\n// shape so the existing wallet-login path (loginWithWallet -> InjectedWalletProvider,\n// SIWS) and the full app signing surface work unchanged. web3.js is only imported\n// lazily inside the transaction methods, so listing wallets and message-signing\n// login stay off the heavy chunk.\nimport { getWallets } from \"@wallet-standard/app\";\nimport { SolanaSignAndSendTransaction, SolanaSignMessage, SolanaSignTransaction, } from \"@solana/wallet-standard-features\";\nimport { StandardConnect, StandardDisconnect } from \"@wallet-standard/features\";\nimport bs58 from \"bs58\";\nimport { resolveSolanaWalletStandardChain } from \"../solana-rpc\";\nimport { isSolanaMobileWallet, solanaMobileWalletLeavesPage, } from \"./solana-mobile-registration\";\nfunction hasFeature(wallet, name) {\n    return Object.prototype.hasOwnProperty.call(wallet.features, name);\n}\nfunction supportsSolana(wallet) {\n    return wallet.chains.some((c) => c.startsWith(\"solana:\"));\n}\n/** A wallet is usable for Bounded login when it can connect + sign a SIWS message\n *  on a Solana chain. Transaction features are optional and checked lazily at\n *  call time, so a message-signing-only wallet still qualifies for login. */\nfunction isLoginCapable(wallet) {\n    return (supportsSolana(wallet) &&\n        hasFeature(wallet, StandardConnect) &&\n        hasFeature(wallet, SolanaSignMessage));\n}\n/** The Wallet-Standard chain id for a configured network, or null when it is\n *  absent/unsupported. Ordering must never throw - failing closed on an\n *  unsupported network is the signing path's job. */\nfunction solanaChainOrNull(network) {\n    switch (network) {\n        case \"solana_mainnet\": return \"solana:mainnet\";\n        case \"solana_devnet\": return \"solana:devnet\";\n        default: return null;\n    }\n}\nfunction feature(wallet, name) {\n    return wallet.features[name];\n}\n/**\n * Adapt a Wallet Standard wallet to the slim `InjectedSolanaProvider` the SDK's\n * wallet-login + signing path consumes. Connect resolves (and caches) the active\n * account; sign* delegate to the wallet's own Solana features. Nothing is\n * wallet-name specific.\n *\n * DS2-0383: signAndSendTransaction MUST execute on the network the APP configured\n * (`config.chain`), not whatever chain the wallet happens to advertise first.\n * Deriving the chain from the wallet's advertised list (with a mainnet fallback)\n * could hand a devnet/testnet transaction to the wallet labelled mainnet - or the\n * reverse. `configuredNetwork` is resolved to the exact Wallet-Standard chain id;\n * an unconfigured network fails closed at sign time rather than defaulting.\n */\nexport function standardWalletToInjectedProvider(wallet, configuredNetwork) {\n    // The adapter holds NO account of its own: `wallet.accounts` is the Wallet\n    // Standard's live authorized-account view, kept in sync by the wallet itself\n    // (it emits standard:events 'change' when it moves). Reading it on every\n    // access means two things at once:\n    //   - an account switch inside the wallet is OBSERVED here, so\n    //     InjectedWalletProvider's DS2-0369 check still fires instead of being\n    //     hidden behind a copy this adapter took at connect time;\n    //   - a connection survives across adapter instances, which is what the\n    //     mobile wallet needs: MWA keeps its accounts for the life of its\n    //     authorization, so a later signing call reuses it rather than paying\n    //     another round trip out to the wallet app.\n    // Prefer an account that can work on the network the app configured: a wallet\n    // can hold several, and one authorized for another cluster would sign\n    // something this app can never land. Fall back to any Solana account only\n    // when the app named no network.\n    const wanted = configuredNetwork ? solanaChainOrNull(configuredNetwork) : null;\n    // Wallet Standard declares chains AND features PER ACCOUNT, so a wallet-level\n    // capability is not proof that the account we picked has it. An account with\n    // an explicit feature list that omits solana:signMessage cannot complete a\n    // SIWS login; one that lists nothing is unconstrained by convention.\n    // STRICT. `WalletAccount.features` is the feature names that account supports,\n    // and a wallet that means \"the defaults\" says so by omitting the field - the\n    // mobile adapter fills DEFAULT_FEATURES in exactly that case. So an empty list\n    // means none, and reading it as \"everything\" picks an account that cannot sign\n    // and fails at the wallet instead of here.\n    const accountSupports = (account, feature) => account.features.includes(feature);\n    const pickSolanaAccount = (accounts) => {\n        // With a network configured, an account that does not support it is not a\n        // usable account: `WalletAccount.chains` is what that account can sign for,\n        // so handing it a transaction for another chain just fails at the wallet -\n        // or worse, is honoured on the wrong cluster. And a Solana account that\n        // cannot sign a message cannot log in at all, so prefer one that can.\n        // No usable account means NOT CONNECTED: a multi-chain wallet can advertise\n        // Solana at wallet level while its authorized account is another chain\n        // entirely, and taking that one would expose e.g. an EVM address as the\n        // Solana public key.\n        const solana = accounts.filter((a) => (a.chains.some((c) => c.startsWith(\"solana:\")) && (!wanted || a.chains.includes(wanted))));\n        // No account that can sign a message is no usable account: SIWS login is the\n        // first thing every wallet path does, so falling back to one that cannot\n        // sign only moves the failure somewhere less legible.\n        return solana.find((a) => accountSupports(a, SolanaSignMessage));\n    };\n    const currentAccount = () => { var _a; return (_a = pickSolanaAccount(wallet.accounts)) !== null && _a !== void 0 ? _a : null; };\n    /** A `solana:signTransaction` input, carrying the app's chain when it has one. */\n    const signInputFor = (account, transaction) => (wanted ? { account, transaction, chain: wanted } : { account, transaction });\n    const requireAccount = () => {\n        const acc = currentAccount();\n        if (!acc)\n            throw new Error(\"Wallet not connected\");\n        return acc;\n    };\n    return {\n        // This wallet reaches its signer by leaving the page (an Android intent),\n        // so every operation needs a fresh user gesture. Flagging it here means the\n        // SDK applies the caller's confirm hook to exactly the wallets that need it\n        // - callers never have to work out which wallet they ended up with.\n        leavesPage: solanaMobileWalletLeavesPage(wallet.name),\n        // The transaction codec is code-split (it pulls web3.js, which must stay off\n        // the login path). Loading it INSIDE a sign call would put a network fetch\n        // between the user's tap and the wallet invocation, which is exactly the\n        // transient activation a mobile wallet's intent navigation needs. Callers\n        // warm it here, before taking that tap - and ONLY for the actions that use\n        // it, so a SIWS login still never touches that chunk.\n        async prepare(action) {\n            if (action === \"signTransaction\" || action === \"signAndSubmitTransaction\") {\n                await import(\"./wallet-standard-tx\");\n            }\n        },\n        get isConnected() {\n            return currentAccount() !== null;\n        },\n        get publicKey() {\n            // Wallet Standard account.address is already the base58 Solana address.\n            const acc = currentAccount();\n            return acc ? { toString: () => acc.address } : null;\n        },\n        async connect(options) {\n            var _a;\n            const connect = feature(wallet, StandardConnect);\n            if (!connect)\n                throw new Error(\"Wallet does not support standard:connect\");\n            // Map the injected-provider `onlyIfTrusted` hint onto the Wallet Standard\n            // `silent` connect: an already-trusted wallet (or MWA with a cached\n            // authorization) reconnects without prompting; an untrusted one returns\n            // no accounts and the caller falls back to an interactive connect.\n            const res = await connect.connect((options === null || options === void 0 ? void 0 : options.onlyIfTrusted) ? { silent: true } : undefined);\n            // Prefer what connect returned, but fall back to the live view for a\n            // wallet that only publishes newly authorized accounts there.\n            const acc = (_a = pickSolanaAccount(res.accounts)) !== null && _a !== void 0 ? _a : currentAccount();\n            if (!acc)\n                throw new Error(\"Wallet returned no account on connect\");\n            return { publicKey: { toString: () => acc.address } };\n        },\n        async disconnect() {\n            const disconnect = feature(wallet, StandardDisconnect);\n            if (disconnect)\n                await disconnect.disconnect();\n        },\n        async signMessage(message) {\n            const acc = requireAccount();\n            const sign = feature(wallet, SolanaSignMessage);\n            if (!sign)\n                throw new Error(\"Wallet does not support solana:signMessage\");\n            const [out] = await sign.signMessage({ account: acc, message });\n            return { signature: out.signature, publicKey: { toString: () => acc.address } };\n        },\n        // DS2-0383, on the plain-sign side: tell the wallet which cluster this\n        // transaction is for, the same way signAndSendTransaction does. `chain` is\n        // OPTIONAL on SolanaSignTransactionInput (unlike the send input, where it is\n        // required), so an app that named no network simply omits it rather than\n        // failing closed - a plain sign puts nothing on a chain, so there is no\n        // wrong cluster to protect against, only a hint to withhold. When a network\n        // IS configured, pickSolanaAccount has already rejected any account that\n        // does not carry that chain, so the hint can never contradict the account.\n        async signTransaction(tx) {\n            const acc = requireAccount();\n            const sign = feature(wallet, SolanaSignTransaction);\n            if (!sign)\n                throw new Error(\"Wallet does not support solana:signTransaction\");\n            const { serializeUnsignedTx, deserializeSignedTx } = await import(\"./wallet-standard-tx\");\n            const [out] = await sign.signTransaction(signInputFor(acc, serializeUnsignedTx(tx)));\n            return deserializeSignedTx(out.signedTransaction);\n        },\n        async signAllTransactions(txs) {\n            const acc = requireAccount();\n            const sign = feature(wallet, SolanaSignTransaction);\n            if (!sign)\n                throw new Error(\"Wallet does not support solana:signTransaction\");\n            const { serializeUnsignedTx, deserializeSignedTx } = await import(\"./wallet-standard-tx\");\n            const outs = await sign.signTransaction(...txs.map((tx) => signInputFor(acc, serializeUnsignedTx(tx))));\n            return outs.map((o) => deserializeSignedTx(o.signedTransaction));\n        },\n        // Asked LIVE, never snapshotted: MWA advertises both transaction features\n        // up front and rewrites them during connect() once it learns what the wallet\n        // actually supports. A capability read at construction time would send a\n        // sign-only wallet down the native-send path and fail instead of using the\n        // caller's sign-then-submit fallback.\n        // Both of these answer \"can this wallet do it, right now\" and nothing more.\n        // WHICH path to prefer is the caller's policy, and it lives with the caller:\n        // InjectedWalletProvider signs and verifies before submitting whenever\n        // signing is possible, because a native send is on the network before anyone\n        // can check who signed it.\n        canSignAndSend: () => {\n            if (!hasFeature(wallet, SolanaSignAndSendTransaction))\n                return false;\n            // The wallet offering it is not enough: the ACCOUNT must too, or the\n            // native call fails where the caller's sign-then-submit path would work.\n            const acc = currentAccount();\n            return !!acc && accountSupports(acc, SolanaSignAndSendTransaction);\n        },\n        canSignTransaction: () => {\n            if (!hasFeature(wallet, SolanaSignTransaction))\n                return false;\n            const acc = currentAccount();\n            return !!acc && accountSupports(acc, SolanaSignTransaction);\n        },\n        async signAndSendTransaction(tx) {\n            const acc = requireAccount();\n            const sas = feature(wallet, SolanaSignAndSendTransaction);\n            if (!sas)\n                throw new Error(\"Wallet does not support solana:signAndSendTransaction\");\n            const { serializeUnsignedTx } = await import(\"./wallet-standard-tx\");\n            const chain = resolveSolanaWalletStandardChain(configuredNetwork, \"Wallet-Standard signAndSendTransaction\");\n            const [out] = await sas.signAndSendTransaction({\n                account: acc,\n                transaction: serializeUnsignedTx(tx),\n                chain,\n            });\n            return { signature: bs58.encode(out.signature) };\n        },\n    };\n}\n/**\n * Enumerate every Solana-capable wallet currently registered with the Wallet\n * Standard, newest registrations included. Returns login-ready choices (name +\n * icon + provider factory). Empty array off-browser or when no wallet is present;\n * the widget then falls back to the legacy injected `window.solana` probe.\n */\nexport function discoverStandardWallets(configuredNetwork) {\n    if (typeof window === \"undefined\")\n        return [];\n    const out = [];\n    // Same name, different wallets is a real case (two SDKs on one page can each\n    // register a \"Mobile Wallet Adapter\"). One entry per name still makes the\n    // right list, but prefer a wallet that can actually work on the app's network\n    // - otherwise an incompatible lookalike that registered first wins and every\n    // transaction fails at the wallet.\n    const chain = configuredNetwork ? solanaChainOrNull(configuredNetwork) : null;\n    // Two wallets can share a display name (another SDK can register its own\n    // \"Mobile Wallet Adapter\"). Keep ONE entry per name, but choose WHICH by\n    // merit, not by who registered first: a wallet that supports the app's chain\n    // beats one that does not, and among equals the mobile wallet WE registered\n    // beats a stranger wearing its label - picking the stranger would drop the\n    // gesture its transport needs and can hide the legacy probe. Names keep their\n    // first-seen order, so the list the user sees is otherwise unchanged.\n    const rank = (w) => (chain && !w.chains.includes(chain) ? 2 : 0) + (isSolanaMobileWallet(w) ? 0 : 1);\n    const bestByName = new Map();\n    const nameOrder = [];\n    for (const wallet of getWallets().get()) {\n        if (!isLoginCapable(wallet))\n            continue;\n        // A wallet that does not carry the app's chain at all cannot serve it. That\n        // is knowable here, so drop it rather than listing it and failing at connect\n        // - or worse, letting the no-injection fallback default to it.\n        if (chain && !wallet.chains.includes(chain))\n            continue;\n        const incumbent = bestByName.get(wallet.name);\n        if (!incumbent) {\n            bestByName.set(wallet.name, wallet);\n            nameOrder.push(wallet.name);\n        }\n        else if (rank(wallet) < rank(incumbent)) {\n            bestByName.set(wallet.name, wallet);\n        }\n    }\n    for (const name of nameOrder) {\n        const wallet = bestByName.get(name);\n        out.push({\n            name: wallet.name,\n            icon: wallet.icon,\n            wallet,\n            // DS2-0383: the adapted provider signs+sends on the app's configured\n            // network, never on the wallet's first advertised chain. The adapter is\n            // stateless (it reads the wallet's live accounts), so handing out a fresh\n            // one per call costs nothing and keeps no state to go stale.\n            getProvider: () => standardWalletToInjectedProvider(wallet, configuredNetwork),\n        });\n    }\n    return out;\n}\n/**\n * First login-capable Wallet Standard wallet adapted to the injected-provider\n * shape, or null. The last-resort fallback for wallet login when nothing is\n * injected - e.g. a Saga/Seeker phone, where the Solana Mobile wallet lives in\n * the registry (via registerMwa) and never as `window.solana`.\n */\nexport function firstStandardWalletProvider(configuredNetwork) {\n    const [first] = discoverStandardWallets(configuredNetwork);\n    return first ? first.getProvider() : null;\n}\n","// wallet-lane.ts - the pure decision behind the login widget's \"Continue with\n// wallet\" lane. Extracted from bounded-login-widget.ts (which pulls in the DOM\n// and the auth barrel, so it cannot be unit tested) following the same\n// extract-a-pure-helper pattern as bounded-widget-ownership.ts.\n//\n// The subtlety this file exists for: an INJECTED wallet in the registry is\n// evidence the user actually has a wallet, which is why detection alone turns\n// the lane on. Solana Mobile's MWA wallet is NOT that: registerMwa() registers\n// on ANY capable Android browser whether or not a wallet app is installed. If\n// registration ran unconditionally, every Bounded app would grow a wallet\n// button on every Android phone - breaking the opt-in default that\n// walletLogin/isWalletLoginEnabled exist to protect. So MWA is only ever\n// registered once the lane is already the app's choice, and can never be the\n// thing that turns it on.\n/**\n * Whether the widget shows the wallet lane at all. Hard-off wins over\n * everything; otherwise an explicit per-call value wins; otherwise auto: on\n * when the app opted in, or when a wallet was actually detected.\n */\nexport function isWalletLaneEnabled(input) {\n    if (input.hardOff)\n        return false;\n    if (input.requested !== undefined)\n        return input.requested;\n    return input.detected > 0 || input.optedIn;\n}\n/**\n * Whether to register (and therefore offer) Solana Mobile's wallet: exactly\n * \"would the lane be on with NOTHING detected\". Stating it this way is the\n * guarantee - MWA can never count toward detection, so it can never be what\n * turns the lane on, only something the app already chose.\n */\nexport function shouldOfferSolanaMobileWallet(input) {\n    return isWalletLaneEnabled(Object.assign(Object.assign({}, input), { detected: 0 }));\n}\n","import { getActiveSessionManager } from '@bounded-sh/core';\nimport { establishInlineSession, inlineAuthEndpoint } from './oidc-auth';\nimport { openHiddenSignerFrame } from './turnkey-signer-frame';\nimport { requestTurnkeyActionAuthorization } from './turnkey-signing-capability';\nfunction hasDOM() {\n    return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nlet requestSeq = 0;\n// Seal the OTP in the given hidden signer iframe on the Bounded origin. The signer page\n// runs the vendored @turnkey/crypto encryptOtpCodeToBundle (which verifies the enclave's\n// signature on the target bundle first) and KEEPS the sealing keypair for the follow-up\n// establishSigningSession exchange below.\nasync function sealOtpInFrame(frame, code, otpEncryptionTargetBundle) {\n    const d = await frame.request({\n        type: 'bounded:turnkey:encryptOtp',\n        requestId: `tkotp_${Date.now()}_${++requestSeq}`,\n        otpCode: code,\n        otpEncryptionTargetBundle,\n    }, 30000).catch(() => { throw new Error('Securing the code timed out. Please try again.'); });\n    if (d.ok && typeof d.encryptedOtpBundle === 'string' && d.encryptedOtpBundle) {\n        return d.encryptedOtpBundle;\n    }\n    throw new Error(String(d.error || 'Could not secure the code. Please try again.'));\n}\n// Best-effort login-time signing-session establishment. Runs AFTER the login session is\n// live (the action authorization is minted from the freshly-established id token) against\n// the SAME frame that sealed the code - only that page instance holds the keypair the\n// verificationToken is bound to. Owns the frame: disposes it whatever happens. Never\n// throws; a failure only means the first signature costs one inline code.\nasync function establishSigningSessionInBackground(frame, baseUrl, signingSession) {\n    // The moment this work begins - captured before ANY await, because verify() has already\n    // resolved and the user can hit logout throughout the authorization mint below. The\n    // signer drops a session whose work began at-or-before the newest logout, so a stamp\n    // taken later (in the frame, after the mint) would let this establishment out-run a\n    // logout and resurrect the session.\n    const startedAtMs = Date.now();\n    try {\n        let idToken = null;\n        try {\n            idToken = getActiveSessionManager().getIdToken();\n        }\n        catch (_a) {\n            idToken = null;\n        }\n        if (!idToken)\n            return;\n        const authorization = await requestTurnkeyActionAuthorization({\n            baseUrl,\n            idToken,\n            action: 'createWallet',\n            fetchImpl: (url, init) => fetch(url, init),\n        });\n        const d = await frame.request({\n            type: 'bounded:turnkey:establishSigningSession',\n            requestId: `tkestablish_${Date.now()}_${++requestSeq}`,\n            verificationToken: signingSession.verificationToken,\n            authorization,\n            startedAtMs,\n        }, 20000);\n        if (!d.ok)\n            throw new Error(String(d.error || 'establish_failed'));\n    }\n    catch (_b) {\n        /* best-effort: the signer's inline code flow covers the first signature */\n    }\n    finally {\n        frame.dispose();\n    }\n}\n/**\n * Begin authMode:\"turnkey\" login: ask Turnkey to email a one-time code to `email`.\n * Resolves with a handle whose `verify(code)` finishes the login. Web-only (the sealing\n * step needs the signer iframe); on React Native use loginWithRedirect() instead.\n */\nexport async function startTurnkeyEmailLogin(email) {\n    if (!hasDOM()) {\n        throw new Error('Turnkey-native email login is web-only - on React Native use loginWithRedirect()');\n    }\n    const trimmed = email.trim();\n    if (!trimmed)\n        throw new Error('Enter your email to continue.');\n    const { base, appId } = await inlineAuthEndpoint();\n    if (!appId)\n        throw new Error('appId is not configured (init the SDK with your appId)');\n    const res = await fetch(`${base}/wallet/turnkey/auth/init`, {\n        method: 'POST',\n        headers: { 'content-type': 'application/json' },\n        body: JSON.stringify({ email: trimmed, appId }),\n    });\n    const data = await res.json().catch(() => null);\n    if (!res.ok || !data || typeof data.otpId !== 'string' || typeof data.otpEncryptionTargetBundle !== 'string') {\n        throw new Error(String((data && data.error) || 'Could not send a code. Please try again.'));\n    }\n    const otpId = data.otpId;\n    const otpEncryptionTargetBundle = data.otpEncryptionTargetBundle;\n    return {\n        email: trimmed,\n        async verify(code) {\n            const trimmedCode = (code || '').trim();\n            if (!trimmedCode)\n                throw new Error('Enter the code from your email.');\n            // One frame per attempt: the sealing keypair lives in this exact page instance,\n            // and a failed attempt's frame (and keypair) is discarded with it.\n            const frame = await openHiddenSignerFrame();\n            let vdata = null;\n            try {\n                const encryptedOtpBundle = await sealOtpInFrame(frame, trimmedCode, otpEncryptionTargetBundle);\n                const vres = await fetch(`${base}/wallet/turnkey/auth/verify`, {\n                    method: 'POST',\n                    headers: { 'content-type': 'application/json' },\n                    body: JSON.stringify({ email: trimmed, appId, otpId, encryptedOtpBundle }),\n                });\n                vdata = await vres.json().catch(() => null);\n                if (!vres.ok || !vdata) {\n                    throw new Error(String((vdata && vdata.error) || 'Invalid or expired code.'));\n                }\n            }\n            catch (error) {\n                frame.dispose();\n                throw error;\n            }\n            const user = await establishInlineSession(vdata).catch((error) => {\n                frame.dispose();\n                throw error;\n            });\n            // SINGLE CODE AT LOGIN: turn the same code's verificationToken into the 24h\n            // signing session, in the background - login is already resolved and must never\n            // wait on (or fail with) this. The task owns the frame's disposal.\n            const signingSession = vdata.signingSession;\n            if (signingSession && typeof signingSession.verificationToken === 'string' && signingSession.verificationToken) {\n                void establishSigningSessionInBackground(frame, base, {\n                    verificationToken: signingSession.verificationToken,\n                });\n            }\n            else {\n                frame.dispose();\n            }\n            return user;\n        },\n    };\n}\n","// bounded-login-widget.ts - the UNIFIED Bounded login surface: one in-app card\n// (Shadow-DOM modal from bounded-widget-modal.ts, Bounded look + motion) that folds\n// together every login lane the SDK supports:\n//   - Email / social (Google, ...) -> the hosted Better Auth OIDC flow, run in a\n//     brief FIRST-PARTY popup (loginWithPopup). A cross-origin auth IFRAME cannot\n//     hold the Better Auth session cookie (third-party-cookie blocking in Safari /\n//     Chrome), so the session handshake pops; the card itself stays in-app.\n//   - \"Continue with wallet\" -> native injected wallets (Phantom / Solflare /\n//     Backpack) via loginWithWallet(), run ENTIRELY on the app page (injected\n//     providers only exist there, never inside a cross-origin frame).\n//\n// Redirect stays available as the popup-blocked fallback (loginWithRedirect).\n// The same modal is reused for Turnkey wallet signing, so login -> first\n// signature is one continuous surface.\nimport { getModal, showModal, hideModal, mountContent, fitPanelToContent, ensureFonts, hasDOM, } from \"./bounded-widget-modal\";\nimport { claimModalOpen } from \"./bounded-widget-ownership\";\nimport { discoverStandardWallets } from \"./providers/wallet-standard-discovery\";\nimport { looksLikeSolanaMobileWallet, WalletConfigError } from \"./providers/solana-mobile-registration\";\nimport { isWalletLaneEnabled, shouldOfferSolanaMobileWallet } from \"./wallet-lane\";\nimport { startTurnkeyEmailLogin } from \"./turnkey-auth\";\n// Palette + type ladder mirror the hosted auth page (login-page.ts): dark editorial\n// panel, Newsreader display serif for the title, Schibsted Grotesk body, a light\n// (paper) primary button and inset inputs. This is the same look/feel as\n// auth.bounded, brought inline into the in-app widget.\nconst CARD_CSS = `\n:host,*{box-sizing:border-box}\n.c{--bg-inset:#060607;--bg-raise:#131416;\n  --line:rgba(232,230,222,.08);--line-strong:rgba(232,230,222,.16);\n  --text:#e8e6de;--dim:#9b9991;--faint:#85837c;\n  --green:#58c98f;--green-bg:rgba(88,201,143,.09);--green-line:rgba(88,201,143,.28);--red:#ec8488;\n  --disp:\"Newsreader\",\"Iowan Old Style\",Georgia,serif;\n  --body:\"Schibsted Grotesk\",\"Helvetica Neue\",Arial,sans-serif;\n  position:relative;padding:34px 32px 20px;color:var(--text);font-family:var(--body);\n  -webkit-font-smoothing:antialiased}\n.x{position:absolute;top:20px;right:24px;border:0;background:transparent;color:var(--faint);\n  font-family:var(--body);font-size:13px;line-height:1;cursor:pointer;padding:4px}\n.x:hover{color:var(--text)}\nh1{font-family:var(--disp);font-weight:400;font-size:27px;line-height:1.12;letter-spacing:-.01em;margin:0 0 6px;max-width:88%}\n.sub{margin:0 0 24px;color:var(--dim);font-size:13.5px}\nlabel{display:block;font-size:12px;color:var(--dim);margin:0 0 7px}\ninput{width:100%;padding:11px 13px;border-radius:6px;border:1px solid var(--line-strong);\n  background:var(--bg-inset);color:var(--text);font-size:15px;font-family:var(--body);outline:none;\n  transition:border-color .15s,box-shadow .15s}\ninput::placeholder{color:var(--faint)}\ninput:focus{border-color:var(--green-line);box-shadow:0 0 0 3px var(--green-bg)}\ninput.otp{font-family:var(--mono,ui-monospace,monospace);letter-spacing:8px;text-align:center;font-size:21px;padding-left:8px}\n.btn{width:100%;padding:12px 14px;border-radius:6px;font-size:14px;font-weight:600;\n  cursor:pointer;font-family:var(--body);display:flex;align-items:center;justify-content:center;gap:9px;\n  transition:opacity .15s ease,background .15s ease,border-color .15s ease,transform .04s}\n.btn:disabled{opacity:.45;cursor:default}\n.primary{border:0;background:var(--text);color:#0a0a0b;margin-top:16px}\n.primary:hover:not(:disabled){opacity:.9}\n.primary:active:not(:disabled){transform:translateY(.5px)}\n.ghost{border:1px solid var(--line-strong);background:var(--bg-raise);color:var(--text);margin-top:9px}\n.ghost:hover:not(:disabled){background:#17181b}\n.ghost svg{width:16px;height:16px;flex:none}\n.wicon{width:18px;height:18px;border-radius:4px;flex:none}\n.or{display:flex;align-items:center;gap:12px;margin:20px 0 14px;color:var(--faint);\n  font-size:11px;letter-spacing:.08em;text-transform:uppercase}\n.or::before,.or::after{content:\"\";flex:1;height:1px;background:var(--line)}\n.status{margin-top:16px;min-height:16px;font-size:12.5px;color:var(--dim)}\n.status.err{color:var(--red)}\n.foot{margin-top:24px;padding-top:15px;border-top:1px solid var(--line);\n  color:var(--faint);font-size:11px;text-align:center;letter-spacing:.02em}\n.foot a{color:var(--dim);text-decoration:none}\n.foot a:hover{color:var(--text)}\n.back{background:transparent;border:0;color:var(--dim);font-size:12.5px;cursor:pointer;padding:0;margin-bottom:16px}\n.back:hover{color:var(--text)}\n.spin{width:15px;height:15px;border-radius:50%;border:2px solid rgba(10,10,11,.3);\n  border-top-color:#0a0a0b;animation:bwspin .7s linear infinite}\n.ghost .spin,.primary.wallet-busy .spin{border:2px solid var(--line-strong);border-top-color:var(--text)}\n@keyframes bwspin{to{transform:rotate(360deg)}}\n`;\n// Brand glyphs, built as SVG DOM (never innerHTML) so the buttons match the hosted page.\nfunction googleGlyph() {\n    const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n    svg.setAttribute(\"viewBox\", \"0 0 48 48\");\n    svg.setAttribute(\"aria-hidden\", \"true\");\n    const paths = [\n        [\"#EA4335\", \"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"],\n        [\"#4285F4\", \"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"],\n        [\"#FBBC05\", \"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z\"],\n        [\"#34A853\", \"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"],\n    ];\n    for (const [fill, d] of paths) {\n        const path = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        path.setAttribute(\"fill\", fill);\n        path.setAttribute(\"d\", d);\n        svg.appendChild(path);\n    }\n    return svg;\n}\nfunction walletGlyph() {\n    const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n    svg.setAttribute(\"viewBox\", \"0 0 24 24\");\n    svg.setAttribute(\"fill\", \"none\");\n    svg.setAttribute(\"aria-hidden\", \"true\");\n    const rect = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n    rect.setAttribute(\"x\", \"3\");\n    rect.setAttribute(\"y\", \"6\");\n    rect.setAttribute(\"width\", \"18\");\n    rect.setAttribute(\"height\", \"13\");\n    rect.setAttribute(\"rx\", \"2.5\");\n    rect.setAttribute(\"stroke\", \"currentColor\");\n    rect.setAttribute(\"stroke-width\", \"1.6\");\n    const dot = document.createElementNS(\"http://www.w3.org/2000/svg\", \"circle\");\n    dot.setAttribute(\"cx\", \"16.5\");\n    dot.setAttribute(\"cy\", \"12.5\");\n    dot.setAttribute(\"r\", \"1.4\");\n    dot.setAttribute(\"fill\", \"currentColor\");\n    svg.append(rect, dot);\n    return svg;\n}\nfunction isInjectedProvider(v) {\n    return (typeof v === \"object\" &&\n        v !== null &&\n        typeof v.signMessage === \"function\");\n}\n// Enumerate native wallets via the Solana Wallet Standard registry (NOT a\n// hardcoded name list) - every wallet that registered itself shows up with its\n// real name + icon - and ALSO an older wallet that never registers and only\n// exposes `window.solana`.\n//\n// The legacy `window.solana` probe fills in for a wallet too old to register\n// itself. The rule it has always encoded is \"no BROWSER wallet registered\", and\n// the registry answered that faithfully until Solana Mobile joined it: MWA\n// registers on every capable Android phone, installed browser wallet or not, so\n// a bare \"is the registry empty\" test would hide exactly the wallet the user\n// has. Judge emptiness by the registered wallets that are actually in-page\n// ones. (Identity de-duplication is not available here: a registry adapter is\n// never the injected object, so comparing them can only ever be false.)\nfunction discoverWallets(configuredNetwork) {\n    if (typeof window === \"undefined\")\n        return [];\n    // DS2-0383: pass the app's configured Solana network so the discovered\n    // provider signs+sends on that network, not the wallet's first advertised chain.\n    const standard = discoverStandardWallets(configuredNetwork);\n    const choices = standard.map((w) => ({ name: w.name, icon: w.icon, wallet: w.wallet, get: () => w.getProvider() }));\n    // \"Did an in-page wallet register?\" is a question about TRANSPORT: a mobile\n    // adapter another SDK registered is still not the injected wallet, so counting\n    // it would hide a legacy window.solana wallet the user actually has.\n    const registeredInPageWallet = standard.some((w) => !looksLikeSolanaMobileWallet(w.name));\n    const generic = window.solana;\n    if (!registeredInPageWallet && isInjectedProvider(generic)) {\n        choices.push({ name: \"Wallet\", get: () => generic });\n    }\n    return choices;\n}\n// Shown when a lane is refused because another login can still commit. Saying so\n// beats a click that does nothing, which is what \"one at a time\" looks like from\n// the outside.\nconst BUSY_MSG = \"A sign-in is already in progress - finish or cancel it first.\";\nconst METHOD_LABEL = {\n    google: \"Continue with Google\",\n    apple: \"Continue with Apple\",\n    github: \"Continue with GitHub\",\n};\nfunction el(tag, cls, text) {\n    const n = document.createElement(tag);\n    if (cls)\n        n.className = cls;\n    if (text != null)\n        n.textContent = text;\n    return n;\n}\n// The session-mint lock, deliberately OUTSIDE any one open. What it protects -\n// the SDK's single stored session and committed auth provider - is global, and a\n// login cannot be cancelled once it is running: dismissing a card or superseding\n// it with a second openBoundedWidget() leaves the login underneath still able to\n// commit. A per-open flag would hand the next card a fresh unlocked boolean and\n// let exactly the overlap it exists to prevent happen across opens.\nlet loginInFlight = false;\n// The open that currently owns the card. A login cannot be cancelled once it is\n// running, so one started on a card that is then superseded or dismissed can\n// still commit a session - and the widget must not answer that by leaving a live\n// login card in front of a signed-in app.\nlet liveOpen = null;\nconst pendingOpens = new Set();\n/** Register an open before its first await, superseding older pending ones. */\nfunction beginPendingOpen() {\n    for (const older of pendingOpens)\n        cancelPendingOpen(older);\n    const pending = { committed: null, cancelled: false, wake: null };\n    pendingOpens.add(pending);\n    return pending;\n}\nfunction cancelPendingOpen(pending) {\n    pending.cancelled = true;\n    const wake = pending.wake;\n    pending.wake = null;\n    wake === null || wake === void 0 ? void 0 : wake();\n}\n/** The user closed the widget: every open still preparing is closed with it. */\nfunction cancelPendingOpens() {\n    for (const pending of pendingOpens)\n        cancelPendingOpen(pending);\n}\n/** A login committed: hand it to opens that have no card to receive it. */\nfunction deliverToPendingOpens(user) {\n    for (const pending of pendingOpens) {\n        pending.committed = user;\n        const wake = pending.wake;\n        pending.wake = null;\n        wake === null || wake === void 0 ? void 0 : wake();\n    }\n}\n/**\n * Await preparation, but stop the moment this open's answer is already known -\n * dismissed, superseded, or overtaken by a login that committed. Without this a\n * stalled chunk fetch holds the caller on a card that can never be shown, or on\n * a question the widget has already answered.\n */\nfunction untilCancelled(work, pending) {\n    if (pending.cancelled || pending.committed)\n        return Promise.reject(new Error(\"cancelled\"));\n    return Promise.race([\n        work.finally(() => { pending.wake = null; }),\n        new Promise((_, reject) => {\n            pending.wake = () => reject(new Error(\"cancelled\"));\n        }),\n    ]);\n}\n/**\n * Open the unified Bounded login widget and resolve with the signed-in `User`.\n * Rejects with `Error(\"cancelled\")` if the user dismisses it. `init()` must have\n * run first; call from a user gesture so social/wallet popups are allowed.\n */\nexport async function openBoundedWidget(opts = {}) {\n    if (!hasDOM()) {\n        throw new Error(\"openBoundedWidget is web-only - on React Native use loginWithRedirect()\");\n    }\n    // Registered before the first await - see PendingOpen.\n    const pending = beginPendingOpen();\n    try {\n        return await prepareAndOpen(opts, pending);\n    }\n    catch (err) {\n        // Interrupted rather than failed: while this open was preparing, a login\n        // committed, the widget was dismissed, or a newer open was requested. The\n        // committed login is the most useful answer of the three - the app IS signed\n        // in - so it wins whatever else also happened.\n        if (pending.committed)\n            return pending.committed;\n        if (pending.cancelled)\n            throw new Error(\"cancelled\");\n        throw err;\n    }\n    finally {\n        pendingOpens.delete(pending);\n    }\n}\n/**\n * Prepare the card and run it. Split out so the caller can hold ONE record for\n * this open across every await below, and settle it the moment the widget is\n * dismissed rather than when preparation happens to finish.\n */\nasync function prepareAndOpen(opts, pending) {\n    var _a, _b, _c, _d, _e, _f;\n    // Imported lazily to avoid a static cycle with the auth index barrel.\n    const authApi = await untilCancelled(import(\"./index\"), pending);\n    // BEFORE any side effect. Registering the mobile wallet from an empty config\n    // would take the chainless mainnet default, and that registration cannot be\n    // withdrawn - so opening the widget before init() would pin the page to the\n    // wrong cluster and make the app's real init() fail demanding a reload.\n    const initCfg = authApi.getInitConfig();\n    if (!initCfg) {\n        throw new Error(\"openBoundedWidget() must be called after init() - the login lane is built from the \" +\n            \"app's configuration, and the mobile wallet is registered for its Solana network.\");\n    }\n    const methods = ((_a = opts.methods) !== null && _a !== void 0 ? _a : [\"email\", \"google\"]).map(String);\n    const hasEmail = methods.includes(\"email\") || methods.includes(\"text\");\n    const social = methods.filter((m) => m !== \"email\" && m !== \"text\");\n    // Policy first: an app whose site requires an email on file, or that explicitly\n    // set `walletLogin: false`, hides the wallet lane entirely - this OVERRIDES a\n    // per-call `opts.wallet` and any detected injected wallet.\n    const lane = {\n        requested: opts.wallet,\n        hardOff: authApi.isWalletLoginDisabled(initCfg) || authApi.isEmailRequired(initCfg),\n        optedIn: authApi.isWalletLoginEnabled(initCfg),\n    };\n    // Register Solana Mobile's MWA wallet (Saga/Seeker) with the Wallet Standard\n    // registry BEFORE enumerating it, so the device wallet is listed alongside\n    // injected wallets. Gated on the app's own opt-in (see wallet-lane.ts: MWA\n    // registers on any capable Android browser, installed wallet or not, so it\n    // must never be what turns the lane on). No-op off-Android.\n    const network = authApi.getConfiguredSolanaNetwork(initCfg);\n    // 1. Detect what is already there. This reads the registry and window.solana\n    //    and loads nothing, so it is safe to do before anything is prepared - and\n    //    it is what decides whether the lane appears at all.\n    const offerMobile = shouldOfferSolanaMobileWallet(lane);\n    const detected = discoverWallets(network)\n        .filter((w) => !looksLikeSolanaMobileWallet(w.name)).length;\n    let walletEnabled = isWalletLaneEnabled(Object.assign(Object.assign({}, lane), { detected }));\n    // 2. Prepare BEFORE the lane is rendered, never after the tap: loading the\n    //    provider chunk (or registering the mobile wallet) from a click spends the\n    //    activation the wallet handoff needs. Preparing costs nothing for an app\n    //    whose lane is off, because we only get here when it is on.\n    if (walletEnabled) {\n        try {\n            // A mobile-wallet failure needs no special handling here: it simply is not\n            // in the registry, so step 3 does not list it.\n            if (offerMobile)\n                await untilCancelled(authApi.ensureWalletLoginReady(), pending);\n            // The lane is on through detection or opt-in but the phone wallet is not\n            // being offered, so only the shared half is needed.\n            else\n                await untilCancelled(authApi.ensureSharedWalletLoginReady(), pending);\n        }\n        catch (err) {\n            // Except when the app's own configuration is the problem. That is a\n            // developer bug the SDK deliberately raises loudly, and swallowing it here\n            // would answer \"my wallet lane vanished, and so did my injected wallet\"\n            // with silence. Availability is what may degrade; a contradiction is not.\n            if (err instanceof WalletConfigError)\n                throw err;\n            // Nor is being closed while preparing: this open is over, and continuing\n            // to build its card would only render it after the user said no.\n            if (pending.cancelled)\n                throw err;\n            // A SHARED failure means there is no wallet login at all: better no lane\n            // than a button that fails after the user has spent a tap on it.\n            walletEnabled = false;\n        }\n    }\n    // 3. Enumerate AFTER preparing, so the list reflects what is actually ready -\n    //    the mobile wallet exists in the registry only once registered.\n    const wallets = walletEnabled ? discoverWallets(network) : [];\n    // Nothing to offer: the phone wallet could not be prepared (or this device has\n    // none) and the user has no injected wallet either. Hiding the lane beats a\n    // button with no wallet behind it.\n    if (wallets.length === 0)\n        walletEnabled = false;\n    const authMode = (_b = opts.authMode) !== null && _b !== void 0 ? _b : authApi.resolveAuthMode(initCfg);\n    // Widget text: per-call options win, then init() loginWidget config, then the\n    // defaults (\"Sign in\" / the Bounded subline; \"\" suppresses the subline).\n    const title = (_c = opts.title) !== null && _c !== void 0 ? _c : (_d = initCfg.loginWidget) === null || _d === void 0 ? void 0 : _d.title;\n    const subtitle = (_e = opts.subtitle) !== null && _e !== void 0 ? _e : (_f = initCfg.loginWidget) === null || _f === void 0 ? void 0 : _f.subtitle;\n    ensureFonts();\n    const m = getModal();\n    // Whatever happened while this open was preparing, decided now, before it can\n    // put anything on screen. A committed login wins over a cancellation: the app\n    // IS signed in, and that is the more useful answer to the caller's question.\n    if (pending.committed)\n        return pending.committed;\n    if (pending.cancelled)\n        throw new Error(\"cancelled\");\n    // From here this open OWNS a card, and the modal's ownership generation\n    // governs it - being pending is over. Nothing today reads a record left\n    // behind (a running open awaits nothing that could be woken, and has already\n    // passed the checks above), so this maintains the invariant the set's name\n    // asserts rather than fixing a bug - which is exactly why it is worth keeping.\n    pendingOpens.delete(pending);\n    return new Promise((resolve, reject) => {\n        // Per-open ownership generation (DS3-0402): a later open bumps the modal's\n        // generation, so this open's token stops matching and all of its callbacks\n        // (backdrop, success, cancel, and the async view swap) no-op instead of\n        // mutating a singleton a newer open now owns. Claiming also rejects any prior\n        // pending open so its caller is never stranded.\n        // True once a gesture view has replaced the view that started this login, so\n        // its catch handler knows its own buttons are detached and must re-render\n        // instead of writing an error nobody can see.\n        let gestureViewShown = false;\n        // Failure after the second tap: the caller's controls are gone with their\n        // view, so put the user back on a live screen carrying the error.\n        const failAfterGesture = (message) => {\n            swap(renderWallets(message));\n        };\n        // ONE login at a time, across every lane - and that is TWO different things,\n        // which is the distinction this got wrong twice.\n        //\n        // OWNERSHIP of the card (`activeAttempt`) says whose views and error text may\n        // appear. A wallet attempt that is still preparing shares this open's single\n        // view and gesture state, so Back, another lane, or a second wallet click\n        // must be able to take the card away from it - after which it settles\n        // quietly instead of mounting its gesture view over whatever replaced it (or\n        // waiting forever on a view ownership will no longer mount). Cancellation is\n        // DURABLE because it lives in this token rather than a flag: an attempt\n        // cancelled long before it asks for a gesture is simply no longer current, so\n        // its gesture rejects the moment it arrives. (A separate \"cancelled\" boolean\n        // could not express that, and the one that existed was set while CLAIMING an\n        // attempt, so the first mobile login cancelled its own gesture.)\n        //\n        // The LOCK (`loginInFlight`) is the other half, and it is not the same thing:\n        // taking the card away does not stop the login underneath it. That login can\n        // still mint a session and commit itself as the SDK's provider, so starting a\n        // second one while the first can still commit is how the app ends up signed\n        // in as a wallet the widget never returned. The lock is therefore held until\n        // the underlying promise SETTLES, whoever owns the card by then.\n        let attemptSeq = 0;\n        let activeAttempt = 0;\n        let abortGesture = null;\n        /** Reject a gesture promise already waiting on a view that is going away. */\n        const abortPendingGesture = () => {\n            const abort = abortGesture;\n            abortGesture = null;\n            abort === null || abort === void 0 ? void 0 : abort();\n        };\n        /** Claim the card, or refuse (null) while a login can still commit. */\n        const beginAttempt = () => {\n            if (loginInFlight)\n                return null;\n            loginInFlight = true;\n            abortPendingGesture();\n            activeAttempt = ++attemptSeq;\n            return activeAttempt;\n        };\n        const attemptIsCurrent = (id) => id === activeAttempt;\n        /**\n         * Release the lock, and report whether this attempt still owns the card -\n         * one call, so a lane cannot release one and forget the other.\n         */\n        const settleAttempt = (id) => {\n            loginInFlight = false;\n            if (!attemptIsCurrent(id))\n                return false;\n            activeAttempt = 0;\n            return true;\n        };\n        /** Take the card back (Back, a lane switch, settling the modal). Deliberately\n         *  NOT a release: the login underneath keeps running - see above. */\n        const invalidateAttempts = () => {\n            activeAttempt = 0;\n            abortPendingGesture();\n        };\n        // Superseded by a newer open: the newer one owns the DOM, so this open can\n        // no longer show a gesture view. Cancel any login of ours that is waiting\n        // for (or about to ask for) one, then reject our caller.\n        const owner = claimModalOpen(m, () => {\n            invalidateAttempts();\n            reject(new Error(\"cancelled\"));\n        });\n        // Settle THIS open with a user. Returns false when it no longer owns the card\n        // (superseded, dismissed, or already settled).\n        // Nothing clears this registration when the open settles, and nothing needs\n        // to: settleOwned runs at most once per open, so a stale `liveOpen` is inert\n        // - a late success finds a settled owner and quietly does nothing.\n        const deliver = (u) => owner.settleOwned(() => {\n            invalidateAttempts();\n            hideModal(m);\n            resolve(u);\n        });\n        liveOpen = deliver;\n        const succeed = (u) => {\n            // Recorded FIRST, and unconditionally: an open still preparing has no card\n            // to receive this, and reads it when it arrives instead.\n            deliverToPendingOpens(u);\n            if (deliver(u))\n                return;\n            // This open is gone, but the login it started COMMITTED: a session is\n            // stored and the SDK has an auth provider. Hand it to whatever card is up\n            // now instead of leaving the app signed in behind a live login card that\n            // will never settle. With no card up there is nothing to settle and the\n            // app is simply signed in.\n            liveOpen === null || liveOpen === void 0 ? void 0 : liveOpen(u);\n        };\n        const cancel = () => {\n            // Propagated only when the dismissal actually lands: a stale open whose\n            // settleOwned no-ops has dismissed nothing, and must not close opens that\n            // are preparing for the card a newer open still owns.\n            if (!owner.settleOwned(() => {\n                // Unwind a login parked on the sign-in gesture before tearing the UI\n                // down, so the provider is never left waiting on a tap that can no\n                // longer happen.\n                invalidateAttempts();\n                hideModal(m);\n                reject(new Error(\"cancelled\"));\n            }))\n                return;\n            cancelPendingOpens();\n        };\n        m.onBackdrop = cancel;\n        const style = el(\"style\");\n        style.textContent = CARD_CSS;\n        const renderChoose = () => {\n            const card = el(\"div\", \"c\");\n            card.appendChild(style.cloneNode(true));\n            const x = el(\"button\", \"x\", \"Close\");\n            x.type = \"button\";\n            x.setAttribute(\"aria-label\", \"Close\");\n            x.addEventListener(\"click\", cancel);\n            card.appendChild(x);\n            card.appendChild(el(\"h1\", undefined, title !== null && title !== void 0 ? title : \"Sign in\"));\n            if (subtitle !== \"\") {\n                card.appendChild(el(\"p\", \"sub\", subtitle !== null && subtitle !== void 0 ? subtitle : \"One account and wallet across every Bounded app.\"));\n            }\n            const status = el(\"div\", \"status\");\n            const setErr = (msg) => {\n                status.textContent = msg;\n                status.classList.add(\"err\");\n            };\n            const setBusy = (btn, label) => {\n                status.classList.remove(\"err\");\n                status.textContent = \"\";\n                btn.disabled = true;\n                btn.replaceChildren(el(\"span\", \"spin\"), document.createTextNode(label));\n            };\n            if (hasEmail) {\n                const form = el(\"form\");\n                const label = el(\"label\");\n                label.htmlFor = \"bw-email\";\n                label.textContent = \"Email\";\n                const input = el(\"input\");\n                input.id = \"bw-email\";\n                input.type = \"email\";\n                input.autocomplete = \"email\";\n                input.placeholder = \"you@example.com\";\n                input.required = true;\n                const submit = el(\"button\", \"btn primary\");\n                submit.type = \"submit\";\n                submit.textContent = \"Continue\";\n                form.append(label, input, submit);\n                form.addEventListener(\"submit\", (e) => {\n                    e.preventDefault();\n                    if (!input.value)\n                        return;\n                    // Starting another lane takes the card from a wallet attempt still\n                    // preparing, and this lane holds the lock until its own request\n                    // settles - otherwise a failed email login would keep every other lane\n                    // refused for the life of the modal.\n                    const attempt = beginAttempt();\n                    if (attempt === null) {\n                        setErr(BUSY_MSG);\n                        return;\n                    }\n                    if (authMode === \"turnkey\") {\n                        // Turnkey-native: ask Turnkey to email a code, then collect it INLINE.\n                        // Sending the code mints nothing, so the lock is released when it\n                        // arrives; the code entry claims its own when the user verifies.\n                        setBusy(submit, \"Sending code\\u2026\");\n                        startTurnkeyEmailLogin(input.value)\n                            .then((handle) => { if (settleAttempt(attempt))\n                            swap(renderOtp(handle)); })\n                            .catch((err) => {\n                            if (!settleAttempt(attempt))\n                                return;\n                            submit.disabled = false;\n                            submit.textContent = \"Continue\";\n                            setErr(errText(err));\n                        });\n                        return;\n                    }\n                    setBusy(submit, \"Opening secure sign-in\\u2026\");\n                    const emailOpts = {\n                        provider: \"email\",\n                        loginHint: input.value,\n                        redirectUri: opts.redirectUri,\n                    };\n                    authApi\n                        // A hosted login that RESOLVES minted a real session, so it settles\n                        // the card even if another lane has since taken it - dropping it\n                        // would leave the app signed in behind a widget that says it is not.\n                        // Only the failure path belongs to one attempt's UI.\n                        .loginWithPopup(emailOpts)\n                        .then((u) => { settleAttempt(attempt); succeed(u); })\n                        .catch((err) => {\n                        // Popup unavailable: same-tab redirect instead. It resolves with\n                        // nothing when it is about to navigate, so the only thing that\n                        // comes back here is a REJECTION - which must still reach the\n                        // handler below, or the lane stays locked with nothing running.\n                        if (shouldFallbackToRedirect(err)) {\n                            return authApi.loginWithRedirect(emailOpts).then((u) => { if (u)\n                                succeed(u); });\n                        }\n                        throw err;\n                    })\n                        .catch((err) => {\n                        if (!settleAttempt(attempt))\n                            return;\n                        submit.disabled = false;\n                        submit.textContent = \"Continue\";\n                        setErr(errText(err));\n                    });\n                });\n                card.appendChild(form);\n            }\n            if (social.length || walletEnabled) {\n                card.appendChild(el(\"div\", \"or\", \"OR\"));\n            }\n            const labelFor = (method) => { var _a; return (_a = METHOD_LABEL[method]) !== null && _a !== void 0 ? _a : `Continue with ${cap(method)}`; };\n            const glyphFor = (method) => method === \"google\" ? googleGlyph() : null;\n            const setLabel = (b, method) => {\n                const glyph = glyphFor(method);\n                const text = document.createTextNode(labelFor(method));\n                if (glyph)\n                    b.replaceChildren(glyph, text);\n                else\n                    b.replaceChildren(text);\n            };\n            for (const method of social) {\n                const b = el(\"button\", \"btn ghost\");\n                b.type = \"button\";\n                setLabel(b, method);\n                b.addEventListener(\"click\", () => {\n                    const attempt = beginAttempt();\n                    if (attempt === null) {\n                        setErr(BUSY_MSG);\n                        return;\n                    }\n                    setBusy(b, \"Opening secure sign-in\\u2026\");\n                    const socialOpts = { provider: method, redirectUri: opts.redirectUri };\n                    authApi\n                        .loginWithPopup(socialOpts)\n                        .then((u) => { settleAttempt(attempt); succeed(u); })\n                        .catch((err) => {\n                        if (shouldFallbackToRedirect(err)) {\n                            return authApi.loginWithRedirect(socialOpts).then((u) => { if (u)\n                                succeed(u); });\n                        }\n                        throw err;\n                    })\n                        .catch((err) => {\n                        if (!settleAttempt(attempt))\n                            return;\n                        b.disabled = false;\n                        setLabel(b, method);\n                        setErr(errText(err));\n                    });\n                });\n                card.appendChild(b);\n            }\n            if (walletEnabled) {\n                const b = el(\"button\", \"btn ghost\");\n                b.type = \"button\";\n                const walletLabel = () => b.replaceChildren(walletGlyph(), document.createTextNode(\"Continue with wallet\"));\n                walletLabel();\n                b.addEventListener(\"click\", () => {\n                    if (wallets.length <= 1) {\n                        connectWallet(wallets[0]);\n                    }\n                    else {\n                        swap(renderWallets());\n                    }\n                });\n                card.appendChild(b);\n                const connectWallet = (choice) => {\n                    const attempt = beginAttempt();\n                    if (attempt === null) {\n                        setErr(BUSY_MSG);\n                        return;\n                    }\n                    setBusy(b, \"Approve in your wallet…\");\n                    authApi\n                        .loginWithWallet(Object.assign(Object.assign({}, (choice ? { getProvider: choice.get } : {})), { confirmSignIn: signInGesture(choice, attempt) }))\n                        .then((u) => {\n                        // A wallet login that RESOLVED has already minted a session and\n                        // committed itself as the SDK's provider - the app IS signed in.\n                        // So it settles the card even if the user walked away from this\n                        // attempt; leaving the card up would be a lie, and the ownership\n                        // generation still stops it from stomping a NEWER open.\n                        const owned = settleAttempt(attempt);\n                        if (u) {\n                            succeed(u);\n                            return;\n                        }\n                        if (!owned)\n                            return;\n                        b.disabled = false;\n                        walletLabel();\n                        setErr(\"Wallet login was cancelled.\");\n                    })\n                        .catch((err) => {\n                        if (!settleAttempt(attempt))\n                            return;\n                        if (gestureViewShown) {\n                            gestureViewShown = false;\n                            failAfterGesture(errText(err));\n                            return;\n                        }\n                        b.disabled = false;\n                        walletLabel();\n                        setErr(errText(err));\n                    });\n                };\n            }\n            card.appendChild(status);\n            const foot = el(\"div\", \"foot\");\n            const poweredBy = el(\"a\", undefined, \"Powered by Bounded\");\n            poweredBy.href = \"https://bounded.sh\";\n            poweredBy.target = \"_blank\";\n            poweredBy.rel = \"noopener\";\n            foot.appendChild(poweredBy);\n            card.appendChild(foot);\n            return card;\n        };\n        // Solana Mobile leaves the page to sign: connecting spends the tap that\n        // started login, so requesting the signature straight afterwards runs with\n        // no transient activation left, Chrome blocks the `solana-wallet:` intent\n        // navigation, and the protocol reports the wallet as missing. Collect a\n        // second tap on its OWN view - never by adding a listener to a button that\n        // already starts a login, which would run both handlers on that tap and\n        // kick off a duplicate login beside the one waiting for the gesture.\n        // Injected wallets sign in-page and get no extra step.\n        // Offered for EVERY wallet: the SDK invokes it only for a wallet that leaves\n        // the page (InjectedSolanaProvider.leavesPage), so an in-page wallet still\n        // gets no extra tap - and a login that resolves the mobile wallet through\n        // the registry fallback is covered too, which a caller-side name check\n        // could not do.\n        const signInGesture = (choice, attempt) => {\n            return () => new Promise((resolveGesture, rejectGesture) => {\n                if (!attemptIsCurrent(attempt)) {\n                    rejectGesture(new Error(\"cancelled\"));\n                    return;\n                }\n                abortGesture = () => {\n                    abortGesture = null;\n                    rejectGesture(new Error(\"cancelled\"));\n                };\n                gestureViewShown = true;\n                swap(renderSignInGesture(choice, () => {\n                    abortGesture = null;\n                    resolveGesture();\n                }));\n            });\n        };\n        // The gesture view: one button, one job. Its tap is the fresh activation the\n        // wallet's intent navigation needs, so the signature must be requested from\n        // this click and nothing else may run on it.\n        const renderSignInGesture = (choice, done) => {\n            var _a;\n            const card = el(\"div\", \"c\");\n            card.appendChild(style.cloneNode(true));\n            const x = el(\"button\", \"x\", \"Close\");\n            x.type = \"button\";\n            x.setAttribute(\"aria-label\", \"Close\");\n            x.addEventListener(\"click\", cancel);\n            card.appendChild(x);\n            card.appendChild(el(\"h1\", undefined, \"One more tap\"));\n            card.appendChild(el(\"p\", \"sub\", `${(_a = choice === null || choice === void 0 ? void 0 : choice.name) !== null && _a !== void 0 ? _a : \"Your wallet\"} is connected. Tap below to sign in - your wallet opens once more to sign.`));\n            const b = el(\"button\", \"btn primary\");\n            b.type = \"button\";\n            b.textContent = \"Sign in\";\n            b.addEventListener(\"click\", () => {\n                b.disabled = true;\n                b.replaceChildren(el(\"span\", \"spin\"), document.createTextNode(\"Approve in your wallet…\"));\n                done();\n            }, { once: true });\n            card.appendChild(b);\n            return card;\n        };\n        const renderWallets = (initialError) => {\n            const card = el(\"div\", \"c\");\n            card.appendChild(style.cloneNode(true));\n            const back = el(\"button\", \"back\", \"\\u2190 Back\");\n            back.type = \"button\";\n            // Leaving the wallet list supersedes any attempt still preparing, so it\n            // cannot come back later and replace whatever is on screen by then.\n            back.addEventListener(\"click\", () => { invalidateAttempts(); swap(renderChoose()); });\n            card.appendChild(back);\n            card.appendChild(el(\"h1\", undefined, \"Connect a wallet\"));\n            card.appendChild(el(\"p\", \"sub\", \"Choose your Solana wallet.\"));\n            const status = el(\"div\", \"status\");\n            if (initialError) {\n                status.textContent = initialError;\n                status.classList.add(\"err\");\n            }\n            // Icon (the wallet's own, from the Wallet Standard registry) + name.\n            const setWalletLabel = (b, choice) => {\n                const text = document.createTextNode(choice.name);\n                if (choice.icon) {\n                    const img = el(\"img\", \"wicon\");\n                    img.src = choice.icon;\n                    img.alt = \"\";\n                    b.replaceChildren(img, text);\n                }\n                else {\n                    b.replaceChildren(text);\n                }\n            };\n            for (const choice of wallets) {\n                const b = el(\"button\", \"btn ghost\");\n                b.type = \"button\";\n                setWalletLabel(b, choice);\n                b.addEventListener(\"click\", () => {\n                    const attempt = beginAttempt();\n                    if (attempt === null) {\n                        status.textContent = BUSY_MSG;\n                        status.classList.add(\"err\");\n                        return;\n                    }\n                    status.classList.remove(\"err\");\n                    b.disabled = true;\n                    b.replaceChildren(el(\"span\", \"spin\"), document.createTextNode(\"Approve in your wallet\\u2026\"));\n                    authApi\n                        .loginWithWallet({ getProvider: choice.get, confirmSignIn: signInGesture(choice, attempt) })\n                        .then((u) => {\n                        // Settles the card whoever owns it by then - see connectWallet().\n                        const owned = settleAttempt(attempt);\n                        if (u) {\n                            succeed(u);\n                            return;\n                        }\n                        if (!owned)\n                            return;\n                        b.disabled = false;\n                        setWalletLabel(b, choice);\n                    })\n                        .catch((err) => {\n                        if (!settleAttempt(attempt))\n                            return;\n                        if (gestureViewShown) {\n                            gestureViewShown = false;\n                            failAfterGesture(errText(err));\n                            return;\n                        }\n                        b.disabled = false;\n                        setWalletLabel(b, choice);\n                        status.textContent = errText(err);\n                        status.classList.add(\"err\");\n                    });\n                });\n                card.appendChild(b);\n            }\n            card.appendChild(status);\n            return card;\n        };\n        // authMode:\"turnkey\" inline code entry. Same editorial card; the code is sealed\n        // on the Bounded signer origin and verified server-side by Turnkey.\n        const renderOtp = (handle) => {\n            const card = el(\"div\", \"c\");\n            card.appendChild(style.cloneNode(true));\n            const back = el(\"button\", \"back\", \"\\u2190 Back\");\n            back.type = \"button\";\n            // Abandoning the code entry settles the email attempt that opened it, so\n            // the next lane the user picks is not refused by a claim nobody owns.\n            back.addEventListener(\"click\", () => { invalidateAttempts(); swap(renderChoose()); });\n            card.appendChild(back);\n            card.appendChild(el(\"h1\", undefined, \"Enter your code\"));\n            card.appendChild(el(\"p\", \"sub\", `We sent a 6-digit code to ${handle.email}.`));\n            const status = el(\"div\", \"status\");\n            const setErr = (msg) => { status.textContent = msg; status.classList.add(\"err\"); };\n            const form = el(\"form\");\n            const label = el(\"label\");\n            label.htmlFor = \"bw-otp\";\n            label.textContent = \"Verification code\";\n            const input = el(\"input\", \"otp\");\n            input.id = \"bw-otp\";\n            input.type = \"text\";\n            input.inputMode = \"numeric\";\n            input.autocomplete = \"one-time-code\";\n            input.maxLength = 6;\n            input.placeholder = \"000000\";\n            input.required = true;\n            const submit = el(\"button\", \"btn primary\");\n            submit.type = \"submit\";\n            submit.textContent = \"Verify\";\n            form.append(label, input, submit);\n            const verify = () => {\n                const code = input.value.replace(/\\D+/g, \"\");\n                if (code.length < 6) {\n                    setErr(\"Enter the 6-digit code.\");\n                    return;\n                }\n                // Verifying MINTS a session, so it takes the lock like every other lane.\n                const attempt = beginAttempt();\n                if (attempt === null) {\n                    setErr(BUSY_MSG);\n                    return;\n                }\n                status.classList.remove(\"err\");\n                status.textContent = \"\";\n                submit.disabled = true;\n                input.disabled = true;\n                submit.replaceChildren(el(\"span\", \"spin\"), document.createTextNode(\"Verifying\\u2026\"));\n                handle\n                    .verify(code)\n                    .then((u) => { settleAttempt(attempt); succeed(u); })\n                    .catch((err) => {\n                    if (!settleAttempt(attempt))\n                        return;\n                    submit.disabled = false;\n                    input.disabled = false;\n                    submit.textContent = \"Verify\";\n                    input.value = \"\";\n                    input.focus();\n                    setErr(errText(err));\n                });\n            };\n            form.addEventListener(\"submit\", (e) => { e.preventDefault(); verify(); });\n            // Auto-submit once six digits are in - the buttery one-shot paste/type path.\n            input.addEventListener(\"input\", () => {\n                if (input.value.replace(/\\D+/g, \"\").length === 6 && !submit.disabled)\n                    verify();\n            });\n            card.appendChild(form);\n            card.appendChild(status);\n            const foot = el(\"div\", \"foot\");\n            const poweredBy = el(\"a\", undefined, \"Powered by Bounded\");\n            poweredBy.href = \"https://bounded.sh\";\n            poweredBy.target = \"_blank\";\n            poweredBy.rel = \"noopener\";\n            foot.appendChild(poweredBy);\n            card.appendChild(foot);\n            requestAnimationFrame(() => input.focus());\n            return card;\n        };\n        const swap = (node) => {\n            // A superseded open must not remount or re-fit the shared singleton modal -\n            // an async .then (e.g. the turnkey email lane calling swap(renderOtp)) can\n            // land after a newer open has taken over the DOM.\n            if (!owner.owns())\n                return;\n            mountContent(m, node);\n            requestAnimationFrame(() => {\n                if (owner.owns())\n                    fitPanelToContent(m);\n            });\n        };\n        swap(renderChoose());\n        showModal(m);\n    });\n}\nfunction cap(s) {\n    return s ? s[0].toUpperCase() + s.slice(1) : s;\n}\nfunction errText(err) {\n    const msg = err instanceof Error ? err.message : String(err);\n    if (/blocked/i.test(msg))\n        return \"Popup blocked - allow popups and try again.\";\n    return msg || \"Something went wrong. Try again.\";\n}\nfunction shouldFallbackToRedirect(err) {\n    const msg = err instanceof Error ? err.message : String(err);\n    return /blocked/i.test(msg) || /use loginWithRedirect\\(\\) instead/i.test(msg);\n}\n","var _a;\nimport * as React from 'react';\nimport { login as sdkLogin, logout as sdkLogout } from '../../global';\nimport { onAuthStateChanged, onAuthLoadingChanged } from '../../global';\n// Whether we're in a server-side rendering context (no hooks allowed).\n// React Native has no `window` but DOES support hooks.\n// We detect Node SSR specifically via process.versions.node to avoid\n// false positives from Node 21+ which defines `navigator` globally.\nconst isSSR = typeof window === 'undefined'\n    && typeof process !== 'undefined'\n    && !!((_a = process.versions) === null || _a === void 0 ? void 0 : _a.node);\nexport function useAuth() {\n    // Provide a fallback so server render doesn't break\n    if (isSSR) {\n        return {\n            login: async (_options) => undefined,\n            logout: async () => undefined,\n            loading: true,\n            user: null,\n        };\n    }\n    const [user, setUser] = React.useState(null);\n    const [loading, setLoading] = React.useState(true);\n    const [sdkLoading, setSdkLoading] = React.useState(false);\n    React.useEffect(() => {\n        const stopAuth = onAuthStateChanged((user) => {\n            setUser(user);\n            setLoading(false);\n        });\n        const stopLoading = onAuthLoadingChanged((loading) => {\n            setSdkLoading(loading);\n        });\n        return () => {\n            stopAuth();\n            stopLoading();\n        };\n    }, []);\n    const login = async (options) => {\n        try {\n            setLoading(true);\n            const user = await sdkLogin(options);\n            setUser(user);\n        }\n        catch (error) {\n            // Only log errors that aren't user-initiated cancellations\n            if (error !== 'exited_auth_flow' && (error === null || error === void 0 ? void 0 : error.message) !== 'exited_auth_flow') {\n                console.error('Error logging in:', error);\n            }\n            setUser(null);\n        }\n        finally {\n            setLoading(false);\n        }\n    };\n    const logout = async () => {\n        try {\n            setLoading(true);\n            await sdkLogout();\n            setUser(null);\n        }\n        catch (error) {\n            console.error('Error logging out:', error);\n        }\n        finally {\n            setLoading(false);\n        }\n    };\n    return {\n        login,\n        logout,\n        loading: loading || sdkLoading,\n        user,\n    };\n}\n","var _a;\nimport * as React from 'react';\nimport { subscribe } from '@bounded-sh/core';\n// SSR guard (mirrors useAuth): no hooks/subscriptions during Node server render.\n// React Native has no `window` but DOES support hooks, so detect Node SSR\n// specifically via process.versions.node.\nconst isSSR = typeof window === 'undefined'\n    && typeof process !== 'undefined'\n    && !!((_a = process.versions) === null || _a === void 0 ? void 0 : _a.node);\nexport function useQuery(path, options) {\n    if (isSSR) {\n        return { data: undefined, loading: true, error: null };\n    }\n    const [data, setData] = React.useState(undefined);\n    const [loading, setLoading] = React.useState(true);\n    const [error, setError] = React.useState(null);\n    // Re-subscribe only when the query actually changes (not on every render).\n    const optionsKey = options ? JSON.stringify(options) : '';\n    React.useEffect(() => {\n        if (!path) {\n            setData(undefined);\n            setLoading(false);\n            setError(null);\n            return;\n        }\n        let active = true;\n        let unsubscribe;\n        setLoading(true);\n        setError(null);\n        subscribe(path, Object.assign(Object.assign({}, options), { onData: (d) => {\n                if (!active)\n                    return;\n                // A reconnect can legitimately surface a transport error before the\n                // socket re-authenticates and sends a new authorized snapshot. That\n                // fresh snapshot is the recovery boundary: keep the error visible\n                // until data arrives, then clear it so React does not remain stuck on\n                // a failure page after realtime has recovered.\n                setError(null);\n                setData(d);\n                setLoading(false);\n            }, onError: (e) => {\n                if (!active)\n                    return;\n                setError(e instanceof Error ? e : new Error(String(e)));\n                setLoading(false);\n            } }))\n            .then((unsub) => {\n            if (active)\n                unsubscribe = unsub;\n            else\n                void unsub(); // unmounted before subscribe resolved\n        })\n            .catch((e) => {\n            if (!active)\n                return;\n            setError(e instanceof Error ? e : new Error(String(e)));\n            setLoading(false);\n        });\n        return () => {\n            active = false;\n            void (unsubscribe === null || unsubscribe === void 0 ? void 0 : unsubscribe());\n        };\n        // optionsKey captures the option object's contents; path is the other input.\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [path, optionsKey]);\n    return { data, loading, error };\n}\n","var __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nimport { getConfig, getFreshAuthToken, getSessionGeneration } from '@bounded-sh/core';\nimport { getPlatform, isVolatileStorage } from '../platform';\n/** A structured non-2xx response from the developer API. */\nexport class BuildsApiError extends Error {\n    constructor(init) {\n        super(init.message);\n        this.name = 'BuildsApiError';\n        this.code = init.code;\n        this.retryable = init.retryable;\n        this.status = init.status;\n        this.details = init.details;\n        this.retryAfterMs = init.retryAfterMs;\n    }\n}\nconst IDEMPOTENCY_STORAGE_PREFIX = 'bounded:build:idempotency:';\nfunction retryAfterMs(response) {\n    var _a, _b;\n    const value = (_b = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get) === null || _b === void 0 ? void 0 : _b.call(_a, 'Retry-After');\n    if (!value)\n        return undefined;\n    const seconds = Number(value);\n    if (Number.isFinite(seconds) && seconds >= 0)\n        return Math.ceil(seconds * 1000);\n    const at = Date.parse(value);\n    if (!Number.isFinite(at))\n        return undefined;\n    return Math.max(0, at - Date.now());\n}\nasync function responseBody(response) {\n    const text = await response.text();\n    if (!text)\n        return {};\n    try {\n        return JSON.parse(text);\n    }\n    catch (_a) {\n        return { raw: text };\n    }\n}\nfunction apiError(response, body) {\n    const envelope = body;\n    const nested = (envelope === null || envelope === void 0 ? void 0 : envelope.error) && typeof envelope.error === 'object'\n        ? envelope.error\n        : undefined;\n    const hasNestedDetails = !!nested && Object.prototype.hasOwnProperty.call(nested, 'details');\n    const hasTopLevelDetails = !!body\n        && typeof body === 'object'\n        && Object.prototype.hasOwnProperty.call(body, 'details');\n    const legacyCode = typeof (body === null || body === void 0 ? void 0 : body.error) === 'string' ? body.error : undefined;\n    const code = typeof (nested === null || nested === void 0 ? void 0 : nested.code) === 'string'\n        ? nested.code\n        : legacyCode !== null && legacyCode !== void 0 ? legacyCode : `http_${response.status}`;\n    const message = typeof (nested === null || nested === void 0 ? void 0 : nested.message) === 'string'\n        ? nested.message\n        : typeof (body === null || body === void 0 ? void 0 : body.message) === 'string'\n            ? body.message\n            : `Developer API request failed with HTTP ${response.status}`;\n    const retryable = typeof (nested === null || nested === void 0 ? void 0 : nested.retryable) === 'boolean'\n        ? nested.retryable\n        : response.status === 429 || response.status >= 500;\n    return new BuildsApiError(Object.assign(Object.assign({ code,\n        message,\n        retryable, status: response.status }, (hasNestedDetails\n        ? { details: nested === null || nested === void 0 ? void 0 : nested.details }\n        : hasTopLevelDetails\n            ? { details: body.details }\n            : {})), (response.status === 429 ? { retryAfterMs: retryAfterMs(response) } : {})));\n}\n/**\n * Force one token refresh for a 401 recovery, bound to the session that\n * authenticated the original attempt.\n *\n * Returns the refreshed bearer only when the retry may proceed under the SAME login;\n * otherwise `null`, so the caller surfaces the original 401 rather than replaying the\n * request under a principal that replaced the original mid-flight. Mirrors the core\n * HTTP client's `refreshAuthSessionOnce`.\n */\nasync function refreshDevApiTokenOnce(capturedGeneration) {\n    try {\n        // force: the server already rejected the stored token, so a locally-fresh-looking\n        // one is not evidence of anything — require a genuinely new credential.\n        const token = await getFreshAuthToken(false, { force: true });\n        if (!token)\n            return null;\n        // A refresh preserves the generation; a re-login mints a new one. An unchanged\n        // generation covers both \"still the same token\" and \"refreshed descendant\", while\n        // rejecting a retry that a concurrent login would otherwise run as someone else.\n        const currentGeneration = await getSessionGeneration(false);\n        if (currentGeneration !== capturedGeneration)\n            return null;\n        return token;\n    }\n    catch (_a) {\n        // auth_changed or a definitively rejected refresh: the retry must not proceed.\n        return null;\n    }\n}\n/** @internal Shared authenticated developer-api transport for builds and apps. */\nexport async function requestDevApi(path, request = {}) {\n    var _a;\n    const config = await getConfig();\n    const base = (_a = config.devApiUrl) === null || _a === void 0 ? void 0 : _a.replace(/\\/$/, '');\n    if (!base) {\n        throw new Error('Bounded developer API is not configured. Pass devApiUrl or a Bounded network to init().');\n    }\n    // Acquire the bearer through the same refresh-aware path the core HTTP client uses,\n    // NOT the raw stored-token accessor. Bounded ID tokens expire after ~1h while the\n    // refresh credential lives longer, so a build-only surface left open past the expiry\n    // would otherwise send a stale token, take a 401 (non-retryable here), and stop\n    // polling despite holding a valid refresh token. getFreshAuthToken refreshes when\n    // needed and binds the result to the session generation.\n    const token = await getFreshAuthToken(false);\n    if (!token) {\n        throw new BuildsApiError({\n            code: 'auth_required',\n            message: 'Sign in before calling the Bounded developer API.',\n            retryable: false,\n            status: 401,\n        });\n    }\n    // Bind any 401 recovery to the session that authenticated this first attempt.\n    const capturedGeneration = await getSessionGeneration(false);\n    const send = (bearer) => {\n        var _a;\n        const hasBody = request.body !== undefined;\n        return fetch(`${base}${path}`, Object.assign({ method: (_a = request.method) !== null && _a !== void 0 ? _a : 'GET', headers: Object.assign({ Authorization: `Bearer ${bearer}` }, (hasBody ? { 'Content-Type': 'application/json' } : {})) }, (hasBody ? { body: JSON.stringify(request.body) } : {})));\n    };\n    let response = await send(token);\n    // A token that expires between the freshness read and the server reaching it is\n    // rejected with 401. Force exactly one refresh bound to the captured generation and\n    // retry once; a build watcher would otherwise treat the 401 as permanent.\n    if (response.status === 401) {\n        const refreshed = await refreshDevApiTokenOnce(capturedGeneration);\n        if (refreshed)\n            response = await send(refreshed);\n    }\n    const body = await responseBody(response);\n    if (!response.ok)\n        throw apiError(response, body);\n    return body;\n}\nfunction intentStorageKey(intentKey) {\n    return `${IDEMPOTENCY_STORAGE_PREFIX}${intentKey}`;\n}\nfunction isValidIdempotencyKey(value) {\n    return typeof value === 'string' && value.length > 0 && value.length <= 256;\n}\n// DS3-0416: persist through the SDK platform adapter (getPlatform().sessionStorage),\n// which React Native wires to a durable backend, instead of reaching for the\n// browser `globalThis.sessionStorage` global directly and silently falling back\n// to a module-local Map that is lost on reload / RN restart. The volatile\n// in-memory fallback is no longer accepted as durable storage for a minted key.\nfunction idempotencySessionStorage() {\n    return getPlatform().sessionStorage;\n}\nfunction readPersistedIdempotencyKey(intentKey) {\n    const storageKey = intentStorageKey(intentKey);\n    try {\n        const stored = idempotencySessionStorage().getItem(storageKey);\n        if (isValidIdempotencyKey(stored))\n            return stored;\n    }\n    catch (_a) {\n        // Storage can be disabled by browser privacy policy; treat as no key.\n    }\n    return undefined;\n}\nfunction persistIdempotencyKey(intentKey, idempotencyKey) {\n    const storageKey = intentStorageKey(intentKey);\n    try {\n        idempotencySessionStorage().setItem(storageKey, idempotencyKey);\n    }\n    catch (_a) {\n        // Best-effort; durability is confirmed separately before an auto-mint is used.\n    }\n}\n/**\n * DS3-0416: confirm a just-minted key is durably retrievable before we rely on\n * it. The store must NOT be the volatile in-memory fallback, and a read-back\n * must return the exact key. Anything else means a reload / restart would mint a\n * fresh wire key and be admitted as a duplicate cost-bearing action.\n */\nfunction idempotencyKeyIsDurable(intentKey, idempotencyKey) {\n    const store = idempotencySessionStorage();\n    if (isVolatileStorage(store))\n        return false;\n    try {\n        return store.getItem(intentStorageKey(intentKey)) === idempotencyKey;\n    }\n    catch (_a) {\n        return false;\n    }\n}\nfunction randomHex(bytes) {\n    const cryptoObject = globalThis.crypto;\n    if (cryptoObject === null || cryptoObject === void 0 ? void 0 : cryptoObject.getRandomValues) {\n        const values = new Uint8Array(bytes);\n        cryptoObject.getRandomValues(values);\n        return Array.from(values, (value) => value.toString(16).padStart(2, '0')).join('');\n    }\n    let value = '';\n    for (let index = 0; index < bytes; index += 1) {\n        value += Math.floor(Math.random() * 256).toString(16).padStart(2, '0');\n    }\n    return value;\n}\nfunction mintIdempotencyKey() {\n    const cryptoObject = globalThis.crypto;\n    if (typeof (cryptoObject === null || cryptoObject === void 0 ? void 0 : cryptoObject.randomUUID) === 'function') {\n        return `build_${cryptoObject.randomUUID()}`;\n    }\n    return `build_${Date.now().toString(36)}_${randomHex(16)}`;\n}\nfunction actionIdempotencyKey(options, action) {\n    const supplied = options.idempotencyKey;\n    if (supplied !== undefined) {\n        if (!isValidIdempotencyKey(supplied)) {\n            throw new TypeError('idempotencyKey must be between 1 and 256 characters.');\n        }\n        if (options.intentKey)\n            persistIdempotencyKey(options.intentKey, supplied);\n        return supplied;\n    }\n    if (!options.intentKey) {\n        throw new TypeError(`intentKey is required when ${action} auto-mints an idempotency key.`);\n    }\n    const existing = readPersistedIdempotencyKey(options.intentKey);\n    if (existing)\n        return existing;\n    const minted = mintIdempotencyKey();\n    // This is deliberately synchronous and happens before requestDevApi can fetch.\n    persistIdempotencyKey(options.intentKey, minted);\n    // DS3-0416: fail closed when the key cannot be durably persisted (RN without a\n    // storage adapter, or blocked browser storage). Silently returning a volatile\n    // key defeats the idempotency contract: a lost-response retry after a reload /\n    // restart would mint a DIFFERENT wire key and be admitted as a duplicate\n    // cost-bearing build. Require the caller to supply an explicit durable key.\n    if (!idempotencyKeyIsDurable(options.intentKey, minted)) {\n        throw new TypeError(`${action} could not durably persist an auto-minted idempotency key: no durable session `\n            + `storage is available (React Native without a platform storage adapter, or blocked browser `\n            + `storage). Pass an explicit idempotencyKey stored durably by your app instead of intentKey.`);\n    }\n    return minted;\n}\nfunction appPath(appId) {\n    return `/app/${encodeURIComponent(appId)}/builds`;\n}\nexport async function submit(appId, options) {\n    const idempotencyKey = actionIdempotencyKey(options, 'submit()');\n    const { intentKey: _intentKey, idempotencyKey: _suppliedKey } = options, submission = __rest(options, [\"intentKey\", \"idempotencyKey\"]);\n    return requestDevApi(appPath(appId), {\n        method: 'POST',\n        body: Object.assign(Object.assign({}, submission), { idempotencyKey }),\n    });\n}\nexport async function get(appId, runId) {\n    return requestDevApi(`${appPath(appId)}/${encodeURIComponent(runId)}`);\n}\nexport async function events(appId, runId, after = 0) {\n    const cursor = Number.isFinite(after) ? Math.max(0, Math.floor(after)) : 0;\n    return requestDevApi(`${appPath(appId)}/${encodeURIComponent(runId)}/events?after=${cursor}`);\n}\nexport async function cancel(appId, runId) {\n    return requestDevApi(`${appPath(appId)}/${encodeURIComponent(runId)}/cancel`, { method: 'POST' });\n}\nexport async function decideGate(appId, runId, gateId, options) {\n    const idempotencyKey = actionIdempotencyKey(options, 'decideGate()');\n    const { intentKey: _intentKey, idempotencyKey: _suppliedKey } = options, decision = __rest(options, [\"intentKey\", \"idempotencyKey\"]);\n    return requestDevApi(`${appPath(appId)}/${encodeURIComponent(runId)}/gates/${encodeURIComponent(gateId)}/decision`, { method: 'POST', body: Object.assign(Object.assign({}, decision), { idempotencyKey }) });\n}\nexport async function refreshReviewCapability(appId, runId, gateId, options) {\n    const idempotencyKey = actionIdempotencyKey(options, 'refreshReviewCapability()');\n    return requestDevApi(`${appPath(appId)}/${encodeURIComponent(runId)}/gates/${encodeURIComponent(gateId)}/review-capability/refresh`, {\n        method: 'POST',\n        body: {\n            expectedGeneration: options.expectedGeneration,\n            expectedExpiresAtMs: options.expectedExpiresAtMs,\n            expectedRecoveryUntilMs: options.expectedRecoveryUntilMs,\n            expectedAudience: options.expectedAudience,\n            expectedReviewerBindingHash: options.expectedReviewerBindingHash,\n            idempotencyKey,\n        },\n    });\n}\n/**\n * Read one exact delegated-review capability and its narrow lifecycle result.\n * This does not refresh or extend the window and exposes no generic run-view\n * authority.\n */\nexport async function getReviewCapability(appId, runId, gateId, options) {\n    return requestDevApi(`${appPath(appId)}/${encodeURIComponent(runId)}/gates/${encodeURIComponent(gateId)}/review-capability`, {\n        method: 'POST',\n        body: { expectedPreviewUrl: options.expectedPreviewUrl },\n    });\n}\nexport async function topup(appId, runId, options) {\n    return requestDevApi(`${appPath(appId)}/${encodeURIComponent(runId)}/topup`, { method: 'POST', body: options });\n}\nexport async function list(appId, limit = 20) {\n    const requestedLimit = Number.isFinite(limit) ? Math.max(1, Math.floor(limit)) : 20;\n    return requestDevApi(`${appPath(appId)}?limit=${requestedLimit}`);\n}\n","// Source of truth for these strings:\n// packages/cdk/cloudflare/bounded-build/src/types.ts. Keep them string-pinned;\n// wire:1 remains additive and callers must tolerate unknown response strings.\nexport const NON_TERMINAL_STATES = [\n    'queued',\n    'admitted',\n    'executing',\n    'preview_ready',\n    'parked',\n    'resuming',\n    'promoting',\n    'quarantined',\n];\nexport const TERMINAL_STATES = [\n    'promoted',\n    'failed',\n    'canceled',\n    'rejected',\n    'expired',\n    'rebase_required',\n    'reported',\n];\nexport const RUN_STATES = [\n    ...NON_TERMINAL_STATES,\n    ...TERMINAL_STATES,\n];\nexport const PARK_REASONS = ['gate', 'funding'];\nexport const FAILURE_REASONS = [\n    'admission_rejected',\n    'dispatch_timeout',\n    'auth_revoked',\n    'owner_changed',\n    'policy_changed',\n    'quarantine_forced',\n    'bind_failed',\n    'internal_error',\n];\nexport const BUILD_REVIEW_CAPABILITY_SCHEMA = 'bounded.build-review-capability.v1';\nexport const BUILD_REVIEW_CAPABILITY_REFRESH_SCHEMA = 'bounded.build-review-capability-refresh.v1';\nexport const BUILD_DELEGATED_REVIEW_CAPABILITY_SCHEMA = 'bounded.build-delegated-review-capability.v1';\n","import { BuildsApiError, events as getEvents, get as getRun, } from './client';\nimport { TERMINAL_STATES } from './types';\nconst FAST_POLL_MS = 1000;\nconst NORMAL_POLL_MS = 2000;\nconst PARKED_POLL_MS = 5000;\nconst LONG_RUNNING_POLL_MS = 10000;\nconst THIRTY_SECONDS_MS = 30000;\nconst TWO_MINUTES_MS = 2 * 60000;\nconst TEN_MINUTES_MS = 10 * 60000;\nconst terminalStates = new Set(TERMINAL_STATES);\nfunction pollCadence(state, elapsedMs) {\n    if (elapsedMs >= TEN_MINUTES_MS)\n        return LONG_RUNNING_POLL_MS;\n    if ((state === null || state === void 0 ? void 0 : state.startsWith('parked')) || elapsedMs >= TWO_MINUTES_MS)\n        return PARKED_POLL_MS;\n    // The first 30s is where the user is staring at \"waiting for a build slot\" /\n    // \"building\" and every transition matters most; poll fast, then relax.\n    if (elapsedMs < THIRTY_SECONDS_MS)\n        return FAST_POLL_MS;\n    return NORMAL_POLL_MS;\n}\nfunction retryCadence(error, state, elapsedMs) {\n    const cadence = pollCadence(state, elapsedMs);\n    if (error instanceof BuildsApiError && error.status === 429 && error.retryAfterMs !== undefined) {\n        return Math.max(cadence, error.retryAfterMs);\n    }\n    return cadence;\n}\nfunction hasRetryAfter(error) {\n    return error instanceof BuildsApiError\n        && error.status === 429\n        && error.retryAfterMs !== undefined;\n}\n// A permanent API refusal (expired session, revoked access, unknown run) will\n// never heal by re-polling; the loop must stop and surface it instead of\n// retrying forever. 429 stays retryable regardless of the server envelope.\nfunction isPermanentError(error) {\n    return error instanceof BuildsApiError\n        && error.status !== 429\n        && error.retryable === false;\n}\nfunction newEvents(rows, lastSeq, seen) {\n    const cursorBeforePoll = lastSeq;\n    const fresh = [];\n    let nextCursor = lastSeq;\n    for (const event of rows) {\n        if (!Number.isFinite(event === null || event === void 0 ? void 0 : event.seq))\n            continue;\n        nextCursor = Math.max(nextCursor, event.seq);\n        if (event.seq <= cursorBeforePoll || seen.has(event.seq))\n            continue;\n        seen.add(event.seq);\n        fresh.push(event);\n    }\n    return { events: fresh, lastSeq: nextCursor };\n}\n/**\n * Poll a build view and its event cursor until stopped or the run reaches a\n * known terminal state. Unknown state strings remain untouched and nonterminal.\n */\nexport function watch(appId, runId, onUpdate, options = {}) {\n    const startedAt = Date.now();\n    const seenSeqs = new Set();\n    let lastSeq = Number.isFinite(options.after)\n        ? Math.max(0, Math.floor(options.after))\n        : 0;\n    let timer;\n    let active = true;\n    let lastState;\n    const stop = () => {\n        active = false;\n        if (timer !== undefined) {\n            clearTimeout(timer);\n            timer = undefined;\n        }\n    };\n    const schedule = (delayMs) => {\n        if (!active)\n            return;\n        timer = setTimeout(() => {\n            timer = undefined;\n            void poll();\n        }, delayMs);\n    };\n    const reportError = (error) => {\n        var _a;\n        try {\n            (_a = options.onError) === null || _a === void 0 ? void 0 : _a.call(options, error);\n        }\n        catch (_b) {\n            // A consumer error callback must not break the transport loop.\n        }\n    };\n    const publish = (run, events) => {\n        try {\n            onUpdate({ run, events });\n        }\n        catch (_a) {\n            // Polling is transport state; consumer render errors must not strand it.\n        }\n    };\n    const poll = async () => {\n        if (!active)\n            return;\n        // Fire the view and the events page concurrently: the events cursor (lastSeq)\n        // does not depend on the run view, so there is no reason to pay two serial\n        // round-trips per tick. Error semantics below are unchanged — the run result\n        // still gates, and a failed events page still publishes the run with no rows.\n        const runPromise = getRun(appId, runId);\n        const eventsPromise = getEvents(appId, runId, lastSeq);\n        // Keep the in-flight events page from becoming an unhandled rejection if the\n        // run result makes us bail before awaiting it; the real await below still sees it.\n        eventsPromise.catch(() => { });\n        let run;\n        try {\n            const view = await runPromise;\n            if (!active)\n                return;\n            run = view.run;\n            lastState = run.state;\n        }\n        catch (error) {\n            if (!active)\n                return;\n            reportError(error);\n            if (isPermanentError(error)) {\n                stop();\n                return;\n            }\n            schedule(retryCadence(error, lastState, Date.now() - startedAt));\n            return;\n        }\n        try {\n            const response = await eventsPromise;\n            if (!active)\n                return;\n            const deduped = newEvents(Array.isArray(response.events) ? response.events : [], lastSeq, seenSeqs);\n            lastSeq = deduped.lastSeq;\n            publish(run, deduped.events);\n        }\n        catch (error) {\n            if (!active)\n                return;\n            // The view still advances UI state even when event replay is rate-limited.\n            publish(run, []);\n            reportError(error);\n            if (terminalStates.has(run.state)) {\n                // The run itself is done, but a rate-limited final event replay still\n                // owes the caller its unseen seq rows. Honor Retry-After, retry the\n                // piggyback once the limiter permits it, then stop after a successful\n                // replay. Other terminal replay failures stop normally.\n                if (hasRetryAfter(error)) {\n                    schedule(retryCadence(error, run.state, Date.now() - startedAt));\n                    return;\n                }\n                stop();\n                return;\n            }\n            if (isPermanentError(error)) {\n                stop();\n                return;\n            }\n            schedule(retryCadence(error, run.state, Date.now() - startedAt));\n            return;\n        }\n        if (!active)\n            return;\n        if (terminalStates.has(run.state)) {\n            // Drain the remaining event pages before stopping: a resumed terminal\n            // watch may owe the caller more rows than one page returns. Each page\n            // advances the cursor, so the loop terminates; the cap is a backstop.\n            for (let page = 0; page < 50 && active; page += 1) {\n                let drained;\n                try {\n                    const response = await getEvents(appId, runId, lastSeq);\n                    if (!active)\n                        return;\n                    drained = newEvents(Array.isArray(response.events) ? response.events : [], lastSeq, seenSeqs);\n                }\n                catch (error) {\n                    reportError(error);\n                    break;\n                }\n                if (drained.events.length === 0)\n                    break;\n                lastSeq = drained.lastSeq;\n                publish(run, drained.events);\n            }\n            stop();\n            return;\n        }\n        schedule(pollCadence(run.state, Date.now() - startedAt));\n    };\n    void poll();\n    return { stop };\n}\n","var _a;\nimport * as React from 'react';\nimport { watch } from '../builds/watch';\n// SSR guard (mirrors useAuth): no hooks/subscriptions during Node server render.\n// React Native has no `window` but DOES support hooks, so detect Node SSR\n// specifically via process.versions.node.\nconst isSSR = typeof window === 'undefined'\n    && typeof process !== 'undefined'\n    && !!((_a = process.versions) === null || _a === void 0 ? void 0 : _a.node);\nexport function useBuildRun(appId, runId, options) {\n    if (isSSR) {\n        return { run: null, events: [], loading: true, error: null };\n    }\n    const [run, setRun] = React.useState(null);\n    const [events, setEvents] = React.useState([]);\n    const [loading, setLoading] = React.useState(true);\n    const [error, setError] = React.useState(null);\n    const optionsKey = options ? JSON.stringify(options) : '';\n    React.useEffect(() => {\n        setRun(null);\n        setEvents([]);\n        setError(null);\n        if (!appId || !runId) {\n            setLoading(false);\n            return;\n        }\n        let active = true;\n        setLoading(true);\n        const handle = watch(appId, runId, ({ run: nextRun, events: nextEvents }) => {\n            if (!active)\n                return;\n            setRun(nextRun);\n            if (nextEvents.length > 0) {\n                setEvents((current) => {\n                    const seen = new Set(current.map((event) => event.seq));\n                    return [...current, ...nextEvents.filter((event) => !seen.has(event.seq))];\n                });\n            }\n            setError(null);\n            setLoading(false);\n        }, Object.assign(Object.assign({}, options), { onError: (value) => {\n                if (!active)\n                    return;\n                setError(value instanceof Error ? value : new Error(String(value)));\n                setLoading(false);\n            } }));\n        return () => {\n            active = false;\n            handle.stop();\n        };\n        // optionsKey captures the option object's contents; ids are the other inputs.\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [appId, runId, optionsKey]);\n    return { run, events, loading, error };\n}\n","import { cancel, decideGate, events, get, getReviewCapability, list, refreshReviewCapability, submit, topup, } from './client';\nimport { watch } from './watch';\n/**\n * Registered first-party product surfaces only, with\n * one exact Drafted exception for delegated review/decision routes. Other\n * generated-app origins remain blocked; server-side callers are unaffected.\n */\nexport const builds = {\n    submit,\n    get,\n    getReviewCapability,\n    events,\n    cancel,\n    decideGate,\n    refreshReviewCapability,\n    topup,\n    list,\n    watch,\n};\nexport { BuildsApiError } from './client';\nexport * from './types';\n","import { requestDevApi } from './client';\nexport async function create(options = {}) {\n    const body = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (options.name !== undefined ? { name: options.name } : {})), (options.prompt !== undefined ? { prompt: options.prompt } : {})), (options.idempotencyKey !== undefined ? { idempotencyKey: options.idempotencyKey } : {})), (options.intent !== undefined ? { intent: options.intent } : {})), (options.oapp === true ? { oapp: true } : {}));\n    const app = await requestDevApi('/apps/new', {\n        method: 'POST',\n        body,\n    });\n    return Object.assign(Object.assign(Object.assign(Object.assign({ appId: app.appId }, (typeof app.slug === 'string' && app.slug ? { slug: app.slug } : {})), { url: app.url }), (typeof app.prompt === 'string' && app.prompt ? { prompt: app.prompt } : {})), (typeof app.handoff === 'string' && app.handoff ? { handoff: app.handoff } : {}));\n}\n/**\n * F-1200: build the create-flow redirect the owner is sent to after `create()`, with the\n * prompt and handoff carried in the URL FRAGMENT (never the query - fragments never reach\n * servers, logs, or Referer). Encoding is byte-exact so the widget's `URLSearchParams`\n * parse + `.trim()` reproduces the SAME prompt string dev-api hashed into the handoff;\n * getting this wrong would make the widget reject a genuine token and degrade to prefill.\n * First-party product callers should use this instead of hand-building the URL.\n *\n * Returns `${url}#bounded_prompt=<prompt>` with no `&bounded_handoff=` when the server\n * minted no handoff (HANDOFF_SECRET unset) - the widget then prefills without auto-running.\n */\nexport function buildCreateRedirectUrl(app) {\n    const base = app.url;\n    const prompt = typeof app.prompt === 'string' ? app.prompt.trim() : '';\n    if (!prompt)\n        return base;\n    const params = `bounded_prompt=${encodeURIComponent(prompt)}`\n        + (app.handoff ? `&bounded_handoff=${encodeURIComponent(app.handoff)}` : '');\n    return `${base}#${params}`;\n}\nexport async function list() {\n    // Keep this legacy-compatible action shape for existing first-party callers.\n    const response = await requestDevApi('/', {\n        method: 'POST',\n        body: { action: 'listApps' },\n    });\n    const rows = Array.isArray(response.apps) ? response.apps : [];\n    return rows\n        .map((value) => {\n        var _a, _b, _c, _d;\n        const row = value && typeof value === 'object'\n            ? value\n            : {};\n        const appId = String((_c = (_b = (_a = row._id) !== null && _a !== void 0 ? _a : row.id) !== null && _b !== void 0 ? _b : row.appId) !== null && _c !== void 0 ? _c : '');\n        if (!/^[a-f0-9]{24}$/i.test(appId))\n            return null;\n        const name = String((_d = row.name) !== null && _d !== void 0 ? _d : '').trim() || '(unnamed app)';\n        const slug = typeof row.slug === 'string' && row.slug ? row.slug : undefined;\n        const url = typeof row.url === 'string' && row.url.trim() ? row.url.trim() : undefined;\n        const buildStatus = row.buildStatus === 'building' || row.buildStatus === 'build_failed'\n            ? row.buildStatus\n            : undefined;\n        return Object.assign(Object.assign(Object.assign({ appId,\n            name }, (slug ? { slug } : {})), (url ? { url } : {})), (buildStatus ? { buildStatus } : {}));\n    })\n        .filter((app) => app !== null);\n}\n/**\n * Registered first-party product surfaces only -\n * dev-api CORS blocks calls from generated-app origins. Server-side callers unaffected.\n */\nexport const apps = { create, list, buildCreateRedirectUrl };\n","import { getIdToken as getIdTokenCore } from '@bounded-sh/core';\n// Wrapper for getIdToken - passes isServer=false for client-side usage\nexport async function getIdToken() {\n    return getIdTokenCore(false);\n}\n","// bounded.onramp() - fund the signed-in user's wallet with Coinbase Onramp.\n//\n// Web-only. Opens Coinbase's hosted checkout (pay.coinbase.com) in a popup\n// (new-tab fallback) using a single-use session token minted by the Bounded\n// platform at POST <origin>/__bounded/onramp/session on the app's own origin.\n// The platform holds the Coinbase credential; the app never sees it. The\n// session is bound server-side to the caller's verified Bounded JWT, and the\n// destination defaults to that user's embedded wallet.\n//\n// Amount semantics:\n//   amountUsd    - exact fiat in; the fee/output breakdown comes back as `quote`.\n//   minAmountOut - a FLOOR on crypto received. The platform quotes Coinbase's\n//     worst-fee payment method (card) and pads by `slippagePad` (default 1%),\n//     so cheaper methods overshoot the floor rather than undershooting it. The\n//     floor holds unless the market moves more than the pad while the user sits\n//     on the checkout screen - which is why completion is VERIFIED: after the\n//     popup closes we poll the platform's status leg and resolve with the\n//     actual filled amount when Coinbase reports it.\n//\n// Works on Bounded-served origins (<app>.bounded.page / custom domains). On a\n// local dev origin the session endpoint does not exist; we fail with a clear\n// error rather than guessing a host.\nimport { getFreshAuthToken, getSessionGeneration } from '@bounded-sh/core';\nimport { getCurrentUser } from './global';\nfunction hasDOM() {\n    return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * DS3-0415: force one token refresh for a 401 recovery, bound to the session that\n * authenticated the original attempt. Returns the refreshed bearer only when the retry\n * may proceed under the SAME login; otherwise `null`, so the caller surfaces the original\n * 401 rather than replaying the request under a principal that replaced the original\n * mid-flight. Mirrors builds/client.ts:refreshDevApiTokenOnce.\n */\nasync function refreshOnrampTokenOnce(capturedGeneration) {\n    try {\n        // force: the server already rejected the stored token, so a locally-fresh-looking\n        // one is not evidence of anything - require a genuinely new credential.\n        const token = await getFreshAuthToken(false, { force: true });\n        if (!token)\n            return null;\n        // A refresh preserves the generation; a re-login mints a new one. An unchanged\n        // generation covers both \"still the same token\" and \"refreshed descendant\", while\n        // rejecting a retry that a concurrent login would otherwise run as someone else.\n        const currentGeneration = await getSessionGeneration(false);\n        if (currentGeneration !== capturedGeneration)\n            return null;\n        return token;\n    }\n    catch (_a) {\n        // auth_changed or a definitively rejected refresh: the retry must not proceed.\n        return null;\n    }\n}\nasync function authedFetch(path, init) {\n    var _a, _b;\n    // DS3-0415: acquire the bearer through the same refresh-aware core path the HTTP\n    // client uses (getFreshAuthToken), NOT the raw non-refreshing accessor. Bounded ID\n    // tokens expire after ~1h while the refresh credential lives longer, so an onramp\n    // surface left open past the expiry would otherwise send a stale token and take a 401\n    // with no recovery. getFreshAuthToken refreshes when needed and binds to the session.\n    const idToken = await getFreshAuthToken(false);\n    if (!idToken)\n        throw new Error('onramp: no active session - call login() first');\n    // Bind any 401 recovery to the session that authenticated this first attempt.\n    const capturedGeneration = await getSessionGeneration(false);\n    const send = (bearer) => fetch(`${window.location.origin}${path}`, Object.assign(Object.assign({}, init), { headers: Object.assign(Object.assign({}, init === null || init === void 0 ? void 0 : init.headers), { Authorization: `Bearer ${bearer}` }) }));\n    let response = await send(idToken);\n    // A token that expires between the freshness read and the server reaching it is\n    // rejected with 401. Force exactly one refresh bound to the captured generation and\n    // retry once.\n    if (response.status === 401) {\n        const refreshed = await refreshOnrampTokenOnce(capturedGeneration);\n        if (refreshed) {\n            // Release the discarded 401 body before replaying to avoid an unconsumed-stream\n            // warning / pooled-connection retention under undici / React Native.\n            try {\n                await ((_b = (_a = response.body) === null || _a === void 0 ? void 0 : _a.cancel) === null || _b === void 0 ? void 0 : _b.call(_a));\n            }\n            catch ( /* ignore */_c) { /* ignore */ }\n            response = await send(refreshed);\n        }\n    }\n    return response;\n}\nasync function readError(res) {\n    var _a;\n    try {\n        return (_a = (await res.json()).error) !== null && _a !== void 0 ? _a : '';\n    }\n    catch (_b) {\n        return '';\n    }\n}\nfunction sessionBody(options, extra) {\n    return JSON.stringify(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (options.asset ? { asset: options.asset } : {})), (options.amountUsd !== undefined ? { amountUsd: options.amountUsd } : {})), (options.minAmountOut !== undefined ? { minAmountOut: options.minAmountOut } : {})), (options.slippagePad !== undefined ? { slippagePad: options.slippagePad } : {})), extra));\n}\nfunction resolveAddress() {\n    var _a;\n    const user = getCurrentUser();\n    const address = (_a = user === null || user === void 0 ? void 0 : user.address) !== null && _a !== void 0 ? _a : undefined;\n    if (!address) {\n        throw new Error(user\n            ? 'onramp: the signed-in account has no wallet address (create one via the embedded wallet flow)'\n            : 'onramp: no signed-in user - call login() first');\n    }\n    return address;\n}\n/**\n * Preview a quote (fees + exact/floor output) WITHOUT opening any window or\n * consuming a session. Show this to the user, then call onramp() to check out.\n */\nexport async function onrampQuote(options = {}) {\n    if (!hasDOM())\n        throw new Error('onrampQuote is web-only');\n    resolveAddress();\n    const res = await authedFetch('/__bounded/onramp/session', {\n        method: 'POST',\n        headers: { 'content-type': 'application/json' },\n        body: sessionBody(options, { quoteOnly: true }),\n    });\n    if (!res.ok)\n        throw new Error(`onrampQuote: failed (${res.status}${await readError(res).then((e) => (e ? `: ${e}` : ''))})`);\n    return (await res.json());\n}\n/** The signed-in user's recent onramp transactions (newest first). */\nexport async function onrampStatus(sinceMs) {\n    if (!hasDOM())\n        throw new Error('onrampStatus is web-only');\n    const res = await authedFetch(`/__bounded/onramp/status${sinceMs ? `?since=${Math.floor(sinceMs)}` : ''}`);\n    if (!res.ok)\n        throw new Error(`onrampStatus: failed (${res.status})`);\n    return (await res.json()).transactions;\n}\nfunction isSuccess(t) {\n    return /SUCCESS|COMPLETED/i.test(t.status);\n}\nfunction isPending(t) {\n    return /PROGRESS|PENDING|CREATED/i.test(t.status);\n}\nasync function verifyCompletion(openedAt, asset, timeoutMs) {\n    const deadline = Date.now() + timeoutMs;\n    // 60s of clock-skew slack on `since`: Coinbase stamps server-side.\n    const since = openedAt - 60000;\n    for (;;) {\n        let sawPending = false;\n        try {\n            const txs = await onrampStatus(since);\n            const done = txs.find((t) => isSuccess(t) && (t.asset === null || t.asset === asset));\n            if (done)\n                return done;\n            sawPending = txs.some(isPending);\n        }\n        catch ( /* transient - keep polling until the deadline */_a) { /* transient - keep polling until the deadline */ }\n        // No completed fill and nothing in flight: one grace poll cycle still\n        // runs (Coinbase's record can lag the redirect), but don't burn the\n        // full window when the user plainly abandoned checkout.\n        if (Date.now() >= deadline)\n            return null;\n        if (!sawPending && Date.now() >= openedAt + 12000 && Date.now() - openedAt > timeoutMs / 2)\n            return null;\n        await new Promise((r) => setTimeout(r, 3000));\n    }\n}\n/**\n * Open Coinbase Onramp for the signed-in user. Resolves after the window\n * closes, with completion VERIFIED against Coinbase when possible.\n * Call from a click handler - popup blockers require user activation.\n */\nexport async function onramp(options = {}) {\n    var _a;\n    if (!hasDOM())\n        throw new Error('onramp() is web-only');\n    resolveAddress();\n    // Open the window synchronously - BEFORE any await - so the click's transient\n    // user-activation is not consumed by the session fetch below. A window.open\n    // issued after the fetch is rejected by strict popup blockers even from a\n    // click handler, because activation can expire across the awaited round trip.\n    // This holds for BOTH the popup and the documented new-tab mode (same\n    // hard-won pattern as loginWithPopup). We navigate this placeholder to the\n    // checkout URL once the session is minted; if no handle can be opened\n    // synchronously we require a fresh user action rather than a delayed open.\n    let handle;\n    if (options.newTab) {\n        handle = window.open('', '_blank');\n    }\n    else {\n        const w = options.width || 460;\n        const h = options.height || 720;\n        const left = window.screenX + (window.outerWidth - w) / 2;\n        const top = window.screenY + (window.outerHeight - h) / 2;\n        handle = window.open('', 'bounded-onramp', `width=${w},height=${h},left=${left},top=${top}`);\n    }\n    if (!handle)\n        throw new Error('onramp: window.open was blocked - call onramp() from a click handler');\n    let session;\n    try {\n        const res = await authedFetch('/__bounded/onramp/session', {\n            method: 'POST',\n            headers: { 'content-type': 'application/json' },\n            body: sessionBody(options),\n        });\n        if (!res.ok) {\n            const detail = await readError(res);\n            if (res.status === 404) {\n                throw new Error('onramp: session endpoint not found - onramp works on Bounded-served origins (your deployed app URL), not local dev servers');\n            }\n            throw new Error(`onramp: session mint failed (${res.status}${detail ? `: ${detail}` : ''})`);\n        }\n        session = (await res.json());\n    }\n    catch (error) {\n        try {\n            handle.close();\n        }\n        catch ( /* ignore */_b) { /* ignore */ }\n        throw error;\n    }\n    const openedAt = Date.now();\n    const base = Object.assign({ address: session.address, asset: session.asset }, (session.quote ? { quote: session.quote } : {}));\n    // Navigate the pre-opened placeholder to the checkout URL.\n    try {\n        handle.location.replace(session.url);\n    }\n    catch (_c) {\n        try {\n            handle.location.href = session.url;\n        }\n        catch (_d) {\n            try {\n                handle.close();\n            }\n            catch ( /* ignore */_e) { /* ignore */ }\n            throw new Error('onramp: window failed to navigate - retry from a fresh user action (click)');\n        }\n    }\n    if (options.newTab) {\n        // Cross-origin tab close is not observable, so resolve immediately;\n        // verify completion later via onrampStatus().\n        return Object.assign(Object.assign({}, base), { status: 'opened' });\n    }\n    // Popup mode: wait for the window to close, then VERIFY completion.\n    await new Promise((resolve) => {\n        const timer = setInterval(() => {\n            if (handle.closed) {\n                clearInterval(timer);\n                resolve();\n            }\n        }, 500);\n    });\n    const fill = await verifyCompletion(openedAt, session.asset, (_a = options.completionTimeoutMs) !== null && _a !== void 0 ? _a : 24000);\n    if (fill) {\n        return Object.assign(Object.assign(Object.assign(Object.assign({}, base), { status: 'completed' }), (fill.amountOut !== null ? { actualOut: fill.amountOut } : {})), (fill.txHash ? { txHash: fill.txHash } : {}));\n    }\n    return Object.assign(Object.assign({}, base), { status: 'closed' });\n}\n","/**\n * DS3-0414: does the transaction already carry a REAL signer signature? A Solana\n * signature is computed over the compiled message, which INCLUDES recentBlockhash, so\n * the blockhash must not be rewritten once any signer (sponsor / multisig / co-signer)\n * has signed - a rewrite silently invalidates their signature. Legacy signatures are\n * `{ signature: Buffer | null }` entries; versioned signatures are 64-byte arrays that\n * stay all-zero placeholders until a signer fills them. Mirrors turnkey-signer-bridge.ts.\n */\nexport function transactionHasSignature(transaction) {\n    if ('serializeMessage' in transaction) {\n        return transaction.signatures.some((s) => s.signature != null);\n    }\n    return transaction.signatures.some((sig) => sig.some((b) => b !== 0));\n}\n/**\n * Extracts a human-readable error message from Solana transaction logs.\n */\nexport function extractTransactionError(err, logMessages) {\n    if (logMessages) {\n        return JSON.stringify(logMessages);\n    }\n    if (err) {\n        try {\n            return JSON.stringify(err);\n        }\n        catch (_a) {\n            return String(err);\n        }\n    }\n    return 'Unknown transaction error';\n}\n/**\n * Polls getSignatureStatuses until the transaction is confirmed, then checks for errors.\n * Throws if the transaction failed on-chain. Returns parsed transaction info on success.\n */\nexport async function confirmAndCheckTransaction(connection, signature) {\n    var _a;\n    const maxAttempts = 15;\n    for (let i = 0; i < maxAttempts; i++) {\n        const { value } = await connection.getSignatureStatuses([signature]);\n        const status = value[0];\n        if (status) {\n            if (status.err) {\n                const txInfo = await connection.getParsedTransaction(signature, {\n                    maxSupportedTransactionVersion: 0,\n                    commitment: 'confirmed'\n                });\n                const errorMessage = extractTransactionError(status.err, (_a = txInfo === null || txInfo === void 0 ? void 0 : txInfo.meta) === null || _a === void 0 ? void 0 : _a.logMessages);\n                throw new Error(`Transaction failed: ${errorMessage}`);\n            }\n            if (status.confirmationStatus === 'confirmed' || status.confirmationStatus === 'finalized') {\n                return await connection.getParsedTransaction(signature, {\n                    maxSupportedTransactionVersion: 0,\n                    commitment: 'confirmed'\n                });\n            }\n        }\n        await new Promise(resolve => setTimeout(resolve, 1000));\n    }\n    throw new Error('Transaction confirmation timeout');\n}\n","/**\n * Privy Expo Auth Provider — React Native implementation of AuthProvider.\n *\n * Uses @privy-io/expo instead of @privy-io/react-auth.\n * Persists the session through getActiveSessionManager() (the RN store on React\n * Native), and mints it via the SIWS wallet-signature path — identical to\n * Phantom/MWA — so no Privy-specific backend verification is required.\n *\n * IMPORTANT — Expo/RN consumers must:\n *   1. Install polyfills: fast-text-encoding, react-native-get-random-values\n *   2. Install @privy-io/expo, @privy-io/expo-native-extensions\n *   3. Call ReactNativeSessionManager.configure({ storage, atob }) at startup\n *   4. Call setPlatform({ ... }) from @bounded-sh/client at startup\n *   5. Wrap their app tree with PrivyProvider from @privy-io/expo\n *   6. Create this provider and pass the Privy hooks/methods via setPrivyMethods()\n *\n * Unlike the web PrivyWalletProvider which renders a hidden React DOM tree\n * to host Privy's React context, this provider expects the RN app itself\n * to render <PrivyProvider> and then bridge the hooks via setPrivyMethods().\n */\nimport { getActiveSessionManager as SessionManager, createSessionWithSignature, genAuthNonce, genSolanaMessage, } from '@bounded-sh/core';\nimport { Buffer } from 'buffer';\nimport { setCurrentUser } from '../../global';\nimport { getPlatform } from '../../platform';\nimport { normalizeSolanaRpcUrl, resolveSolanaRpcUrl } from '../solana-rpc';\nimport { confirmAndCheckTransaction, transactionHasSignature } from './transaction-utils';\nimport bs58 from 'bs58';\n// -----------------------------------------------------------------------\n// Provider implementation\n// -----------------------------------------------------------------------\nexport class PrivyExpoProvider {\n    constructor(appId, networkUrl = null) {\n        this.privyMethods = null;\n        // DS3-0411: the embedded Privy wallet address this session was minted for. The\n        // Privy account can change under us (a different embedded wallet becomes\n        // selected) without a fresh Bounded login; if the currently selected wallet is\n        // not the one we authenticated, we must REFUSE to sign rather than sign as a\n        // principal the Bounded session never proved. Set on login/restore, cleared on\n        // logout; a fresh login rebinds it. Mirrors the injected wallet providers.\n        this.authenticatedAddress = null;\n        this.appId = appId;\n        this.networkUrl = normalizeSolanaRpcUrl(networkUrl);\n    }\n    /**\n     * Bridge Privy hooks from the app's React tree into this provider.\n     *\n     * Call this from a component rendered inside <PrivyProvider>:\n     * ```tsx\n     * const privy = usePrivy();\n     * const wallet = useEmbeddedSolanaWallet();\n     * const { getAccessToken } = usePrivy();\n     * const { getIdentityToken } = useIdentityToken();\n     *\n     * useEffect(() => {\n     *   provider.setPrivyMethods({\n     *     isReady: privy.isReady,\n     *     isAuthenticated: !!privy.user,\n     *     user: privy.user,\n     *     login: privy.login,\n     *     logout: privy.logout,\n     *     getAccessToken,\n     *     getIdentityToken,\n     *     getWalletProvider: async () => {\n     *       if (!wallet.wallets[0]) return null;\n     *       const provider = await wallet.wallets[0].getProvider();\n     *       return {\n     *         address: wallet.wallets[0].address,\n     *         signMessage: provider.signMessage,\n     *         signTransaction: provider.signTransaction,\n     *         signAndSendTransaction: provider.signAndSendTransaction,\n     *       };\n     *     },\n     *   });\n     * }, [privy.isReady, privy.user, wallet.wallets]);\n     * ```\n     */\n    setPrivyMethods(methods) {\n        this.privyMethods = methods;\n    }\n    // -------------------------------------------------------------------\n    // AuthProvider interface\n    // -------------------------------------------------------------------\n    async login() {\n        var _a;\n        await this.ensureReady();\n        // Check for existing session — verify the stored address matches the\n        // currently authenticated Privy wallet (guards against account switches\n        // without an explicit logout).\n        const session = await SessionManager().getSession();\n        if (session && ((_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.isAuthenticated)) {\n            const wallet = await this.privyMethods.getWalletProvider();\n            if (wallet && wallet.address === session.address) {\n                this.authenticatedAddress = session.address;\n                return { provider: this, address: session.address };\n            }\n            // Stale session — clear and continue to fresh login flow\n            await SessionManager().clearSession();\n        }\n        // Trigger Privy login\n        const privyUser = await this.privyMethods.login();\n        if (!privyUser)\n            return null;\n        // Get the wallet\n        const wallet = await this.privyMethods.getWalletProvider();\n        if (!wallet) {\n            throw new Error('No embedded Solana wallet found after login. Ensure embeddedWallets.solana.createOnLogin is configured.');\n        }\n        // Mint a Bounded session by having the Privy Solana wallet sign the\n        // standard SIWS challenge — identical to Phantom/MWA, so the backend mints\n        // the session via the proven wallet-signature path (no Privy-specific\n        // token verification needed).\n        await this.createSession(wallet.address, wallet);\n        this.authenticatedAddress = wallet.address;\n        const user = { provider: this, address: wallet.address };\n        setCurrentUser(user);\n        return user;\n    }\n    async signMessage(message) {\n        await this.ensureReady();\n        const wallet = await this.getWalletOrThrow('signing');\n        const messageBytes = getPlatform().textEncode(message);\n        const result = await wallet.signMessage(messageBytes);\n        return bs58.encode(result.signature);\n    }\n    async signTransaction(transaction) {\n        await this.ensureReady();\n        const { Connection, PublicKey, Transaction, VersionedTransaction } = await import(\"@solana/web3.js\");\n        const wallet = await this.getWalletOrThrow('signing this transaction');\n        // Ensure blockhash is set\n        const isLegacyTx = 'recentBlockhash' in transaction &&\n            !('message' in transaction && 'staticAccountKeys' in transaction.message);\n        if (isLegacyTx) {\n            const legacyTx = transaction;\n            if (!legacyTx.recentBlockhash) {\n                const rpcUrl = this.getRpcUrl();\n                const connection = new Connection(rpcUrl, 'confirmed');\n                const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n                legacyTx.recentBlockhash = blockhash;\n                legacyTx.lastValidBlockHeight = lastValidBlockHeight;\n            }\n            if (!legacyTx.feePayer) {\n                legacyTx.feePayer = new PublicKey(wallet.address);\n            }\n        }\n        else {\n            const versionedTx = transaction;\n            if (!versionedTx.message.recentBlockhash) {\n                const rpcUrl = this.getRpcUrl();\n                const connection = new Connection(rpcUrl, 'confirmed');\n                const { blockhash } = await connection.getLatestBlockhash('confirmed');\n                versionedTx.message.recentBlockhash = blockhash;\n            }\n        }\n        const result = await wallet.signTransaction(transaction);\n        // Deserialize the signed transaction\n        const signedBytes = result.signedTransaction;\n        try {\n            return VersionedTransaction.deserialize(signedBytes);\n        }\n        catch (_a) {\n            return Transaction.from(signedBytes);\n        }\n    }\n    async signAndSubmitTransaction(transaction, feePayer) {\n        await this.ensureReady();\n        const { Connection, PublicKey } = await import(\"@solana/web3.js\");\n        const wallet = await this.getWalletOrThrow('submitting this transaction');\n        const rpcUrl = this.getRpcUrl();\n        const connection = new Connection(rpcUrl, 'confirmed');\n        // Ensure blockhash.\n        // DS3-0414: a Solana signature covers the compiled message (recentBlockhash\n        // included), so refreshing the blockhash after any signer (sponsor / co-signer)\n        // has signed silently invalidates their signature. Only refresh while the\n        // transaction is still unsigned; once a real signature is present, submit the\n        // caller's transaction verbatim.\n        if (!transactionHasSignature(transaction)) {\n            const isLegacyTx = 'recentBlockhash' in transaction &&\n                !('message' in transaction && 'staticAccountKeys' in transaction.message);\n            if (isLegacyTx) {\n                const legacyTx = transaction;\n                const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed');\n                legacyTx.recentBlockhash = blockhash;\n                legacyTx.lastValidBlockHeight = lastValidBlockHeight;\n                legacyTx.feePayer = feePayer || new PublicKey(wallet.address);\n            }\n            else {\n                const versionedTx = transaction;\n                const { blockhash } = await connection.getLatestBlockhash('confirmed');\n                versionedTx.message.recentBlockhash = blockhash;\n            }\n        }\n        const { signature } = await this.signAndSubmitInternal(transaction, wallet, connection);\n        return signature;\n    }\n    async restoreSession() {\n        const session = await SessionManager().getSession();\n        if (session) {\n            this.authenticatedAddress = session.address;\n            return { provider: this, address: session.address };\n        }\n        return null;\n    }\n    async logout() {\n        var _a;\n        this.authenticatedAddress = null;\n        if ((_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.isAuthenticated) {\n            await this.privyMethods.logout();\n        }\n        await SessionManager().clearSession();\n    }\n    async getNativeMethods() {\n        return this.privyMethods;\n    }\n    // -------------------------------------------------------------------\n    // Private helpers\n    // -------------------------------------------------------------------\n    /**\n     * Mint a Bounded session from a Privy Solana wallet by signing the canonical\n     * SIWS challenge (nonce -> genSolanaMessage -> wallet.signMessage). This reuses\n     * createSessionWithSignature — the exact path Phantom, the mobile wallet\n     * adapter, and the guest device-key use — so the bounded /session issuer mints\n     * the session with no Privy-specific verification (it arrives as a Solana\n     * wallet signature, defaulting to authMethod 'phantom' server-side).\n     */\n    async createSession(address, wallet) {\n        const nonce = await genAuthNonce();\n        const message = await genSolanaMessage(address, nonce);\n        const messageBytes = getPlatform().textEncode(message);\n        const signResult = await wallet.signMessage(messageBytes);\n        // createSessionWithSignature expects a base64-encoded detached signature\n        // (matches the Phantom + guest providers).\n        const signature = Buffer.from(signResult.signature).toString('base64');\n        const result = await createSessionWithSignature(address, message, signature);\n        if (result) {\n            await SessionManager().storeSession(address, result.accessToken, result.idToken, result.refreshToken);\n        }\n    }\n    async getWalletOrThrow(action) {\n        var _a;\n        const wallet = await ((_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.getWalletProvider());\n        if (!wallet) {\n            throw new Error('No Privy wallet available. Ensure the user is logged in and an embedded Solana wallet exists.');\n        }\n        this.assertAuthenticatedAccount(wallet.address, action);\n        return wallet;\n    }\n    /**\n     * DS3-0411: refuse to sign when the currently selected Privy embedded wallet\n     * differs from the account this Bounded session was authenticated with. Signing\n     * under a switched account would produce a message/transaction from an identity\n     * the session never proved (requests still carry account A's bearer while the\n     * signature/fee-payer come from account B). Require a fresh login to rebind.\n     */\n    assertAuthenticatedAccount(currentAddress, action) {\n        var _a;\n        if (!this.authenticatedAddress || currentAddress !== this.authenticatedAddress) {\n            throw new Error(`The Privy wallet account changed after login (session is for ` +\n                `${(_a = this.authenticatedAddress) !== null && _a !== void 0 ? _a : 'no account'}, wallet is on ${currentAddress}). ` +\n                `Sign in again before ${action}.`);\n        }\n    }\n    async signAndSubmitInternal(transaction, wallet, connection) {\n        // Use Privy's combined sign+send\n        const result = await wallet.signAndSendTransaction(transaction, connection);\n        const signature = result.signature;\n        const txInfo = await confirmAndCheckTransaction(connection, signature);\n        return { signature, txInfo };\n    }\n    getRpcUrl(network) {\n        return resolveSolanaRpcUrl(this.networkUrl, network, \"Privy Expo Solana transaction\");\n    }\n    async ensureReady(timeoutMs = 15000) {\n        if (!this.privyMethods) {\n            throw new Error('PrivyExpoProvider.setPrivyMethods() must be called before using auth. ' +\n                'Bridge the Privy hooks from your React Native component tree.');\n        }\n        if (this.privyMethods.isReady)\n            return;\n        return new Promise((resolve, reject) => {\n            const startTime = Date.now();\n            const check = () => {\n                var _a;\n                if ((_a = this.privyMethods) === null || _a === void 0 ? void 0 : _a.isReady) {\n                    resolve();\n                }\n                else if (Date.now() - startTime > timeoutMs) {\n                    reject(new Error('Privy Expo SDK failed to initialize within timeout.'));\n                }\n                else {\n                    setTimeout(check, 100);\n                }\n            };\n            check();\n        });\n    }\n}\n","/**\n * Default provider discovery: Phantom-first, then any Wallet-Standard\n * `window.solana`. Kept tiny + synchronous (no heavy imports) so it works inside\n * a user gesture and can be eagerly exported from the SDK entry.\n */\nexport function defaultInjectedProvider() {\n    var _a;\n    if (typeof window === 'undefined')\n        return null;\n    const w = window;\n    const phantom = (_a = w === null || w === void 0 ? void 0 : w.phantom) === null || _a === void 0 ? void 0 : _a.solana;\n    if (phantom && typeof phantom.signMessage === 'function')\n        return phantom;\n    const generic = w === null || w === void 0 ? void 0 : w.solana;\n    if (generic && typeof generic.signMessage === 'function')\n        return generic;\n    return null;\n}\n","// injected-evm-wallet-types.ts — tiny, dependency-free surface for the EVM\n// WALLET LOGIN path (BYO wallet via SIWE). The EVM twin of\n// injected-wallet-types.ts: kept separate from injected-evm-wallet-provider.ts\n// so the SDK entry can eagerly export the type surface + the provider-discovery\n// helper WITHOUT dragging the provider class into the default bundle. The\n// provider is lazy-loaded by getAuthProvider() when an app opts into\n// authMethod:'evm-wallet'.\n//\n// It rides the standard EIP-1193 injected provider a browser wallet exposes\n// (MetaMask / Rabby / Coinbase Wallet / any window.ethereum), discovered via\n// EIP-6963 (multi-wallet, collision-free) with a window.ethereum fallback. It\n// needs NO viem/ethers and NO React — EIP-1193 request() + hex strings suffice.\n// EIP-6963 is announcement-based: wallets add an `eip6963:requestProvider`\n// listener and synchronously dispatch `eip6963:announceProvider` in response. We\n// keep a persistent collector so announcements (including late ones) are\n// captured, and re-request on demand.\nconst announcedProviders = [];\nlet announceListenerAttached = false;\nfunction attachAnnounceListener() {\n    if (announceListenerAttached || typeof window === 'undefined')\n        return;\n    announceListenerAttached = true;\n    window.addEventListener('eip6963:announceProvider', (event) => {\n        const detail = event === null || event === void 0 ? void 0 : event.detail;\n        if (detail &&\n            detail.provider &&\n            typeof detail.provider.request === 'function' &&\n            !announcedProviders.some((d) => { var _a, _b; return ((_a = d.info) === null || _a === void 0 ? void 0 : _a.uuid) === ((_b = detail.info) === null || _b === void 0 ? void 0 : _b.uuid); })) {\n            announcedProviders.push(detail);\n        }\n    });\n}\n/**\n * Request + collect EIP-6963 providers. Dispatches `eip6963:requestProvider`\n * (synchronous — already-loaded wallets announce in the same tick) and returns\n * every wallet announced so far. Kept synchronous so it works inside a user\n * gesture and can be eagerly exported from the SDK entry.\n */\nexport function requestEip6963Providers() {\n    if (typeof window === 'undefined')\n        return [];\n    attachAnnounceListener();\n    try {\n        window.dispatchEvent(new Event('eip6963:requestProvider'));\n    }\n    catch (_a) {\n        /* older browsers without Event constructor — fall through to window.ethereum */\n    }\n    return announcedProviders.slice();\n}\n/**\n * Default EVM provider discovery: EIP-6963 first (multi-wallet, collision-free),\n * then legacy `window.ethereum`. Returns null when no injected wallet is present.\n */\nexport function defaultInjectedEvmProvider() {\n    if (typeof window === 'undefined')\n        return null;\n    const details = requestEip6963Providers();\n    if (details.length > 0)\n        return details[0].provider;\n    const eth = window.ethereum;\n    if (eth && typeof eth.request === 'function')\n        return eth;\n    return null;\n}\n"],"names":["_a","ISSUER_SESSION_KIND_KEY","this","get","require$$0","require$$1","exports","hasDOM","decodeJwt","requestSeq","Buffer","transactionHasSignature","login","logout","configInit","authLogin","authLogout","isSSR","sdkLogin","sdkLogout","list","getRun","getEvents","getIdTokenCore","SessionManager"],"mappings":"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AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,CAAC;AACL,IAAI;AACJ;;AClsBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAwB,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,E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","x_google_ignoreList":[6,7,8,9,10,11,12,23,24,25,26,27]}